diff --git a/.github/workflows/hugo.yaml b/.github/workflows/hugo.yaml new file mode 100644 index 0000000..9a3a46a --- /dev/null +++ b/.github/workflows/hugo.yaml @@ -0,0 +1,79 @@ +# Sample workflow for building and deploying a Hugo site to GitHub Pages +name: Deploy Hugo site to Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: + - main + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +# Default to bash +defaults: + run: + shell: bash + +jobs: + # Build job + build: + runs-on: ubuntu-latest + env: + HUGO_VERSION: 0.111.3 + steps: + - name: Install Hugo CLI + run: | + wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \ + && sudo dpkg -i ${{ runner.temp }}/hugo.deb + - name: Install Dart Sass Embedded + run: sudo snap install dart-sass-embedded + - name: Checkout + uses: actions/checkout@v3 + with: + submodules: recursive + fetch-depth: 0 + - name: Setup Pages + id: pages + uses: actions/configure-pages@v3 + - name: Install Node.js dependencies + run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true" + - name: Build with Hugo + env: + # For maximum backward compatibility with Hugo modules + HUGO_ENVIRONMENT: production + HUGO_ENV: production + run: | + cp -r ./page/* . && \ + hugo \ + --gc \ + --minify \ + --baseURL "${{ steps.pages.outputs.base_url }}/" + - name: Upload artifact + uses: actions/upload-pages-artifact@v1 + with: + path: ./public + + # Deployment job + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v2 \ No newline at end of file diff --git a/.gitignore b/.gitignore index 7b2903e..f57802b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1,140 @@ -# macOS DS_STORE files -**/*.DS_STORE -# Python precompiled files -*.pyc # PyCharm config files .idea/ -# PyCharm Virtual Environment +# macOS DS_STORE files +*.DS_STORE + +data/ +data_gen_tokens/ +runs/ +runs_dis/ +runs_classifier/ + +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ venv/ -# -data/** +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site -# personal test file -test.py +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json -# Dataset directory -# data/* +# Pyre type checker +.pyre/ diff --git a/README.md b/README.md index 68a9fa9..d013888 100644 --- a/README.md +++ b/README.md @@ -1,87 +1,48 @@ -# Byte Pair Encoding for Symbolic Music +# Byte Pair Encoding for Symbolic Music (EMNLP 2023) -Code of the paper [*Byte Pair Encoding for Symbolic Music*](https://arxiv.org/abs/2301.11975). +[Paper](https://arxiv.org/abs/2301.11975) +[Demo website](https://Natooz.github.io/bpe-symbolic-music/) -## Steps to reproduce - -1. `pip install -r requirements` to install requirements -2. Download the [GiantMIDI](https://github.com/bytedance/GiantMIDI-Piano/blob/master/disclaimer.md) dataset and put it in `data/` -3. `sh scripts/download_pop909.sh` to download and preprocess the [POP909](https://github.com/music-x-lab/POP909-Dataset) dataset -4. `python scripts/tokenize_datasets.py` to tokenize data and learn BPE -5. `python exp_gen.py` to train generative models and generate results -6. `python exp_cla.py` to train classification models and test them - -[Scripts](./scripts) can be run to get reproduce the analysis. - -## BPE learning - -POP909 TSDPOP909 REMI - -GiantMIDI TSDGiantMIDI REMI - -By orders, figures above are for POP909 TSD, POP909 REMI, GiantMIDI TSD, GiantMIDI REMI - -GiantMIDI REMI - -## Experiment results - -We refer you to the tables of the paper. - -## Learned embedding space - -### Singular values - -#### Generators : POP909 TSD, POP909 REMI, GiantMIDI TSD and GiantMIDI REMI - -POP909 TSDPOP909 REMIGiantMIDI TSDGiantMIDI REMI - -#### Classifiers : $\mathrm{Cla}\_{small}$ TSD, $\mathrm{Cla}\_{small}$ REMI, $\mathrm{Cla}\_{large}$ TSD and $\mathrm{Cla}\_{large}$ REMI - -Cla small TSDCla small REMICla large TSDCla large REMI +Byte Pair Encoding (BPE) is a compression technique that allows to reduce the sequence length of a corpus by iteratively replacing the most recurrent byte successions by newly created symbols. It is widely used in NLP, as it allows to automatically create vocabularies made of words or parts of words. -### UMAP Generators +In this paper, we show that it can address two main concerns about how symbolic music was previously tokenized: -Figures are by order for no BPE, BPEx4, BPEx10, BPEx20, BPEx50, BPEx100, PVm and PVDm. +1. The fairly long sequence length resulting by using one token per note attribute (e.g. pitch, duration) and time events. Long sequences is problematic as the time and space complexity of Transformer models grows quadratically with the input sequence. +2. The poor usage of the model's embedding space. Language models first project tokens into a learned embedding space, in which the embeddings (continuous representations of the tokens) are learnt to represent their semantic information. This is an essential feature of such models, as it allows them to capture the meaning of the tokens and data. In symbolic music, the tokens usually only represent note attribute values or time values, which do not carry much information other than their absolute value. And vocabularies range often between 200 and 500 tokens, which are then represented on 512 to 1024 dimensions. In such conditions, the embedding space is misused and the potential of the model is poorly exploited. -#### POP909 TSD +When applied on symbolic music, BPE will allow to drastically reduce the sequence length, while creating new tokens that can represent whole notes, and sequences of notes. The model's efficiency is then greatly improved, while bringing more information per tokens. It greatly improves the quality of generation, while improving up to three times the inference speed. -No BPEBPEx4BPEx10BPEx20 +BPE is fully implemented within [MidiTok](https://github.com/Natooz/MidiTok), allowing you to easily benefit from this method on top of most of the existing tokenizations. -BPEx50BPEx100PVmPVDm +We invite you to read the paper, and check our [companion website](https://Natooz.github.io/bpe-symbolic-music/) to listen generated results! -#### POP909 REMI - -No BPEBPEx4BPEx10BPEx20 - -BPEx50BPEx100PVmPVDm - -#### GiantMIDI TSD - -No BPEBPEx4BPEx10BPEx20 - -BPEx50BPEx100PVmPVDm - -#### GiantMIDI REMI - -No BPEBPEx4BPEx10BPEx20 - -BPEx50BPEx100PVmPVDm - - -### UMAP Classifiers - -These figures are for $\mathrm{Cla}\_{small}$ and TSD. More figures can be found in [figures](./figures). - -No BPEBPEx4BPEx10BPEx20 - -BPEx50BPEx100PVmPVDm - -### Intrinsic dimension - -#### Generators : POP909 TSD, POP909 REMI, GiantMIDI TSD and GiantMIDI REMI +## Steps to reproduce -POP909 TSDPOP909 REMIGiantMIDI TSDGiantMIDI REMI +1. `pip install -r requirements` to install requirements +2. Download the [Maestro](https://magenta.tensorflow.org/datasets/maestro) and [MMD](https://zenodo.org/record/5142664#.YQN3c5NKgWo) datasets and put them in `data/` +3. `python scripts/preprocess_maestro.py` and `python scripts/preprocess_for_octuple.py` +4. `python scripts/tokenize_datasets.py` to tokenize data and learn BPE +5. `python exp_generation.py` to train generative models and generate results +6. `python exp_pretrain.py` to pretrain classification models +7. `python exp_cla.py` to train classification models and test them -#### Classifiers : $\mathrm{Cla}\_{small}$ TSD, $\mathrm{Cla}\_{small}$ REMI, $\mathrm{Cla}\_{large}$ TSD and $\mathrm{Cla}\_{large}$ REMI +[Scripts](./scripts) can be run to get reproduce the analysis. -Cla small TSDCla small REMICla large TSDCla large REMI +## Citation + +(ACL url/doi/pages will be added once the proceeding will be published) +```bibtex +@inproceedings{bpe-symbolic-music, + title = "Byte Pair Encoding for Symbolic Music", + author = "Fradet, Nathan and + Gutowski, Nicolas and + Chhel, Fabien and + Briot, Jean-Pierre", + booktitle = "Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing", + month = dec, + year = "2023", + address = "Singapore", + publisher = "Association for Computational Linguistics", + url = "https://arxiv.org/abs/2301.11975", +} +``` \ No newline at end of file diff --git a/analysis/bpe_token_types/GiantMIDI_REMI.pdf b/analysis/bpe_token_types/GiantMIDI_REMI.pdf new file mode 100644 index 0000000..08527b9 Binary files /dev/null and b/analysis/bpe_token_types/GiantMIDI_REMI.pdf differ diff --git a/analysis/bpe_token_types/GiantMIDI_TSD.pdf b/analysis/bpe_token_types/GiantMIDI_TSD.pdf new file mode 100644 index 0000000..6ee4589 Binary files /dev/null and b/analysis/bpe_token_types/GiantMIDI_TSD.pdf differ diff --git a/analysis/bpe_token_types/MMD_REMIPlus.pdf b/analysis/bpe_token_types/MMD_REMIPlus.pdf new file mode 100644 index 0000000..368d571 Binary files /dev/null and b/analysis/bpe_token_types/MMD_REMIPlus.pdf differ diff --git a/analysis/bpe_token_types/MMD_TSDPlus.pdf b/analysis/bpe_token_types/MMD_TSDPlus.pdf new file mode 100644 index 0000000..a73ca67 Binary files /dev/null and b/analysis/bpe_token_types/MMD_TSDPlus.pdf differ diff --git a/analysis/bpe_token_types/Maestro_REMI.pdf b/analysis/bpe_token_types/Maestro_REMI.pdf new file mode 100644 index 0000000..342b060 Binary files /dev/null and b/analysis/bpe_token_types/Maestro_REMI.pdf differ diff --git a/analysis/bpe_token_types/Maestro_TSD.pdf b/analysis/bpe_token_types/Maestro_TSD.pdf new file mode 100644 index 0000000..208a1c7 Binary files /dev/null and b/analysis/bpe_token_types/Maestro_TSD.pdf differ diff --git a/analysis/datasets_features/datasets_duration (beat).pdf b/analysis/datasets_features/datasets_duration (beat).pdf new file mode 100644 index 0000000..103c080 Binary files /dev/null and b/analysis/datasets_features/datasets_duration (beat).pdf differ diff --git a/analysis/datasets_features/datasets_onset.pdf b/analysis/datasets_features/datasets_onset.pdf new file mode 100644 index 0000000..9e232a5 Binary files /dev/null and b/analysis/datasets_features/datasets_onset.pdf differ diff --git a/analysis/datasets_features/datasets_onset_interval.pdf b/analysis/datasets_features/datasets_onset_interval.pdf new file mode 100644 index 0000000..ff305f5 Binary files /dev/null and b/analysis/datasets_features/datasets_onset_interval.pdf differ diff --git a/analysis/datasets_features/datasets_pitch.pdf b/analysis/datasets_features/datasets_pitch.pdf new file mode 100644 index 0000000..3e4605a Binary files /dev/null and b/analysis/datasets_features/datasets_pitch.pdf differ diff --git a/analysis/datasets_features/datasets_velocity.pdf b/analysis/datasets_features/datasets_velocity.pdf new file mode 100644 index 0000000..405f3c7 Binary files /dev/null and b/analysis/datasets_features/datasets_velocity.pdf differ diff --git a/analysis/inference_speed_ete.ltx b/analysis/inference_speed_ete.ltx new file mode 100644 index 0000000..2dd7e96 --- /dev/null +++ b/analysis/inference_speed_ete.ltx @@ -0,0 +1,15 @@ +\begin{tabular}{lllllllllllllllllllrrr} +\toprule +{} & Nb beats - 1 - TSD & Nb beats - 1 - REMI & Nb beats - 8 - TSD & Nb beats - 8 - REMI & Nb beats - 64 - TSD & Nb beats - 64 - REMI & Nb base tokens - 1 - TSD & Nb base tokens - 1 - REMI & Nb base tokens - 8 - TSD & Nb base tokens - 8 - REMI & Nb base tokens - 64 - TSD & Nb base tokens - 64 - REMI & Nb notes - 1 - TSD & Nb notes - 1 - REMI & Nb notes - 8 - TSD & Nb notes - 8 - REMI & Nb notes - 64 - TSD & Nb notes - 64 - REMI & Nb beats - 63 - REMI & Nb base tokens - 63 - REMI & Nb notes - 63 - REMI \\ +\midrule +\textbf{No BPE } & 14.0 & 22.1 & 53.4 & 95.9 & 130.6 & 238.0 & 95.0 & 98.8 & 410.4 & 415.3 & 1011.1 & 1046.2 & 24.9 & 24.6 & 106.0 & 103.6 & 262.6 & 261.0 & NaN & NaN & NaN \\ +\textbf{BPE 1k } & 18.9 & 46.1 & 108.1 & 179.6 & 274.1 & 451.0 & 176.4 & 146.8 & 734.3 & 647.1 & 1771.5 & 1591.8 & 47.7 & 36.6 & 195.0 & 161.8 & 469.0 & 395.6 & NaN & NaN & NaN \\ +\textbf{BPE 5k } & 23.4 & 86.2 & 97.1 & 285.2 & 257.3 & 706.2 & 221.3 & 196.7 & 950.6 & 793.7 & 2307.2 & 2020.8 & 59.4 & 46.8 & 255.9 & 195.2 & 620.3 & 499.9 & NaN & NaN & NaN \\ +\textbf{BPE 10k} & 24.8 & 43.5 & 117.3 & 252.0 & 295.1 & 615.0 & 243.8 & 195.0 & 955.0 & 845.5 & 2379.5 & 2115.4 & 65.8 & 50.4 & 258.1 & 212.6 & 638.0 & 531.8 & NaN & NaN & NaN \\ +\textbf{BPE 20k} & 26.3 & 52.4 & 125.8 & 221.0 & 284.6 & 595.1 & 269.0 & 230.2 & 1026.5 & 868.6 & 2614.4 & 2207.7 & 72.6 & 58.4 & 277.9 & 216.6 & 707.5 & 547.3 & NaN & NaN & NaN \\ +\textbf{PVm } & 15.8 & 35.4 & 82.2 & 119.8 & 206.3 & 314.1 & 137.2 & 133.9 & 575.0 & 573.7 & 1470.4 & 1478.9 & 36.8 & 33.3 & 153.9 & 148.6 & 392.4 & 380.9 & NaN & NaN & NaN \\ +\textbf{PVDm } & 23.0 & 43.8 & 104.5 & 181.4 & 305.4 & 488.5 & 220.9 & 209.9 & 883.7 & 866.4 & 2350.2 & 2330.3 & 61.4 & 55.4 & 241.3 & 230.4 & 642.0 & 618.3 & NaN & NaN & NaN \\ +\textbf{CPWord } & NaN & 28.9 & NaN & 136.8 & NaN & 338.8 & NaN & 191.8 & NaN & 784.5 & NaN & 1922.0 & NaN & 49.3 & NaN & 198.6 & NaN & 484.9 & NaN & NaN & NaN \\ +\textbf{Octuple} & NaN & 23.3 & NaN & 97.1 & NaN & NaN & NaN & 95.5 & NaN & 400.1 & NaN & NaN & NaN & 95.5 & NaN & 400.1 & NaN & NaN & 250.8 & 1027.5 & 1027.5 \\ +\bottomrule +\end{tabular} diff --git a/analysis/nb_tok/avg_nb_comb.pdf b/analysis/nb_tok/avg_nb_comb.pdf new file mode 100644 index 0000000..296127e Binary files /dev/null and b/analysis/nb_tok/avg_nb_comb.pdf differ diff --git a/analysis/nb_tok/avg_tpb.pdf b/analysis/nb_tok/avg_tpb.pdf new file mode 100644 index 0000000..f54d1e2 Binary files /dev/null and b/analysis/nb_tok/avg_tpb.pdf differ diff --git a/analysis/nb_tok/detok_time.pdf b/analysis/nb_tok/detok_time.pdf new file mode 100644 index 0000000..5545f49 Binary files /dev/null and b/analysis/nb_tok/detok_time.pdf differ diff --git a/analysis/nb_tok/max_nb_comb.pdf b/analysis/nb_tok/max_nb_comb.pdf new file mode 100644 index 0000000..2b9c9f8 Binary files /dev/null and b/analysis/nb_tok/max_nb_comb.pdf differ diff --git a/analysis/nb_tok/tok_comb_speed_MMD.csv b/analysis/nb_tok/tok_comb_speed_MMD.csv new file mode 100644 index 0000000..bc07dac --- /dev/null +++ b/analysis/nb_tok/tok_comb_speed_MMD.csv @@ -0,0 +1,10 @@ +,avg_tpb TSD,avg_tpb REMI,tok_time TSD,tok_time REMI,detok_time TSD,detok_time REMI +No BPE,43.3,51.8,0.122,0.133,0.025,0.038 +BPE 1k,19.9 (-54.1\%),25.4 (-51.0\%),0.134,0.14,0.042,0.059 +BPE 5k,14.5 (-66.5\%),19.3 (-62.8\%),0.135,0.141,0.042,0.059 +BPE 10k,12.8 (-70.4\%),17.5 (-66.3\%),0.135,0.141,0.041,0.059 +BPE 20k,11.5 (-73.5\%),15.9 (-69.3\%),0.135,0.142,0.041,0.058 +PVm,33.1 (-23.5\%),41.5 (-19.9\%),0.106,0.12,0.021,0.026 +PVDm,23.0 (-47.0\%),31.2 (-39.8\%),0.094,0.106,0.019,0.022 +CP Word,,,,,, +Octuple,,10.3 (-80.1\%),,0.118,,0.026 diff --git a/analysis/nb_tok/tok_comb_speed_MMD.txt b/analysis/nb_tok/tok_comb_speed_MMD.txt new file mode 100644 index 0000000..3a44a08 --- /dev/null +++ b/analysis/nb_tok/tok_comb_speed_MMD.txt @@ -0,0 +1,15 @@ +\begin{tabular}{lllllll} +\toprule +{} & avg\_tpb TSD & avg\_tpb REMI & tok\_time TSD & tok\_time REMI & detok\_time TSD & detok\_time REMI \\ +\midrule +No BPE & 43.3 & 51.8 & 0.122 & 0.133 & 0.025 & 0.038 \\ +BPE 1k & 19.9 (-54.1\textbackslash \%) & 25.4 (-51.0\textbackslash \%) & 0.134 & 0.14 & 0.042 & 0.059 \\ +BPE 5k & 14.5 (-66.5\textbackslash \%) & 19.3 (-62.8\textbackslash \%) & 0.135 & 0.141 & 0.042 & 0.059 \\ +BPE 10k & 12.8 (-70.4\textbackslash \%) & 17.5 (-66.3\textbackslash \%) & 0.135 & 0.141 & 0.041 & 0.059 \\ +BPE 20k & 11.5 (-73.5\textbackslash \%) & 15.9 (-69.3\textbackslash \%) & 0.135 & 0.142 & 0.041 & 0.058 \\ +PVm & 33.1 (-23.5\textbackslash \%) & 41.5 (-19.9\textbackslash \%) & 0.106 & 0.12 & 0.021 & 0.026 \\ +PVDm & 23.0 (-47.0\textbackslash \%) & 31.2 (-39.8\textbackslash \%) & 0.094 & 0.106 & 0.019 & 0.022 \\ +CP Word & NaN & NaN & NaN & NaN & NaN & NaN \\ +Octuple & NaN & 10.3 (-80.1\textbackslash \%) & NaN & 0.118 & NaN & 0.026 \\ +\bottomrule +\end{tabular} diff --git a/analysis/nb_tok/tok_comb_speed_Maestro.csv b/analysis/nb_tok/tok_comb_speed_Maestro.csv new file mode 100644 index 0000000..efb7903 --- /dev/null +++ b/analysis/nb_tok/tok_comb_speed_Maestro.csv @@ -0,0 +1,10 @@ +,avg_tpb TSD,avg_tpb REMI,tok_time TSD,tok_time REMI,detok_time TSD,detok_time REMI +No BPE,18.5,19.1,0.174,0.151,0.031,0.039 +BPE 1k,9.3 (-49.5\%),10.4 (-45.3\%),0.187,0.163,0.053,0.063 +BPE 5k,7.0 (-62.2\%),8.5 (-55.2\%),0.181,0.165,0.053,0.064 +BPE 10k,6.3 (-66.0\%),7.7 (-59.7\%),0.183,0.164,0.052,0.065 +BPE 20k,5.8 (-68.9\%),6.9 (-63.9\%),0.184,0.163,0.052,0.063 +PVm,13.4 (-27.8\%),13.8 (-27.4\%),0.134,0.123,0.024,0.026 +PVDm,8.2 (-55.5\%),8.6 (-54.8\%),0.119,0.106,0.025,0.03 +CP Word,,8.6 (-54.8\%),,0.169,,0.034 +Octuple,,5.2 (-72.6\%),,0.118,,0.035 diff --git a/analysis/nb_tok/tok_comb_speed_Maestro.txt b/analysis/nb_tok/tok_comb_speed_Maestro.txt new file mode 100644 index 0000000..2d91c3c --- /dev/null +++ b/analysis/nb_tok/tok_comb_speed_Maestro.txt @@ -0,0 +1,15 @@ +\begin{tabular}{lllllll} +\toprule +{} & avg\_tpb TSD & avg\_tpb REMI & tok\_time TSD & tok\_time REMI & detok\_time TSD & detok\_time REMI \\ +\midrule +No BPE & 18.5 & 19.1 & 0.174 & 0.151 & 0.031 & 0.039 \\ +BPE 1k & 9.3 (-49.5 \%) & 10.4 (-45.3 \%) & 0.187 & 0.163 & 0.053 & 0.063 \\ +BPE 5k & 7.0 (-62.2 \%) & 8.5 (-55.2 \%) & 0.181 & 0.165 & 0.053 & 0.064 \\ +BPE 10k & 6.3 (-66.0 \%) & 7.7 (-59.7 \%) & 0.183 & 0.164 & 0.052 & 0.065 \\ +BPE 20k & 5.8 (-68.9 \%) & 6.9 (-63.9 \%) & 0.184 & 0.163 & 0.052 & 0.063 \\ +PVm & 13.4 (-27.8 \%) & 13.8 (-27.4 \%) & 0.134 & 0.123 & 0.024 & 0.026 \\ +PVDm & 8.2 (-55.5 \%) & 8.6 (-54.8 \%) & 0.119 & 0.106 & 0.025 & 0.03 \\ +CP Word & NaN & 8.6 (-54.8 \%) & NaN & 0.169 & NaN & 0.034 \\ +Octuple & NaN & 5.2 (-72.6 \%) & NaN & 0.118 & NaN & 0.035 \\ +\bottomrule +\end{tabular} diff --git a/analysis/nb_tok/tok_time.pdf b/analysis/nb_tok/tok_time.pdf new file mode 100644 index 0000000..4c238f7 Binary files /dev/null and b/analysis/nb_tok/tok_time.pdf differ diff --git a/classes.py b/classes.py index 9bd709e..d190640 100644 --- a/classes.py +++ b/classes.py @@ -1,188 +1,147 @@ from pathlib import Path -from typing import List, Union +from typing import List, Dict, Union +from dataclasses import dataclass +from abc import ABC -from transformers import GPT2Config, BertConfig +from transformers import PretrainedConfig, GPT2Config, BertConfig, TrainingArguments, Seq2SeqTrainingArguments, \ + DataCollator, GenerationConfig import miditok -from model import GenTransformer, GenTransformerPooling, ClassifierTransformer, ClassifierTransformerPooling -from constants import * +from dataset import DatasetABC import tokenizers_ -class ModelConfig: - def __init__(self, dim: int = DIM, - nb_heads: int = NB_HEADS, - d_ffwd: int = D_FFWD, - nb_layers: int = NB_LAYERS, - nb_pos_enc_params: int = NB_POS_ENC_PARAMS, - embed_sizes: List[int] = None): - self.dim = dim - self.nb_layers = nb_layers - self.nb_heads = nb_heads - self.d_ffwd = d_ffwd - self.nb_pos_enc_params = nb_pos_enc_params - - self.embed_sizes = embed_sizes # for CP Word and Octuple - - -class TrainingConfig: - def __init__(self, use_cuda: bool = USE_CUDA, - use_amp: bool = USE_AMP, - batch_size: int = BATCH_SIZE, - grad_acc_steps: int = GRAD_ACC_STEPS, - learning_rate: float = LEARNING_RATE, - weight_decay: float = WEIGHT_DECAY, - gradient_clip_norm: float = GRADIENT_CLIP_NORM, - label_smoothing: float = LABEL_SMOOTHING, - dropout: float = DROPOUT, - valid_split: float = VALID_SPLIT, - test_split: float = TEST_SPLIT, - training_steps: int = TRAINING_STEPS, - warmup_ratio: float = WARMUP_RATIO, - iterator_kwargs: dict = ITERATOR_KWARGS, - valid_intvl: int = VALID_INTVL, - nb_valid_steps: int = NB_VALID_STEPS, - log_intvl: int = LOG_INTVL, - min_seq_len: int = MIN_SEQ_LEN, - max_seq_len: int = MAX_SEQ_LEN): - self.use_cuda = use_cuda - self.use_amp = use_amp - self.batch_size = batch_size - self.grad_acc_steps = grad_acc_steps - self.learning_rate = learning_rate - self.weight_decay = weight_decay - self.gradient_clip_norm = gradient_clip_norm - self.label_smoothing = label_smoothing - self.dropout = dropout - self.valid_split = valid_split - self.test_split = test_split - self.training_steps = training_steps - self.warmup_ratio = warmup_ratio - self.iterator_kwargs = iterator_kwargs - self.valid_intvl = valid_intvl - self.nb_valid_steps = nb_valid_steps - self.log_intvl = log_intvl - self.min_seq_len = min_seq_len - self.max_seq_len = max_seq_len +@dataclass +class DataConfig: + valid_ratio: float + test_ratio: float + min_seq_len: int # used for training + max_seq_len: int +@dataclass class TestingConfig: - def __init__(self, batch_size: int = BATCH_SIZE_TEST, - max_seq_len: int = MAX_SEQ_LEN_TEST, - nb_inferences_test: int = NB_INFERENCES_TEST, - num_beams: int = NUM_BEAMS, - top_p: float = TOP_P): - self.batch_size = batch_size - self.max_seq_len = max_seq_len - self.nb_inferences_test = nb_inferences_test - self.num_beams = num_beams - self.top_p = top_p - - -class Baseline: - """Represents a baseline + batch_size: int + min_seq_len: int + max_seq_len: int + + +@dataclass +class TokenizationConfig: + tokenization: str + tokenizer_params: Dict + bpe_vocab_size: int = None + + +@dataclass +class Baseline(ABC): + """Represents a baseline. + Need to be overridden to have a create_dataset method. """ - def __init__(self, name: str, exp_name: str, dataset: str, seed: int, tokenization: str, bpe_factor: int, - model_config: ModelConfig): - self.name = name # bpe or tokenization - self.exp_name = exp_name # data_tokenization (remi/tsd), for run path as exp.tokenization can be different - self.dataset = dataset # can be different from the one in exp_name, for example with short - self.seed = seed # is used when splitting generated data in train / test sets - - self.bpe_factor = bpe_factor - self.tokenization = tokenization - self.tokenizer = None - self.model_config = model_config - - def load_tokenizer(self): - if self.tokenization[-3:] == 'PVm' or self.tokenization[-4:] == 'PVDm': - self.tokenizer = getattr(tokenizers_, self.tokenization)(params=self.data_path / 'config.txt') - else: - self.tokenizer = getattr(miditok, self.tokenization)(params=self.data_path / 'config.txt') + name: str # bpe or tokenization + exp_name: str # data_tokenization + dataset: str + seed: int + tokenization_config: TokenizationConfig + model_config: Union[PretrainedConfig, GPT2Config, BertConfig] + training_config: TrainingArguments + data_config: DataConfig + test_config: TestingConfig + generation_config: GenerationConfig = None + embed_pooling_size: int = None # as cannot be in BERTConfig / GPT2Config + + def __post_init__(self): + tokens_path_dir_name = f"{self.dataset}_{self.tokenization}" + if self.tokenization_config.bpe_vocab_size is not None: + tokens_path_dir_name += f"_bpe{self.tokenization_config.bpe_vocab_size}" + self.tokens_path = Path("data", tokens_path_dir_name) + self.tokenizer = self.create_tokenizer() # created with method below, called by Experiment class + + self.training_config.output_dir = str(self.run_path) # override output dir + self.training_config.logging_dir = self.training_config.output_dir # for tensorboard + self.model_config.vocab_size = len(self.tokenizer) + self.model_config.pad = self.pad_token + if isinstance(self.model_config, GPT2Config): + self.model_config.bos_token_id = self.bos_token + self.model_config.eos_token_id = self.eos_token + self.generation_config.pad_token_id = self.pad_token + if isinstance(self.training_config, Seq2SeqTrainingArguments): + self.training_config.generation_config = self.generation_config + + def create_tokenizer(self) -> miditok.MIDITokenizer: + try: + _ = getattr(miditok, self.tokenization) + package = miditok + except AttributeError: + package = tokenizers_ + + try: + tokenizer = getattr(package, self.tokenization)(params=self.tokens_path / 'config.txt') + except FileNotFoundError: + tokenizer = getattr(package, self.tokenization)(**self.tokenization_config.tokenizer_params) + + return tokenizer @property - def data_path(self) -> Path: return Path('data', f'{self.exp_name}' + (f'_{self.name}' if self.name != '' else '')) + def tokenization(self) -> str: return self.tokenization_config.tokenization @property def run_path(self) -> Path: return Path('runs', self.exp_name, self.name) + def __return_special_token(self, tok: str) -> int: + if self.tokenizer.is_multi_voc: + return self.tokenizer[0, tok] + return self.tokenizer[tok] + @property - def run_path_classifier(self) -> Path: return Path('runs_classifier', self.exp_name, self.name) + def pad_token(self) -> int: + return self.__return_special_token('PAD_None') @property - def gen_data_path(self) -> Path: return self.run_path / 'gen' + def mask_token(self) -> int: + return self.__return_special_token('MASK_None') @property - def is_embed_pooling(self) -> bool: return isinstance(self.tokenizer.vocab, list) + def bos_token(self) -> int: + return self.__return_special_token('BOS_None') @property - def pad_token(self) -> int: - return self.tokenizer.vocab[0]['PAD_None'] if self.is_embed_pooling else self.tokenizer['PAD_None'] + def eos_token(self) -> int: + return self.__return_special_token('EOS_None') @property - def sos_token(self) -> int: - return self.tokenizer.vocab[0]['SOS_None'] if self.is_embed_pooling else self.tokenizer['SOS_None'] + def sep_token(self) -> int: + return self.__return_special_token('SEP_None') @property - def eos_token(self) -> int: - return self.tokenizer.vocab[0]['EOS_None'] if self.is_embed_pooling else self.tokenizer['EOS_None'] + def special_tokens(self) -> List[int]: + return [self.pad_token, self.mask_token, self.bos_token, self.eos_token, self.sep_token] + + def create_model(self): + raise NotImplementedError + + def create_dataset(self, files_paths: List[Path], *args, **kwargs) -> DatasetABC: + raise NotImplementedError + + def create_data_collator(self) -> DataCollator: + raise NotImplementedError def __repr__(self): - return f'{self.name} - {self.data_path}' + return f'{self.name} - {self.tokens_path}' +@dataclass class Experiment: - def __init__(self, baselines: List[Baseline], dataset: str, tokenization: str, seed: int, - cla_model_conf: ModelConfig, gen_train_conf: TrainingConfig, cla_pre_train_conf: TrainingConfig, - cla_train_conf: TrainingConfig, gen_test_conf: TestingConfig, - tokenizer_params: dict = TOKENIZER_PARAMS): - self.name = f'{dataset}_{tokenization}' # dataset_tokenization - self.run_path = Path('runs', self.name) - self.data_path_midi = Path('data', dataset) # original dataset path, in MIDI - self.baselines = baselines - self.dataset = dataset - self.tokenizer_params = tokenizer_params # used when tokenizing datasets only - self.seed = seed - - self.cla_model_conf = cla_model_conf - self.gen_train_conf = gen_train_conf - self.cla_pre_train_conf = cla_pre_train_conf - self.cla_train_conf = cla_train_conf - self.gen_test_conf = gen_test_conf - - def create_gen(self, baseline: Baseline) -> Union[GenTransformer, GenTransformerPooling]: - """Creates the generative model for the experiment. - The model must implement the `forward_train` and `infer` methods. - """ - config_d = GPT2Config(vocab_size=len(baseline.tokenizer.vocab), - n_positions=baseline.model_config.nb_pos_enc_params, - n_embd=baseline.model_config.dim, n_layer=baseline.model_config.nb_layers, - n_head=baseline.model_config.nb_heads, n_inner=baseline.model_config.d_ffwd, - resid_pdrop=self.gen_train_conf.dropout, embd_pdrop=self.gen_train_conf.dropout, - attn_pdrop=self.gen_train_conf.dropout, pad_token_id=baseline.pad_token, - bos_token_id=baseline.sos_token, eos_token_id=baseline.eos_token) - if baseline.is_embed_pooling: - num_classes = [len(v) for v in baseline.tokenizer.vocab] - return GenTransformerPooling(config_d, num_classes, baseline.model_config.embed_sizes) - else: - return GenTransformer(config_d) - - def create_classifier(self, baseline: Baseline, num_labels: int = None, pre_train: bool = False): - """Creates the model for the experiment. - The model must implement the `forward_train` and `infer` methods. - """ - model_conf = self.cla_model_conf - train_conf = self.cla_train_conf - config = BertConfig(vocab_size=len(baseline.tokenizer), hidden_size=model_conf.dim, - num_hidden_layers=model_conf.nb_layers, num_attention_heads=model_conf.nb_heads, - intermediate_size=model_conf.d_ffwd, hidden_dropout_prob=train_conf.dropout, - attention_probs_dropout_prob=train_conf.dropout, - max_position_embeddings=model_conf.nb_pos_enc_params, - type_vocab_size=2, pad_token_id=baseline.pad_token, num_labels=num_labels) - if baseline.is_embed_pooling: - num_classes = [len(v) for v in baseline.tokenizer.vocab] - return ClassifierTransformerPooling(config, num_classes, model_conf.embed_sizes, pre_train) - return ClassifierTransformer(config, pre_train) + name: str # dataset_tokenization + baselines: List[Baseline] + dataset: str + + @property + def data_path_midi(self): + return Path('data', self.dataset) # original dataset path, in MIDI + + @property + def run_path(self) -> Path: return Path('runs', self.name) def __str__(self): return f'{self.name} - {len(self.baselines)} baselines' diff --git a/constants.py b/constants.py index c12c77c..13df863 100644 --- a/constants.py +++ b/constants.py @@ -1,86 +1,128 @@ """ Constants file """ +from miditok.constants import INSTRUMENT_CLASSES +from torch.cuda import is_available as cuda_available +from torch.backends.mps import is_available as mps_available + + SEED = 444 +# For MMD preprocessing +MMD_VALID_PROGRAMS = list(range(-1, 48)) + list(range(56, 95)) # programs to keep in the first place (no Ensemble) +MMD_MIDI_CATS_TO_MERGE = list(range(12)) + [16] # all but effects, and drums +MMD_PROGRAMS_TO_MERGE = [p for cat in MMD_MIDI_CATS_TO_MERGE for p in INSTRUMENT_CLASSES[cat]['program_range']] +PROGRAMS = [INSTRUMENT_CLASSES[cat]['program_range'].start for cat in range(len(INSTRUMENT_CLASSES)) if cat in + MMD_MIDI_CATS_TO_MERGE] + [p for p in MMD_VALID_PROGRAMS if p not in MMD_PROGRAMS_TO_MERGE] +MMD_NB_GENRES = 40 +MMD_NB_ARTISTS = 100 + # Tokenizer params (same as MidiTok expect for new constants) PITCH_RANGE = range(21, 109) BEAT_RES = {(0, 1): 8, (1, 2): 4, (2, 4): 2, (4, 8): 1} -NB_VELOCITIES = 8 +NB_VELOCITIES = 16 ADDITIONAL_TOKENS = {'Chord': False, 'Rest': False, 'Tempo': False, 'Program': False, 'TimeSignature': False, - 'rest_range': (2, 8), 'nb_tempos': 32, 'tempo_range': (40, 250), 'time_signature_range': (8, 2)} + 'rest_range': (2, 8), 'nb_tempos': 32, 'tempo_range': (40, 250), 'time_signature_range': (8, 2), + "programs": PROGRAMS} +SPECIAL_TOKENS = ["PAD", "MASK", "BOS", "EOS", "SEP"] TOKENIZER_PARAMS = {'pitch_range': PITCH_RANGE, 'beat_res': BEAT_RES, 'nb_velocities': NB_VELOCITIES, - 'additional_tokens': ADDITIONAL_TOKENS, 'sos_eos': True} + 'additional_tokens': ADDITIONAL_TOKENS, "special_tokens": SPECIAL_TOKENS} TIME_DIVISION = 384 -NB_SCALES_OFFSET_DATA_AUGMENTATION = 2 -BPE_NB_FILES_LIM = 1500 +DATA_AUGMENTATION_OFFSETS = (2, 1, 0) +BPE_VOCAB_SIZES = [1000, 5000, 10000, 20000] +TOKENIZATIONS = ["TSD", "REMI"] -# For classification -MAX_NB_COMPOSERS = 10 - -# Transformer config (for generator) +# Transformer config (for all models) DIM = 512 NB_HEADS = 8 -D_FFWD = 2048 -NB_LAYERS = 10 +D_FFWD = DIM * 4 +NB_LAYERS = 12 NB_POS_ENC_PARAMS = 2048 # params for positional encoding positions +TINY_DIM = 32 # for tiny transformer baseline -# Transformer config (for classifier) -CLA_DIM = 768 -CLA_NB_HEADS = 12 -CLA_D_FFWD = 2048 -CLA_NB_LAYERS = 10 -CLA_NB_POS_ENC_PARAMS = 2048 # params for positional encoding positions -CLA_LARGE_DIM = 1024 -CLA_LARGE_NB_HEADS = 16 -CLA_LARGE_D_FFWD = 3072 -CLA_LARGE_NB_LAYERS = 18 -CLA_LARGE_NB_POS_ENC_PARAMS = 2048 # params for positional encoding positions - - -# Training params +# COMMON TRAINING PARAMS DROPOUT = 0.1 -BATCH_SIZE = 16 +BATCH_SIZE = 64 GRAD_ACC_STEPS = 1 +EVAL_ACCUMULATION_STEPS = None # to use in case of CUDA OOM during eval WEIGHT_DECAY = 0.01 GRADIENT_CLIP_NORM = 3.0 LABEL_SMOOTHING = 0.0 -LEARNING_RATE = 5e-6 -WARMUP_RATIO = 0.3 -VALID_SPLIT = 0.35 -TEST_SPLIT = 0.15 # unused +VALID_SPLIT = 0.10 +TEST_SPLIT = 0.15 USE_CUDA = True +USE_MPS = False USE_AMP = True +TORCH_COMPILE = False +TORCH_COMPILE_BACKEND = None # default to "inductor" +TORCH_COMPILE_MODE = None +USE_GRADIENT_CHECKPOINTING = True +DDP_FIND_UNUSED_PARAMETERS = False +DDP_BUCKET_CAP_MB = None # default to 25mb TRAINING_STEPS = 100000 -EARLY_STOP_STEPS = 15000 # nb of steps to stop training if no increase of valid loss -ITERATOR_KWARGS = {'early_stop_steps': EARLY_STOP_STEPS} -VALID_INTVL = 30 -NB_VALID_STEPS = 5 -LOG_INTVL = 10 -MIN_SEQ_LEN = 384 -MAX_SEQ_LEN = 460 +VALID_INTVL = 1000 +LOG_STEPS_INTVL = 20 +SAVE_STEPS = 1000 +SAVE_TOTAL_LIMIT = 1 + +# TRAINING PARAMS GEN +BATCH_SIZE_GEN = BATCH_SIZE +MIN_SEQ_LEN_GEN = 256 +MAX_SEQ_LEN_GEN = 384 +TRAINING_STEPS_GEN = TRAINING_STEPS +LEARNING_RATE_GEN = 1e-4 +LR_SCHEDULER_GEN = 'cosine_with_restarts' +WARMUP_RATIO_GEN = 0.3 +VALID_SPLIT_GEN = 0.02 +TEST_SPLIT_GEN = 0.10 + +# TRAINING PARAMS PRETRAINING +BATCH_SIZE_PT = BATCH_SIZE +MIN_SEQ_LEN_PT = 256 +MAX_SEQ_LEN_PT = 384 +TRAINING_STEPS_PT = TRAINING_STEPS +LEARNING_RATE_PT = 1e-4 +MASK_RATIO_CLA_PT = 0.15 +LR_SCHEDULER_PT = 'cosine_with_restarts' +WARMUP_RATIO_PT = 0.3 -# GEN TEST PARAMS -NB_INFERENCES_TEST = 1024 -MAX_SEQ_LEN_TEST = 1024 -BATCH_SIZE_TEST = 32 +# TRAINING PARAMS CLA FT +BATCH_SIZE_CLA_FT = BATCH_SIZE +MIN_SEQ_LEN_CLA_FT = 256 +MAX_SEQ_LEN_CLA_FT = 384 +TRAINING_STEPS_CLA_FT = 30000 +LEARNING_RATE_CLA_FT = 3e-5 +LR_SCHEDULER_CLA = 'cosine_with_restarts' +WARMUP_RATIO_CLA = 0.3 + +# TEST PARAMS GEN +NB_INFERENCES_GEN = 512 +MIN_SEQ_LEN_TEST_GEN = 256 +MAX_SEQ_LEN_TEST_GEN = 384 +BATCH_SIZE_TEST_GEN = 96 NUM_BEAMS = 1 # in practice the generation will use a batch size = BATCH_SIZE_TEST * NUM_BEAMS -TOP_P = 0.9 +TEMPERATURE_SAMPLING = 2.5 +TOP_K = 15 +TOP_P = 0.95 +EPSILON_CUTOFF = None +ETA_CUTOFF = None +NB_BEATS_PROMPT_GEN = 16 +NB_BEATS_CONTINUATION_MAX = 16 * 4 +MIN_NB_NOTES_PROMPT_GEN = 10 -# TRAINING PARAMS DIS / CLA -CLA_PRE_TRAINING_STEPS = 60000 -CLA_TRAINING_STEPS = 100000 -CLA_BATCH_SIZE = 24 -CLA_LARGE_BATCH_SIZE = 24 -CLA_PT_LEARNING_RATE = 1e-6 -CLA_FT_LEARNING_RATE = 5e-7 -CLA_EARLY_STOP = 25000 -RANDOM_RATIO_RANGE = (0.01, 0.15) +# TEST PARAMS CLA +MIN_SEQ_LEN_TEST_CLA = 256 +MAX_SEQ_LEN_TEST_CLA = 384 +BATCH_SIZE_TEST_CLA = 96 # For CP Word and Octuple -EMBED_SIZES_CP = [32, 64, 512, 128, 128] # fam, pos / bar, pitch, vel, dur -EMBED_SIZES_OCTUPLE = [512] * 5 # pitch, vel, dur, pos, bar +EMBED_POOLING_SIZE = 24 +MIN_NB_NOTES = 20 OCT_MAX_BAR = 30 # to shorten MIDIs -# For metrics -CONSISTENCY_WINDOWS_LEN = 16 # in beats + +# in case no GPU is available +if not cuda_available(): + USE_AMP = USE_CUDA = False +if USE_CUDA or not mps_available(): + USE_MPS = False diff --git a/dataset.py b/dataset.py index 68d68f3..141f853 100644 --- a/dataset.py +++ b/dataset.py @@ -1,20 +1,26 @@ from pathlib import Path -from typing import Tuple, List +from typing import Dict, Union, List, Tuple, Any from abc import ABC import json -from torch import LongTensor, stack, cat, full, flip -from torch.nn.utils.rnn import pad_sequence +from torch import LongTensor, cat, stack, full, arange +import torch from torch.utils.data import Dataset -from torchtoolkit.utils import randomize_tensor from miditok import MIDITokenizer from miditoolkit import MidiFile from tqdm import tqdm -class MyDataset(Dataset, ABC): - def __init__(self, samples=None): +class DatasetABC(Dataset, ABC): + def __init__(self, samples: List[LongTensor] = None, labels: List[int] = None): self.samples = samples if samples is not None else [] + self.labels = labels + + def reduce_nb_samples(self, nb_samples: int): + idx = torch.randint(0, len(self), (nb_samples,)) + self.samples = [self.samples[id_] for id_ in idx.tolist()] + if self.labels is not None: + self.labels = [self.labels[id_] for id_ in idx.tolist()] def __len__(self) -> int: return len(self.samples) @@ -23,35 +29,44 @@ def __repr__(self): return self.__str__() def __str__(self) -> str: return 'No data loaded' if len(self) == 0 else f'{len(self.samples)} samples' -class MIDIDatasetGen(MyDataset): - r"""Dataset for generator training +class DatasetMIDI(DatasetABC): + r"""Basic Dataset loading MIDI files. - :param data_path: path containing the real data to load, ex: 'data/death_metal_dataset'. + :param files_paths: list of paths to files to load. :param min_seq_len: minimum sequence length (in nb of tokens) :param max_seq_len: maximum sequence length (in nb of tokens) - :param padding_token: padding token, usually 0. - :param tokenizer: tokenizer object, to use when fake_data_path is a list of MIDI paths. (default: None) + :param tokenizer: tokenizer object, to use to load MIDIs instead of tokens. (default: None) + :param output_labels: will output a "labels" entry in the return item. (default: False) """ - def __init__(self, data_path: Path, min_seq_len: int, max_seq_len: int, padding_token: int, sos_token: int, - tokenizer: MIDITokenizer = None): - self.pad_token = padding_token - self.sos_token = sos_token - min_seq_len -= 1 # as SOS token will be added - max_seq_len -= 1 + def __init__( + self, + files_paths: List[Path], + min_seq_len: int, + max_seq_len: int, + tokenizer: MIDITokenizer = None, + output_labels: bool = False, + additional_kwargs: Dict = None, + ): + self.output_labels = output_labels + self.additional_kwargs = additional_kwargs samples = [] - as_midi = False - files_paths = list(Path(data_path).glob(f'**/*.json')) - if len(files_paths) == 0: - files_paths = list(Path(data_path).glob(f'**/*.mid')) - as_midi = True - - for file_path in tqdm(files_paths, desc=f'Preparing data {data_path.name}'): - if as_midi: - tokens = tokenizer.midi_to_tokens(MidiFile(file_path))[0] # first track, (T) or (T,Z) + + for file_path in tqdm(files_paths, desc=f"Loading data: {files_paths[0].parent}"): + if file_path.suffix in ["mid", "midi", "MID", "MIDI"]: + midi = MidiFile(file_path) + for _ in range(len(midi.instruments) - 1): + del midi.instruments[1] # removes all tracks except first one + tokens = tokenizer.midi_to_tokens(midi) else: with open(file_path) as json_file: - tokens = json.load(json_file)['tokens'][0] # first track + tokens = json.load(json_file)["ids"] + if not tokenizer.unique_track: + tokens = tokens[0] # first track + if len(tokens) < min_seq_len: + continue # tokens of this file not long enough + + # Cut tokens in samples of appropriate length i = 0 while i < len(tokens): if i >= len(tokens) - min_seq_len: @@ -61,74 +76,55 @@ def __init__(self, data_path: Path, min_seq_len: int, max_seq_len: int, padding_ super().__init__(samples) - def collate_fn(self, batch: List[LongTensor]) -> Tuple[LongTensor, LongTensor]: - batch = pad_sequence(batch, batch_first=True, padding_value=self.pad_token) # (N,T) or (N,T,Z) - (sos_shape := list(batch.shape))[1] = 1 # (N,1) or (N,1,Z) - batch = cat([full(sos_shape, self.sos_token), batch], dim=1) # adds sos token to every samples - return batch[:, :-1], batch[:, 1:] - - def collate_fn_infer(self, batch: List[LongTensor]) -> LongTensor: - # Here the sequences are padded to the left, so that the last element along the time dimension - # is always the last of each seq, allowing to efficiently generate by batch - sos_shape = (1,) if batch[0].dim() == 1 else (1, batch[0].shape[-1]) # (1) or (1,Z) - batch = [flip(cat([full(sos_shape, self.sos_token), seq], dim=0), dims=(0, )) for seq in batch] - batch = pad_sequence(batch, batch_first=True, padding_value=self.pad_token) # (N,T) or (N,T,Z) - batch = flip(batch, dims=(1, )).long() - return batch - - def __getitem__(self, idx) -> LongTensor: - return self.samples[idx] + def __getitem__(self, idx) -> Dict[str, LongTensor]: + item = {"input_ids": self.samples[idx]} + if self.output_labels: + item["labels"] = self.samples[idx] + if self.additional_kwargs is not None: + for key, val in self.additional_kwargs: + item[key] = val + return item -class MIDIDatasetClassification(MyDataset): +class DatasetClaComposer(DatasetABC): r"""Dataset for composer classification. - Only made for GiantMIDI + Only for GiantMIDI + NSP: https://github.com/huggingface/transformers/blob/main/src/transformers/data/datasets/language_modeling.py + For NSP, would need to add a SEP token to tokenizer vocab, and either mix sequences within Dataset + (not dynamic) or override DataCollatorForLanguageModeling to shuffle sequences (dynamic). - :param data_path: path containing the real data to load, ex: 'data/death_metal_dataset'. + :param files_paths: list of paths to files to load. :param min_seq_len: minimum sequence length (in nb of tokens) :param max_seq_len: maximum sequence length (in nb of tokens) - :param padding_token: padding token, usually 0. - :param sos_tok: Start Of Sequence (SOS) token, that will be inserted at the beginning of each sample - :param eos_tok: End Of Sequence (EOS) token, that will be inserted at the end of each sample - :param tokenizer: tokenizer object, to use when fake_data_path is a list of MIDI paths. (default: None) - :param random_range: token range of random tokens. (default: None) - :param random_ratio: ratio of randomized tokens (within the masking ratio), has to be comprised within [O,1] - :param random_ratio_range: if random_ratio is None, a random ratio will randomly be chosen between. You - can set a range for this ratio, between 0 and 1 (default: None) + :param tokenizer: tokenizer object, to use to load MIDIs instead of tokens. (default: None) """ - def __init__(self, data_path: Path, min_seq_len: int, max_seq_len: int, max_nb_composers: int, padding_token: int, - sos_tok: int, eos_tok: int, tokenizer: MIDITokenizer = None, **kwargs): - self.pad_token = padding_token - self.sos_tok = sos_tok - self.eos_tok = eos_tok - self.samples_composer_idx = [] - min_seq_len -= 2 # considering SOS and EOS tokens - max_seq_len -= 2 + def __init__( + self, + files_paths: List[Path], + min_seq_len: int, + max_seq_len: int, + max_nb_composers: int, + tokenizer: MIDITokenizer = None + ): + labels = [] composers = {} # stores composer_name: [samples_idx] - loading_midi = tokenizer is not None - files_paths = list(Path(data_path).glob(f'**/*.{"mid" if loading_midi else "json"}')) - self.random_range = kwargs.get('random_range', None) - self.random_ratio = kwargs.get('random_ratio', None) - self.random_ratio_range = kwargs.get('random_ratio_range', None) - - count = 0 # current nb of samples - for file_path in tqdm(files_paths, desc=f'Preparing data {data_path.name}'): + for file_path in tqdm(files_paths, desc=f'Preparing data: {files_paths[0].parent}'): # Check file is good parts = file_path.name.split(', ') if len(parts) < 4: continue # Load tokens - if loading_midi: + if file_path.suffix in ["mid", "midi", "MID", "MIDI"]: midi = MidiFile(file_path) for _ in range(len(midi.instruments) - 1): del midi.instruments[1] # removes all tracks except first one tokens = tokenizer.midi_to_tokens(midi)[0] else: with open(file_path) as json_file: - tokens = json.load(json_file)['tokens'][0] # first track + tokens = json.load(json_file)['ids'][0] # first track if len(tokens) < min_seq_len: continue # tokens of this file not long enough @@ -142,9 +138,9 @@ def __init__(self, data_path: Path, min_seq_len: int, max_seq_len: int, max_nb_c while i < len(tokens): if i >= len(tokens) - min_seq_len: break # last sample is too short - composers[composer].append(sample := LongTensor(tokens[i:i + max_seq_len])) - i += len(sample) # could be replaced with max_seq_len - count += 1 + sample = LongTensor(tokens[i:i + max_seq_len]) + composers[composer].append(sample) + i += max_seq_len '''# Remove composers < min_nb_samples composers_list = list(self.composers.keys()) # all of them, as a list @@ -158,43 +154,461 @@ def __init__(self, data_path: Path, min_seq_len: int, max_seq_len: int, max_nb_c self.nb_composers = 0 for i, composer in enumerate(composers_sorted_per_nb_samples[-max_nb_composers:]): samples += composers[composer] - self.samples_composer_idx += len(composers[composer]) * [i] + labels += len(composers[composer]) * [i] self.nb_composers += 1 del composers - super().__init__(samples) + super().__init__(samples, labels) + + def __getitem__(self, idx) -> Dict[str, Union[LongTensor, int]]: + return {"input_ids": self.samples[idx], + "labels": self.labels[idx]} + + +class DatasetClaEmotion(DatasetABC): + r"""Dataset for emotion classification, with the EMOPIA dataset. + + :param files_paths: list of paths to files to load. + :param min_seq_len: minimum sequence length (in nb of tokens) + :param max_seq_len: maximum sequence length (in nb of tokens) + :param tokenizer: tokenizer object, to use to load MIDIs instead of tokens. (default: None) + """ + + def __init__( + self, + files_paths: List[Path], + min_seq_len: int, + max_seq_len: int, + tokenizer: MIDITokenizer = None + ): + samples = [] + samples_labels = [] + + for file_path in tqdm(files_paths, desc=f'Preparing data: {files_paths[0].parent}'): + # Load tokens + if file_path.suffix in ["mid", "midi", "MID", "MIDI"]: + midi = MidiFile(file_path) + for _ in range(len(midi.instruments) - 1): + del midi.instruments[1] # removes all tracks except first one + tokens = tokenizer.midi_to_tokens(midi)[0] + else: + with open(file_path) as json_file: + tokens = json.load(json_file)['ids'][0] # first track + if len(tokens) < min_seq_len: + continue # tokens of this file not long enough + + # Get emotion label + label = int(file_path.name[1]) - 1 # Q1/Q2/Q3/Q4 + + # Cut tokens in samples of appropriate length + i = 0 + while i < len(tokens): + if i >= len(tokens) - min_seq_len: + break # last sample is too short + samples.append(LongTensor(tokens[i:i + max_seq_len])) + samples_labels.append(label) + i += max_seq_len + + super().__init__(samples, samples_labels) + + def __getitem__(self, idx) -> Dict[str, Union[LongTensor, int]]: + return {"input_ids": self.samples[idx], "labels": self.labels[idx]} + - def collate_fn(self, batch: List[Tuple[LongTensor, int]]) -> Tuple[LongTensor, LongTensor]: - (sos_shape := list(batch[0][0].shape))[0] = 1 # (1) or (1,Z) - x = [cat([full(sos_shape, self.sos_tok), seq, full(sos_shape, self.eos_tok)], dim=0) for seq, _ in batch] - x = pad_sequence(x, batch_first=True, padding_value=self.pad_token).long() # (N,T) - y = LongTensor([item[1] for item in batch]) - return x, y # (N,T) and (N) +class DatasetClaMMD(DatasetABC): + r"""Dataset for genre of artist classification with MMD - def collate_fn_infer(self, batch: List[Tuple[LongTensor, int]]) -> Tuple[LongTensor, LongTensor]: - return self.collate_fn(batch) + :param files_paths: list of paths to files to load. + :param min_seq_len: minimum sequence length (in nb of tokens) + :param max_seq_len: maximum sequence length (in nb of tokens) + :param tokenizer: tokenizer object, to use to load MIDIs instead of tokens. (default: None) + """ + + def __init__( + self, + files_paths: List[Path], + min_seq_len: int, + max_seq_len: int, + max_nb_labels: int, + genres: bool = False, + artists: bool = False, + tokenizer: MIDITokenizer = None, + ): + labels_idx = [] + labels = {} # stores label_name: [samples (token_ids)] + if genres: + file_path = Path("data", "MMD_METADATA", "MMD_scraped_genre.jsonl") + key = "genre" + elif artists: + file_path = Path("data", "MMD_METADATA", "MMD_scraped_title_artist.jsonl") + key = "title_artist" + else: + raise ValueError + md5_to_labels = {} + with open(file_path) as file: + for row in file: + entry = json.loads(row) + if len(entry[key][0]) == 0: + continue + if genres: + md5_to_labels[entry["md5"]] = entry[key][0][0] + else: + md5_to_labels[entry["md5"]] = entry[key][0][1] + + for file_path in tqdm(files_paths, desc=f'Preparing data: {files_paths[0].parent}'): + md5 = file_path.stem.split("_")[0] # split for MMD-short + if not md5 in md5_to_labels: + continue + label = md5_to_labels[md5] + if label not in labels: + labels[label] = [] + + # Load tokens + if file_path.suffix in ["mid", "midi", "MID", "MIDI"]: + midi = MidiFile(file_path) + for _ in range(len(midi.instruments) - 1): + del midi.instruments[1] # removes all tracks except first one + tokens = tokenizer.midi_to_tokens(midi)[0] + else: + with open(file_path) as json_file: + tokens = json.load(json_file)['ids'] + if len(tokens) < min_seq_len: + continue # tokens of this file not long enough - def collate_pre_train(self, batch: List[Tuple[LongTensor, int]]) -> Tuple[LongTensor, LongTensor]: - """Randomize some random token positions, to pre-train a non-causal LM. + # Cut tokens in samples of appropriate length + i = 0 + while i < len(tokens): + if i >= len(tokens) - min_seq_len: + break # last sample is too short + sample = LongTensor(tokens[i:i + max_seq_len]) + labels[label].append(sample) + i += max_seq_len - :param batch: a batch of token sequences, as a list of N tuples. - :return: + # Keep only max_nb_labels, ones with most samples + samples = [] + labels_sorted_per_nb_samples = sorted(labels.keys(), key=lambda x: len(labels[x])) + for i, label in enumerate(labels_sorted_per_nb_samples[-max_nb_labels:]): + samples += labels[label] + labels_idx += len(labels[label]) * [i] + + del labels + super().__init__(samples, labels_idx) + + def __getitem__(self, idx) -> Dict[str, Union[LongTensor, int]]: + return {"input_ids": self.samples[idx], + "labels": self.labels[idx]} + + +class DataCollatorStandard: + def __init__( + self, + pad_token: int, + bos_token: int = None, + eos_token: int = None, + pad_on_left: bool = False, + shift_labels: bool = False, + labels_pad_idx: int = -100, + add_bos_eos_to_labels: bool = False, + inputs_kwarg_name: str = "input_ids", + labels_kwarg_name: str = "labels", + ): + """Multifunction data collator, that can pad the sequences (right or left), add BOS and EOS tokens. + Input_ids will be padded with the pad token given, while labels will be padded with -100. + + :param pad_token: PAD token + :param bos_token: BOS token (default: None). + :param eos_token: EOS token (default: None). + :param pad_on_left: will pad sequence on the left (default: False). + :param shift_labels: will shift inputs and labels for autoregressive training / teacher forcing. + :param labels_pad_idx: padding idx for labels (default: -100). + :param add_bos_eos_to_labels: will add BOS and/or EOS tokens to the labels (default: False). + :param inputs_kwarg_name: name of dict / kwarg key for inputs (default: "input_ids"). + :param inputs_kwarg_name: name of dict / kwarg key for inputs (default: "labels_"). """ - (sos_shape := list(batch[0][0].shape))[0] = 1 # (1) or (1,Z) - if len(sos_shape) == 1: - x = [cat([full(sos_shape, self.sos_tok), - randomize_tensor(seq, self.random_range, self.random_ratio, self.random_ratio_range), - full(sos_shape, self.eos_tok)], dim=0) for seq, _ in batch] + self.pad_token = pad_token + self.bos_token = bos_token + self.eos_token = eos_token + self.pad_on_left = pad_on_left + self.shift_labels = shift_labels + self.labels_pad_idx = labels_pad_idx + self.add_bos_eos_to_labels = add_bos_eos_to_labels + self.inputs_kwarg_name = inputs_kwarg_name + self.labels_kwarg_name = labels_kwarg_name + + def __call__(self, batch: List[Dict[str, Any]]) -> Dict[str, LongTensor]: + out_batch = {} + pad_on_left = batch[0]["pad_on_left"] if "pad_on_left" in batch[0] else self.pad_on_left + + # Add BOS and EOS tokens + PAD to inputs + x = None + if self.inputs_kwarg_name in batch[0]: + _add_bos_eos_tokens_to_batch(batch, self.inputs_kwarg_name, bos_tok=self.bos_token, eos_tok=self.eos_token) + x = _pad_batch(batch, self.pad_token, self.inputs_kwarg_name, pad_on_left) + + # Add BOS and EOS tokens + PAD labels + y = None + if self.labels_kwarg_name in batch[0]: + # generation or language modeling + if isinstance(batch[0][self.labels_kwarg_name], LongTensor): + _add_bos_eos_tokens_to_batch(batch, self.labels_kwarg_name, + bos_tok=self.bos_token, eos_tok=self.eos_token) + y = _pad_batch(batch, self.labels_pad_idx, self.labels_kwarg_name, pad_on_left) + # classification + else: + y = LongTensor([item[self.labels_kwarg_name] for item in batch]) + + # Shift labels + if self.shift_labels: # otherwise it's handled in models such as GPT2LMHead + if x is not None: + inputs = x + elif y is not None: + inputs = y + else: + raise ValueError("Either inputs or labels have to be specified by the Dataset.") + x = inputs[:-1] + y = inputs[1:] + + # Add inputs / labels to output batch + if x is not None: + out_batch[self.inputs_kwarg_name] = x + if y is not None: + out_batch[self.labels_kwarg_name] = y + + # Create attention mask (just for padding, causality is handled in models) + attention_mask = (x != self.pad_token).int() + if attention_mask.dim() == 3: + attention_mask = attention_mask[..., 0] # (N,T,Z) --> (N,T) + out_batch["attention_mask"] = attention_mask + + return out_batch + + +class DataCollatorClaPreTrain: + """ + Data collator used for language modeling. Inputs are dynamically padded to the maximum length of a batch if they + are not all the same length. + Inspired from transformers.DataCollatorForLanguageModeling + """ + + def __init__( + self, + pad_token: int, + bos_token: int, + eos_token: int, + mask_token: int, + sep_token: int, + vocab_size: Union[int, List[int]], + special_tokens: List[int], + mlm_probability: float = 0.15, + nsp_probability: float = 0.5, + sentence_b_ratio: float = 0.5, + ): + self.pad_token = pad_token + self.bos_token = bos_token + self.eos_token = eos_token + self.mask_token = mask_token + self.sep_token = LongTensor([sep_token]) + self.vocab_size = vocab_size + self.special_tokens = LongTensor(special_tokens) + self.mlm_probability = mlm_probability + self.nsp_probability = nsp_probability + self.sentence_b_ratio = sentence_b_ratio + + def __call__(self, batch: List[Dict[str, Any]], return_tensors=None) -> Dict[str, Any]: + _add_bos_eos_tokens_to_batch(batch, bos_tok=self.bos_token, eos_tok=self.eos_token) + # Determine idx to mix for NSP + batch, token_type_ids, next_sentence_label = _nsp_swap(batch, + self.nsp_probability, + self.sentence_b_ratio, + self.sep_token, + self.pad_token) + + # Pad and mask them + masked_inputs, original_input = self.torch_mask_tokens(_pad_batch(batch, self.pad_token)) + attention_mask = (masked_inputs != self.pad_token).int() + if attention_mask.dim() == 3: + attention_mask = attention_mask[..., 0] # (N,T,Z) --> (N,T) + + # If special token mask has been preprocessed, pop it from the dict. + batch = {"input_ids": masked_inputs, + "labels": original_input, + "token_type_ids": token_type_ids, + "next_sentence_label": next_sentence_label, + "attention_mask": attention_mask} + return batch + + def torch_mask_tokens(self, inputs: LongTensor) -> Tuple[Any, Any]: + """ + Prepare masked tokens inputs/labels for masked language modeling: 80% MASK, 10% random, 10% original. + """ + + labels = inputs.clone() + # We sample a few tokens in each sequence for MLM training (with probability `self.mlm_probability`) + probability_matrix = full(labels.shape, self.mlm_probability) + special_tokens_mask = torch.isin(inputs, self.special_tokens) + + probability_matrix.masked_fill_(special_tokens_mask, value=0.0) + masked_indices = torch.bernoulli(probability_matrix).bool() + labels[~masked_indices] = -100 # We only compute loss on masked tokens + + # 80% of the time, we replace masked input tokens with tokenizer.mask_token ([MASK]) + indices_replaced = torch.bernoulli(full(labels.shape, 0.8)).bool() & masked_indices + inputs[indices_replaced] = self.mask_token + + # 10% of the time, we replace masked input tokens with random word + indices_random = torch.bernoulli(full(labels.shape, 0.5)).bool() & masked_indices & ~indices_replaced + if inputs.dim() == 3: + random_words = [] + for i in range(inputs.shape[-1]): + random_words.append(torch.randint(self.vocab_size[i], inputs.shape[:-1]).long()) + random_words = stack(random_words, -1) else: - randomized = [] - for seq, _ in batch: # over seq - randomized.append(stack([randomize_tensor(seq[:, t], self.random_range[t], self.random_ratio, - self.random_ratio_range) for t in range(sos_shape[-1])], -1)) - x = [cat([full(sos_shape, self.sos_tok), seq, full(sos_shape, self.eos_tok)], dim=0) for seq in randomized] - x = pad_sequence(x, batch_first=True, padding_value=self.pad_token).long() # (N,T) - y = [cat([full(sos_shape, self.sos_tok), seq, full(sos_shape, self.eos_tok)], dim=0) for seq, _ in batch] - y = pad_sequence(y, batch_first=True, padding_value=self.pad_token).long() - return x, y # (N,T) and (N,T) - - def __getitem__(self, idx) -> Tuple[LongTensor, int]: - return self.samples[idx], self.samples_composer_idx[idx] + random_words = torch.randint(self.vocab_size, labels.shape).long() + inputs[indices_random] = random_words[indices_random] + + # The rest of the time (10% of the time) we keep the masked input tokens unchanged + return inputs, labels + + +class DataCollatorContrastive: + def __init__(self, pad_token: int, bos_token: int, eos_token: int): + """Collator for contrastive learning. + The labels are ranks (arange()). + + :param pad_token: pas token + """ + self.pad_token = pad_token + self.bos_token = bos_token + self.eos_token = eos_token + + def __call__(self, batch: List[Dict[str, Any]]) -> Dict[str, LongTensor]: + _add_bos_eos_tokens_to_batch(batch, bos_tok=self.bos_token, eos_tok=self.eos_token) + x = _pad_batch(batch, self.pad_token) # .repeat(2, 1) # (N*2,T) + attention_mask = (x != self.pad_token).int() + if attention_mask.dim() == 3: + attention_mask = attention_mask[..., 0] # (N,T,Z) --> (N,T) + return {"input_ids": x, "labels": arange(x.size(0)).long(), "attention_mask": attention_mask} # rank + + +def _add_bos_eos_tokens_to_batch( + batch: List[Dict[str, LongTensor]], + dict_key: str = "input_ids", + bos_tok: int = None, + eos_tok: int = None +): + if bos_tok is None and eos_tok is None: + return + + (sos_shape := list(batch[0][dict_key].shape))[0] = 1 # (1) or (1,Z) + for i in range(len(batch)): + if bos_tok is not None and eos_tok is not None: + batch[i][dict_key] = cat([full(sos_shape, bos_tok), + batch[i][dict_key], + full(sos_shape, eos_tok)], dim=0).long() + elif bos_tok is not None: + batch[i][dict_key] = cat([full(sos_shape, bos_tok), batch[i][dict_key]], dim=0).long() + else: # EOS not None + batch[i][dict_key] = cat([batch[i][dict_key], full(sos_shape, eos_tok)], dim=0).long() + + +def _pad_batch( + batch: List[Dict[str, LongTensor]], + pad_token: int, + dict_key: str = "input_ids", + pad_on_left: bool = False +) -> LongTensor: + """Collate `examples` into a batch, using the information in `tokenizer` for padding if necessary.""" + + length_of_first = batch[0][dict_key].size(0) + + # Check if padding is necessary. + are_tensors_same_length = all(x[dict_key].size(0) == length_of_first for x in batch) + if are_tensors_same_length: + return stack([e[dict_key] for e in batch], dim=0).long() + + # Creating the full tensor and filling it with our data. + if pad_on_left: + return _pad_left([e[dict_key] for e in batch], pad_token) + else: + return torch.nn.utils.rnn.pad_sequence( + [e[dict_key] for e in batch], + batch_first=True, + padding_value=pad_token + ).long() + + +def _pad_left(batch: List[LongTensor], pad_token: int) -> LongTensor: + # Here the sequences are padded to the left, so that the last token along the time dimension + # is always the last token of each seq, allowing to efficiently generate by batch + batch = [torch.flip(seq, dims=(0,)) for seq in batch] + batch = torch.nn.utils.rnn.pad_sequence(batch, batch_first=True, padding_value=pad_token) # (N,T) + batch = torch.flip(batch, dims=(1,)).long() + return batch + + +def _nsp_swap( + examples: List[Dict[str, LongTensor]], + nsp_ratio: float, + seq_b_ratio: float, + sep_token: Union[int, LongTensor], + pad_token: Union[int, LongTensor], +) -> Tuple[List[Dict[str, LongTensor]], LongTensor, LongTensor]: + # Determine idx to mix for NSP + nb_mixed = int(len(examples) * nsp_ratio) + token_type_ids = [full((len(examples[idx]["input_ids"]) + 1,), 0).long() for idx in range(len(examples))] + next_sentence_label = full((len(examples),), 0).long() + new_next_idx = arange(len(examples)) + if nb_mixed > 1: + # create permutations / pairs of swapped seq_a - seq_b + permutations = torch.randperm(nb_mixed) + while any(equal := permutations == arange(nb_mixed)): + idx_equal = torch.where(equal)[0] # list of idx to mix together + if len(idx_equal) == 1: + idx_to_swap = torch.multinomial(cat([permutations[:idx_equal[0]], + permutations[idx_equal[0] + 1:]]).float(), 1).long() + permutations[idx_equal[0]] = idx_to_swap + permutations[idx_to_swap] = idx_equal[0] + else: + permutations[idx_equal] = permutations[idx_equal[torch.randperm(len(idx_equal))]] # only betw those eq + samples_to_mix_idx = torch.multinomial(arange(len(examples)).float(), nb_mixed).long() + new_next_idx[samples_to_mix_idx] = samples_to_mix_idx.clone()[permutations] + + # Swap them and prepare labels / token_type_ids + # SEP token need to be added at the end (before padding) as we may otherwise swap sequences of + # different lengths and add additional SEP tokens to some + examples_copy = [e["input_ids"].clone() for e in examples] + (sep_shape := list(examples[0]["input_ids"].shape))[0] = 1 # (1) or (1,Z) + sep_token_ = full(sep_shape, int(sep_token)) + for idx, idx_next in enumerate(new_next_idx): + sep_idx = int(len(examples[idx]["input_ids"]) * seq_b_ratio) + len_seq_b = len(examples[idx]["input_ids"]) - sep_idx + len_next_seq = len(examples[idx_next]["input_ids"]) - 1 # -1 because of BOS token + if len_seq_b > len_next_seq: + sep_idx = len(examples[idx]["input_ids"]) - len_next_seq + len_seq_b = len_next_seq + token_type_ids[idx] = cat([token_type_ids[idx][:sep_idx + 1], full((len_seq_b,), 1).long()]).long() + if idx != idx_next: # meaning seq_b is not seq_a's second part + next_sentence_label[idx] = 1 + + examples[idx]["input_ids"] = cat([examples_copy[idx][:sep_idx], + sep_token_, + examples_copy[idx_next][-len_seq_b:]]).long() + examples[idx]["labels"] = cat([examples_copy[idx][:sep_idx], + sep_token_, + examples_copy[idx_next][-len_seq_b:]]).long() + + token_type_ids = torch.nn.utils.rnn.pad_sequence(token_type_ids, True, float(pad_token)).long() # stack and pad + return examples, token_type_ids, next_sentence_label + + +def list_mmd_files_paths(match_file_path: Path = Path('results', 'midi_audio_matches.json')) -> List[Path]: + with open(match_file_path) as file: + matches = json.load(file) + return [Path('data', 'MMD', md5[0], md5[1], md5[2], md5).with_suffix('.mid') for md5 in matches.keys()] + + +def list_mmd_files_paths_short(match_file_path: Path = Path('results', 'midi_audio_matches.json')) -> List[Path]: + with open(match_file_path) as file: + matches = json.load(file) + all_paths = Path("data", "MMD-short").glob("**/*.mid") + return [path for path in all_paths if path.stem.split("_")[0] in matches] diff --git a/exp_cla_finetune.py b/exp_cla_finetune.py new file mode 100644 index 0000000..6e7c249 --- /dev/null +++ b/exp_cla_finetune.py @@ -0,0 +1,325 @@ +#!/usr/bin/python3 python + +""" +Composer classification +Note density +Next sequence prediction + +Elapsed time (beat) +""" + +import os +from abc import ABC +from pathlib import Path +from copy import deepcopy +from typing import List, Any, Dict +from dataclasses import dataclass + +from transformers import BertForSequenceClassification, BertConfig, TrainingArguments +from torch.nn import Linear, Embedding, Sequential, Tanh + +from classes import Experiment, Baseline, DataConfig, TestingConfig, TokenizationConfig +from models import BertForSequenceClassificationEmbeddingPooling +from dataset import DatasetClaComposer, DatasetClaEmotion, DataCollatorStandard, DatasetClaMMD +from constants import * + + +class BaselineClaFinetune(Baseline, ABC): + def create_data_collator(self) -> DataCollatorStandard: + return DataCollatorStandard(self.pad_token, self.bos_token, self.eos_token) + + def create_model(self): + if not self.tokenizer.is_multi_voc: + model = BertForSequenceClassification(self.model_config) + if self.name[-4:] == "tiny": + model.bert.embeddings.word_embeddings = Sequential( + Embedding(self.model_config.vocab_size, TINY_DIM, self.pad_token), + Linear(TINY_DIM, self.model_config.hidden_size), + Tanh(), + ) + else: + embed_sizes = [self.embed_pooling_size for _ in range(len(self.tokenizer.len))] + model = BertForSequenceClassificationEmbeddingPooling(self.model_config, self.tokenizer.len, embed_sizes) + return model + + +class BaselineComposer(BaselineClaFinetune): + + def create_dataset(self, files_paths: List[Path], *args, **kwargs): + return DatasetClaComposer(files_paths, self.data_config.min_seq_len - 2, self.data_config.max_seq_len - 2, + self.model_config.num_labels) + + +class BaselineEmotion(BaselineClaFinetune): + def create_dataset(self, files_paths: List[Path], *args, **kwargs): + return DatasetClaEmotion(files_paths, self.data_config.min_seq_len - 2, self.data_config.max_seq_len - 2) + + +class BaselineMMDGenre(BaselineClaFinetune): + def create_dataset(self, files_paths: List[Path], *args, **kwargs): + return DatasetClaMMD(files_paths, self.data_config.min_seq_len - 2, self.data_config.max_seq_len - 2, + self.model_config.num_labels, genres=True) + + +class BaselineMMDArtist(BaselineClaFinetune): + def create_dataset(self, files_paths: List[Path], *args, **kwargs): + return DatasetClaMMD(files_paths, self.data_config.min_seq_len - 2, self.data_config.max_seq_len - 2, + self.model_config.num_labels, artists=True) + + +@dataclass +class FineTuningTask: + name: str + dataset: str + nb_classes: int + baseline_cls: Any + special_arguments: Dict[str, Dict[str, Any]] = None + + +ftts = [ + # FineTuningTask("composer_150", "GiantMIDI", 150, BaselineComposer), +] + +model_config = BertConfig( + vocab_size=None, + num_labels=2, # will be overridden / modified when creating baselines + hidden_size=DIM, + num_hidden_layers=NB_LAYERS, + num_attention_heads=NB_HEADS, + intermediate_size=D_FFWD, + hidden_dropout_prob=DROPOUT, + attention_probs_dropout_prob=DROPOUT, + max_position_embeddings=NB_POS_ENC_PARAMS, + type_vocab_size=2, +) +finetune_config = TrainingArguments( + "", False, True, True, False, "steps", + per_device_train_batch_size=BATCH_SIZE_CLA_FT, + per_device_eval_batch_size=BATCH_SIZE_TEST_CLA, + gradient_accumulation_steps=GRAD_ACC_STEPS, + eval_accumulation_steps=EVAL_ACCUMULATION_STEPS, + eval_steps=VALID_INTVL, + learning_rate=LEARNING_RATE_CLA_FT, + weight_decay=WEIGHT_DECAY, + max_grad_norm=GRADIENT_CLIP_NORM, + max_steps=TRAINING_STEPS_CLA_FT, + lr_scheduler_type=LR_SCHEDULER_CLA, + warmup_ratio=WARMUP_RATIO_CLA, + log_level="debug", + logging_strategy="steps", + logging_steps=LOG_STEPS_INTVL, + save_strategy="steps", + save_steps=SAVE_STEPS, + save_total_limit=SAVE_TOTAL_LIMIT, + no_cuda=not USE_CUDA, + seed=SEED, + fp16=USE_AMP, + local_rank=int(os.getenv("LOCAL_RANK", -1)), # for DDP + load_best_model_at_end=True, + label_smoothing_factor=LABEL_SMOOTHING, + optim="adamw_torch", + report_to=["tensorboard"], # logging_dir will be set within Baseline class + ddp_find_unused_parameters=DDP_FIND_UNUSED_PARAMETERS, + ddp_bucket_cap_mb=DDP_BUCKET_CAP_MB, + gradient_checkpointing=USE_GRADIENT_CHECKPOINTING, + full_determinism=True, + use_mps_device=USE_MPS, + torch_compile=TORCH_COMPILE, + torch_compile_backend=TORCH_COMPILE_BACKEND, + torch_compile_mode=TORCH_COMPILE_MODE, +) +data_config = DataConfig(VALID_SPLIT, TEST_SPLIT, MIN_SEQ_LEN_CLA_FT, MAX_SEQ_LEN_CLA_FT) +test_config = TestingConfig(BATCH_SIZE_TEST_CLA, MIN_SEQ_LEN_TEST_CLA, MAX_SEQ_LEN_TEST_CLA) + + +def create_baseline(ftt: FineTuningTask, baseline_name: str, exp_name: str, tok_config: TokenizationConfig): + data_conf_, test_conf_, model_conf_, train_conf_ = \ + map(deepcopy, [data_config, test_config, model_config, finetune_config]) + model_conf_.num_labels = ftt.nb_classes + if ftt.special_arguments is not None: + for name, conf in [("data", data_conf_), ("test", test_conf_), ("model", model_conf_), + ("train", train_conf_)]: + if name in ftt.special_arguments: + for attr, val in ftt.special_arguments[name].items(): + setattr(conf, attr, val) + + baseline = ftt.baseline_cls(baseline_name, exp_name, ftt.dataset, SEED, tok_config, model_conf_, train_conf_, + data_conf_, test_conf_) + return baseline + + +experiments = [] +for ftt_ in ftts: + model_config.num_labels = ftt_.nb_classes # overrides depending on ft task + for tokenization in TOKENIZATIONS: + exp_name_ = f'cla_{ftt_.name}_{ftt_.dataset}_{tokenization}' + baselines = [] + + # noBPE and tiny baseline + tok_config_ = TokenizationConfig(tokenization, deepcopy(TOKENIZER_PARAMS)) + # baselines.append(create_baseline(ftt_, f"{tokenization}_noBPE_tiny", exp_name_, tok_config_)) + baselines.append(create_baseline(ftt_, f"{tokenization}_noBPE", exp_name_, tok_config_)) + + # BPE baselines + for bpe_vocab_size in BPE_VOCAB_SIZES: + tok_config_ = TokenizationConfig(tokenization, deepcopy(TOKENIZER_PARAMS), bpe_vocab_size) + baselines.append(create_baseline(ftt_, f"{tokenization}_bpe{bpe_vocab_size}", exp_name_, tok_config_)) + + # PVm / PVDm + for token_combination in ['PVm', 'PVDm']: + tok_name = f'{tokenization}{token_combination}' + tok_config_ = TokenizationConfig(tok_name, deepcopy(TOKENIZER_PARAMS)) + baselines.append(create_baseline(ftt_, tok_name, exp_name_, tok_config_)) + + # Embedding Pooling + if tokenization == 'REMI': # adds CPWord and Octuple for comparison + for tok in ['CPWord', 'OctupleMono']: + datas = f'{ftt_.dataset}-short' if tok == 'OctupleMono' else ftt_.dataset + tok_config_ = TokenizationConfig(tok, deepcopy(TOKENIZER_PARAMS)) + baselines.append(create_baseline(ftt_, tok, exp_name_, tok_config_)) + baselines[-1].dataset = datas + baselines[-1].tokens_path = Path("data", f"{datas}_{baselines[-1].tokenization}") + baselines[-1].embed_pooling_size = EMBED_POOLING_SIZE + + experiments.append(Experiment(exp_name_, baselines, ftt_.dataset)) + + +# MMD experiments +for tokenization in ["TSDPlus", "REMIPlus"]: + for label_type, cls, nb_labels in [("genre", BaselineMMDGenre, MMD_NB_GENRES), + ("artist", BaselineMMDArtist, MMD_NB_ARTISTS)]: + exp_name_ = f"cla_{label_type}_MMD_{tokenization}" + TOKENIZER_PARAMS_MMD = deepcopy(TOKENIZER_PARAMS) + if tokenization == "REMIPlus": + TOKENIZER_PARAMS_MMD["max_bar_embedding"] = None + tok_config_ = TokenizationConfig(tokenization, TOKENIZER_PARAMS_MMD) + ftt_ = FineTuningTask(label_type, "MMD", nb_labels, cls) + + # noBPE and tiny baseline + baselines = [ + # create_baseline(ftt_, f"{tokenization}_noBPE_tiny", exp_name_, tok_config_), + create_baseline(ftt_, f"{tokenization}_noBPE", exp_name_, tok_config_) + ] + + # BPE baselines + for bpe_vocab_size in BPE_VOCAB_SIZES: + tok_config_ = TokenizationConfig(tokenization, TOKENIZER_PARAMS_MMD, bpe_vocab_size) + baselines.append(create_baseline(ftt_, f"{tokenization}_bpe{bpe_vocab_size}", exp_name_, tok_config_)) + + # PVm / PVDm + for token_combination in ['PVm', 'PVDm']: + tok_name = f'{tokenization}{token_combination}' + tok_config_ = TokenizationConfig(tok_name, TOKENIZER_PARAMS) + baselines.append(create_baseline(ftt_, tok_name, exp_name_, tok_config_)) + + # Embedding Pooling + if tokenization == "REMIPlus": + datas = f"MMD-short" + tok_config_ = TokenizationConfig("Octuple", TOKENIZER_PARAMS) + baselines.append(create_baseline(ftt_, "Octuple", exp_name_, tok_config_)) + baselines[-1].dataset = datas + baselines[-1].tokens_path = Path("data", f"{datas}_{baselines[-1].tokenization}") + baselines[-1].embed_pooling_size = EMBED_POOLING_SIZE + + experiments.append(Experiment(exp_name_, baselines, ftt_.dataset)) + + +metrics_names = [("f1", []), ("accuracy", []), ("roc_auc", ["multiclass"])] + + +if __name__ == '__main__': + from functools import partial + + from torch import argmax, softmax, Tensor, unique + from torch.distributed import get_world_size, get_rank + from transformers import Trainer + from transformers.trainer_utils import get_last_checkpoint, set_seed + from evaluate import load as load_metric, Metric + + from training import train_model, test_model, is_training_done, is_testing_done, preprocess_logits, create_subsets + + def compute_metrics_classification(eval_pred, metrics_: Dict[str, Metric]): + """Computes metrics for pretraining. + Must use proprocess_logits function that converts logits to predictions (argmax or sampling). + + :param eval_pred: EvalPrediction containing predictions and labels + :param metrics_: metrics + :return: results + """ + logits, labels = eval_pred + predictions = argmax(Tensor(logits), dim=-1).numpy() + classes_present = unique(Tensor(labels)).numpy() + logits_auc = Tensor(logits).t()[classes_present].t() # (N,C) --> (C,N) --> (C',N) --> (N,C') + logits_auc = softmax(logits_auc, dim=-1).numpy() + # print(f"label shape: {labels.shape}\nlogits shape: {logits.shape}\npred shape: {predictions.shape}") + + acc = metrics_["accuracy"].compute(predictions=predictions.flatten(), references=labels.flatten()) + f1 = metrics_["f1"].compute(predictions=predictions.flatten(), references=labels.flatten(), average="macro") + auc = metrics_["roc_auc"].compute(prediction_scores=logits_auc, references=labels.flatten(), + average="micro", multi_class="ovr") + + if metrics_["accuracy"].process_id == 0: + metric_res = {"accuracy": acc["accuracy"], "f1": f1["f1"], "roc_auc": auc["roc_auc"]} + else: + metric_res = {"accuracy": 0, "f1": 0, "roc_auc": 0} + return metric_res + + for exp_ in experiments: + # For maximum nb of samples for all baselines + max_idx = -1 if exp_.name.split("_")[-1].startswith("REMI") else 4 + tokens_paths = list(Path(exp_.baselines[max_idx].tokens_path).glob('**/*.json')) + data_max = exp_.baselines[max_idx].create_dataset(tokens_paths) + max_nb_samples = len(data_max) + + for baseline_ in exp_.baselines: + # Check training is not already done and init + if is_testing_done(baseline_.run_path): + continue + last_checkpoint = get_last_checkpoint(str(baseline_.run_path)) if baseline_.run_path.exists() else None + baseline_.training_config.resume_from_checkpoint = last_checkpoint + model_ = baseline_.create_model() + + # create metrics + try: + metrics_func = {metric: load_metric(metric, *args, num_process=get_world_size(), process_id=get_rank(), + experiment_id=f"bpe_{exp_.name}_{baseline_.name}") + for metric, args in metrics_names} + except RuntimeError: + metrics_func = {metric: load_metric(metric, *args, experiment_id=f"bpe_{exp_.name}_{baseline_.name}") + for metric, args in metrics_names} + + # Load data + set_seed(baseline_.seed) # set before loading checkpoint + token_paths = list(Path(baseline_.tokens_path).glob('**/*.json')) + dataset_ = baseline_.create_dataset(files_paths=token_paths) + if len(dataset_) > max_nb_samples: + dataset_.reduce_nb_samples(max_nb_samples) + dataset_train, dataset_valid, dataset_test = create_subsets(dataset_, [baseline_.data_config.valid_ratio, + baseline_.data_config.test_ratio]) + collator = baseline_.create_data_collator() + + # Load pretrained weights if necessary + if last_checkpoint is None: # no finetuning yet, we load weights from pretrained + pt_path = Path("runs", "cla_pre_trained", f"{exp_.dataset}_{baseline_.name}") + model_kwargs = {"num_labels": baseline_.model_config.num_labels} + if baseline_.tokenizer.is_multi_voc: + embed_sizes = [baseline_.embed_pooling_size for _ in range(len(baseline_.tokenizer.len))] + model_kwargs["num_classes"] = baseline_.tokenizer.len + model_kwargs["embed_sizes"] = embed_sizes + model_ = model_.from_pretrained(get_last_checkpoint(pt_path), **model_kwargs) + + # Fine-tune model and test it + trainer = Trainer( + model=model_, + args=baseline_.training_config, + data_collator=collator, + train_dataset=dataset_train, + eval_dataset=dataset_valid, + compute_metrics=partial(compute_metrics_classification, metrics_=metrics_func), + # preprocess_logits_for_metrics=preprocess_logits, + ) + if not is_training_done(baseline_.run_path): + train_model(trainer) + else: + model_ = model_.from_pretrained(last_checkpoint) + test_model(trainer, dataset_test) diff --git a/exp_generation.py b/exp_generation.py new file mode 100644 index 0000000..340ad89 --- /dev/null +++ b/exp_generation.py @@ -0,0 +1,480 @@ +#!/usr/bin/python3 python + +""" +Lists the Experiment baselines and training +""" + +import os +from typing import Union, List, Dict, Optional, Any, Tuple +from pathlib import Path +from copy import deepcopy + +from miditok import MIDITokenizer +from torch import Tensor, LongTensor, no_grad +from torch.nn import Linear, Embedding, Sequential, Module, Tanh +from transformers import GPT2LMHeadModel, GPT2Config, Seq2SeqTrainingArguments, GenerationConfig +import numpy as np + +from classes import Experiment, Baseline, DataConfig, TestingConfig, TokenizationConfig +from dataset import DatasetMIDI, DataCollatorStandard +from models import GPT2LMHeadModelEmbedPooling +from constants import * + + +class BaselineGen(Baseline): + def create_dataset(self, files_paths: List[Path], **kwargs): + return DatasetMIDI( + files_paths, + self.data_config.min_seq_len - 1, + self.data_config.max_seq_len - 1, + self.tokenizer, + True, + kwargs, + ) + + def create_data_collator(self, pad_on_left: bool = False, shift_labels: bool = False) -> DataCollatorStandard: + return DataCollatorStandard(self.pad_token, self.bos_token, pad_on_left=pad_on_left, shift_labels=shift_labels) + + def create_model(self): + if not self.tokenizer.is_multi_voc: + model = GPT2LMHeadModel(self.model_config) + if self.name[-4:] == "tiny": + model.transformer.wte = Sequential( + Embedding(self.model_config.vocab_size, TINY_DIM, self.pad_token), + Linear(TINY_DIM, self.model_config.n_embd), + Tanh(), + ) + else: + embed_pool_size = [self.embed_pooling_size for _ in range(len(self.tokenizer.len))] + model = GPT2LMHeadModelEmbedPooling(self.model_config, self.tokenizer.len, embed_pool_size) + model.generation_config = self.generation_config + return model + + +model_config = GPT2Config( + vocab_size=None, + n_positions=NB_POS_ENC_PARAMS, + n_embd=DIM, + n_layer=NB_LAYERS, + n_head=NB_HEADS, + n_inner=D_FFWD, + resid_pdrop=DROPOUT, + embd_pdrop=DROPOUT, + attn_pdrop=DROPOUT, + use_cache=True, +) +training_config = Seq2SeqTrainingArguments( + "", False, True, True, False, "steps", + per_device_train_batch_size=BATCH_SIZE_GEN, + per_device_eval_batch_size=BATCH_SIZE_TEST_GEN, + gradient_accumulation_steps=GRAD_ACC_STEPS, + eval_accumulation_steps=EVAL_ACCUMULATION_STEPS, + eval_steps=VALID_INTVL, + learning_rate=LEARNING_RATE_GEN, + weight_decay=WEIGHT_DECAY, + max_grad_norm=GRADIENT_CLIP_NORM, + max_steps=TRAINING_STEPS_GEN, + lr_scheduler_type=LR_SCHEDULER_GEN, + warmup_ratio=WARMUP_RATIO_GEN, + log_level="debug", + logging_strategy="steps", + logging_steps=LOG_STEPS_INTVL, + save_strategy="steps", + save_steps=SAVE_STEPS, + save_total_limit=SAVE_TOTAL_LIMIT, + no_cuda=not USE_CUDA, + seed=SEED, + fp16=USE_AMP, + local_rank=int(os.getenv("LOCAL_RANK", -1)), # for DDP + load_best_model_at_end=True, + label_smoothing_factor=LABEL_SMOOTHING, + optim="adamw_torch", + report_to=["tensorboard"], # logging_dir will be set within Baseline class + ddp_find_unused_parameters=DDP_FIND_UNUSED_PARAMETERS, + ddp_bucket_cap_mb=DDP_BUCKET_CAP_MB, + gradient_checkpointing=False, + full_determinism=True, + use_mps_device=USE_MPS, + torch_compile=TORCH_COMPILE, + torch_compile_backend=TORCH_COMPILE_BACKEND, + torch_compile_mode=TORCH_COMPILE_MODE, + predict_with_generate=True, +) +data_config = DataConfig(0.01, TEST_SPLIT_GEN, MIN_SEQ_LEN_GEN, MAX_SEQ_LEN_GEN) +test_config = TestingConfig( + batch_size=BATCH_SIZE_TEST_GEN, + min_seq_len=MIN_SEQ_LEN_TEST_GEN, + max_seq_len=MAX_SEQ_LEN_TEST_GEN, +) +generation_config = GenerationConfig( + max_length=None, + max_new_tokens=NB_INFERENCES_GEN, + num_beams=NUM_BEAMS, + do_sample=True, + temperature=TEMPERATURE_SAMPLING, + top_k=TOP_K, + top_p=TOP_P, + epsilon_cutoff=EPSILON_CUTOFF, + eta_cutoff=ETA_CUTOFF, + use_cache=True, +) + +datasets = ["Maestro"] +experiments = [] +for dataset in datasets: + for tokenization in TOKENIZATIONS: + exp_name = f'gen_{dataset}_{tokenization}' + baselines = [] + + # noBPE and tiny baseline + """data_conf_, test_conf_, model_conf_, train_conf_, gen_conf_ = \ + map(deepcopy, [data_config, test_config, model_config, training_config, generation_config]) + tok_config = TokenizationConfig(tokenization, deepcopy(TOKENIZER_PARAMS)) + baselines.append(BaselineGen(f"{tokenization}_noBPE_tiny", exp_name, dataset, SEED, tok_config, + model_conf_, train_conf_, data_conf_, test_conf_, gen_conf_))""" + data_conf_, test_conf_, model_conf_, train_conf_, gen_conf_ = \ + map(deepcopy, [data_config, test_config, model_config, training_config, generation_config]) + tok_config = TokenizationConfig(tokenization, deepcopy(TOKENIZER_PARAMS)) + baselines.append(BaselineGen(f"{tokenization}_noBPE", exp_name, dataset, SEED, tok_config, + model_conf_, train_conf_, data_conf_, test_conf_, gen_conf_)) + + # BPE baselines + for bpe_vocab_size in BPE_VOCAB_SIZES: + data_conf_, test_conf_, model_conf_, train_conf_, gen_conf_ = \ + map(deepcopy, [data_config, test_config, model_config, training_config, generation_config]) + tok_config = TokenizationConfig(tokenization, deepcopy(TOKENIZER_PARAMS), bpe_vocab_size) + baselines.append(BaselineGen(f"{tokenization}_bpe{bpe_vocab_size}", exp_name, dataset, SEED, tok_config, + model_conf_, train_conf_, data_conf_, test_conf_, gen_conf_)) + # PVm / PVDm + for token_combination in ['PVm', 'PVDm']: + data_conf_, test_conf_, model_conf_, train_conf_, gen_conf_ = \ + map(deepcopy, [data_config, test_config, model_config, training_config, generation_config]) + tok_name = f'{tokenization}{token_combination}' + tok_config = TokenizationConfig(tok_name, deepcopy(TOKENIZER_PARAMS)) + baselines += [BaselineGen(tok_name, exp_name, dataset, SEED, tok_config, model_conf_, train_conf_, + data_conf_, test_conf_, gen_conf_)] + # Embedding Pooling + if tokenization == 'REMI': # adds CPWord and Octuple for comparison + for tok in ['CPWord', 'OctupleMono']: + data_conf_, test_conf_, model_conf_, train_conf_, gen_conf_ = \ + map(deepcopy, [data_config, test_config, model_config, training_config, generation_config]) + datas = f'{dataset}-short' if tok == 'OctupleMono' else dataset + tok_config = TokenizationConfig(tok, deepcopy(TOKENIZER_PARAMS)) + baselines += [BaselineGen(tok, exp_name, datas, SEED, tok_config, model_conf_, train_conf_, data_conf_, + test_conf_, gen_conf_, embed_pooling_size=EMBED_POOLING_SIZE)] + + experiments.append(Experiment(exp_name, baselines, dataset)) + + +def save_generation_tokens(prompt: Tensor, continuation: Tensor, tokenizer, out_dir: Path, file_name: Union[int, str]): + r"""Saves generated tokens, as json and MIDi files. + :param prompt: original sample (prompt) used for the generation. + :param continuation: generated sequence, with original_sample at its beginning. + :param tokenizer: tokenizer object. + :param out_dir: output directory. + :param file_name: file name, with no extension (.json and .mid will be added). + """ + generated = continuation[len(prompt):] + tokens = [generated, prompt, continuation] # list compr. as seqs of dif. lengths + tokens = [seq.tolist() for seq in tokens] + tokenizer.save_tokens(tokens, out_dir / f'{file_name}.json') + midi = tokenizer.tokens_to_midi(deepcopy(tokens), time_division=TIME_DIVISION) # copy as inplace decompose bpe op + midi.instruments[0].name = f'Continuation of original sample ({len(generated)} tokens)' + midi.instruments[1].name = f'Original sample ({len(prompt)} tokens)' + midi.instruments[2].name = f'Original sample and continuation' + midi.dump(out_dir / f'{file_name}.mid') + + +class ComputeMetrics: + def __init__(self, tokenizer: MIDITokenizer, out_dir: Path): + self.tokenizer = tokenizer + self.out_dir = out_dir + self.save_gen_tokens = False + + def __call__(self, eval_pred): + """Computes metrics. + Here no accuracy as the results are generated autoregressively with generate. + + :param eval_pred: EvalPrediction containing predictions and labels + :return: metrics + """ + predictions, labels = eval_pred + + tse_ = [] + for i, (lab, pred) in enumerate(zip(labels, predictions)): + # Preprocess tokens + if pred.ndim == 1: + lab = lab[lab != -100] + pred = pred[pred != 0] + else: + lab_pad_idx = np.where(lab == -100)[0] + if len(lab_pad_idx) > 0: + lab = lab[lab_pad_idx[-1] + 1:] + """pred_pad_idx = np.where(pred == -0)[0] + if len(pred_pad_idx) > 0: + pred = pred[:pred_pad_idx[0]]""" + if self.save_gen_tokens: + save_generation_tokens(lab, pred, self.tokenizer, self.out_dir, i) + tse_.append(list(tse(pred.tolist(), self.tokenizer))) + + tse_ = np.array(tse_) + metric_res = { + "tse_type": float(np.mean(tse_[:, 0])), + "tse_time": float(np.mean(tse_[:, 1])), + "tse_ndup": float(np.mean(tse_[:, 2])), + "tse_nnon": float(np.mean(tse_[:, 3])), + "tse_nnof": float(np.mean(tse_[:, 4])), + } + + return metric_res + + +if __name__ == '__main__': + import json + + from miditoolkit import MidiFile, Marker + from transformers import Seq2SeqTrainer + from transformers.trainer_utils import set_seed, PredictionOutput, get_last_checkpoint + from tqdm import tqdm + + from dataset import _add_bos_eos_tokens_to_batch, _pad_batch + from training import train_model, test_model, split_object, is_training_done, is_testing_done, select_device + from metrics import tse + + + class GenTrainer(Seq2SeqTrainer): + """ + Subclass modifying pad_on_left attribute of data collator for generation. + """ + + def training_step(self, *args, **kwargs): + self.data_collator.pad_on_left = False + return super().training_step(*args, **kwargs) + + def evaluate(self, *args, **kwargs): + self.data_collator.pad_on_left = True + return super().evaluate(*args, **kwargs) + + def predict(self, *args, **kwargs) -> PredictionOutput: + self.data_collator.pad_on_left = True + self.compute_metrics.save_gen_tokens = True + return super().predict(*args, **kwargs) + + def prediction_step( + self, + model: Module, + inputs: Dict[str, Union[Tensor, Any]], + prediction_loss_only: bool, + ignore_keys: Optional[List[str]] = None, + ) -> Tuple[Optional[float], Optional[Tensor], Optional[Tensor]]: + + if not self.args.predict_with_generate or prediction_loss_only: + return super().prediction_step( + model, inputs, prediction_loss_only=prediction_loss_only, ignore_keys=ignore_keys + ) + + has_labels = "labels" in inputs + inputs = self._prepare_inputs(inputs) + + # XXX: adapt synced_gpus for fairscale as well + # Priority (handled in generate): + # gen_kwargs > model.generation_config > default GenerationConfig() + gen_kwargs = self._gen_kwargs.copy() + if gen_kwargs.get("max_length") is None and gen_kwargs.get("max_new_tokens") is None: + gen_kwargs["max_length"] = self.model.config.max_length + gen_kwargs["num_beams"] = ( + gen_kwargs["num_beams"] if gen_kwargs.get("num_beams") is not None else self.model.config.num_beams + ) + + # If the `decoder_input_ids` was created from `labels`, evict the former, so that the model can freely generate + # (otherwise, it would continue generating from the padded `decoder_input_ids`) + if ( + "labels" in inputs + and "decoder_input_ids" in inputs + and inputs["labels"].shape == inputs["decoder_input_ids"].shape + ): + inputs = {k: v for k, v in inputs.items() if k != "decoder_input_ids"} + generated_tokens = self.model.generate(**inputs, **gen_kwargs) + + # Retrieves GenerationConfig from model.generation_config + gen_config = self.model.generation_config + + with no_grad(): + if has_labels: + with self.compute_loss_context_manager(): + outputs = model(**inputs) + if self.label_smoother is not None: + loss = self.label_smoother(outputs, inputs["labels"]).mean().detach() + else: + loss = (outputs["loss"] if isinstance(outputs, dict) else outputs[0]).mean().detach() + else: + loss = None + + if self.args.prediction_loss_only: + return loss, None, None + + if has_labels: + labels = inputs["labels"] + else: + labels = None + + return loss, generated_tokens, labels + + + for exp_ in experiments: + + # Split data here, so that we use the exact same test files for all baselines + # Doing so allows fair human evaluation of the same conditional / prompted generation + # We assume they have the same data_config + set_seed(exp_.baselines[0].seed) + files_names = [p.relative_to(exp_.baselines[0].tokens_path) + for p in exp_.baselines[0].tokens_path.glob('**/*.json')] + names_train, names_valid, names_test = split_object(files_names, [exp_.baselines[0].data_config.valid_ratio, + exp_.baselines[0].data_config.test_ratio]) + + for baseline_ in exp_.baselines: + if is_testing_done(baseline_.run_path): + continue + if baseline_.name.endswith("PVDm"): + baseline_.training_config.do_eval = False # prevents OOM when resuming training on V100s + baseline_.training_config.evaluation_strategy = "no" + if baseline_.tokenization == "CPWord": + for key in baseline_.tokenizer.tokens_types_graph: + baseline_.tokenizer.tokens_types_graph[key].append("Ignore") + baseline_.tokenizer.tokens_types_graph["Ignore"] = baseline_.tokenizer.tokens_types_graph.keys() + last_checkpoint = get_last_checkpoint(str(baseline_.run_path)) if baseline_.run_path.exists() else None + baseline_.training_config.resume_from_checkpoint = last_checkpoint + model_ = baseline_.create_model() + (gen_path := baseline_.run_path / "gen").mkdir(parents=True, exist_ok=True) + + # Load data + if baseline_.tokenization == "OctupleMono": + stems_train = [path.stem for path in names_train] + stems_valid = [path.stem for path in names_valid] + stems_test = [path.stem for path in names_test] + json_paths = list(baseline_.tokens_path.glob("**/*.json")) + paths_train, paths_valid, paths_test = [], [], [] + for json_path in json_paths: + parts = json_path.stem.split("_") + original_name = "_".join(parts[:-1]) + + for stem_list, path_list in [(stems_train, paths_train), (stems_valid, paths_valid), + (stems_test, paths_test)]: + if original_name in stem_list: + path_list.append(json_path) + else: + paths_train = [baseline_.tokens_path / name for name in names_train] + paths_valid = [baseline_.tokens_path / name for name in names_valid] + paths_test = [baseline_.tokens_path / name for name in names_test] + dataset_train = baseline_.create_dataset(files_paths=paths_train) + dataset_valid = baseline_.create_dataset(files_paths=paths_valid) + dataset_test = baseline_.create_dataset(files_paths=paths_test) + collator = baseline_.create_data_collator() + # Train model if not already done + trainer = GenTrainer( + model=model_, + args=baseline_.training_config, + data_collator=collator, + train_dataset=dataset_train, + eval_dataset=dataset_valid, + compute_metrics=ComputeMetrics(baseline_.tokenizer, gen_path), + ) + if not is_training_done(baseline_.run_path): + train_model(trainer) + else: + kwargs = {} + if baseline_.tokenizer.is_multi_voc: + embed_pool_size = [baseline_.embed_pooling_size for _ in range(len(baseline_.tokenizer.len))] + kwargs = {"num_classes": baseline_.tokenizer.len, "embed_sizes": embed_pool_size} + model_ = model_.from_pretrained(last_checkpoint, **kwargs) + test_model(trainer, dataset_test=dataset_test) + + # Test manually + """from torch.utils.data import DataLoader + collator.pad_on_left = True + device = select_device(not baseline_.training_config.no_cuda, baseline_.training_config.use_mps_device) + model_ = model_.to(device) + dataloader = DataLoader(dataset_test, baseline_.test_config.batch_size, collate_fn=collator) + all_gen_tokens, labels = [], [] + with no_grad(): + for batch in tqdm(dataloader, desc=f"Testing manually {baseline_.name}"): + for key in batch: + if isinstance(batch[key], Tensor): + batch[key] = batch[key].to(device) + generated_tokens = model_.generate(**batch, generation_config=baseline_.generation_config) # (N,T) + labels += [seq.numpy() for seq in batch["labels"].cpu()] + all_gen_tokens += [seq.numpy() for seq in generated_tokens.cpu()] + # Saved when calling ComputeMetrics + # for seq, lab in zip(all_gen_tokens, labels): + # save_generation_tokens(lab, seq, baseline_.tokenizer, self.out_dir, i) + metrics = ComputeMetrics(baseline_.tokenizer, gen_path) + metrics.save_gen_tokens = True + metric_res = metrics((all_gen_tokens, labels)) + trainer.log_metrics("test", metric_res) + trainer.save_metrics("test", metric_res)""" + + # Generate examples for human evaluation + # Gather tokens + gen_dir = exp_.run_path / "gen" + if (gen_dir / "all_tokens.json").is_file(): + continue + gen_dir.mkdir(parents=True, exist_ok=True) + set_seed(exp_.baselines[0].seed) + device = select_device(not exp_.baselines[0].training_config.no_cuda, + exp_.baselines[0].training_config.use_mps_device) + test_midi_paths = [exp_.data_path_midi / name.with_suffix(".mid") for name in names_test] + tokens = {baseline_.name: [] for baseline_ in exp_.baselines} + gen_tokens = {baseline_.name: [] for baseline_ in exp_.baselines} + checkpoints = {baseline_.name: get_last_checkpoint(str(baseline_.run_path)) for baseline_ in exp_.baselines} + for midi_path in tqdm(test_midi_paths, desc=f"Loading examples for human evals ({exp_.name})"): + if "§" in midi_path.name: # augmented tokens json, midi does exist + continue + midi_prompt = MidiFile(midi_path) + max_tick = NB_BEATS_PROMPT_GEN * midi_prompt.ticks_per_beat + midi_prompt.instruments[0].notes = [n for n in midi_prompt.instruments[0].notes if n.start <= max_tick] + if len(midi_prompt.instruments[0].notes) < MIN_NB_NOTES_PROMPT_GEN: + continue + + # Create batches for each baseline + for baseline_ in exp_.baselines: + tokens[baseline_.name].append( + {"input_ids": LongTensor(baseline_.tokenizer(midi_prompt)[0].ids)} + ) + + # Generates tokens + for baseline_ in tqdm(exp_.baselines, desc=f"Generating examples for human evals ({exp_.name})"): + model_ = baseline_.create_model() + kwargs = {} + if baseline_.tokenizer.is_multi_voc: + embed_pool_size = [baseline_.embed_pooling_size for _ in range(len(baseline_.tokenizer.len))] + kwargs = {"num_classes": baseline_.tokenizer.len, "embed_sizes": embed_pool_size} + model_ = model_.from_pretrained(checkpoints[baseline_.name], **kwargs).eval().to(device) + + for i in range(0, len(tokens[baseline_.name]), BATCH_SIZE_TEST_GEN): + input_ids = tokens[baseline_.name][i: i + BATCH_SIZE_TEST_GEN] + _add_bos_eos_tokens_to_batch(input_ids, bos_tok=baseline_.bos_token) + input_ids = _pad_batch(input_ids, baseline_.pad_token, pad_on_left=True).to(device) + if baseline_.tokenizer.is_multi_voc: + attention_mask = (input_ids[..., 0] != baseline_.pad_token).int() + else: + attention_mask = (input_ids != baseline_.pad_token).int() + generated_tokens = model_.generate(input_ids, baseline_.generation_config, + attention_mask=attention_mask) # (N,T) + gen_tokens[baseline_.name] += generated_tokens.tolist() + + # Saves generated tokens as MIDIs + max_tick = (NB_BEATS_CONTINUATION_MAX + NB_BEATS_PROMPT_GEN) * TIME_DIVISION + with open(gen_dir / "all_tokens.json", "w") as outfile: + json.dump(gen_tokens, outfile) + for i in range(len(gen_tokens[exp_.baselines[0].name])): + midi_out = MidiFile(ticks_per_beat=TIME_DIVISION) + midi_out.markers.append(Marker("Continuation starts ~ here", NB_BEATS_PROMPT_GEN * TIME_DIVISION)) + for baseline_ in exp_.baselines: + toks = gen_tokens[baseline_.name][i] + if not baseline_.tokenizer.unique_track: + toks = [toks] + midi_conv = baseline_.tokenizer(toks, time_division=TIME_DIVISION) + # Discard notes after the max nb beats of continuation + midi_conv.instruments[0].notes = [n for n in midi_conv.instruments[0].notes if n.start < max_tick] + midi_out.instruments.append(midi_conv.instruments[0]) + midi_out.dump(gen_dir / f"{i}.mid") diff --git a/exp_pretrain.py b/exp_pretrain.py new file mode 100644 index 0000000..bbc2da3 --- /dev/null +++ b/exp_pretrain.py @@ -0,0 +1,192 @@ +#!/usr/bin/python3 python + +""" +Pre-train models for other tasks +""" + +import os +from pathlib import Path +from copy import deepcopy +from typing import Dict + +from torch import argmax +from torch.distributed import get_world_size, get_rank +from torch.nn import Linear, Embedding, Sequential +from transformers import TrainingArguments +from evaluate import load as load_metric, Metric +from numpy import concatenate + +from classes import DataConfig +from exp_cla_finetune import experiments +from constants import * + + +pretrain_config = TrainingArguments( + "", False, True, True, False, "steps", + per_device_train_batch_size=BATCH_SIZE_PT, + per_device_eval_batch_size=BATCH_SIZE_TEST_CLA, + gradient_accumulation_steps=GRAD_ACC_STEPS, + eval_accumulation_steps=EVAL_ACCUMULATION_STEPS, + eval_steps=VALID_INTVL, + learning_rate=LEARNING_RATE_PT, + weight_decay=WEIGHT_DECAY, + max_grad_norm=GRADIENT_CLIP_NORM, + max_steps=TRAINING_STEPS_PT, + lr_scheduler_type=LR_SCHEDULER_PT, + warmup_ratio=WARMUP_RATIO_PT, + log_level="debug", + logging_strategy="steps", + logging_steps=LOG_STEPS_INTVL, + save_strategy="steps", + save_steps=SAVE_STEPS, + save_total_limit=SAVE_TOTAL_LIMIT, + no_cuda=not USE_CUDA, + seed=SEED, + fp16=USE_AMP, + local_rank=int(os.getenv("LOCAL_RANK", -1)), # for DDP + load_best_model_at_end=True, + label_smoothing_factor=LABEL_SMOOTHING, + optim="adamw_torch", + report_to=["tensorboard"], # logging_dir will be set within Baseline class + ddp_find_unused_parameters=DDP_FIND_UNUSED_PARAMETERS, + ddp_bucket_cap_mb=DDP_BUCKET_CAP_MB, + gradient_checkpointing=USE_GRADIENT_CHECKPOINTING, + full_determinism=True, + use_mps_device=USE_MPS, + torch_compile=TORCH_COMPILE, + torch_compile_backend=TORCH_COMPILE_BACKEND, + torch_compile_mode=TORCH_COMPILE_MODE, +) +data_config_pt = DataConfig(VALID_SPLIT, 0, MIN_SEQ_LEN_PT, MAX_SEQ_LEN_PT) + +metrics_names = ["accuracy", "f1"] + + +def preprocess_logits(logits, _): + """Preprocesses the logits before accumulating them during evaluation. + This allows to significantly reduce the memory usage and make the training tractable. + """ + if isinstance(logits[0], list): + preds = ( # [Z (N,T,*)] --> [Z (N,T)] + [argmax(log, dim=-1) for log in logits[0]], # MLM + argmax(logits[1], dim=-1), # NSP + ) + else: + preds = (argmax(logits[0], dim=-1), argmax(logits[1], dim=-1)) # long dtype + return preds + + +def compute_metrics_pt(eval_pred, metrics_: Dict[str, Metric]): + """Computes metrics for pretraining. + Must use proprocess_logits function that converts logits to predictions (argmax or sampling). + + :param eval_pred: EvalPrediction containing predictions and labels + :param metrics_: metrics + :return: results + """ + (predictions_mlm, predictions_nsp), (labels_mlm, labels_nsp) = eval_pred + + # preprocess tensors + if isinstance(predictions_mlm, list): + flat = [seq.flatten() for seq in predictions_mlm] + predictions_mlm = concatenate(flat) + labels_mlm = labels_mlm.flatten() + pad_mask = labels_mlm != -100 + labels_mlm, predictions_mlm = labels_mlm[pad_mask], predictions_mlm[pad_mask] + predictions_nsp, labels_nsp = predictions_nsp.flatten(), labels_nsp.flatten() + + acc = metrics_["accuracy"].compute(predictions=predictions_mlm, references=labels_mlm) + f1 = metrics_["f1"].compute(predictions=predictions_nsp, references=labels_nsp, average="micro") + + if metrics_["accuracy"].process_id == 0: + metric_res = {"accuracy_mlm": acc["accuracy"], "f1_nsp": f1["f1"]} + else: + metric_res = {"accuracy_mlm": 0, "f1_nsp": 0} + + return metric_res + + +if __name__ == '__main__': + from functools import partial + + from transformers import Trainer, BertForPreTraining + from transformers.trainer_utils import set_seed, get_last_checkpoint + + from dataset import DatasetMIDI, DataCollatorClaPreTrain + from models import BertForPreTrainingEmbedPooling + from training import train_model, split_object, is_training_done + + for exp_ in experiments: + for baseline_ in exp_.baselines: + pt_path = Path("runs", "cla_pre_trained", f"{exp_.dataset}_{baseline_.name}") + if is_training_done(pt_path): + continue + # Adjust data and training config for pretraining + baseline_.data_config = data_config_pt + baseline_.training_config = deepcopy(pretrain_config) + baseline_.training_config.output_dir = str(pt_path) + baseline_.training_config.logging_dir = str(pt_path) + if baseline_.name.endswith("PVm") or baseline_.name.endswith("PVDm") or \ + (baseline_.tokenization_config.bpe_vocab_size is not None and + baseline_.tokenization_config.bpe_vocab_size >= 20000): + baseline_.training_config.do_eval = False + baseline_.training_config.evaluation_strategy = "no" + + # create metrics + try: + metrics = {metric: load_metric(metric, num_process=get_world_size(), process_id=get_rank(), + experiment_id=f"bpe_{exp_.name}_{baseline_.name}") + for metric in metrics_names} + except RuntimeError: + metrics = {metric: load_metric(metric, experiment_id=f"bpe_{exp_.name}_{baseline_.name}") + for metric in metrics_names} + + # pre-trained weights are common to all subsequent tasks + last_checkpoint = get_last_checkpoint(str(baseline_.run_path)) if baseline_.run_path.exists() else None + baseline_.training_config.resume_from_checkpoint = last_checkpoint + embed_pool_size = None if not baseline_.tokenizer.is_multi_voc else \ + [baseline_.embed_pooling_size for _ in range(len(baseline_.tokenizer.len))] + if not baseline_.tokenizer.is_multi_voc: + model_ = BertForPreTraining(baseline_.model_config) + if baseline_.name[-4:] == "tiny": + model_.bert.embeddings.word_embeddings = Sequential( + Embedding(baseline_.model_config.vocab_size, TINY_DIM, baseline_.pad_token), + Linear(TINY_DIM, baseline_.model_config.hidden_size) + ) + else: + model_ = BertForPreTrainingEmbedPooling(baseline_.model_config, baseline_.tokenizer.len, + embed_pool_size) + + # Load data + set_seed(baseline_.seed) + token_paths = list(Path(baseline_.tokens_path).glob('**/*.json')) + paths_train, paths_valid, paths_test = split_object(token_paths, [baseline_.data_config.valid_ratio, + baseline_.data_config.test_ratio]) + dataset_train = DatasetMIDI(paths_train, + baseline_.data_config.min_seq_len - 3, # considering SOS, SEP and EOS tokens + baseline_.data_config.max_seq_len - 3, + baseline_.tokenizer) + dataset_valid = DatasetMIDI(paths_valid, + baseline_.data_config.min_seq_len - 3, + baseline_.data_config.max_seq_len - 3, + baseline_.tokenizer) + collator = DataCollatorClaPreTrain(pad_token=baseline_.pad_token, + bos_token=baseline_.bos_token, + eos_token=baseline_.eos_token, + mask_token=baseline_.mask_token, + sep_token=baseline_.sep_token, + vocab_size=baseline_.tokenizer.len, + special_tokens=baseline_.special_tokens, + mlm_probability=MASK_RATIO_CLA_PT) + + # Pre-train the model + trainer = Trainer( + model=model_, + args=baseline_.training_config, + data_collator=collator, + train_dataset=dataset_train, + eval_dataset=dataset_valid, + compute_metrics=partial(compute_metrics_pt, metrics_=metrics), + preprocess_logits_for_metrics=preprocess_logits, + ) + train_model(trainer) diff --git a/metrics.py b/metrics.py index f70a564..846c27a 100644 --- a/metrics.py +++ b/metrics.py @@ -2,93 +2,221 @@ """ -from typing import Tuple, List, Union -import csv -import logging -from pathlib import Path, PurePath -import json -from math import ceil +from typing import Tuple, List import numpy as np -from miditok import MIDITokenizer, CPWord, OctupleMono -from miditok.constants import CHORD_MAPS +from miditok import MIDITokenizer, CPWord, OctupleMono, TokSequence from miditoolkit import MidiFile, Note -from scipy.integrate import quad -from scipy.stats import gaussian_kde -from scipy.special import erf - -from constants import CONSISTENCY_WINDOWS_LEN, TIME_DIVISION - - -def concat_lists(lists: List[List]) -> List: - """Concatenate several lists - :param lists: list of lists - :return: the concatenated list - """ - concatenated = [] - for lst in lists: - concatenated += lst - return concatenated - - -class Metric: - """ - - :param name: - """ - - def __init__(self, name: str, one_dim: bool = False): - self.name = name - self.results = None - self.one_dim = one_dim - - def __call__(self, *args, **kwargs): - raise NotImplementedError +from sklearn.decomposition import PCA + + +def err_cpword(tokens, tokenizer) -> Tuple[float, float, float, float, float]: + def cp_token_type(tok: List[int]) -> Tuple[str, str]: + family = tokenizer[0, tok[0]].split('_')[1] + if family == 'Note': + return tokenizer[2, tok[2]].split('_') + elif family == 'Metric': + return tokenizer[1, tok[1]].split('_') + elif family == 'None': + return 'PAD', 'None' + raise RuntimeError('No token type found, unknown error') + + err_type = 0 + err_time = 0 + err_note = 0 + if len(tokens) < 2: + return 0, 0, 0, 0, 0 + previous_type, previous_value = cp_token_type(tokens[0]) + current_pos = -1 + current_pitches = [] + if previous_type == 'Pitch' and previous_value != 'Ignore': + current_pitches.append(int(previous_value)) + elif previous_type == 'Position' and previous_value != 'Ignore': + current_pos = int(previous_value) + + for token in tokens[1:]: + token_type, token_value = cp_token_type(token) + # Good token type + if token_type in tokenizer.tokens_types_graph[previous_type]: + if token_type == 'Bar': # reset + current_pos = -1 + current_pitches = [] + elif token_type == 'Position': + if token_value == 'Ignore': + err_type += 1 + elif int(token_value) <= current_pos and previous_type != 'Rest': + err_time += 1 # token position value <= to the current position + else: + current_pos = int(token_value) + current_pitches = [] + elif token_type == 'Pitch': + if 'Ignore' in [token_value, + tokenizer[3, token[3]].split('_')[1], + tokenizer[4, token[4]].split('_')[1]]: + err_type += 1 + elif int(token_value) in current_pitches: + err_note += 1 # pitch already played at current position + else: + current_pitches.append(int(token_value)) + # Bad token type + else: + err_type += 1 + previous_type = token_type - def save(self, out_dir: Union[str, Path, PurePath], reset_after: bool = True): - with open(PurePath(out_dir, self.name).with_suffix('.csv'), 'w', newline='') as f: - writer = csv.writer(f) - if self.one_dim: - writer.writerow(self.results) - else: - for track in self.results: - writer.writerow(track) - if reset_after: - self.reset() + return tuple(map(lambda x: x / len(tokens), (err_type, err_time, err_note, 0., 0.))) - def _save_json(self, out_dir: Union[str, Path, PurePath], reset_after: bool = True): - with open(PurePath(out_dir, self.name).with_suffix('.json'), 'w') as f: - json.dump(self.results, f) - if reset_after: - self.reset() - def load(self, file_dir: Union[str, Path, PurePath]): - if len(self.results) > 0: - self.reset() - with open(PurePath(file_dir, self.name).with_suffix('.csv')) as csvfile: - reader = csv.reader(csvfile) - if self.one_dim: - for row in reader: - self.results = [float(i) for i in row] - else: - self.results = [] - for row in reader: - self.results.append([float(i) for i in row]) +def err_octuple(tokens, tokenizer) -> Tuple[float, float, float, float, float]: + if len(tokens) < 2: + return 0, 0, 0, 0, 0 - def _load_json(self, file_dir: Union[str, Path, PurePath]): - with open(PurePath(file_dir, self.name).with_suffix('.json')) as f: - self.results = json.load(f) + err_time = 0 + err_note = 0 + err_type = 0 + current_bar = current_pos = -1 + current_pitches = [] - def analyze(self, logger: logging.Logger, *args, **kwargs): - if isinstance(self.results[0], np.ndarray) or isinstance(self.results[0], list): - results = np.concatenate([np.array(arr) for arr in self.results]) + for token in tokens: + if all(token[i] == tokenizer.vocab[i]['PAD_None'] for i in range(len(token))): + break + if any(tokenizer[i, tok].split('_')[1] == 'None' for i, tok in enumerate(token)): + err_type += 1 + continue + bar_value = int(tokenizer[4, token[4]].split('_')[1]) + pos_value = int(tokenizer[3, token[3]].split('_')[1]) + pitch_value = int(tokenizer[0, token[0]].split('_')[1]) + + # Bar + if bar_value < current_bar: + err_time += 1 + elif bar_value > current_bar: + current_bar = bar_value + current_pos = pos_value + current_pitches = [] + # Position + elif pos_value < current_pos: + err_time += 1 + elif pos_value > current_pos: + current_pos = pos_value + current_pitches = [] + + # Pitch + if pitch_value in current_pitches: + err_note += 1 else: - results = np.array(self.results) - # mea, td = np.mean(results), np.std(results) - logger.debug(f'mean {self.name}: {np.mean(results):.4f} ± {np.std(results):.4f}') + current_pitches.append(pitch_value) + + return tuple(map(lambda x: x / len(tokens), (err_type, err_time, err_note, 0., 0.))) + + +def tse(tokens: List[int], tokenizer: MIDITokenizer) -> Tuple[float, float, float, float, float]: + r"""Checks if a sequence of tokens is made of good token types + successions and returns the error ratio (lower is better). + The common implementation in MIDITokenizer class will check token types, + duplicated notes and time errors. It works for REMI, TSD and Structured. + Other tokenizations override this method to include other errors + (like no NoteOff / NoteOn for MIDILike and embedding pooling). + Overridden methods must call decompose_bpe at the beginning if BPE is used! + + :param tokens: sequence of tokens to check. + :param tokenizer + :return: the error ratio (lower is better). + """ + if isinstance(tokenizer, OctupleMono): + return err_octuple(tokens, tokenizer) + elif isinstance(tokenizer, CPWord): + return err_cpword(tokens, tokenizer) + + nb_tok_predicted = len(tokens) # used to norm the score + tokens = TokSequence(ids=tokens, ids_bpe_encoded=tokenizer.has_bpe) + if tokenizer.has_bpe: + tokenizer.decode_bpe(tokens) + tokenizer.complete_sequence(tokens) + tokens = tokens.tokens + + err_type = 0 # i.e. incompatible next type predicted + err_time = 0 # i.e. goes back or stay in time (does not go forward) + err_ndup = 0 + err_nnon = 0 # note-off predicted while not being played + err_nnof = 0 # note-on predicted with no note-off to end it + previous_type = tokens[0].split("_")[0] + current_pos = -1 + notes_being_played = {pitch: 0 for pitch in range(0, 128)} + pitches_current_moment = [] # only at the current position / time step - used for ndup + note_tokens_types = ["Pitch", "NoteOn", "PitchVel", "PitchVelDur"] + pos_per_beat = max(tokenizer.beat_res.values()) + max_duration = tokenizer.durations[-1][0] * pos_per_beat + max_duration += tokenizer.durations[-1][1] * (pos_per_beat // tokenizer.durations[-1][2]) + + # Init first note and current pitches if needed + if previous_type in note_tokens_types: + notes_being_played[int(tokens[0].split("_")[1])] += 1 + pitches_current_moment.append(int(tokens[0].split("_")[1])) + elif previous_type == "Position": + current_pos = int(tokens[0].split("_")[1]) + del tokens[0] + + for i, token in enumerate(tokens): + event_type, event_value = token.split("_") + + # Good token type + if event_type in tokenizer.tokens_types_graph[previous_type]: + if event_type == "Bar": # reset + current_pos = -1 + pitches_current_moment = [] + + elif event_type == "Position": + if int(event_value) <= current_pos and previous_type != "Rest": + err_time += 1 # token position value <= to the current position + current_pos = int(event_value) + pitches_current_moment = [] + + elif event_type == "TimeShift": + pitches_current_moment = [] + + elif event_type in note_tokens_types: # checks if not already played and/or that a NoteOff is associated + if event_type in ["Pitch", "NoteOn"]: + pitch_val = int(event_value) + else: # PitchVel or PitchVelDur + pitch_val = int(event_value.split("-")[0]) + + if pitch_val in pitches_current_moment: + err_ndup += 1 # pitch already played at current position + pitches_current_moment.append(pitch_val) + if event_type == "NoteOn": + # look for an associated note off token to get duration + offset_sample = 0 + offset_bar = 0 + for j in range(i + 1, len(tokens)): + event_j_type, event_j_value = tokens[j].split("_")[0], tokens[j].split("_")[1] + if event_j_type == 'NoteOff' and int(event_j_value) == pitch_val: + notes_being_played[pitch_val] += 1 + break # all good + elif event_j_type == 'Bar': + offset_bar += 1 + elif event_j_type == 'Position': + if offset_bar == 0: + offset_sample = int(event_j_value) - current_pos + else: + offset_sample = pos_per_beat - current_pos + (offset_bar - 1) * pos_per_beat * 4 + \ + int(event_j_value) + elif event_j_type == 'TimeShift': + offset_sample += tokenizer._token_duration_to_ticks(event_j_value, pos_per_beat) + if offset_sample > max_duration: # will not look for Note Off beyond + err_nnof += 1 + break + + elif event_type == "NoteOff": + if notes_being_played[int(event_value)] == 0: + err_nnon += 1 # this note wasn't being played + else: + notes_being_played[int(event_value)] -= 1 + # Bad token type + else: + err_type += 1 + previous_type = event_type - def reset(self): - self.results = [] + return tuple(map(lambda err: err / nb_tok_predicted, (err_type, err_time, err_ndup, err_nnon, err_nnof))) # ******* PITCH / VELOCITY / DURATION DISTRIBUTIONS ******* @@ -162,210 +290,6 @@ def duration_distribution_midi(midi: MidiFile, norm: bool = False) -> List[np.nd return [duration_distribution(track.notes, norm) for track in midi.instruments] -def pitch_vel_dur_distributions(notes: List[Note], norm: bool = False) -> Tuple[np.ndarray, np.ndarray, np.ndarray]: - """ Returns the pitch, velocity and duration distributions of a list notes - - :param notes: the MIDI object - :param norm: will normalize the distribution - :return: the pitch, velocity and duration distributions - """ - return pitch_distribution(notes, norm), velocity_distribution(notes, norm), duration_distribution(notes, norm) - - -# ******* PITCH METRICS ******* - -def pitch_unique_nb(pitch_dist: np.ndarray) -> int: - """ Returns the number of distinct pitches played, from a pitch distribution - - :param pitch_dist: pitch distribution - :return: number of distinct pitches played within the distribution - """ - while pitch_dist.ndim > 1: - pitch_dist = np.sum(pitch_dist, 0) - return int(np.sum(pitch_dist > 0)) - - -def pitch_range(notes: List[Note]) -> Tuple[int, int]: - """ Find the lowest and highest pitch in a track, return them and the pitch range. - - :param notes: list of the notes objects - :return: pitch range, lowest pitch, highest pitch - """ - mi = min(note.pitch for note in notes) - ma = max(note.pitch for note in notes) - return mi, ma - - -def pitch_range_midi(midi: MidiFile) -> List[Tuple[int, int]]: - """ Find the pitch ranges, lowest and highest pitches of the tracks of a MIDI object. - - :param midi: the MIDI object - :return: pitch ranges, lowest and highest, of every track - """ - return [pitch_range(track.notes) for track in midi.instruments] - - -def pitch_classes_histogram(notes: List[Note], normalize: bool = True) -> np.ndarray: - """Count the occurrences of each pitch class in a list of notes. - It uses the 12 pitch classes of the chromatic scale. - It returns two histograms, the first being based only on the distinct played notes. - The second measure the occurrences of each pitch class based on the durations of each note. - - :param notes: list of the notes objects - :param normalize: normalizes the histogram such that the sum of bin values is 1 - :return: histogram based on distinct played notes, histogram based on the durations of all notes - """ - pitch_dist = pitch_distribution(notes) # 1-dim array - histogram_notes = np.zeros(12) - for pitch in pitch_dist: - histogram_notes[pitch.astype(int) % 12] += 1 - if normalize: - histogram_notes /= sum(histogram_notes) - return histogram_notes - - -def pitch_class_histogram_midi(midi: MidiFile, normalize: bool = True) -> list: - """ Calculate pitch class occurrences of each tracks of a MIDI object. - For each track, it returns two histograms: - The first being based only on the distinct played notes. - The second measure the the occurrences of each pitch class based on the durations of each notes. - - :param midi: the MIDI object - :param normalize: normalizes the histogram such that the sum of bin values is 1 - :return: histograms of the pitch class of the tracks - """ - return [pitch_classes_histogram(track.notes, normalize) for track in midi.instruments] - - -def pitch_class_transition_matrix(notes: List[Note], time_division: int, normalize: bool = False) -> np.ndarray: - """ Credits to Colin Raffel, code taken and adapted from the Pretty Midi python package: - https://github.com/craffel/pretty-midi - Calculate the pitch class transition matrix of a track. - It contains useful information for tasks such as key detection, - chord recognition, or genre pattern recognition. - The two-dimensional pitch class transition matrix is a histogram-like representation computed - by counting the pitch transitions for each (ordered) pair of notes. - - :param notes: list of the notes objects - :param time_division: MIDI time division / resolution, in ticks/beat - :param normalize: normalizes the histogram such that the sum of bin values is 1. - :return: the pitch class transition matrix, shape of (12, 12) - """ - # less than one note, return all zeros - if len(notes) <= 1: - return np.zeros((12, 12)) - - # retrieve note starts, ends and pitch classes(nodes) - starts, ends, nodes = np.array([[x.start, x.end, x.pitch % 12] for x in notes]).T - - # compute distance matrix for all start and end time pairs - dist_mat = np.subtract.outer(ends, starts) - - # find indices of pairs of notes where the end time of one note is - # within time_thresh of the start time of the other - time_thresh = time_division / 8 - sources, targets = np.where(abs(dist_mat) < time_thresh) - - transition_matrix, _, _ = np.histogram2d(nodes[sources], nodes[targets], bins=np.arange(13), normed=normalize) - return transition_matrix - - -def pitch_class_transition_matrix_midi(midi: MidiFile, normalize: bool = False) -> List[np.ndarray]: - """ Calculate the pitch class transition matrix for each track of a MIDI. - - :param midi: the MIDI object - :param normalize: normalizes the histogram such that the sum of bin values is 1. - :return: the pitch class transition matrix, shape of (12, 12) - """ - return [pitch_class_transition_matrix(track, midi.ticks_per_beat, normalize) for track in midi.instruments] - - -def pitch_shifts(notes: List[Note], time_division: int) -> np.ndarray: - """ Calculate the intervals (in semitone) between two consecutive played notes in a track. - - :param notes: list of the notes objects - :param time_division: MIDI time division / resolution, in ticks/beat - :return: average value of consecutive pitch intervals - """ - if len(notes) <= 1: - return np.empty(0) - sources, targets = get_consecutive_notes(notes, time_division) - intervals = [] - for i in range(len(sources)): - src_pitch = notes[sources[i]].pitch - tgt_pitch = notes[targets[i]].pitch - intervals.append(tgt_pitch - src_pitch) - if len(intervals) == 0: - return np.empty(0) - return np.array(intervals) - - -def pitch_shifts_midi(midi: MidiFile) -> Union[List[np.ndarray], List[None]]: - """ Calculate the intervals (in semitone) between two consecutive played notes of a MIDI object. - For each track, it returns two types of averages: - The first in the real average, of positive and negative shifts; - The second is the "absolute" average between each notes. - - :param midi: the MIDI object - :return: pitch shift averages of each track - """ - return [pitch_shifts(track.notes, midi.ticks_per_beat) for track in midi.instruments] - - -def get_consecutive_notes(notes: List[Note], time_division: int) -> Tuple[List[int], List[int]]: - """ Detect the consecutive notes being played. - Returns two lists. The first is the notes, the second is the following notes of the first list. - This way, the note target[i] will be played after the note source[i]. - - :param notes: list of the notes objects - :param time_division: MIDI time division / resolution, in ticks/beat - :return: source notes, target notes - """ - if len(notes) <= 1: # less than one note, return zeros - return [], [] - starts, ends = np.array([[x.start, x.end] for x in notes]).T - dist_mat = np.subtract.outer(ends, starts) - # find indices of pairs of notes where the end time of one note is within time_thresh of the start time of the other - time_thresh = time_division / 8 - sources, targets = np.where(abs(dist_mat) <= time_thresh) - return sources.tolist(), targets.tolist() - - -def polyphonic_ratio(notes: List[Note], time_division: int, beat_res: int = 4, onset_offset: int = 1) -> float: - """ Calculate the polyphonic ratio, i.e. the ratio of notes starting concurrently with other notes. - NOTE: make sure to sort notes by start time then pitch before: notes.sort(key=lambda x: (x.start, x.pitch)) - - :param notes: notes to analyse (sorted by starting time, them pitch) - :param time_division: MIDI time division / resolution, in ticks/beat (of the MIDI being parsed) - :param beat_res: beat resolution, i.e. nb of samples per beat (default 4) - :param onset_offset: maximum offset (in samples / frames / positions) ∈ N separating notes starts to consider them - starting at the same time / onset (default 1) - :return: the polyphonic ratio, calculated as polyphonic_onsets / nb_of_onsets - """ - poly = n = onset_count = 0 - simul_notes_limit = 20 - onset_offset = time_division * onset_offset / beat_res - - tuples = [] - for note in notes: - tuples.append((note.pitch, int(note.start), int(note.end))) - notes = np.asarray(tuples) - - while n < len(notes): - # Gathers the notes around the same time step - onset_notes = notes[n:n + simul_notes_limit] # reduces the scope - onset_notes = onset_notes[np.where(onset_notes[:, 1] <= onset_notes[0, 1] + onset_offset)] - - if len(onset_notes) > 1: - poly += 1 - n += len(onset_notes) - onset_count += 1 - - return poly / onset_count - - -# ******* RHYTHM METRICS ******* - def notes_density(notes: List[Note], time_division: int, per_position: bool = False) -> float: """ Calculates the note density of a track in notes/beat @@ -381,251 +305,6 @@ def notes_density(notes: List[Note], time_division: int, per_position: bool = Fa return len(notes) / (max(note.end for note in notes) / time_division) -def onset_distribution(notes: List[Note], time_division: int) -> np.ndarray: - """Returns the onsets of a list of notes, in ticks and over 4 beats (4/* time signatures). - - :param notes: list of the notes objects - :param time_division: MIDI time division / resolution, in ticks/beat - :return: onset distribution - """ - onsets = [] - ticks_per_bar = 4 * time_division - for note in notes: - onsets.append(note.start % ticks_per_bar) - return np.array(onsets) - - -def onset_interval(notes: List[Note], time_division: int) -> np.ndarray: - """ Calculate the onset intervals (intervals between the - start of two consecutive notes) of a track. - NOTE: only intervals > 0 and <= 4 beats are considered - - :param notes: list of the notes objects - :param time_division: MIDI time division / resolution, in ticks/beat - :return: onset intervals in ticks - """ - ticks_per_bar = time_division * 4 - intervals = [] - for i in range(len(notes) - 1): - onset_inter = int(notes[i + 1].start - notes[i].start) - if 0 < onset_inter <= ticks_per_bar: # notes played together or too far apart are discarded - intervals.append(onset_inter) - return np.array(intervals) - - -def onset_interval_midi(midi: MidiFile) -> List[np.ndarray]: - """ Calculate the onset intervals (intervals between the - start of two consecutive notes) of each track of a MIDI object. - - :param midi: the MIDI object - :return: onset intervals in ticks - """ - return [onset_interval(track.notes, midi.ticks_per_beat) for track in midi.instruments] - - -# ******* ACCURACY / F1 ******* - -def f1_score(predicted: List[Note], expected: List[Note]) -> float: - """F1 score between predicted and expected notes. - The score is based on the duration of the notes - Here these values corresponds to the sum of durations of their respective occurrences. - Make sure both predicted and expected notes are ordered by their .start value, then pitch - - :param predicted: the predicted notes - :param expected: the expected notes - :return: the f1 score, as TP / (TP + (FP + FN) / 2) - """ - true_positives = false_positives = false_negatives = 0 - - e_idx = 0 # idx of expected notes - for note_p in predicted: # true positives and false positives - matched = False - for e, note_e in enumerate(expected[e_idx:]): - if note_e.pitch == note_p.pitch and notes_played_together(note_p, note_e): - matching_time = min(note_p.end, note_e.end) - max(note_p.start, note_e.start) - if matching_time > (note_p.end - note_p.end) / 2: - matched = True # considered a match - false_negatives += e - e_idx # passed notes with no match - e_idx += e - break - elif note_e.start > note_p.end: - e_idx += e - break # exceeding time - if matched: - true_positives += 1 - else: - false_positives += 1 - return true_positives / (true_positives + (false_positives + false_negatives) / 2) - - -def notes_played_together(note1: Note, note2: Note) -> bool: - return note1.end > note2.start and note1.start < note2.end - - -# ******* ADDITIONAL TOKENS ******* - -def chord_accuracy(tokens: List[int], tokenizer: MIDITokenizer, onset_offset: int = 1) -> Tuple[float, float]: - """ Will search for chord tokens in a sequence of generated tokens, and analyze - if the following tokens represents a chord corresponding to the token's value. - This only works for MIDI-Like and REMI token sequences. - - :param tokens: the predicted notes - :param tokenizer: the associated tokenizer - :param onset_offset: maximum offset (in samples) ∈ N separating notes starts to consider them - starting at the same time / onset (default is 1). - You should use the same value as the one used to detect detect chords with MidiTok. - :return: the chord relevance - """ - err_pitch = 0 - err_len = 0 - chord_idx = [i for i in range(len(tokens)) if tokenizer.vocab.token_type(tokens[i]) == 'Chord'] - if len(chord_idx) == 0: - return 0, 0 - - if tokenizer.__class__.__name__ in ['REMI', 'BarPosDuration']: - for idx in chord_idx: - chord = tokenizer.vocab[tokens[idx]].split('_')[1] - chord_map = CHORD_MAPS[chord] if chord not in ['3', '4', '5'] else [None] * int(chord) - chord_pos = int(tokenizer.vocab[tokens[idx - 1]].split('_')[1]) - current_pos = chord_pos - generated_chord = [] - durations = [] - i = 1 - while current_pos - chord_pos <= onset_offset and i + idx < len(tokens): - token_type, token_value = tokenizer.vocab[tokens[idx + i]].split('_') - if token_type == 'Pitch': - generated_chord.append(int(token_value)) - beat, pos, res = map(int, tokenizer.vocab[tokens[idx + i + 2]].split('_')[1].split('.')) - durations.append(beat * res + pos) - elif token_type == 'Bar': - current_pos = max(tokenizer.beat_res.values()) * 4 - elif token_type == 'Position': - if len(durations) > 0 and durations[0] <= max(tokenizer.beat_res.values()) // 2: - break - current_pos = (current_pos // - (max(tokenizer.beat_res.values()) * 4)) * max(tokenizer.beat_res. - values()) * 4 + int(token_value) - i += 1 - - generated_chord.sort() - generated_chord = tuple(pitch - generated_chord[0] for pitch in generated_chord) - if len(generated_chord) != len(chord_map): - err_len += 1 - elif chord_map[0] is not None and generated_chord != chord_map: - err_pitch += 1 - - elif tokenizer.__class__.__name__ in ['MIDILike', 'TimeShiftBeat']: - for idx in chord_idx: - chord = tokenizer.vocab[tokens[idx]].split('_')[1] - chord_map = CHORD_MAPS[chord] if chord not in ['3', '4', '5'] else [None] * int(chord) - chord_pos = current_pos = 0 - generated_chord = [] - i = 1 - while current_pos - chord_pos <= onset_offset and i + idx < len(tokens): - token_type, token_value = tokenizer.vocab[tokens[idx + i]].split('_') - if token_type == 'Note-On': - generated_chord.append(int(token_value)) - elif token_type == 'Time-Shift': - beat, pos, res = map(int, token_value.split('.')) - current_pos += beat * res + pos - if token_type == 'Note-Off' and int(token_value) in generated_chord and \ - current_pos - chord_pos <= max(tokenizer.beat_res.values()) // 2: - break # short chords, as defined in MidiTok - i += 1 - - generated_chord.sort() - generated_chord = tuple(pitch - generated_chord[0] for pitch in generated_chord) - if len(generated_chord) != len(chord_map): - # tokens = [tokenizer.vocab[t].split('_') for t in tokens[idx-1: idx+20]] # for debug - err_len += 1 - elif chord_map[0] is not None and generated_chord != chord_map: - err_pitch += 1 - else: - raise ValueError('Bad tokenizer, this method only works for MIDI-Like and REMI') - - return err_pitch / len(chord_idx), err_len / len(chord_idx) - - -def rest_accuracy(tokens: List[int], tokenizer: MIDITokenizer) -> float: - """ Will search for rests tokens in a sequence of generated tokens, and analyze - if the detected rests are associated with a token (the model did not produced rests - without rest tokens) - - :param tokens: the predicted notes - :param tokenizer: the associated tokenizer - :return: the chord relevance - """ - generated_rests = [] # rest tokens - real_rests = [] # rests spotted when converting tokens to notes - time_division = max(tokenizer.beat_res.values()) - min_rest = time_division // tokenizer.additional_tokens['rest_range'][0] - # max_rest = time_division * (tokenizer.additional_tokens['rest_range'][1] + 1) - min_rest - notes = tokenizer.tokens_to_track(tokens, time_division=time_division)[0].notes - - # 1. Looks for rest tokens (generated_rests) - if tokenizer.__class__.__name__ in ['REMI', 'BarPosDuration']: - ticks_per_bar = time_division * 4 - current_tick = 0 - current_bar = -1 - previous_note_end = 0 - for t, token in enumerate(tokens): - token_type, token_val = tokenizer.vocab.token_to_event[token].split('_') - if token_type == 'Bar': - current_bar += 1 - current_tick = current_bar * ticks_per_bar - elif token_type == 'Rest': - beat, pos = map(int, token_val.split('.')) - if current_tick < previous_note_end: # if in case successive rest happen - current_tick = previous_note_end - generated_rests.append((current_tick, current_tick + beat * time_division + pos)) - current_tick += beat * time_division + pos - current_bar = current_tick // ticks_per_bar - elif token_type == 'Position': - current_tick = current_bar * ticks_per_bar + int(token_val) - elif token_type == 'Pitch': - try: - token_1_type, _ = tokenizer.vocab.token_to_event[tokens[t + 1]].split('_') - token_2_type, token_2_val = tokenizer.vocab.token_to_event[tokens[t + 2]].split('_') - if token_1_type == 'Velocity' and token_2_type == 'Duration': - beat, pos, res = map(int, token_2_val.split('.')) - duration = (beat * res + pos) * time_division // res - previous_note_end = max(previous_note_end, current_tick + duration) - except IndexError as _: # A well constituted sequence should not raise an exception - pass # However with generated sequences this can happen, or if the sequence isn't finished - - elif tokenizer.__class__.__name__ in ['MIDILike', 'TimeShiftBeat']: - current_tick = 0 - for token in tokens: - token_type, token_val = tokenizer.vocab.token_to_event[token].split('_') - if token_type == 'Time-Shift': - beat, pos, res = map(int, token_val.split('.')) - current_tick += (beat * res + pos) * time_division // res - elif token_type == 'Rest': - beat, pos = map(int, token_val.split('.')) - generated_rests.append((current_tick, current_tick + beat * time_division + pos)) - current_tick += beat * time_division + pos - - else: - raise ValueError('Bad tokenizer, this method only works for MIDI-Like and REMI') - - # 2. Ties successive rests together - generated_rests_tied = [generated_rests[0]] - for rest in generated_rests[1:]: - if rest[0] == generated_rests_tied[-1][1]: - generated_rests_tied[-1] = (generated_rests_tied[-1][0], rest[1]) - else: - generated_rests_tied.append(rest) - - # 3. Looks for rests within the generated notes (real_rests) - previous_note_end = notes[0].end - for note in notes[1:]: - if note.start - previous_note_end >= min_rest: - real_rests.append((previous_note_end, note.start)) - previous_note_end = max(previous_note_end, note.end) - - return 1 - len(generated_rests_tied) / len(real_rests) - - # ******* MATHS ******* def mean_std(arr, axis: int = 0) -> Tuple[np.ndarray, np.ndarray]: @@ -638,553 +317,31 @@ def mean_std(arr, axis: int = 0) -> Tuple[np.ndarray, np.ndarray]: return np.mean(arr, axis=axis), np.std(arr, axis=axis) -def histogram_borders(hists: list) -> Tuple[int, int]: - """ Finds the lowest and highest > 0 index in two histograms - - :param hists: histograms, is a list of either lists of ints or np.ndarrays of dim=1 - :return: lowest index, highest index - """ - return min(np.min(np.where(hist > 0)) for hist in hists), max(np.max(np.where(hist > 0)) for hist in hists) - - -def overlapping_area_kde(dist_1: np.ndarray, dist_2: np.ndarray) -> float: - """ Implementation from: https://github.com/RichardYang40148/mgeval/blob/master/mgeval/core.py - Computes the overlapping area of the PDF of two distributions, uni or multi-modal. - The limits of integral are the minimum and maximum indexes of the two distributions. - - :param dist_1: first distribution - :param dist_2: second distribution - :return: the overlapping area - """ - pdf_1 = gaussian_kde(dist_1) - pdf_2 = gaussian_kde(dist_2) - return quad(lambda x: min(pdf_1(x), pdf_2(x)), - np.min((np.min(dist_1), np.min(dist_2))), np.max((np.max(dist_1), np.max(dist_2))))[0] - - -def overlapping_area_erf(dist_1: np.ndarray, dist_2: np.ndarray) -> float: - """Implementation from: https://github.com/magenta/symbolic-music-diffusion/blob/main/utils/metrics.py - Computes overlapping area of two Gaussian distributions. - - :param dist_1: first distribution - :param dist_2: second distribution - :return: the overlapping area - """ - mu1, var1 = mean_std(dist_1) - mu2, var2 = mean_std(dist_2) - - idx = mu2 < mu1 - mu_a = mu2 * idx + np.logical_not(idx) * mu1 - mu_b = mu1 * idx + np.logical_not(idx) * mu2 - var_a = var2 * idx + np.logical_not(idx) * var1 - var_b = var1 * idx + np.logical_not(idx) * var2 - - c_sqrt_factor = (mu_a - mu_b) ** 2 + 2 * (var_a - var_b) * np.log( - np.sqrt(var_a + 1e-6) / np.sqrt(var_b + 1e-6)) - c_sqrt_factor = np.sqrt(c_sqrt_factor) - c = mu_b * var_a - np.sqrt(var_b) * (mu_a * np.sqrt(var_b) + - np.sqrt(var_a) * c_sqrt_factor) - c = c / (var_a - var_b + 1e-6) - - sqrt_2 = np.sqrt(2) - oa = 1 - 0.5 * erf((c - mu_a) / (sqrt_2 * np.sqrt(var_a + 1e-6))) - oa = oa + 0.5 * erf((c - mu_b) / (sqrt_2 * np.sqrt(var_b + 1e-6))) - return oa - - -def overlapping_area_hist(dist_1: np.ndarray, dist_2: np.ndarray) -> float: - """Calculates the overlapping area of the histograms of two distributions of integers. - - :param dist_1: first integer distribution - :param dist_2: second integer distribution - :return: - """ - bins = range(min(np.amin(dist_1), np.amin(dist_2)), max(np.amax(dist_1), np.amax(dist_2)) + 1) - hist1 = np.histogram(dist_1, bins=bins, density=True)[0] - hist2 = np.histogram(dist_2, bins=bins, density=True)[0] - return sum([min(hist1[i], hist2[i]) for i in range(len(hist1))]) - - -def note_density_evolution(notes: List[Note], time_division: int, first_beat: int = 0) \ - -> List[float]: - """ - NOTE: make sure to sort notes by start time then pitch before: notes.sort(key=lambda x: (x.start, x.pitch)) - - :param notes: the notes to analyze - :param time_division: time division of the MIDI - :param first_beat: first beat to analyze from the notes - :return: pitch similarities and duration similarities, as lists of scores in [0, 1] - """ - beat_windows = [[] for _ in range(ceil(max(note.end for note in notes) / time_division) - first_beat)] - - # groups notes per beats - for note in notes: - if note.start // time_division < first_beat: - continue - beat_windows[int(note.start // time_division)].append(note) - - # groups beats per window length - beat_windows = [concat_lists(beat_windows[i:i + 4]) for i in range(0, len(beat_windows) + len(beat_windows) % 4, 4)] - - # deletes first and last empty beat windows if there is any - while len(beat_windows[0]) == 0: - del beat_windows[0] - while len(beat_windows[-1]) == 0: - del beat_windows[-1] - - last_note_density = notes_density(beat_windows[0], time_division, per_position=False) - note_densities_evolutions = [] - for i in range(1, len(beat_windows)): - note_density = 0 if len(beat_windows[i]) == 0 \ - else notes_density(beat_windows[i], time_division, per_position=False) - note_densities_evolutions.append(note_density - last_note_density) - last_note_density = note_density - - return note_densities_evolutions - - -def consistency(notes: List[Note], time_division: int, windows_len: int, first_beat: int = 0) \ - -> Tuple[List[float], List[float], List[float]]: - """ - NOTE: make sure to sort notes by start time then pitch before: notes.sort(key=lambda x: (x.start, x.pitch)) - - :param notes: the notes to analyze - :param time_division: time division of the MIDI - :param windows_len: size in beats of windows - :param first_beat: first beat to analyze from the notes - :return: pitch similarities and duration similarities, as lists of scores in [0, 1] - """ - beat_windows = [[] for _ in range(ceil(max(note.end for note in notes) / time_division) - first_beat)] - - # groups notes per beats - for note in notes: - if note.start // time_division < first_beat: - continue - beat_windows[int(note.start // time_division)].append(note) - - # groups beats per window length - if windows_len > 1: - beat_windows = [concat_lists(beat_windows[i:i + windows_len]) - for i in range(0, len(beat_windows) + len(beat_windows) % windows_len, windows_len)] - - # deletes first and last empty beat windows if there is any - while len(beat_windows[0]) == 0: - del beat_windows[0] - while len(beat_windows[-1]) == 0: - del beat_windows[-1] - - # compute similarities between consecutive windows of beats - # (overlapping areas of PDF of gaussian distributions of pitches in windows) - pitch_similarities = [] - velocity_similarities = [] - duration_similarities = [] - for i in range(len(beat_windows) - 1): - if len(beat_windows[i]) == 0 or len(beat_windows[i + 1]) == 0: - pitch_similarities.append(0.) - duration_similarities.append(0.) - duration_similarities.append(0.) - continue - pitch_sim = overlapping_area_hist(pitch_distribution(beat_windows[i]), - pitch_distribution(beat_windows[i + 1])) - dur_sim = overlapping_area_hist(duration_distribution(beat_windows[i]), - duration_distribution(beat_windows[i + 1])) - vel_sim = overlapping_area_hist(velocity_distribution(beat_windows[i]), - velocity_distribution(beat_windows[i + 1])) - pitch_similarities.append(pitch_sim) - velocity_similarities.append(vel_sim) - duration_similarities.append(dur_sim) - return pitch_similarities, velocity_similarities, duration_similarities - - -class Consistency(Metric): - def __init__(self, name: str = 'consistency', window_len: int = CONSISTENCY_WINDOWS_LEN): - super().__init__(name) - self.window_len = window_len - self.pitch_results = [] # List[List[float]] - self.duration_results = [] # List[List[float]] - self.onset_results = [] # List[List[float]] - - def __call__(self, notes: List[Note], time_division: int = TIME_DIVISION): - pitch, duration, onset = consistency(notes, time_division, self.window_len) - self.pitch_results.append(pitch) - self.duration_results.append(duration) - self.onset_results.append(onset) - return pitch, duration, onset - - def save(self, out_dir: Union[str, Path, PurePath], reset_after: bool = True): - with open(PurePath(out_dir, 'consistency_pitch.csv'), 'w', newline='') as f: - writer = csv.writer(f) - for track in self.pitch_results: - writer.writerow(track) - with open(PurePath(out_dir, 'consistency_duration.csv'), 'w', newline='') as f: - writer = csv.writer(f) - for track in self.duration_results: - writer.writerow(track) - with open(PurePath(out_dir, 'consistency_onset.csv'), 'w', newline='') as f: - writer = csv.writer(f) - for track in self.onset_results: - writer.writerow(track) - if reset_after: - self.reset() - - def load(self, file_dir: Union[str, Path, PurePath]): - if len(self.pitch_results) > 0: - self.reset() - with open(PurePath(file_dir, 'consistency_pitch').with_suffix('.csv')) as csvfile: - reader = csv.reader(csvfile) - for row in reader: - self.pitch_results.append([float(i) for i in row]) - with open(PurePath(file_dir, 'consistency_duration').with_suffix('.csv')) as csvfile: - reader = csv.reader(csvfile) - for row in reader: - self.duration_results.append([float(i) for i in row]) - with open(PurePath(file_dir, 'consistency_onset').with_suffix('.csv')) as csvfile: - reader = csv.reader(csvfile) - for row in reader: - self.onset_results.append([float(i) for i in row]) - - def analyze(self, logger: logging.Logger, **kwargs): - pitch_results = np.concatenate([np.array(arr) for arr in self.pitch_results]) - duration_results = np.concatenate([np.array(arr) for arr in self.duration_results]) - onset_results = np.concatenate([np.array(arr) for arr in self.onset_results]) - logger.debug(f'mean pitch consistence: {np.mean(pitch_results):.4f} ± {np.std(pitch_results):.4f}') - logger.debug(f'mean duration consistence: {np.mean(duration_results):.4f} ± {np.std(duration_results):.4f}') - logger.debug(f'mean onset consistence: {np.mean(onset_results):.4f} ± {np.std(onset_results):.4f}') - - def reset(self): - self.pitch_results = [] - self.duration_results = [] - self.onset_results = [] - - -class PitchClass(Metric): - def __init__(self, name: str = 'pitch_class_histogram'): - super().__init__(name) - self.results = [] - - def __call__(self, notes: List[Note], time_division: int = TIME_DIVISION) -> np.ndarray: - pitch_class_hist = pitch_classes_histogram(notes) - self.results.append(pitch_class_hist) - return pitch_class_hist - - def analyze(self, logger: logging.Logger, *args, **kwargs): - pass - - -class PitchClassTransition(Metric): - def __init__(self, name: str = 'pitch_class_transition'): - super().__init__(name) - self.results = [] # shape (*, 12, 12) - - def __call__(self, notes: List[Note], time_division: int = TIME_DIVISION) -> np.ndarray: - pitch_class_transition = pitch_class_transition_matrix(notes, time_division) - self.results.append(pitch_class_transition) - return pitch_class_transition - - def save(self, out_dir: Union[str, Path, PurePath], reset_after: bool = True): - self._save_json(out_dir, reset_after) - - def load(self, file_dir: Union[str, Path, PurePath]): - self._load_json(file_dir) - - def analyze(self, logger: logging.Logger, *args, **kwargs): - pass - - -class NoteDensity(Metric): - def __init__(self, name: str = 'note_density'): - super().__init__(name, one_dim=True) - self.results = [] - - def __call__(self, notes: List[Note], time_division: int = TIME_DIVISION) -> float: - note_density = notes_density(notes, time_division) - self.results.append(note_density) - return note_density - - -class NoteDensityEvolution(Metric): - def __init__(self, name: str = 'note_density_evolution'): - super().__init__(name, one_dim=True) - self.results = [] - - def __call__(self, notes: List[Note], time_division: int = TIME_DIVISION) -> List[float]: - note_density_evol = note_density_evolution(notes, time_division) - self.results.append(note_density_evol) - return note_density_evol - - def analyze(self, logger: logging.Logger, *args, **kwargs): - results_mean = np.array([np.mean(np.array(arr)) for arr in self.results]) - results_std = np.array([np.std(np.array(arr)) for arr in self.results]) - results_var = np.array([np.var(np.array(arr)) for arr in self.results]) - logger.debug(f'mean {self.name}: {np.mean(results_mean):.4f} ± {np.mean(results_std):.4f} ' - f'var:{np.mean(results_var):.4f}') - - -class PitchShift(Metric): - def __init__(self, name: str = 'pitch_shifts'): - super().__init__(name) - self.results = [] - - def __call__(self, notes: List[Note], time_division: int = TIME_DIVISION) -> np.ndarray: - pitch_shift = pitch_shifts(notes, time_division) - self.results.append(pitch_shift) - return pitch_shift - - def analyze(self, logger: logging.Logger, *args, **kwargs): - self.results = [[abs(res) for res in track] for track in self.results] - super().analyze(logger, *args, **kwargs) - - -class OnsetInterval(Metric): - def __init__(self, name: str = 'onset_interval'): - super().__init__(name) - self.results = [] - - def __call__(self, notes: List[Note], time_division: int = TIME_DIVISION) -> np.ndarray: - onset_intervals = onset_interval(notes, time_division) - self.results.append(onset_intervals / time_division) - return onset_intervals - - -class Duration(Metric): - def __init__(self, name: str = 'duration'): - super().__init__(name) - self.results = [] # in beats - - def __call__(self, notes: List[Note], time_division: int = TIME_DIVISION) -> np.ndarray: - durations = duration_distribution(notes) # in ticks - self.results.append(durations / time_division) # in beats - return durations - - -class TokenComprehension(Metric): - def __init__(self, tokenizer, name: str = 'token_comprehension'): - super().__init__(name, one_dim=True) - self.tokenizer = tokenizer - self.err_type = [] - self.err_time = [] - self.err_note_already_played = [] - self.err_note_not_played = [] - self.err_note_no_noteoff = [] - - def __call__(self, x: List) -> Tuple[List[float], List[float], List[float], List[float], List[float]]: - """ - - :param x: input array or list of shape (N,T) or (T), T: time steps; N: batches - :return: the mean token types err - """ - if isinstance(self.tokenizer, CPWord): - err_type, err_time, err_note_already_played, err_note_not_played, err_note_no_noteoff = self.err_cpword(x) - elif isinstance(self.tokenizer, OctupleMono): - err_type, err_time, err_note_already_played, err_note_not_played, err_note_no_noteoff = self.err_octuple(x) - else: - err_type, err_time, err_note_already_played, err_note_not_played, err_note_no_noteoff = self.err_common(x) - - self.err_type.append(err_type) - self.err_time.append(err_time) - self.err_note_already_played.append(err_note_already_played) - self.err_note_not_played.append(err_note_not_played) - self.err_note_no_noteoff.append(err_note_no_noteoff) - return err_type, err_time, err_note_already_played, err_note_not_played, err_note_no_noteoff - - def err_common(self, tokens: List[int]): - # common method - err_type = 0 - err_time = 0 - err_note = 0 - original_nb_tokens = len(tokens) - if self.tokenizer.has_bpe: - tokens = self.tokenizer.decompose_bpe(tokens) - previous_type = self.tokenizer.vocab.token_type(tokens[0]) - current_pos = -1 - current_pitches = [] - note_tokens_types = ['Pitch', 'NoteOn', 'PitchVel', 'PitchVelDur'] - - if previous_type in note_tokens_types: - if previous_type in ['Pitch', 'NoteOne']: - pitch_val = int(self.tokenizer.vocab[tokens[0]].split('_')[1]) - else: # PitchVel or PitchVelDur - pitch_val = int(self.tokenizer.vocab[tokens[0]].split('_')[1].split('-')[0]) - current_pitches.append(pitch_val) - elif previous_type == 'Position': - current_pos = int(self.tokenizer.vocab[tokens[0]].split('_')[1]) - - for token in tokens[1:]: - token_type, token_value = self.tokenizer.vocab.token_to_event[token].split('_') - - # Good token type - if token_type in self.tokenizer.tokens_types_graph[previous_type]: - if token_type == 'Bar': # reset - current_pos = -1 - current_pitches = [] - elif token_type in ['TimeShift', 'Time-Shift', 'Rest']: - current_pitches = [] - elif token_type in note_tokens_types: - if token_type in ['Pitch', 'NoteOne']: - pitch_val = int(token_value) - else: # PitchVel or PitchVelDur - pitch_val = int(token_value.split('-')[0]) - if pitch_val in current_pitches: - err_note += 1 # pitch already played at current position - else: - current_pitches.append(pitch_val) - elif token_type == 'Position': - if int(token_value) <= current_pos and previous_type != 'Rest': - err_time += 1 # token position value <= to the current position - else: - current_pos = int(token_value) - current_pitches = [] - # Bad token type - else: - err_type += 1 - previous_type = token_type - - return tuple(map(lambda x: x / original_nb_tokens, (err_type, err_time, err_note, 0., 0.))) - - def err_cpword(self, tokens): - def cp_token_type(tok: List[int]) -> Tuple[str, str]: - family = self.tokenizer.vocab[0].token_to_event[tok[0]].split('_')[1] - if family == 'Note': - return self.tokenizer.vocab[2].token_to_event[tok[2]].split('_') - elif family == 'Metric': - return self.tokenizer.vocab[1].token_to_event[tok[1]].split('_') - elif family == 'None': - return 'PAD', 'None' - raise RuntimeError('No token type found, unknown error') - - err_type = 0 - err_time = 0 - err_note = 0 - previous_type, previous_value = cp_token_type(tokens[0]) - current_pos = -1 - current_pitches = [] - if previous_type == 'Pitch' and previous_value != 'Ignore': - current_pitches.append(int(previous_value)) - elif previous_type == 'Position' and previous_value != 'Ignore': - current_pos = int(previous_value) - - for token in tokens[1:]: - token_type, token_value = cp_token_type(token) - # Good token type - if token_type in self.tokenizer.tokens_types_graph[previous_type]: - if token_type == 'Bar': # reset - current_pos = -1 - current_pitches = [] - elif token_type == 'Position': - if token_value == 'Ignore': - err_type += 1 - elif int(token_value) <= current_pos and previous_type != 'Rest': - err_time += 1 # token position value <= to the current position - else: - current_pos = int(token_value) - current_pitches = [] - elif token_type == 'Pitch': - if 'Ignore' in [token_value, - self.tokenizer.vocab[3].token_to_event[token[3]].split('_')[1], - self.tokenizer.vocab[4].token_to_event[token[4]].split('_')[1]]: - err_type += 1 - elif int(token_value) in current_pitches: - err_note += 1 # pitch already played at current position - else: - current_pitches.append(int(token_value)) - # Bad token type - else: - err_type += 1 - previous_type = token_type - - return tuple(map(lambda x: x / len(tokens), (err_type, err_time, err_note, 0., 0.))) - - def err_octuple(self, tokens): - err_time = 0 - err_note = 0 - err_type = 0 - current_bar = current_pos = -1 - current_pitches = [] - - for token in tokens: - if all(token[i] == self.tokenizer.vocab[i]['PAD_None'] for i in range(len(token))): - break - if any(self.tokenizer.vocab[i][token].split('_')[1] == 'None' for i, token in enumerate(token)): - err_type += 1 - continue - bar_value = int(self.tokenizer.vocab[4].token_to_event[token[4]].split('_')[1]) - pos_value = int(self.tokenizer.vocab[3].token_to_event[token[3]].split('_')[1]) - pitch_value = int(self.tokenizer.vocab[0].token_to_event[token[0]].split('_')[1]) - - # Bar - if bar_value < current_bar: - err_time += 1 - elif bar_value > current_bar: - current_bar = bar_value - current_pos = pos_value - current_pitches = [] - # Position - elif pos_value < current_pos: - err_time += 1 - elif pos_value > current_pos: - current_pos = pos_value - current_pitches = [] +def isoscore(points: np.ndarray): + # adapted from https://github.com/bcbi-edu/p_eickhoff_isoscore - # Pitch - if pitch_value in current_pitches: - err_note += 1 - else: - current_pitches.append(pitch_value) + # Step 2 + pca = PCA(n_components=min(points.shape)) + points_pca = pca.fit_transform(points) - return tuple(map(lambda x: x / len(tokens), (err_type, err_time, err_note, 0., 0.))) + # Step 3 + n = np.shape(points_pca)[0] + cov = np.cov(points_pca) + cov_diag = cov[np.diag_indices(n)] - def save(self, out_path: Union[str, Path, PurePath], reset_after: bool = True): - with open(PurePath(out_path), 'w', newline='') as f: - writer = csv.writer(f) - for i in range(len(self.err_note_no_noteoff)): - writer.writerow((self.err_type[i], - self.err_time[i], - self.err_note_already_played[i], - self.err_note_not_played[i], - self.err_note_no_noteoff[i])) - if reset_after: - self.reset() + # Step 4 + n = len(cov_diag) + cov_diag_normalized = (cov_diag * np.sqrt(n)) / np.linalg.norm(cov_diag) - def load(self, file_path: Union[str, Path, PurePath]): - if len(self.err_type) > 0: - self.reset() - with open(PurePath(file_path)) as csvfile: - reader = csv.reader(csvfile) - for row in reader: - self.err_type.append(float(row[0])) - self.err_time.append(float(row[1])) - self.err_note_already_played.append(float(row[2])) - self.err_note_not_played.append(float(row[3])) - self.err_note_no_noteoff.append(float(row[4])) + # Step 5 + n = len(cov_diag_normalized) + iso_diag = np.eye(n)[np.diag_indices(n)] + l2_norm = np.linalg.norm(cov_diag_normalized - iso_diag) + normalization_constant = np.sqrt(2 * (n - np.sqrt(n))) + isotropy_defect = l2_norm / normalization_constant - def analyze(self, logger: logging.Logger, **kwargs): - mean_tc_type, std_tc_type = np.mean(self.err_type), np.std(self.err_type) - mean_tc_time, std_tc_time = np.mean(self.err_time), np.std(self.err_time) - mean_tc_nap, std_tc_nap = np.mean(self.err_note_already_played), np.std(self.err_note_already_played) - mean_tc_nnp, std_tc_nnp = np.mean(self.err_note_not_played), np.std(self.err_note_not_played) - mean_tc_nno, std_tc_nno = np.mean(self.err_note_no_noteoff), np.std(self.err_note_no_noteoff) - logger.debug(f'TC type: {mean_tc_type:.6f} ± {std_tc_type:.6f} | ' - f'{mean_tc_type * 100:.1f} ± {std_tc_type * 100:.1f} e-2 | ' - f'{mean_tc_type * 1000:.1f} ± {std_tc_type * 1000:.1f} e-3') - logger.debug(f'TC time: {mean_tc_time:.6f} ± {std_tc_time:.6f} | ' - f'{mean_tc_time * 100:.1f} ± {std_tc_time * 100:.1f} e-2 | ' - f'{mean_tc_time * 1000:.1f} ± {std_tc_time * 1000:.1f} e-3') - logger.debug(f'TC nap_: {mean_tc_nap:.6f} ± {std_tc_nap:.6f} | ' - f'{mean_tc_nap * 100:.1f} ± {std_tc_nap * 100:.1f} e-2 | ' - f'{mean_tc_nap * 1000:.1f} ± {std_tc_nap * 1000:.1f} e-3') - logger.debug(f'TC nnp_: {mean_tc_nnp:.6f} ± {std_tc_nnp:.6f} | ' - f'{mean_tc_nnp * 100:.1f} ± {std_tc_nnp * 100:.1f} e-2 | ' - f'{mean_tc_nnp * 1000:.1f} ± {std_tc_nnp * 1000:.1f} e-3') - logger.debug(f'TC nnno: {mean_tc_nno:.6f} ± {std_tc_nno:.6f} | ' - f'{mean_tc_nno * 100:.1f} ± {std_tc_nno * 100:.1f} e-2 | ' - f'{mean_tc_nno * 1000:.1f} ± {std_tc_nno * 1000:.1f} e-3') - logger.debug(f'TC type / nap / time: {mean_tc_type * 1000:.1f} ± {std_tc_type * 1000:.1f} & ' - f'{mean_tc_nap * 1000:.1f} ± {std_tc_nap * 1000:.1f} & ' - f'{mean_tc_time * 1000:.1f} ± {std_tc_time * 1000:.1f}') + # Steps 6 and 7 + n = np.shape(points)[0] + the_score = ((n - (isotropy_defect ** 2) * (n - np.sqrt(n))) ** 2 - n) / (n * (n - 1)) - def reset(self): - self.err_type = [] - self.err_time = [] - self.err_note_already_played = [] - self.err_note_not_played = [] - self.err_note_no_noteoff = [] + return the_score diff --git a/models.py b/models.py new file mode 100644 index 0000000..72105a7 --- /dev/null +++ b/models.py @@ -0,0 +1,333 @@ +"""Model + +""" + +from typing import List, Tuple, Union, Optional, Callable + +from torch import LongTensor, FloatTensor, Tensor, cat, stack, no_grad, nn, multinomial, softmax +from torch.nn import Module, ModuleList, Linear, Embedding, CrossEntropyLoss +from transformers import GPT2LMHeadModel, GPT2Config, BertForPreTraining, BertForSequenceClassification, BertConfig +from transformers.models.bert.modeling_bert import BertForPreTrainingOutput +from transformers.modeling_outputs import SequenceClassifierOutput, CausalLMOutputWithCrossAttentions +from transformers.generation.utils import top_k_top_p_filtering, GenerationConfig, StoppingCriteriaList, \ + LogitsProcessorList + + +class GPT2LMHeadModelEmbedPooling(GPT2LMHeadModel): + """ + We override this class as we need to alter the way the loss is computed with embedding pooling. + """ + def __init__(self, config: GPT2Config, num_classes: List[int], embed_sizes: List[int]): + super().__init__(config) + + self.transformer.wte = MultiEmbeddings(num_classes, embed_sizes, config.n_embd, config.pad_token_id) + self.lm_head = MultiOutput(num_classes=num_classes, d_model=config.n_embd) + + def forward( + self, + input_ids: Optional[LongTensor] = None, + past_key_values: Optional[Tuple[Tuple[Tensor]]] = None, + attention_mask: Optional[FloatTensor] = None, + token_type_ids: Optional[LongTensor] = None, + position_ids: Optional[LongTensor] = None, + head_mask: Optional[FloatTensor] = None, + inputs_embeds: Optional[FloatTensor] = None, + encoder_hidden_states: Optional[Tensor] = None, + encoder_attention_mask: Optional[FloatTensor] = None, + labels: Optional[LongTensor] = None, + use_cache: Optional[bool] = None, + output_attentions: Optional[bool] = None, + output_hidden_states: Optional[bool] = None, + return_dict: Optional[bool] = None, + pad_on_left: Optional[bool] = None, # Subclassing to change signature for data collator + ) -> Union[Tuple, CausalLMOutputWithCrossAttentions]: + r""" + labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*): + Labels for language modeling. Note that the labels **are shifted** inside the model, i.e. you can set + `labels = input_ids` Indices are selected in `[-100, 0, ..., config.vocab_size]` All labels set to `-100` + are ignored (masked), the loss is only computed for labels in `[0, ..., config.vocab_size]` + """ + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + # Compute embeds here so that the input shape is kept for method below + inputs_embeds = self.transformer.wte(input_ids) + transformer_outputs = self.transformer( + input_ids=None, + past_key_values=past_key_values, + attention_mask=attention_mask, + token_type_ids=token_type_ids, + position_ids=position_ids, + head_mask=head_mask, + inputs_embeds=inputs_embeds, + encoder_hidden_states=encoder_hidden_states, + encoder_attention_mask=encoder_attention_mask, + use_cache=use_cache, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + ) + hidden_states = transformer_outputs[0] + + lm_logits = self.lm_head(hidden_states) # (N,T,C) or [Z (N,T,C*)] + + loss = None + if labels is not None: + loss_fct = CrossEntropyLoss() + loss = sum([loss_fct(pr[..., :-1, :].contiguous().view(-1, pr.size(-1)), + labels[..., 1:, i].contiguous().view(-1)) + for i, pr in enumerate(lm_logits)]) # [Z (N,T,C)] & (N,T,Z) + + if not return_dict: + output = (lm_logits,) + transformer_outputs[1:] + return ((loss,) + output) if loss is not None else output + + return CausalLMOutputWithCrossAttentions( + loss=loss, + logits=lm_logits, + past_key_values=transformer_outputs.past_key_values, + hidden_states=transformer_outputs.hidden_states, + attentions=transformer_outputs.attentions, + cross_attentions=transformer_outputs.cross_attentions, + ) + + @no_grad() + def generate( + self, + inputs: Optional[Tensor] = None, + generation_config: Optional[GenerationConfig] = None, + logits_processor: Optional[LogitsProcessorList] = None, + stopping_criteria: Optional[StoppingCriteriaList] = None, + prefix_allowed_tokens_fn: Optional[Callable[[int, Tensor], List[int]]] = None, + synced_gpus: Optional[bool] = False, + **kwargs, + ) -> LongTensor: + + if generation_config is None: + generation_config = self.generation_config + assert generation_config.max_new_tokens <= self.transformer.wpe.weight.shape[0], \ + 'The maximum sequence length must be <= to the nb of positions the model can handle' + inputs = kwargs.get("input_ids", inputs) + y = inputs.clone() + if y.dim() == 2: + y = y.unsqueeze(0) # (T,Z) --> (N,T,Z) with N=1 + past_key_val = None # (NLY,2,N,NH,T,DH) + tokens = y.clone() # (N,T,Z) + + for _ in range(generation_config.max_new_tokens): + # Adds the prediction to the target sequence, updates past key values and y sequence + logits = self.forward(tokens, past_key_val) + logits, past_key_val = logits.logits, logits.past_key_values # [Z: (N,T,C)] + tokens = [] + for token_type in logits: + logit = top_k_top_p_filtering(token_type[:, -1].cpu(), generation_config.top_k, generation_config.top_p) + logit = softmax(logit / generation_config.temperature, -1) # (N,C) + logit = multinomial(logit, 1) # (N,1) + tokens.append(logit) + tokens = stack(tokens).permute(1, 2, 0).to(self.device) # (Z,N,1) --> (N,1,Z) + y = cat([y, tokens], dim=1) # (N,T+1,Z) + + return y[0] if inputs.dim() == 2 else y # (T,Z) or (N,T,Z) + + def get_input_embeddings(self) -> nn.Module: + return self.transformer.wte + + def resize_position_embeddings(self, new_num_position_embeddings: int): + pass + + def get_position_embeddings(self) -> Union[Embedding, Tuple[Embedding]]: + pass + + +class BertForPreTrainingEmbedPooling(BertForPreTraining): + """ + We override this class as we need to alter the way the loss is computed with embedding pooling. + """ + def __init__(self, config: BertConfig, num_classes: List[int], embed_sizes: List[int]): + super().__init__(config) + + self.bert.embeddings.word_embeddings = MultiEmbeddings(num_classes, embed_sizes, config.hidden_size, + padding_idx=config.pad_token_id) + self.cls.predictions = MultiOutput(num_classes, config.hidden_size) + """# Weight tying + for i in range(len(num_classes)): + self._tie_or_clone_weights(self.cls.predictions.output_layers[i], + self.bert.embeddings.word_embeddings.embedding_layers[i])""" + + def forward( + self, + input_ids: Optional[Tensor] = None, + attention_mask: Optional[Tensor] = None, + token_type_ids: Optional[Tensor] = None, + position_ids: Optional[Tensor] = None, + head_mask: Optional[Tensor] = None, + inputs_embeds: Optional[Tensor] = None, + labels: Optional[Tensor] = None, + next_sentence_label: Optional[Tensor] = None, + output_attentions: Optional[bool] = None, + output_hidden_states: Optional[bool] = None, + return_dict: Optional[bool] = None, + ) -> Union[Tuple[Tensor], BertForPreTrainingOutput, SequenceClassifierOutput]: + r""" + labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*): + Labels for computing the sequence classification/regression loss. Indices should be in `[0, ..., + config.num_labels - 1]`. If `config.num_labels == 1` a regression loss is computed (Mean-Square loss), If + `config.num_labels > 1` a classification loss is computed (Cross-Entropy). + """ + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + # Compute embeds here so that the input shape is kept for method below + inputs_embeds = self.bert.embeddings.word_embeddings(input_ids) + outputs = self.bert( + input_ids=None, + attention_mask=attention_mask, + token_type_ids=token_type_ids, + position_ids=position_ids, + head_mask=head_mask, + inputs_embeds=inputs_embeds, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + ) + + sequence_output, pooled_output = outputs[:2] + prediction_scores, seq_relationship_score = self.cls(sequence_output, pooled_output) + + total_loss = None + if labels is not None and next_sentence_label is not None: + loss_fct = CrossEntropyLoss() + masked_lm_loss = sum([loss_fct(pr.view(-1, pr.size(-1)), labels[..., i].contiguous().view(-1)) + for i, pr in enumerate(prediction_scores)]) # [Z (N,T,C)] & (N,T,Z) + next_sentence_loss = loss_fct(seq_relationship_score.view(-1, 2), next_sentence_label.view(-1)) + total_loss = masked_lm_loss + next_sentence_loss + + if not return_dict: + output = (prediction_scores, seq_relationship_score) + outputs[2:] + return ((total_loss,) + output) if total_loss is not None else output + + return BertForPreTrainingOutput( + loss=total_loss, + prediction_logits=prediction_scores, + seq_relationship_logits=seq_relationship_score, + hidden_states=outputs.hidden_states, + attentions=outputs.attentions, + ) + + def get_input_embeddings(self) -> nn.Module: + return self.bert.embeddings.word_embeddings + + def resize_position_embeddings(self, new_num_position_embeddings: int): + pass + + def get_position_embeddings(self): + pass + + def prepare_inputs_for_generation(self, *args, **kwargs): + pass + + def _reorder_cache(self, past, beam_idx): + pass + + +class BertForSequenceClassificationEmbeddingPooling(BertForSequenceClassification): + """ + We override the class to first compute pooled embeddings before giving it to the backbone BERT model. + """ + def __init__(self, config: BertConfig, num_classes: List[int], embed_sizes: List[int]): + super().__init__(config) + + self.bert.embeddings.word_embeddings = MultiEmbeddings(num_classes, embed_sizes, config.hidden_size, + padding_idx=config.pad_token_id) + + def forward( + self, + input_ids: Optional[Tensor] = None, + attention_mask: Optional[Tensor] = None, + token_type_ids: Optional[Tensor] = None, + position_ids: Optional[Tensor] = None, + head_mask: Optional[Tensor] = None, + inputs_embeds: Optional[Tensor] = None, + labels: Optional[Tensor] = None, + output_attentions: Optional[bool] = None, + output_hidden_states: Optional[bool] = None, + return_dict: Optional[bool] = None, + ) -> Union[Tuple[Tensor], BertForPreTrainingOutput, SequenceClassifierOutput]: + r""" + labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*): + Labels for computing the sequence classification/regression loss. Indices should be in `[0, ..., + config.num_labels - 1]`. If `config.num_labels == 1` a regression loss is computed (Mean-Square loss), If + `config.num_labels > 1` a classification loss is computed (Cross-Entropy). + """ + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + # Compute embeds here so that the input shape is kept for method below + inputs_embeds = self.bert.embeddings.word_embeddings(input_ids) + return super().forward( + input_ids=None, + attention_mask=attention_mask, + token_type_ids=token_type_ids, + position_ids=position_ids, + head_mask=head_mask, + inputs_embeds=inputs_embeds, + labels=labels, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + ) + + +class MultiEmbeddings(Module): + """Multi-input module, taking several tokens as input, converting them to embeddings and + concatenate them to make a single 'merged' embedding + :param num_classes: number of classes for each token type + :param embedding_sizes: sizes of each embedding type + :param d_model: size of the final embedding, i.e. dimension of the transformer + :param padding_idx: padding index, must be the same for each token type + """ + def __init__(self, num_classes: List[int], embedding_sizes: List[int], d_model: int, padding_idx: int = 0): + assert len(num_classes) == len(embedding_sizes), \ + f'The number of classes and embedding sizes must be the same ({len(num_classes)} and ' \ + f'{len(embedding_sizes)} were given)' + super().__init__() + self.embedding_layers = ModuleList([Embedding(num_classes[i], embedding_sizes[i], padding_idx) + for i in range(len(num_classes))]) + self.proj = Linear(sum(embedding_sizes), d_model) + self.weight = None # to mock weight tying in hf from_pretrained + + def forward(self, x: LongTensor) -> FloatTensor: + """ + :param x: Tokens sequences, shape: (N,T,Z) + :return: Embeddings, as a tensor with a shape (N,T,E) + """ + embeds = [] + for i, mod in enumerate(self.embedding_layers): + embeds.append(mod(x[..., i])) + x = cat(embeds, dim=-1) # (N,T,sum(embedding_sizes)) + return self.proj(x) # (N,T,E) + + +class MultiOutput(Module): + """Multi-output module. + :param num_classes: number of classes for each token type + :param d_model: size of the final embedding, i.e. dimension of the transformer + """ + def __init__(self, num_classes: List[int], d_model: int): + super().__init__() + self.output_layers = ModuleList([Linear(d_model, num) for num in num_classes]) + self.weight = None # to mock weight tying in hf from_pretrained + + def forward(self, x: List[FloatTensor]) -> List[FloatTensor]: + """ + :param x: Tokens sequences, shape: (L, N, E) + :return: List of tensors of shape (L, N, *) + """ + return [out(x) for out in self.output_layers] # Z (L, N, *) + + """ This does not work as in and out modules does not have the same dimensions + @property + def weight(self): + return [mod.weight for mod in self.output_layers] + + @weight.setter + def weight(self, value): + for mod, arg_weight in zip(self.output_layers, value): + mod.weight = arg_weight""" diff --git a/page/.hugo_build.lock b/page/.hugo_build.lock new file mode 100644 index 0000000..e69de29 diff --git a/page/config.toml b/page/config.toml new file mode 100644 index 0000000..df204ac --- /dev/null +++ b/page/config.toml @@ -0,0 +1,261 @@ +baseURL = "/bpe-symbolic-music" +languageCode = "en" +title = "Byte Pair Encoding for Symbolic Music" +theme = ["hugo-embed-pdf-shortcode", "color-your-world"] + +# Used only in the RSS file +# copyright = "Copyright © 2021, John Doe; All rights reserved." + +enableEmoji = true +enableInlineShortcodes = true + +paginate = 3 + + +# TEST +# Netlify _headers +[outputs] + home = [ "HTML", "RSS", "HEADERS", "REDIRECTS" ] + section = [ "HTML", "RSS" ] + +[mediaTypes."text/netlify"] + suffixes = [ "" ] + delimiter = "" + +[outputFormats.HEADERS] + mediaType = "text/netlify" + baseName = "_headers" + isPlainText = true + notAlternative = true + +# Necessary for i18n sites, so the correct 404 page can be rendered +[outputFormats.REDIRECTS] + mediaType = "text/netlify" + baseName = "_redirects" + isPlainText = true + notAlternative = true + + +[markup.highlight] + # To make use of the custom Chroma, this should be false + # The default is true + noClasses = false + + + +[params] + + # Site description + description = "BPE for Symbolic Music" + + # Author + author = "John Doe" + authorDesc = "BPE for Symbolic Music" + + # Footer text + # Each value will become a paragraph + # Keep it as an array + # footerText = [ "Generated with [Hugo](https://gohugo.io) using the [Color Your World](https://gitlab.com/rmaguiar/hugo-theme-color-your-world) theme." ] + + # Site cover, for Open Graph, Twitter Cards and Schema.org + # It will be used if the current page doesn't have a image cover + # File will be picked from the "assets" directory + # Comment the lines if you don't want to use it + #cover = "img/cover.jpg" + #coverAlt = "A placeholder that doesn't deserve to be described." + + # Shows a message in the footer about JavaScript being disabled + # The default is false + hasNoscriptNotice = true + + # Default path for images in posts + # ie.: "content/some-post/img" + # Can also be set PER PAGE + # It can be used to reduce repetition + # There's no default value + imgPath = "img" + + # Default classes for markup image + # Modifies the default behavior of images placed via markdown + # Can also be set PER PAGE via front matter + # Available classes are: border and borderless + # There's no default value + markupImgClass = "" + + # This will append a separator (of your choice) along the site title to your + # ie.: | âš - – — • âš« + # You can disabled it PER PAGE by using "disableTitleSeparator" at front + # matter or disable it entirely by commenting the line below + titleSeparator = "|" + + # Contact form shortcode + [params.contact] + + # formspree.io Form ID + formspreeFormId = "example" + + # Autocomplete [on/off] and min character length for message + autoComplete = false # Default is false + messageMinLength = 140 # Default is 140 + + # Subject + # You can set a single value below (and it will cease to be a dropdown), + # BUT KEEP IT AS AN ARRAY + # It can also be disabled entirely (and it will turn into a text field) + subject = [ 'Just saying "hi"', "I know what you did last winter", "... Is that a sloth?", "ãŠå‰ã¯ã‚‚ã†æ­»ã‚“ã§ã„る。" ] + + # Text placeholders. As usual, comment the lines if you don't want use them + # The "subject" below will only be used if the "subject" above doesn't exist (ie.: commented/deleted) + [params.contact.placeholder] + name = "Jane Doe" + email = "janedoe@example.com" + subject = 'Just saying "hi"' + message = "Aenean lacinia bibendum nulla sed consectetur. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Donec ullamcorper nulla non metus auctor fringilla nullam quis risus." + + + [params.search] + + # Enable search form (at the post list) + # The default value is false + enable = true + + # Limit search results + # The default value is 30 + maxResults = 15 + + # Limit seach field input and pattern matching + minLength = 2 # Default is 3 + maxLength = 42 # Default is 32 + + # Optional placeholder for search field + placeholder = "ie.: lorem ipsum" + + + [params.style] + + # Dark mode as default + # User preferences (site/system settings) will still have priority over it + # The default is false + isDark = true + + # Disable the use of system settings (prefers-color-scheme) + # The default is false + ignoreSystemSettings = false + + # Accent colors for dark and light mode respectively + darkAccent = "#1dbc91" # Default is "#1dbc91" + lightAccent = "#1f676b" # Default is "#1f676b" + + # More colors, pick as many as you want (not really sure if there's a limit) + # Apparently these may not show up on every modern browser (ie. Firefox) + # There's no default value. Used here just as example + presets = [ "#225670", "#dd587c", "#902b37", "#f3a530", "#754e85", "#7fc121", "#a8314a", "#ff7433", "#3e6728", "#c063bd", "#805080", "#9d629d", "#a064a0", "#7daa50", "#284531", "#285790", "#F5A83D", "#88aa33", "#015660", "#bf274e", "#bf4242", "#51b37c" ] + + # Use an icon or text for footnote return links + # The default is false + hasIconAsFootnoteReturnLink = true + + # For the social shortcode + # Use flexbox (with flex-grow) or grid (equal width) + # The default is false + socialIsFlex = false + + # Keep anchor links hidden until it's focused/hovered + # The default is false + hideAnchors = true + + # To make use of the custom Chroma, this should be true + # and "noClasses" (at markup.highlight) should be false + # The default is true + useCustomChroma = true + + # CSS animation transition when changing colors + # The default is ".5s ease" + changeTransition = ".3s ease" + + + # For a simple 404 + [params.notFound] + title = "Page not found" + description = "This page was not found." + paragraph = "Nothing to see here, buddy." + + [params.social.centralized] + facebook = [ "<username>", "Zuckerburg" ] + flickr = [ "<username>" ] + github = [ "<username>" ] + gitlab = [ "<username>" ] + instagram = [ "<username>" ] + keybase = [ "<username>" ] + linkedin = [ "<username>" ] + medium = [ "<username>" ] + reddit = [ "<username>" ] + snapchat = [ "<username>" ] + soundcloud = [ "<username>" ] + stackOverflow = [ "<username>" ] + strava = [ "<username>" ] + telegram = [ "<username>" ] + twitch = [ "<username>" ] + twitter = [ "<username>", "@birb" ] + vimeo = [ "<username>" ] + whatsapp = [ "<number>" ] + xing = [ "<username>" ] + youtube = [ "<channelid>" ] + #entry = [ "username", "label (optional)" ] + + # The "entry" here IS important. It's used to load the data. + + [params.social.decentralized] + + [params.social.decentralized.element] + 1 = [ "https://app.element.io/#/user/<username>:matrix.org", "matrix.org" ] + #entry = [ "full url", "label (required)" ] + + [params.social.decentralized.funkwhale] + 1 = [ "https://open.audio/<username>", "open.audio" ] + + [params.social.decentralized.mastodon] + 1 = [ "https://mastodon.social/<username>", "mastodon.social" ] + 2 = [ "https://mastodon.too/<username>", "mastodon.too" ] + 3 = [ "https://yet.another.one/<username>", "yet.another.one" ] + + [params.social.decentralized.matrix] + 1 = [ "https://matrix.to/#/<username>:matrix.org", "matrix.org" ] + 2 = [ "https://matrix.to/#/<username>:other.org", "other.org" ] + + [params.social.decentralized.peertube] + 1 = [ "https://peertube.something/accounts/<username>", "peertube.something" ] + + [params.social.decentralized.pixelfed] + 1 = [ "https://pixelfed.social/<username>", "pixelfed.social" ] + + # The "entry" here ISN'T important. It's used for nothing. + + +[privacy] + + [privacy.vimeo] + disabled = false + simple = true + + [privacy.twitter] + disabled = false + enableDNT = true + simple = true + + [privacy.instagram] + disabled = false + simple = true + + [privacy.youtube] + disabled = false + privacyEnhanced = true + +[services] + + [services.instagram] + disableInlineCSS = true + + [services.twitter] + disableInlineCSS = true + diff --git a/page/content/_index.md b/page/content/_index.md new file mode 100644 index 0000000..5dd7223 --- /dev/null +++ b/page/content/_index.md @@ -0,0 +1,182 @@ +--- +title : "" +disableTitleSeparator : true +toc : True +--- + +## Introduction + +<!-- Feel free to check the [posts](/posts) to see some of the theme features. --> + +Welcome to the demo website of the paper "Byte Pair Encoding for Symbolic Music". + +### BPE + +[Byte Pair Encoding (BPE)](https://www.derczynski.com/papers/archive/BPE_Gage.pdf) is a data compression technique. It converts the most recurrent successive bytes\footnote{For symbolic music in our case, the basic "tokens" (e.g. describing note and time attributes) can be seen as the base characters (bytes) that will be merged.} in a corpus into newly created ones. For instance, in the character sequence ``aabaabaacaa``, the sub-sequence ``aa`` occurs three times and is the most recurrent one. Learning and applying BPE on this sequence would replace ``aa`` with a new symbol, e.g., ``d``, resulting in a compressed sequence ``dbdbdcd``. The latter can be reduced again by replacing the ``db`` subsequence, giving ``eedcd``. In practice BPE is learned on a corpus until the vocabulary reaches a target size. + +BPE is nowadays largely used in the NLP field as it allows to [encode rare words and segmenting unknown or composed words as sequences of sub-word units](https://aclanthology.org/P16-1162/). Other token aggregation, or vocabulary building techniques exist. The two other most commonly used are [Unigram](https://aclanthology.org/P18-1007/) or [WordPiece](https://arxiv.org/abs/1609.08144), which operations share similarities with BPE. + +For natural language, bytes are the distinct characters composing the text. Its application to symbolic music has however not yet been studied. +For symbolic music, the "bytes" are considered as the distinct note and time attributes in this paper. In this context, BPE can allow to represent a note, or even a succession of notes, that is very recurrent in the dataset, as a single token. For instance, a note that would be tokenized as the succession of tokens ``Pitch_D3``, ``Velocity_60``, ``Duration_2.0`` could be replaced by a single new one. +Rare note (and attributes) can still be tokenized as non-BPE tokens. The same logic applies to time tokens, that can also be associated to note tokens. + +## Main results + +We recap the main results from the paper. + +### Model weights + +Models weights are not currently shared during the reviewing process, as we cannot share them in a way that would not break anonymity. We will made them publicly available upon acceptance, along with the training files. We also plan to publish the weights of the best performing models on the Hugging Face hub. + +### Generation + +BPE allows to improve the quality of the generation, while increasing the inference speed. +Generated examples are shown in the last sections. + +![Generation quality](generation.png "Metrics of generated results. TSE results are all scaled at e−3 for better readability. Hum stand for human, - for non-concerned (i.e. 0).") + +![Inference speed](inference_speed.png "Inference speeds on a V100 GPU and proportion of vocabulary sampled during generation. For tok/sec, the results account for basic tokens of note attributes and time. Tok/sec for Octuple is not showed as the equivalent number of base tokens is not clearly calculable.") + +### Classification + +![Classification accuracy](classification.png "Average accuracy of classification models.") + +### Embedding space + +One of the main limitation of the previous work on symbolic music modeling is the suboptimal usage of the embedding space of LMs. Most of them use models with embeddings represented from 512 to 1024 dimensions, for vocabularies of less than 500 tokens. One can easily see here the suboptimal situation of using as much dimensions to represent so few points. The same models, when used with natural language, use to learn up to 50k embeddings on a range of 512 to 1024 dimensions. + +BPE allows to make a better use of the embedding space, using more space while having better distributed embeddings (isotropy). + +![Isotropy](isotropy.png "Isocore, and intrinsic dimension (ID) estimations. Gen. corresponds to the causal generative models, Pt. to the pretrained bidirectional models.") + +We display below the 2D and 3D UMAP projections of the embedding matrices of all the models. +For each window, the seven representations correspond to: no BPE, BPE 1k, BPE 5k, BPE 10k, BPE 20k, PVm and PVDm. + +#### Generator (GPT2) + TSD + +{{< embed-pdf url="umap/umap_2d_gen_Maestro_TSD.pdf" >}} +{{< embed-pdf url="umap/umap_3d_gen_Maestro_TSD.pdf" >}} + +#### Generator (GPT2) + REMI + +{{< embed-pdf url="umap/umap_2d_gen_Maestro_REMI.pdf" >}} +{{< embed-pdf url="umap/umap_3d_gen_Maestro_REMI.pdf" >}} + +#### Pretrained (BERT) + TSD + +{{< embed-pdf url="umap/umap_2d_cla_genre_MMD_TSD.pdf" >}} +{{< embed-pdf url="umap/umap_3d_cla_genre_MMD_TSD.pdf" >}} + +#### Pretrained (BERT) + REMI + +{{< embed-pdf url="umap/umap_2d_cla_genre_MMD_REMI.pdf" >}} +{{< embed-pdf url="umap/umap_3d_cla_genre_MMD_REMI.pdf" >}} + +#### Singular values + +The pages correspond to *Pretrained + TSD*, *Pretrained + REMI*, *Generator + TSD* and *Generator + REMI*. + +{{< embed-pdf url="umap/umap_2d_gen_Maestro_TSD.pdf" >}} + +## Generated examples + +We made listenable generated samples below, that have been cherry-picked so that all tracks show enough diversity. +You can +{{< a href="bpe_for_symbolic_music_human_eval_samples.zip" download="bpe_for_symbolic_music_human_eval_samples" >}} +download all samples +{{< /a >}} +used for the human evaluations as MIDI files. On these files, the tracks are not shuffled and **corresponds by order to: no BPE, BPE 1k, BPE 5k, BPE 10k, BPE 20k, PVm, PVDm, CP Word and Octuple**. (the two latter are only present for REMI files) **The same goes for the audio samples below.** + +### TSD + +##### File 27 + +{{< audio src="audio_tsd/21_1.mp3">}} +{{< audio src="audio_tsd/21_2.mp3">}} +{{< audio src="audio_tsd/21_3.mp3">}} +{{< audio src="audio_tsd/21_4.mp3">}} +{{< audio src="audio_tsd/21_5.mp3">}} +{{< audio src="audio_tsd/21_6.mp3">}} +{{< audio src="audio_tsd/21_7.mp3">}} + +##### File 41 + +{{< audio src="audio_tsd/41_1.mp3">}} +{{< audio src="audio_tsd/41_2.mp3">}} +{{< audio src="audio_tsd/41_3.mp3">}} +{{< audio src="audio_tsd/41_4.mp3">}} +{{< audio src="audio_tsd/41_5.mp3">}} +{{< audio src="audio_tsd/41_6.mp3">}} +{{< audio src="audio_tsd/41_7.mp3">}} + +##### File 52 + +{{< audio src="audio_tsd/52_1.mp3">}} +{{< audio src="audio_tsd/52_2.mp3">}} +{{< audio src="audio_tsd/52_3.mp3">}} +{{< audio src="audio_tsd/52_4.mp3">}} +{{< audio src="audio_tsd/52_5.mp3">}} +{{< audio src="audio_tsd/52_6.mp3">}} +{{< audio src="audio_tsd/52_7.mp3">}} + +##### File 55 + +{{< audio src="audio_tsd/55_1.mp3">}} +{{< audio src="audio_tsd/55_2.mp3">}} +{{< audio src="audio_tsd/55_3.mp3">}} +{{< audio src="audio_tsd/55_4.mp3">}} +{{< audio src="audio_tsd/55_5.mp3">}} +{{< audio src="audio_tsd/55_6.mp3">}} +{{< audio src="audio_tsd/55_7.mp3">}} + +### REMI + +Recall: **tracks corresponds by order to: no BPE, BPE 1k, BPE 5k, BPE 10k, BPE 20k, PVm, PVDm, CP Word and Octuple** + +##### File 12 + +{{< audio src="audio_remi/12_1.mp3">}} +{{< audio src="audio_remi/12_2.mp3">}} +{{< audio src="audio_remi/12_3.mp3">}} +{{< audio src="audio_remi/12_4.mp3">}} +{{< audio src="audio_remi/12_5.mp3">}} +{{< audio src="audio_remi/12_6.mp3">}} +{{< audio src="audio_remi/12_7.mp3">}} +{{< audio src="audio_remi/12_8.mp3">}} +{{< audio src="audio_remi/12_9.mp3">}} + +##### File 33 + +{{< audio src="audio_remi/33_1.mp3">}} +{{< audio src="audio_remi/33_2.mp3">}} +{{< audio src="audio_remi/33_3.mp3">}} +{{< audio src="audio_remi/33_4.mp3">}} +{{< audio src="audio_remi/33_5.mp3">}} +{{< audio src="audio_remi/33_6.mp3">}} +{{< audio src="audio_remi/33_7.mp3">}} +{{< audio src="audio_remi/33_8.mp3">}} +{{< audio src="audio_remi/33_9.mp3">}} + +##### File 47 + +{{< audio src="audio_remi/47_1.mp3">}} +{{< audio src="audio_remi/47_2.mp3">}} +{{< audio src="audio_remi/47_3.mp3">}} +{{< audio src="audio_remi/47_4.mp3">}} +{{< audio src="audio_remi/47_5.mp3">}} +{{< audio src="audio_remi/47_6.mp3">}} +{{< audio src="audio_remi/47_7.mp3">}} +{{< audio src="audio_remi/47_8.mp3">}} +{{< audio src="audio_remi/47_9.mp3">}} + +##### File 54 + +{{< audio src="audio_remi/54_1.mp3">}} +{{< audio src="audio_remi/54_2.mp3">}} +{{< audio src="audio_remi/54_3.mp3">}} +{{< audio src="audio_remi/54_4.mp3">}} +{{< audio src="audio_remi/54_5.mp3">}} +{{< audio src="audio_remi/54_6.mp3">}} +{{< audio src="audio_remi/54_7.mp3">}} +{{< audio src="audio_remi/54_8.mp3">}} +{{< audio src="audio_remi/54_9.mp3">}} diff --git a/page/layouts/_default/_markup/render-image.html b/page/layouts/_default/_markup/render-image.html new file mode 100644 index 0000000..0523baa --- /dev/null +++ b/page/layouts/_default/_markup/render-image.html @@ -0,0 +1,9 @@ +{{ $image := .Page.Resources.GetMatch (printf "%s" (.Destination | safeURL)) }} +{{ if .Title }} + <figure> + <img alt="{{ .Text }}" loading="lazy" src="{{ .Destination | safeURL }}" /> + <figcaption>{{ .Title | markdownify -}}</figcaption> + </figure> +{{ else }} + <img alt="{{ .Text }}" src="{{ .Destination | safeURL }}" /> +{{ end }} \ No newline at end of file diff --git a/page/layouts/index.headers b/page/layouts/index.headers new file mode 100644 index 0000000..31d1259 --- /dev/null +++ b/page/layouts/index.headers @@ -0,0 +1,9 @@ +/* + Strict-Transport-Security: max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: nosniff + X-XSS-Protection: 1; mode=block + Content-Security-Policy: default-src 'self'; frame-ancestors {{ .Site.BaseURL }}; manifest-src 'self'; connect-src 'self'; font-src 'self'; img-src 'self' data:; script-src 'self'; style-src 'self'; base-uri 'self'; object-src 'none'; require-trusted-types-for 'script'; form-action 'self' https://formspree.io + X-Frame-Options: SAMEORIGIN + Referrer-Policy: strict-origin + Permissions-Policy: geolocation=(self) + Cache-Control: public, max-age=31536000 diff --git a/page/layouts/index.redirects b/page/layouts/index.redirects new file mode 100644 index 0000000..59fbd40 --- /dev/null +++ b/page/layouts/index.redirects @@ -0,0 +1,2 @@ +# 404 redirect for PT pages +/pt/* /pt/404.html 404 diff --git a/page/layouts/shortcodes/a.html b/page/layouts/shortcodes/a.html new file mode 100644 index 0000000..ebfb31f --- /dev/null +++ b/page/layouts/shortcodes/a.html @@ -0,0 +1,7 @@ +<a + $k, $v (printf -}} := .Params range + {{- {{- " %s=%q" $k $v) | safeHTMLAttr -}} + {{- end -}} + > + {{- .Inner | .Page.RenderString -}} +</a> \ No newline at end of file diff --git a/page/layouts/shortcodes/audio.html b/page/layouts/shortcodes/audio.html new file mode 100644 index 0000000..edd8437 --- /dev/null +++ b/page/layouts/shortcodes/audio.html @@ -0,0 +1,6 @@ +<figure .Get with {{ "class" }}class="{{ . }}"{{ end }}> + <audio controls preload="{{ .Get "preload" | default "metadata" }}"> + {{ with .Get "src" }}<source src="{{ . | relURL }}" type="audio/mpeg">{{ end }} + {{ with .Get "caption" }}<figcaption>{{ . }}</figcaption>{{ end }} + </audio> +</figure> \ No newline at end of file diff --git a/page/layouts/shortcodes/embed-pdf.html b/page/layouts/shortcodes/embed-pdf.html new file mode 100644 index 0000000..3192a84 --- /dev/null +++ b/page/layouts/shortcodes/embed-pdf.html @@ -0,0 +1,264 @@ +{{- if not ($.Page.Scratch.Get "embed-pdf-count") -}} + +<script src= '/bpe-symbolic-music/js/pdf-js/build/pdf.js' type="text/javascript"></script> +<!-- <script type="text/javascript" src='{{"/js/pdf-js/build/pdf.js" | relURL}}'></script> --> + +<style> + #embed-pdf-container { + position: relative; + width: 100%; + height: auto; + min-height: 20vh; + /* overflow-y:scroll; */ + } + + .pdf-canvas { + border: 1px solid black; + direction: ltr; + width: 100%; + height: auto; + display: none; + } + + #the-canvas { + border: 1px solid black; + direction: ltr; + width: 100%; + height: auto; + display: none; + } + + + .pdf-loadingWrapper { + display: none; + justify-content: center; + align-items: center; + width: 100%; + height: 350px; + } + + .pdf-loading { + display: inline-block; + width: 50px; + height: 50px; + border: 3px solid #d2d0d0;; + border-radius: 50%; + border-top-color: #383838; + animation: spin 1s ease-in-out infinite; + -webkit-animation: spin 1s ease-in-out infinite; + } + + {{/* Download link */}} + + + + #overlayText { + word-wrap: break-word; + display: grid; + justify-content: end; + } + + #overlayText a { + position: relative; + top: 10px; + right: 4px; + color: #000; + margin: auto; + background-color: #eeeeee; + padding: 0.3em 1em; + border: solid 2px; + border-radius: 12px; + border-color: #00000030; + text-decoration: none; + } + + #overlayText svg { + height: clamp(1em, 2vw, 1.4em); + width: clamp(1em, 2vw, 1.4em); + } + + + + @keyframes spin { + to { -webkit-transform: rotate(360deg); } + } + @-webkit-keyframes spin { + to { -webkit-transform: rotate(360deg); } + } + </style> +{{- end -}} + +{{- $.Page.Scratch.Add "embed-pdf-count" 1 -}} +<div class="embed-pdf-container" id="embed-pdf-container-{{ substr (.Get "url" | md5) 0 8 }}"> + <div class="pdf-loadingWrapper" id="pdf-loadingWrapper-{{ substr (.Get "url" | md5) 0 8 }}"> + <div class="pdf-loading" id="pdf-loading-{{ substr (.Get "url" | md5) 0 8 }}"></div> + </div> + <div id="overlayText"> + <a href="{{ .Get "url" }}" aria-label="Download" download> + <svg aria-hidden="true" viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg"> + <path d="M9 13c.3 0 .5-.1.7-.3L15.4 7 14 5.6l-4 4V1H8v8.6l-4-4L2.6 7l5.7 5.7c.2.2.4.3.7.3zm-7 2h14v2H2z" /> + </svg> + </a> + </div> + <canvas class="pdf-canvas" id="pdf-canvas-{{ substr (.Get "url" | md5) 0 8 }}"></canvas> +</div> + +<div class="pdf-paginator" id="pdf-paginator-{{ substr (.Get "url" | md5) 0 8 }}"> + <button id="pdf-prev-{{ substr (.Get "url" | md5) 0 8 }}">Previous</button> + <button id="pdf-next-{{ substr (.Get "url" | md5) 0 8 }}">Next</button>     + <span> + <span class="pdf-pagenum" id="pdf-pagenum-{{ substr (.Get "url" | md5) 0 8 }}"></span> / <span class="pdf-pagecount" id="pdf-pagecount-{{ substr (.Get "url" | md5) 0 8 }}"></span> + </span> + <a class="pdf-source" id="pdf-source-{{ substr (.Get "url" | md5) 0 8 }}" href="{{ .Get "url" }}">[pdf]</a> +</div> + +<noscript> +View the PDF file <a class="pdf-source" id="pdf-source-noscript-{{ substr (.Get "url" | md5) 0 8 }}" href="{{ .Get "url" }}">here</a>. +</noscript> + +<script type="text/javascript"> + (function(){ + var url = '{{ .Get "url" }}'; + + var hidePaginator = "{{ .Get "hidePaginator" }}" === "true"; + var hideLoader = "{{ .Get "hideLoader" }}" === "true"; + var selectedPageNum = parseInt("{{ .Get "renderPageNum" }}") || 1; + + // Loaded via <script> tag, create shortcut to access PDF.js exports. + var pdfjsLib = window['pdfjs-dist/build/pdf']; + + // The workerSrc property shall be specified. + if (pdfjsLib.GlobalWorkerOptions.workerSrc == '') + pdfjsLib.GlobalWorkerOptions.workerSrc = "{{.Site.BaseURL}}" + 'js/pdf-js/build/pdf.worker.js'; + + // Change the Scale value for lower or higher resolution. + var pdfDoc = null, + pageNum = selectedPageNum, + pageRendering = false, + pageNumPending = null, + scale = 3, + canvas = document.getElementById('pdf-canvas-{{ substr (.Get "url" | md5) 0 8 }}'), + ctx = canvas.getContext('2d'), + paginator = document.getElementById("pdf-paginator-{{ substr (.Get "url" | md5) 0 8 }}"), + loadingWrapper = document.getElementById('pdf-loadingWrapper-{{ substr (.Get "url" | md5) 0 8 }}'); + + + // Attempt to show paginator and loader if enabled + showPaginator(); + showLoader(); + + /** + * Get page info from document, resize canvas accordingly, and render page. + * @param num Page number. + */ + function renderPage(num) { + pageRendering = true; + // Using promise to fetch the page + pdfDoc.getPage(num).then(function(page) { + var viewport = page.getViewport({scale: scale}); + canvas.height = viewport.height; + canvas.width = viewport.width; + + // Render PDF page into canvas context + var renderContext = { + canvasContext: ctx, + viewport: viewport + }; + var renderTask = page.render(renderContext); + + // Wait for rendering to finish + renderTask.promise.then(function() { + pageRendering = false; + showContent(); + + if (pageNumPending !== null) { + // New page rendering is pending + renderPage(pageNumPending); + pageNumPending = null; + } + }); + }); + + // Update page counters + document.getElementById('pdf-pagenum-{{ substr (.Get "url" | md5) 0 8 }}').textContent = num; + } + + /** + * Hides loader and shows canvas + */ + function showContent() { + loadingWrapper.style.display = 'none'; + canvas.style.display = 'block'; + } + + /** + * If we haven't disabled the loader, show loader and hide canvas + */ + function showLoader() { + if(hideLoader) return + loadingWrapper.style.display = 'flex'; + canvas.style.display = 'none'; + } + + /** + * If we haven't disabled the paginator, show paginator + */ + function showPaginator() { + if(hidePaginator) return + paginator.style.display = 'block'; + } + + /** + * If another page rendering in progress, waits until the rendering is + * finished. Otherwise, executes rendering immediately. + */ + function queueRenderPage(num) { + if (pageRendering) { + pageNumPending = num; + } else { + renderPage(num); + } + } + + /** + * Displays previous page. + */ + function onPrevPage() { + if (pageNum <= 1) { + return; + } + pageNum--; + queueRenderPage(pageNum); + } + document.getElementById('pdf-prev-{{ substr (.Get "url" | md5) 0 8 }}').addEventListener('click', onPrevPage); + + /** + * Displays next page. + */ + function onNextPage() { + if (pageNum >= pdfDoc.numPages) { + return; + } + pageNum++; + queueRenderPage(pageNum); + } + document.getElementById('pdf-next-{{ substr (.Get "url" | md5) 0 8 }}').addEventListener('click', onNextPage); + + /** + * Asynchronously downloads PDF. + */ + pdfjsLib.getDocument(url).promise.then(function(pdfDoc_) { + pdfDoc = pdfDoc_; + var numPages = pdfDoc.numPages; + document.getElementById('pdf-pagecount-{{ substr (.Get "url" | md5) 0 8 }}').textContent = numPages; + + // If the user passed in a number that is out of range, render the last page. + if(pageNum > numPages) { + pageNum = numPages + } + + // Initial/first page rendering + renderPage(pageNum); + }); + })(); +</script> diff --git a/page/resources/_gen/assets/scss/scss/main.scss_e86386c8bae1cd02295de71a1be078d6.content b/page/resources/_gen/assets/scss/scss/main.scss_e86386c8bae1cd02295de71a1be078d6.content new file mode 100644 index 0000000..f2431c6 --- /dev/null +++ b/page/resources/_gen/assets/scss/scss/main.scss_e86386c8bae1cd02295de71a1be078d6.content @@ -0,0 +1 @@ +@font-face{font-family:oswald;font-style:normal;font-weight:700;font-display:swap;src:local("Oswald"),url(../fonts/oswald-v29-latin-700.woff2)format("woff2")}@font-face{font-family:open sans;font-style:normal;font-weight:400;font-display:swap;src:local("Open Sans Regular"),local("OpenSans-Regular"),url(../fonts/open-sans-v34-latin-regular.woff2)format("woff2")}@font-face{font-family:open sans;font-style:normal;font-weight:700;font-display:swap;src:local("Open Sans Bold"),local("OpenSans-Bold"),url(../fonts/open-sans-v34-latin-700.woff2)format("woff2")}@font-face{font-family:open sans;font-style:italic;font-weight:400;font-display:swap;src:local("Open Sans Italic"),local("OpenSans-Italic"),url(../fonts/open-sans-v34-latin-italic.woff2)format("woff2")}html{font-size:18px;scroll-behavior:smooth;--blk-mg:1.05rem 0.75rem;--il-pad:0 12px}html[data-mode=dark]{--bg:#1f1f1f;--fg:#bbb;--alt-bg:#1c1c1c;--alt-fg:#ddd;--dtl:#1a1a1a;--err:#ff3131;--bgmod:rgba(255, 255, 255, 0.3);--input-bg:#222;--input-fg:#f0f0f0;--input-bd:#262626;--lpress:rgba(255, 255, 255, 0.2);--rlpress:rgba(0, 0, 0, 0.2)}html[data-mode=dark] img:not([src$='.svg']){filter:contrast(.85)grayscale(.3)}html[data-mode=dark] .chroma,html[data-mode=dark] pre,html[data-mode=dark] p code,html[data-mode=dark] li code{color:#f8f8f2;background:#272822}html[data-mode=dark] .chroma .err{color:#eb0083;background-color:#1e0010}html[data-mode=dark] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}html[data-mode=dark] .chroma .lntable{border-spacing:0;margin:0;border:0;width:auto;display:block}html[data-mode=dark] .chroma .hl{display:block;width:100%;background-color:rgba(0,0,0,.3)}html[data-mode=dark] .chroma .ge{font-style:italic}html[data-mode=dark] .chroma .gs{font-weight:700}html[data-mode=dark] .chroma .lnt,html[data-mode=dark] .chroma .ln{margin-right:.5rem;padding:0 .5rem 0 1.5rem;color:#8e8e8e}html[data-mode=dark] .chroma .k,html[data-mode=dark] .chroma .kc,html[data-mode=dark] .chroma .kd,html[data-mode=dark] .chroma .kp,html[data-mode=dark] .chroma .kr,html[data-mode=dark] .chroma .kt,html[data-mode=dark] .chroma .no{color:#66d9ef}html[data-mode=dark] .chroma .kn,html[data-mode=dark] .chroma .nt,html[data-mode=dark] .chroma .o,html[data-mode=dark] .chroma .ow,html[data-mode=dark] .chroma .gd{color:#f94e8a}html[data-mode=dark] .chroma .na,html[data-mode=dark] .chroma .nc,html[data-mode=dark] .chroma .nd,html[data-mode=dark] .chroma .ne,html[data-mode=dark] .chroma .nf,html[data-mode=dark] .chroma .nx,html[data-mode=dark] .chroma .gi{color:#a6e22e}html[data-mode=dark] .chroma .l,html[data-mode=dark] .chroma .se,html[data-mode=dark] .chroma .m,html[data-mode=dark] .chroma .mb,html[data-mode=dark] .chroma .mf,html[data-mode=dark] .chroma .mh,html[data-mode=dark] .chroma .mi,html[data-mode=dark] .chroma .il,html[data-mode=dark] .chroma .mo{color:#ae81ff}html[data-mode=dark] .chroma .ld,html[data-mode=dark] .chroma .s,html[data-mode=dark] .chroma .sa,html[data-mode=dark] .chroma .sb,html[data-mode=dark] .chroma .sc,html[data-mode=dark] .chroma .dl,html[data-mode=dark] .chroma .sd,html[data-mode=dark] .chroma .s2,html[data-mode=dark] .chroma .sh,html[data-mode=dark] .chroma .si,html[data-mode=dark] .chroma .sx,html[data-mode=dark] .chroma .sr,html[data-mode=dark] .chroma .s1,html[data-mode=dark] .chroma .ss{color:#e6db74}html[data-mode=dark] .chroma .c,html[data-mode=dark] .chroma .ch,html[data-mode=dark] .chroma .cm,html[data-mode=dark] .chroma .c1,html[data-mode=dark] .chroma .cs,html[data-mode=dark] .chroma .cp,html[data-mode=dark] .chroma .cpf,html[data-mode=dark] .chroma .gu{color:#949076}html[data-mode=light]{--bg:#ddd;--fg:#444;--alt-bg:#d6d6d6;--alt-fg:#333;--dtl:#fdfdfd;--err:#c70000;--bgmod:rgba(0, 0, 0, 0.3);--input-bg:#fefefe;--input-fg:#111;--input-bd:#ccc;--lpress:rgba(0, 0, 0, 0.2);--rlpress:rgba(255, 255, 255, 0.2)}html[data-mode=light] .chroma,html[data-mode=light] pre,html[data-mode=light] p code,html[data-mode=light] li code{color:#93a1a1;background-color:#002b36}html[data-mode=light] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}html[data-mode=light] .chroma .lntable{border-spacing:0;margin:0;border:0;width:auto;display:block}html[data-mode=light] .chroma .hl{display:block;width:100%;background-color:rgba(0,0,0,.3)}html[data-mode=light] .chroma .nb{color:#b58900}html[data-mode=light] .chroma .ge{font-style:italic}html[data-mode=light] .chroma .gr{color:#e8625f;font-weight:700}html[data-mode=light] .chroma .gs{font-weight:700}html[data-mode=light] .chroma .x,html[data-mode=light] .chroma .kc,html[data-mode=light] .chroma .no,html[data-mode=light] .chroma .ni,html[data-mode=light] .chroma .ne,html[data-mode=light] .chroma .se,html[data-mode=light] .chroma .gh{color:#e9662f}html[data-mode=light] .chroma .lnt,html[data-mode=light] .chroma .ln{margin-right:.5rem;padding:0 .5rem 0 1.5rem;color:#848f8f}html[data-mode=light] .chroma .k,html[data-mode=light] .chroma .kn,html[data-mode=light] .chroma .kp,html[data-mode=light] .chroma .o,html[data-mode=light] .chroma .ow,html[data-mode=light] .chroma .cs,html[data-mode=light] .chroma .cp,html[data-mode=light] .chroma .cpf,html[data-mode=light] .chroma .gi{color:#859900}html[data-mode=light] .chroma .kd,html[data-mode=light] .chroma .kr,html[data-mode=light] .chroma .bp,html[data-mode=light] .chroma .nc,html[data-mode=light] .chroma .nd,html[data-mode=light] .chroma .nf,html[data-mode=light] .chroma .nt,html[data-mode=light] .chroma .nv,html[data-mode=light] .chroma .gu{color:#3294da}html[data-mode=light] .chroma .kt,html[data-mode=light] .chroma .sr,html[data-mode=light] .chroma .gd{color:#e8625f}html[data-mode=light] .chroma .s,html[data-mode=light] .chroma .sa,html[data-mode=light] .chroma .sc,html[data-mode=light] .chroma .dl,html[data-mode=light] .chroma .s2,html[data-mode=light] .chroma .si,html[data-mode=light] .chroma .sx,html[data-mode=light] .chroma .s1,html[data-mode=light] .chroma .ss,html[data-mode=light] .chroma .m,html[data-mode=light] .chroma .mb,html[data-mode=light] .chroma .mf,html[data-mode=light] .chroma .mh,html[data-mode=light] .chroma .mi,html[data-mode=light] .chroma .il,html[data-mode=light] .chroma .mo{color:#2aa198}html[data-mode=light] .chroma .sb,html[data-mode=light] .chroma .c,html[data-mode=light] .chroma .ch,html[data-mode=light] .chroma .cm,html[data-mode=light] .chroma .c1{color:#759299}body{margin:0;padding:0;font-family:open sans,sans-serif;background:var(--bg);color:var(--fg);display:flex;min-height:100vh;flex-direction:column}body a{color:var(--accent);outline-offset:2px;transition:opacity .2s ease-in-out,outline-color .2s ease-in-out;word-break:break-word}body a:hover{opacity:.75}body>header,body>footer{background:var(--alt-bg);color:var(--alt-fg);text-align:center}body>header{padding:0 1.5rem 1rem}body>header nav{margin:.5rem 0 0}body>header nav ul{margin:0;padding:0;display:flex;flex-wrap:wrap;justify-content:center}body>header nav ul a{display:block;word-break:keep-all;margin:0 7.5px 15px;padding:9px 21px 12px;font-size:.75rem;font-weight:700}body>footer{padding:1.5rem 3rem 1rem}body>footer p{line-height:1.5rem;margin:.5rem 0}body>footer a{transition:opacity .2s ease-in-out,outline-color .3s ease}body>footer a:hover{opacity:.75}body>footer div{padding:12px 0}body>footer div input{border:1px solid var(--fg);box-shadow:inset 0 0 0 1px var(--fg);outline-offset:3px;padding:0}body>footer div input::-webkit-color-swatch{border:none}body>footer div input::-webkit-color-swatch-wrapper{padding:0}body>footer div button{background:0;border:0;padding:3px 3px 0}body>footer div button svg{fill:var(--fg);stroke:var(--lpress);stroke-width:.6rem}body>footer div input,body>footer div button{margin:0 7.5px;transition:outline-color .2s ease-in-out,transform .2s ease-in-out}body>footer div input:hover,body>footer div button:hover{transform:scale(1.2)}body>footer div input::-moz-focus-inner,body>footer div button::-moz-focus-inner{border:0}body>footer div input,body>footer div button svg{width:42px;height:42px}body a,.outline-dashed{outline:2px dashed transparent}body a:focus,.outline-dashed:focus{outline-color:var(--accent)}ol,ul{list-style:none}h1{text-shadow:0 1px 0 var(--rlpress),1px 0 0 var(--rlpress)}hr{border:1px solid var(--lpress);margin:2.4rem 0 1.2rem}::selection{background:var(--accent);color:#f0f0f0;text-shadow:none}.filler{flex:1;align-items:center;justify-content:center}article>header{margin:0 0 2rem}article>header h1{line-height:3rem;margin:.5rem 0}article>header img{margin:1rem 0 0}article>header p{font-size:.9rem;font-style:italic;margin:0}#contact input[type=submit],.label-form,.toc summary,body>header>a,h6,h5,h4,h3,h2,h1{font-family:oswald,sans-serif;font-weight:700}h1{font-size:2.25rem}h2{font-size:2rem}h3{font-size:1.75rem}h4{font-size:1.5rem}h5{font-size:1.25rem}h6{font-size:1rem}main p{line-height:1.5rem}code{font-family:monospace;overflow-wrap:break-word}body>header>a{transition:color .3s ease,opacity .2s ease-in-out,outline-color .3s ease;font-size:2.25rem;text-shadow:0 1px 0 var(--rlpress),1px 0 0 var(--rlpress);display:inline-block;margin:1.5rem 0 .75rem}article h2{margin:1rem 0;padding:1rem 0 0}article h2+p{margin-top:0}article h3{margin:1rem 0;padding:1rem 0 0}article h3+p{margin-top:0}article h4{margin:1rem 0;padding:1rem 0 0}article h4+p{margin-top:0}article h5{margin:1rem 0;padding:1rem 0 0}article h5+p{margin-top:0}article h6{margin:1rem 0;padding:1rem 0 0}article h6+p{margin-top:0}article>p{margin:1.5rem 0}audio,img,video{margin:1.5rem auto}.anchor{float:right;position:relative;transform:none;margin:0 0 0 1.5rem}.anchor svg{fill:var(--accent);vertical-align:middle;width:24px;height:24px}h2 .anchor{margin-right:.65rem;outline-offset:7.5px}h2 .anchor svg{transform:scale(1.7)}h3 .anchor{margin-right:.55rem;outline-offset:6.25px}h3 .anchor svg{transform:scale(1.525)}h4 .anchor{margin-right:.45rem;outline-offset:5px}h4 .anchor svg{transform:scale(1.35)}h5 .anchor{margin-right:.35rem;outline-offset:3.75px}h5 .anchor svg{transform:scale(1.175)}h6 .anchor{margin-right:.25rem;outline-offset:2.5px}h6 .anchor svg{transform:scale(1)}@media(min-width:793px){.anchor{position:absolute;transform:translate(-150%)}h2 .anchor{margin:0 0 0 -.25rem}h3 .anchor{margin:0 0 0 -.15rem}h4 .anchor{margin:0 0 0 -.05rem}h5 .anchor{margin:0 0 0 .05rem}h6 .anchor{margin:0 0 0 .15rem}}label,summary,.footnote-ref,.lnt{user-select:none}nav#TableOfContents li:first-of-type,article ol li:first-of-type,article ul li:first-of-type{margin-top:.3rem}nav#TableOfContents li:not(:last-of-type),nav#TableOfContents li ul li:first-of-type,nav#TableOfContents li ol li:first-of-type,article ol li:not(:last-of-type),article ol li ul li:first-of-type,article ol li ol li:first-of-type,article ul li:not(:last-of-type),article ul li ul li:first-of-type,article ul li ol li:first-of-type{margin-bottom:.3rem}ol li>p,ul li>p{margin:0;display:inline-block}ol{counter-reset:n}ol>li{counter-increment:n}ol>li::before{content:counter(n)"";font-family:monospace;font-size:.85rem;font-weight:700;text-shadow:0 1px 0 var(--lpress),1px 0 0 var(--lpress);border:1px solid var(--lpress);color:var(--bg);padding:3px 7.5px 2px}li::before{margin-right:12px;background:var(--fg);border-radius:2px}.footnotes{border-top:2px solid var(--fg);display:block;margin-top:2.4rem;padding:1rem 0 1.5rem}.footnotes h2{margin:0 0 2rem}.footnotes a{word-break:break-word}.footnotes ol li p:first-of-type{display:inline;margin-left:-6px}.footnotes .footnote-backref{margin:0 0 0 9px;padding:0 9px;vertical-align:middle}.footnotes .footnote-backref svg{fill:var(--dtl);stroke:var(--lpress);stroke-width:.6rem;width:18px;height:18px}.footnotes hr{display:none}sup{line-height:0}sup .footnote-ref{text-decoration:none}sup .footnote-ref::before{content:'['}sup .footnote-ref::after{content:']'}code,.chroma{transition:background-color .3s ease,color .3s ease}article>pre,.scroll,.katex-display,.highlight>pre,.highlight>div{overflow-x:auto;transition:background-color .3s ease,color .3s ease,outline-color .3s ease;outline:3px solid transparent}article>pre:focus,.scroll:focus,.katex-display:focus,.highlight>pre:focus,.highlight>div:focus{outline-color:var(--accent)}.scroll{border:1px solid var(--fg)}.scroll>table{border-collapse:collapse;color:var(--fg);font-family:open sans,sans-serif;min-width:600px;width:100%}.scroll>table td+td{border-left:1px solid var(--fg)}.scroll>table tr+tr{border-top:1px solid var(--fg)}.scroll>table td,.scroll>table th{padding:9px}.scroll>table th{background:var(--fg);color:var(--bg)}.scroll>table tbody tr{transition:background .2s ease-in-out,color .2s ease-in-out}.scroll>table tbody tr:nth-child(even){background:var(--alt-bg)}.scroll>table tbody tr:nth-child(odd){background:var(--bg)}.scroll>table tbody tr:hover{background:var(--accent);color:var(--dtl)}.scroll>table tbody tr:hover a{color:var(--dtl)}.scroll>table tbody tr:hover ::selection{background:#f0f0f0;color:var(--accent)}.highlight>div table{max-height:75vh}.chroma td:first-of-type{padding:0 18px 0 0}article>pre,.katex-display,.highlight>pre{padding:1rem 1.5rem}article>pre,.katex-display,.highlight>pre,.highlight>.chroma{border:1px solid #222;line-height:1.5rem;max-height:75vh}mark,p code,li code{border-radius:2px;padding:0 3px}li a{word-break:break-all}article>header .terms{margin:.9rem 0 .6rem}article>header .terms ul{padding:0}article>header .terms li{display:inline}article>header .terms a{display:inline-block;margin:0 7.5px 9px 0;padding:6px 15px 9px}.posts{padding:0}.posts li{margin:.5rem 0}.posts a{background:var(--accent);color:var(--dtl);display:flex;flex-direction:column-reverse;margin:15px auto;padding:15px 30px 18px;text-decoration:none;word-break:break-word}.posts a p{flex:1;margin:0}.posts a time{background-image:linear-gradient(0deg,var(--bgmod),100%,transparent);border-radius:2px;font-size:.85rem;margin:.3rem 0;padding:0 9px 2px}.katex-display{border:1px dashed var(--alt-fg);overflow-x:auto;padding:15px 30px}.katex-display:focus{border:1px solid #222}img,figure,video{width:auto;height:auto}img{display:block;max-width:calc(100% - 2px);outline:3px solid transparent;transition:border-color .3s ease,outline-color .3s ease,filter .3s ease}img.cover{border:1px solid var(--fg);box-shadow:inset 0 0 0 1px var(--fg);object-fit:cover;width:calc(100% - 2px)}img:not([src$='.svg']){max-height:75vh}figure{margin:1.5rem auto}figure img{display:block;margin:0 auto}figure figcaption{font-size:.85rem;text-align:center;margin:.75rem;line-height:1.25rem}video{display:block;max-width:calc(100% - 2px);max-height:75vh;outline:3px solid transparent;transition:border-color .3s ease,outline-color .3s ease}video:focus,video:hover{border-color:var(--accent);outline-color:var(--accent)}audio{display:block;width:90%}img.border,video.border{border:1px solid var(--fg);box-shadow:inset 0 0 0 1px var(--fg)}img.borderless,video.borderless{border:0}.toc{background:var(--alt-bg);color:var(--dtl);transition:background-color .3s ease,border .3s ease,linear-gradient .3s ease}.toc summary{background:var(--accent);border:1px solid rgba(0,0,0,.3);border-radius:2px;outline-offset:2px;padding:15px 30px 18.5px;box-shadow:inset 0 1px rgba(255,255,255,.2),inset 0 -1px rgba(0,0,0,.3);text-shadow:0 1px 0 var(--lpress),1px 0 0 var(--lpress);transition:color .3s ease,opacity .2s ease,outline-color .3s ease,padding .2s ease}.toc summary:hover{opacity:.75}.toc[open] summary{border-radius:2px 2px 0 0;box-shadow:inset 0 1px rgba(255,255,255,.2);padding:15px 30px}.toc[open] summary~*{animation:smoothReveal .3s ease-in-out}.toc nav#TableOfContents{border-style:solid;border-color:rgba(0,0,0,.3);border-width:0 1px 1px;border-radius:0 0 2px 2px;box-shadow:inset 0 -1px rgba(0,0,0,.3);padding:6px 15px 15px 9px}#TableOfContents,.footnotes ol,article>ul,article>ol{line-height:1.5rem}#TableOfContents>ol,#TableOfContents>ul,.footnotes>ol{padding-left:24px}article ol,article ul{padding-inline-start:1rem}#TableOfContents ul>li::before,article>ol ul>li::before,article>ul>li::before,article>ul ul>li::before{content:'';width:18px;height:18px;display:inline-block;margin-bottom:-3px}@keyframes smoothReveal{0%{opacity:0}100%{opacity:1}}.btn,.footnote-backref,input[type=submit]{background:var(--accent);border:1px solid rgba(0,0,0,.3);border-radius:2px;color:var(--dtl);text-decoration:none;transition:background-color .3s ease,color .3s ease,opacity .2s ease-in-out,outline-color .3s ease;box-shadow:inset 0 1px rgba(255,255,255,.2),inset 0 -1px rgba(0,0,0,.3);text-shadow:0 1px 0 var(--lpress),1px 0 0 var(--lpress)}.btn:hover,.footnote-backref:hover,input[type=submit]:hover{opacity:.75}button,input[type=color],input[type=submit],summary{cursor:pointer}.terms{display:flex;flex-wrap:wrap;padding:0}.terms a{display:flex;flex:1;align-items:center;margin:0 9px 9px 0;padding:7.5px 18px 10.5px;word-break:keep-all}.terms a span{background-image:linear-gradient(0deg,var(--bgmod),100%,transparent);border-radius:2px;margin-left:.45rem;padding:0 6px 1px;font-size:.85rem}.pagination{font-family:open sans,sans-serif;font-weight:700;text-align:center;margin:3rem auto 1rem;padding:0;display:flex;flex-wrap:wrap;justify-content:center}.pagination li{display:inline-block;transition:background .2s ease-in-out,border .2s ease-in-out}.pagination li a,.pagination li.current p{display:block;margin:0 9px 9px 0;padding:7.5px 12px 10.5px;width:21px}.pagination li a{color:var(--dtl)}.pagination li.current p{background:var(--alt-bg);border:1px solid rgba(0,0,0,.45);border-radius:2px;color:var(--alt-fg);line-height:inherit;user-select:none;box-shadow:inset 0 1px rgba(255,255,255,.2),inset 0 -1px rgba(0,0,0,.3);text-shadow:0 1px 0 var(--lpress),1px 0 0 var(--lpress)}.pagination svg{display:inline-block;fill:currentColor;width:18px;height:18px;margin:auto auto -2px}.label-form{margin-top:1rem;font-size:.9rem;letter-spacing:.5px;text-transform:uppercase}.input-text{background:var(--input-bg);border:1px solid var(--input-bd);color:var(--input-fg);font-family:open sans,sans-serif;font-size:.9rem;line-height:1.5rem;transition:background-color .3s ease,border .3s ease,outline-color .2s ease-in-out;outline:2px solid transparent}.input-text:focus{outline-color:var(--accent)}.search-box form{display:flex;flex-wrap:wrap;justify-content:center;align-items:stretch}.search-box label{flex-basis:100%;line-height:2rem}.search-box input[name=q]{min-width:210px;padding:6px 12px;flex:1;border-radius:2px 0 0 2px}.search-box button{border-radius:0 2px 2px 0;padding:6px 30px;outline-offset:2px}.search-box button svg{width:15px;height:15px;fill:currentColor;stroke:var(--lpress);stroke-width:9px}#search-info{margin:1rem 0 2rem}#search-info+ul{margin:0 0 6rem}.social{margin:1.5rem 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.social a{display:flex;align-items:center;margin:0 9px 9px 0;min-width:150px;padding:15px 21px;text-align:center}.social a svg{fill:currentColor;stroke:var(--lpress);stroke-width:9px;width:36px;height:36px}.social a p{flex:1;margin:0 12px;font-size:.75rem;font-weight:700;text-transform:uppercase;line-height:1rem}.social a:hover{opacity:.75}#contact{margin:1.5rem 0}#contact label{display:block;line-height:1.5rem}#contact input[name=name],#contact input[name=_replyto],#contact input[name=_subject],#contact select,#contact textarea{display:block;margin:3px 0;max-width:100%}#contact input[name=name],#contact input[name=_replyto],#contact input[name=_subject]{min-width:240px;padding:6px 12px}#contact select{min-width:210px;padding:6px}#contact textarea{padding:9px 15px;width:90%;height:auto}#contact input[type=submit]{font-size:.75rem;text-transform:uppercase;letter-spacing:.05rem;margin-top:1.2rem;padding:12px 42px 15px;outline-offset:2px;transition:background-color .3s ease,border .2s ease-in-out,color .3s ease,outline-color .2s ease-in-out,opacity .2s ease-in-out}#contact input[type=submit]::-moz-focus-inner{border:0}@supports(-moz-appearance:meterbar){#contact select{color:var(--fg);color:transparent;text-shadow:0 0 0 var(--fg)}}.error{color:var(--err)}mark{background:var(--accent);filter:contrast(1.2)invert(1)}abbr{text-decoration-style:solid}blockquote{background:var(--alt-bg);border-style:solid;border-width:1px 1px 1px 12px;color:var(--alt-fg);margin:var(--blk-mg);padding:0 30px}blockquote p{margin:1.2rem 0}kbd{background-color:#eee;border:1px solid #b4b4b4;border-radius:2px;box-shadow:0 1px 1px rgba(0,0,0,.2),0 2px rgba(255,255,255,.7)inset;color:#333;display:inline-block;font-size:.85em;font-weight:700;line-height:1;padding:2px;white-space:nowrap}kbd>kbd{margin:0 2px}main{margin:90px auto;padding:0 15px;max-width:660px}article{margin:90px auto 120px}@media(min-width:769px){html{--blk-mg:2.1rem 1.5rem}.posts a{flex-direction:unset;align-items:center}.posts a time{margin:0 0 0 1.5rem}.footnotes{padding:1rem .5rem 1.5rem}a.anchor:not(:focus){opacity:0}h6>a:focus+a.anchor,h6:hover>a.anchor,h5>a:focus+a.anchor,h5:hover>a.anchor,h4>a:focus+a.anchor,h4:hover>a.anchor,h3>a:focus+a.anchor,h3:hover>a.anchor,h2>a:focus+a.anchor,h2:hover>a.anchor{opacity:1}}.noscript{font-weight:700}article>pre::-webkit-scrollbar,.scroll::-webkit-scrollbar,.katex-display::-webkit-scrollbar,.highlight>pre::-webkit-scrollbar,.highlight>div::-webkit-scrollbar{width:12px;height:12px}article>pre::-webkit-scrollbar-track,.scroll::-webkit-scrollbar-track,.katex-display::-webkit-scrollbar-track,.highlight>pre::-webkit-scrollbar-track,.highlight>div::-webkit-scrollbar-track{background:var(--input-bg)}article>pre::-webkit-scrollbar-track:horizontal,.scroll::-webkit-scrollbar-track:horizontal,.katex-display::-webkit-scrollbar-track:horizontal,.highlight>pre::-webkit-scrollbar-track:horizontal,.highlight>div::-webkit-scrollbar-track:horizontal{border-top:1px solid var(--input-bd)}article>pre::-webkit-scrollbar-track:vertical,.scroll::-webkit-scrollbar-track:vertical,.katex-display::-webkit-scrollbar-track:vertical,.highlight>pre::-webkit-scrollbar-track:vertical,.highlight>div::-webkit-scrollbar-track:vertical{border-left:1px solid var(--input-bd)}article>pre::-webkit-scrollbar-thumb,.scroll::-webkit-scrollbar-thumb,.katex-display::-webkit-scrollbar-thumb,.highlight>pre::-webkit-scrollbar-thumb,.highlight>div::-webkit-scrollbar-thumb{background:var(--accent);border:1px solid rgba(0,0,0,.3)}article>pre::-webkit-scrollbar-corner,.scroll::-webkit-scrollbar-corner,.katex-display::-webkit-scrollbar-corner,.highlight>pre::-webkit-scrollbar-corner,.highlight>div::-webkit-scrollbar-corner{background:var(--input-bg);border-color:var(--input-bd);border-style:solid;border-width:1px 0 0 1px}article>pre,.scroll,.katex-display,.highlight>pre,.highlight>div{scrollbar-color:var(--accent)var(--input-bg)}input[name=_gotcha]{display:none}dt{font-weight:700;font-style:italic}dd{margin:0 1.5rem 1rem}dt,dd{line-height:1.5rem}blockquote.twitter-tweet{border-color:#1da0f1;padding:0 30px 27px}h2#vimeo-simple-shortcode{margin-bottom:1rem}div.s_video_simple{margin:0 auto;width:96%}div.s_video_simple a{border:1px solid var(--fg);display:block;margin:6px;line-height:0}div.s_video_simple a:hover{opacity:.75}section.youtube{border:1px solid var(--fg);margin:2rem 0;padding-bottom:56.25%;position:relative;overflow:hidden;height:0}section.info img{border:3px solid var(--fg);border-radius:9px} \ No newline at end of file diff --git a/page/resources/_gen/assets/scss/scss/main.scss_e86386c8bae1cd02295de71a1be078d6.json b/page/resources/_gen/assets/scss/scss/main.scss_e86386c8bae1cd02295de71a1be078d6.json new file mode 100644 index 0000000..d39f0b1 --- /dev/null +++ b/page/resources/_gen/assets/scss/scss/main.scss_e86386c8bae1cd02295de71a1be078d6.json @@ -0,0 +1 @@ +{"Target":"css/main.min.9350283e6779ea7c9c8af1912b0e7ca9c590d09e3d7bb33d6db21beebbd59ef9.css","MediaType":"text/css","Data":{"Integrity":"sha256-k1AoPmd56nycivGRKw58qcWQ0J49e7M9bbIb7rvVnvk="}} \ No newline at end of file diff --git a/page/resources/_gen/assets/scss/scss/noscript.scss_1a7bc36f814a819e6a40952359533fd5.content b/page/resources/_gen/assets/scss/scss/noscript.scss_1a7bc36f814a819e6a40952359533fd5.content new file mode 100644 index 0000000..337b093 --- /dev/null +++ b/page/resources/_gen/assets/scss/scss/noscript.scss_1a7bc36f814a819e6a40952359533fd5.content @@ -0,0 +1 @@ +html{--accent:#1dbc91}.req-js{display:none} \ No newline at end of file diff --git a/page/resources/_gen/assets/scss/scss/noscript.scss_1a7bc36f814a819e6a40952359533fd5.json b/page/resources/_gen/assets/scss/scss/noscript.scss_1a7bc36f814a819e6a40952359533fd5.json new file mode 100644 index 0000000..8b59e42 --- /dev/null +++ b/page/resources/_gen/assets/scss/scss/noscript.scss_1a7bc36f814a819e6a40952359533fd5.json @@ -0,0 +1 @@ +{"Target":"css/noscript.min.3f3b95436b19eaeb9223fb12c0b86737d53ee0a47fdba271a886c244bc03975c.css","MediaType":"text/css","Data":{"Integrity":"sha256-PzuVQ2sZ6uuSI/sSwLhnN9U+4KR/26JxqIbCRLwDl1w="}} \ No newline at end of file diff --git a/page/static/audio_remi/12_1.mp3 b/page/static/audio_remi/12_1.mp3 new file mode 100644 index 0000000..dee9479 Binary files /dev/null and b/page/static/audio_remi/12_1.mp3 differ diff --git a/page/static/audio_remi/12_2.mp3 b/page/static/audio_remi/12_2.mp3 new file mode 100644 index 0000000..ea1adf8 Binary files /dev/null and b/page/static/audio_remi/12_2.mp3 differ diff --git a/page/static/audio_remi/12_3.mp3 b/page/static/audio_remi/12_3.mp3 new file mode 100644 index 0000000..84ed4d4 Binary files /dev/null and b/page/static/audio_remi/12_3.mp3 differ diff --git a/page/static/audio_remi/12_4.mp3 b/page/static/audio_remi/12_4.mp3 new file mode 100644 index 0000000..1dc5713 Binary files /dev/null and b/page/static/audio_remi/12_4.mp3 differ diff --git a/page/static/audio_remi/12_5.mp3 b/page/static/audio_remi/12_5.mp3 new file mode 100644 index 0000000..f6f4be9 Binary files /dev/null and b/page/static/audio_remi/12_5.mp3 differ diff --git a/page/static/audio_remi/12_6.mp3 b/page/static/audio_remi/12_6.mp3 new file mode 100644 index 0000000..2f73800 Binary files /dev/null and b/page/static/audio_remi/12_6.mp3 differ diff --git a/page/static/audio_remi/12_7.mp3 b/page/static/audio_remi/12_7.mp3 new file mode 100644 index 0000000..e1da21c Binary files /dev/null and b/page/static/audio_remi/12_7.mp3 differ diff --git a/page/static/audio_remi/12_8.mp3 b/page/static/audio_remi/12_8.mp3 new file mode 100644 index 0000000..6ca6cd4 Binary files /dev/null and b/page/static/audio_remi/12_8.mp3 differ diff --git a/page/static/audio_remi/12_9.mp3 b/page/static/audio_remi/12_9.mp3 new file mode 100644 index 0000000..062c506 Binary files /dev/null and b/page/static/audio_remi/12_9.mp3 differ diff --git a/page/static/audio_remi/33_1.mp3 b/page/static/audio_remi/33_1.mp3 new file mode 100644 index 0000000..b39b699 Binary files /dev/null and b/page/static/audio_remi/33_1.mp3 differ diff --git a/page/static/audio_remi/33_2.mp3 b/page/static/audio_remi/33_2.mp3 new file mode 100644 index 0000000..07f0118 Binary files /dev/null and b/page/static/audio_remi/33_2.mp3 differ diff --git a/page/static/audio_remi/33_3.mp3 b/page/static/audio_remi/33_3.mp3 new file mode 100644 index 0000000..a06a3e1 Binary files /dev/null and b/page/static/audio_remi/33_3.mp3 differ diff --git a/page/static/audio_remi/33_4.mp3 b/page/static/audio_remi/33_4.mp3 new file mode 100644 index 0000000..6b0247e Binary files /dev/null and b/page/static/audio_remi/33_4.mp3 differ diff --git a/page/static/audio_remi/33_5.mp3 b/page/static/audio_remi/33_5.mp3 new file mode 100644 index 0000000..cae72d7 Binary files /dev/null and b/page/static/audio_remi/33_5.mp3 differ diff --git a/page/static/audio_remi/33_6.mp3 b/page/static/audio_remi/33_6.mp3 new file mode 100644 index 0000000..c413e1d Binary files /dev/null and b/page/static/audio_remi/33_6.mp3 differ diff --git a/page/static/audio_remi/33_7.mp3 b/page/static/audio_remi/33_7.mp3 new file mode 100644 index 0000000..4c13133 Binary files /dev/null and b/page/static/audio_remi/33_7.mp3 differ diff --git a/page/static/audio_remi/33_8.mp3 b/page/static/audio_remi/33_8.mp3 new file mode 100644 index 0000000..d48ac5c Binary files /dev/null and b/page/static/audio_remi/33_8.mp3 differ diff --git a/page/static/audio_remi/33_9.mp3 b/page/static/audio_remi/33_9.mp3 new file mode 100644 index 0000000..671a409 Binary files /dev/null and b/page/static/audio_remi/33_9.mp3 differ diff --git a/page/static/audio_remi/47_1.mp3 b/page/static/audio_remi/47_1.mp3 new file mode 100644 index 0000000..30b8859 Binary files /dev/null and b/page/static/audio_remi/47_1.mp3 differ diff --git a/page/static/audio_remi/47_2.mp3 b/page/static/audio_remi/47_2.mp3 new file mode 100644 index 0000000..f955c8c Binary files /dev/null and b/page/static/audio_remi/47_2.mp3 differ diff --git a/page/static/audio_remi/47_3.mp3 b/page/static/audio_remi/47_3.mp3 new file mode 100644 index 0000000..2e1aef3 Binary files /dev/null and b/page/static/audio_remi/47_3.mp3 differ diff --git a/page/static/audio_remi/47_4.mp3 b/page/static/audio_remi/47_4.mp3 new file mode 100644 index 0000000..9a963fe Binary files /dev/null and b/page/static/audio_remi/47_4.mp3 differ diff --git a/page/static/audio_remi/47_5.mp3 b/page/static/audio_remi/47_5.mp3 new file mode 100644 index 0000000..614817b Binary files /dev/null and b/page/static/audio_remi/47_5.mp3 differ diff --git a/page/static/audio_remi/47_6.mp3 b/page/static/audio_remi/47_6.mp3 new file mode 100644 index 0000000..9ac1a90 Binary files /dev/null and b/page/static/audio_remi/47_6.mp3 differ diff --git a/page/static/audio_remi/47_7.mp3 b/page/static/audio_remi/47_7.mp3 new file mode 100644 index 0000000..9b341e3 Binary files /dev/null and b/page/static/audio_remi/47_7.mp3 differ diff --git a/page/static/audio_remi/47_8.mp3 b/page/static/audio_remi/47_8.mp3 new file mode 100644 index 0000000..e524b79 Binary files /dev/null and b/page/static/audio_remi/47_8.mp3 differ diff --git a/page/static/audio_remi/47_9.mp3 b/page/static/audio_remi/47_9.mp3 new file mode 100644 index 0000000..87bbb55 Binary files /dev/null and b/page/static/audio_remi/47_9.mp3 differ diff --git a/page/static/audio_remi/54_1.mp3 b/page/static/audio_remi/54_1.mp3 new file mode 100644 index 0000000..716e949 Binary files /dev/null and b/page/static/audio_remi/54_1.mp3 differ diff --git a/page/static/audio_remi/54_2.mp3 b/page/static/audio_remi/54_2.mp3 new file mode 100644 index 0000000..74be9cc Binary files /dev/null and b/page/static/audio_remi/54_2.mp3 differ diff --git a/page/static/audio_remi/54_3.mp3 b/page/static/audio_remi/54_3.mp3 new file mode 100644 index 0000000..3f2b8ad Binary files /dev/null and b/page/static/audio_remi/54_3.mp3 differ diff --git a/page/static/audio_remi/54_4.mp3 b/page/static/audio_remi/54_4.mp3 new file mode 100644 index 0000000..338295a Binary files /dev/null and b/page/static/audio_remi/54_4.mp3 differ diff --git a/page/static/audio_remi/54_5.mp3 b/page/static/audio_remi/54_5.mp3 new file mode 100644 index 0000000..65df085 Binary files /dev/null and b/page/static/audio_remi/54_5.mp3 differ diff --git a/page/static/audio_remi/54_6.mp3 b/page/static/audio_remi/54_6.mp3 new file mode 100644 index 0000000..02ab4ad Binary files /dev/null and b/page/static/audio_remi/54_6.mp3 differ diff --git a/page/static/audio_remi/54_7.mp3 b/page/static/audio_remi/54_7.mp3 new file mode 100644 index 0000000..c5cf1f9 Binary files /dev/null and b/page/static/audio_remi/54_7.mp3 differ diff --git a/page/static/audio_remi/54_8.mp3 b/page/static/audio_remi/54_8.mp3 new file mode 100644 index 0000000..50f2c1d Binary files /dev/null and b/page/static/audio_remi/54_8.mp3 differ diff --git a/page/static/audio_remi/54_9.mp3 b/page/static/audio_remi/54_9.mp3 new file mode 100644 index 0000000..6cecdda Binary files /dev/null and b/page/static/audio_remi/54_9.mp3 differ diff --git a/page/static/audio_tsd/21_1.mp3 b/page/static/audio_tsd/21_1.mp3 new file mode 100644 index 0000000..9bf3e99 Binary files /dev/null and b/page/static/audio_tsd/21_1.mp3 differ diff --git a/page/static/audio_tsd/21_2.mp3 b/page/static/audio_tsd/21_2.mp3 new file mode 100644 index 0000000..f2ff354 Binary files /dev/null and b/page/static/audio_tsd/21_2.mp3 differ diff --git a/page/static/audio_tsd/21_3.mp3 b/page/static/audio_tsd/21_3.mp3 new file mode 100644 index 0000000..0df429f Binary files /dev/null and b/page/static/audio_tsd/21_3.mp3 differ diff --git a/page/static/audio_tsd/21_4.mp3 b/page/static/audio_tsd/21_4.mp3 new file mode 100644 index 0000000..bc85e0d Binary files /dev/null and b/page/static/audio_tsd/21_4.mp3 differ diff --git a/page/static/audio_tsd/21_5.mp3 b/page/static/audio_tsd/21_5.mp3 new file mode 100644 index 0000000..4d42091 Binary files /dev/null and b/page/static/audio_tsd/21_5.mp3 differ diff --git a/page/static/audio_tsd/21_6.mp3 b/page/static/audio_tsd/21_6.mp3 new file mode 100644 index 0000000..8056b64 Binary files /dev/null and b/page/static/audio_tsd/21_6.mp3 differ diff --git a/page/static/audio_tsd/21_7.mp3 b/page/static/audio_tsd/21_7.mp3 new file mode 100644 index 0000000..5c72fb7 Binary files /dev/null and b/page/static/audio_tsd/21_7.mp3 differ diff --git a/page/static/audio_tsd/41_1.mp3 b/page/static/audio_tsd/41_1.mp3 new file mode 100644 index 0000000..e8ee545 Binary files /dev/null and b/page/static/audio_tsd/41_1.mp3 differ diff --git a/page/static/audio_tsd/41_2.mp3 b/page/static/audio_tsd/41_2.mp3 new file mode 100644 index 0000000..46a212e Binary files /dev/null and b/page/static/audio_tsd/41_2.mp3 differ diff --git a/page/static/audio_tsd/41_3.mp3 b/page/static/audio_tsd/41_3.mp3 new file mode 100644 index 0000000..306335b Binary files /dev/null and b/page/static/audio_tsd/41_3.mp3 differ diff --git a/page/static/audio_tsd/41_4.mp3 b/page/static/audio_tsd/41_4.mp3 new file mode 100644 index 0000000..b0c232a Binary files /dev/null and b/page/static/audio_tsd/41_4.mp3 differ diff --git a/page/static/audio_tsd/41_5.mp3 b/page/static/audio_tsd/41_5.mp3 new file mode 100644 index 0000000..c389545 Binary files /dev/null and b/page/static/audio_tsd/41_5.mp3 differ diff --git a/page/static/audio_tsd/41_6.mp3 b/page/static/audio_tsd/41_6.mp3 new file mode 100644 index 0000000..30b7536 Binary files /dev/null and b/page/static/audio_tsd/41_6.mp3 differ diff --git a/page/static/audio_tsd/41_7.mp3 b/page/static/audio_tsd/41_7.mp3 new file mode 100644 index 0000000..f8d77fa Binary files /dev/null and b/page/static/audio_tsd/41_7.mp3 differ diff --git a/page/static/audio_tsd/52_1.mp3 b/page/static/audio_tsd/52_1.mp3 new file mode 100644 index 0000000..a1f47e4 Binary files /dev/null and b/page/static/audio_tsd/52_1.mp3 differ diff --git a/page/static/audio_tsd/52_2.mp3 b/page/static/audio_tsd/52_2.mp3 new file mode 100644 index 0000000..efed1e9 Binary files /dev/null and b/page/static/audio_tsd/52_2.mp3 differ diff --git a/page/static/audio_tsd/52_3.mp3 b/page/static/audio_tsd/52_3.mp3 new file mode 100644 index 0000000..27fce6f Binary files /dev/null and b/page/static/audio_tsd/52_3.mp3 differ diff --git a/page/static/audio_tsd/52_4.mp3 b/page/static/audio_tsd/52_4.mp3 new file mode 100644 index 0000000..f763a3a Binary files /dev/null and b/page/static/audio_tsd/52_4.mp3 differ diff --git a/page/static/audio_tsd/52_5.mp3 b/page/static/audio_tsd/52_5.mp3 new file mode 100644 index 0000000..837b032 Binary files /dev/null and b/page/static/audio_tsd/52_5.mp3 differ diff --git a/page/static/audio_tsd/52_6.mp3 b/page/static/audio_tsd/52_6.mp3 new file mode 100644 index 0000000..dbeb9c0 Binary files /dev/null and b/page/static/audio_tsd/52_6.mp3 differ diff --git a/page/static/audio_tsd/52_7.mp3 b/page/static/audio_tsd/52_7.mp3 new file mode 100644 index 0000000..d928f5a Binary files /dev/null and b/page/static/audio_tsd/52_7.mp3 differ diff --git a/page/static/audio_tsd/55_1.mp3 b/page/static/audio_tsd/55_1.mp3 new file mode 100644 index 0000000..5a499eb Binary files /dev/null and b/page/static/audio_tsd/55_1.mp3 differ diff --git a/page/static/audio_tsd/55_2.mp3 b/page/static/audio_tsd/55_2.mp3 new file mode 100644 index 0000000..4336a65 Binary files /dev/null and b/page/static/audio_tsd/55_2.mp3 differ diff --git a/page/static/audio_tsd/55_3.mp3 b/page/static/audio_tsd/55_3.mp3 new file mode 100644 index 0000000..ad0fe7b Binary files /dev/null and b/page/static/audio_tsd/55_3.mp3 differ diff --git a/page/static/audio_tsd/55_4.mp3 b/page/static/audio_tsd/55_4.mp3 new file mode 100644 index 0000000..d2ea39f Binary files /dev/null and b/page/static/audio_tsd/55_4.mp3 differ diff --git a/page/static/audio_tsd/55_5.mp3 b/page/static/audio_tsd/55_5.mp3 new file mode 100644 index 0000000..3e27ef1 Binary files /dev/null and b/page/static/audio_tsd/55_5.mp3 differ diff --git a/page/static/audio_tsd/55_6.mp3 b/page/static/audio_tsd/55_6.mp3 new file mode 100644 index 0000000..d1c0e0c Binary files /dev/null and b/page/static/audio_tsd/55_6.mp3 differ diff --git a/page/static/audio_tsd/55_7.mp3 b/page/static/audio_tsd/55_7.mp3 new file mode 100644 index 0000000..22f33db Binary files /dev/null and b/page/static/audio_tsd/55_7.mp3 differ diff --git a/page/static/bpe_for_symbolic_music_human_eval_samples.zip b/page/static/bpe_for_symbolic_music_human_eval_samples.zip new file mode 100644 index 0000000..89b98ef Binary files /dev/null and b/page/static/bpe_for_symbolic_music_human_eval_samples.zip differ diff --git a/page/static/classification.png b/page/static/classification.png new file mode 100644 index 0000000..d0fe5ad Binary files /dev/null and b/page/static/classification.png differ diff --git a/page/static/favicon.ico b/page/static/favicon.ico new file mode 100644 index 0000000..bc0e20a Binary files /dev/null and b/page/static/favicon.ico differ diff --git a/page/static/generation.png b/page/static/generation.png new file mode 100644 index 0000000..ead97bc Binary files /dev/null and b/page/static/generation.png differ diff --git a/page/static/inference_speed.png b/page/static/inference_speed.png new file mode 100644 index 0000000..5594296 Binary files /dev/null and b/page/static/inference_speed.png differ diff --git a/page/static/isotropy.png b/page/static/isotropy.png new file mode 100644 index 0000000..edb2da9 Binary files /dev/null and b/page/static/isotropy.png differ diff --git a/page/static/js/LICENSE b/page/static/js/LICENSE new file mode 100644 index 0000000..f433b1a --- /dev/null +++ b/page/static/js/LICENSE @@ -0,0 +1,177 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/page/static/js/web/cmaps/78-EUC-H.bcmap b/page/static/js/web/cmaps/78-EUC-H.bcmap new file mode 100644 index 0000000..2655fc7 Binary files /dev/null and b/page/static/js/web/cmaps/78-EUC-H.bcmap differ diff --git a/page/static/js/web/cmaps/78-EUC-V.bcmap b/page/static/js/web/cmaps/78-EUC-V.bcmap new file mode 100644 index 0000000..f1ed853 Binary files /dev/null and b/page/static/js/web/cmaps/78-EUC-V.bcmap differ diff --git a/page/static/js/web/cmaps/78-H.bcmap b/page/static/js/web/cmaps/78-H.bcmap new file mode 100644 index 0000000..39e89d3 Binary files /dev/null and b/page/static/js/web/cmaps/78-H.bcmap differ diff --git a/page/static/js/web/cmaps/78-RKSJ-H.bcmap b/page/static/js/web/cmaps/78-RKSJ-H.bcmap new file mode 100644 index 0000000..e4167cb Binary files /dev/null and b/page/static/js/web/cmaps/78-RKSJ-H.bcmap differ diff --git a/page/static/js/web/cmaps/78-RKSJ-V.bcmap b/page/static/js/web/cmaps/78-RKSJ-V.bcmap new file mode 100644 index 0000000..50b1646 Binary files /dev/null and b/page/static/js/web/cmaps/78-RKSJ-V.bcmap differ diff --git a/page/static/js/web/cmaps/78-V.bcmap b/page/static/js/web/cmaps/78-V.bcmap new file mode 100644 index 0000000..d7af99b Binary files /dev/null and b/page/static/js/web/cmaps/78-V.bcmap differ diff --git a/page/static/js/web/cmaps/78ms-RKSJ-H.bcmap b/page/static/js/web/cmaps/78ms-RKSJ-H.bcmap new file mode 100644 index 0000000..37077d0 Binary files /dev/null and b/page/static/js/web/cmaps/78ms-RKSJ-H.bcmap differ diff --git a/page/static/js/web/cmaps/78ms-RKSJ-V.bcmap b/page/static/js/web/cmaps/78ms-RKSJ-V.bcmap new file mode 100644 index 0000000..acf2323 Binary files /dev/null and b/page/static/js/web/cmaps/78ms-RKSJ-V.bcmap differ diff --git a/page/static/js/web/cmaps/83pv-RKSJ-H.bcmap b/page/static/js/web/cmaps/83pv-RKSJ-H.bcmap new file mode 100644 index 0000000..2359bc5 Binary files /dev/null and b/page/static/js/web/cmaps/83pv-RKSJ-H.bcmap differ diff --git a/page/static/js/web/cmaps/90ms-RKSJ-H.bcmap b/page/static/js/web/cmaps/90ms-RKSJ-H.bcmap new file mode 100644 index 0000000..af82938 Binary files /dev/null and b/page/static/js/web/cmaps/90ms-RKSJ-H.bcmap differ diff --git a/page/static/js/web/cmaps/90ms-RKSJ-V.bcmap b/page/static/js/web/cmaps/90ms-RKSJ-V.bcmap new file mode 100644 index 0000000..780549d Binary files /dev/null and b/page/static/js/web/cmaps/90ms-RKSJ-V.bcmap differ diff --git a/page/static/js/web/cmaps/90msp-RKSJ-H.bcmap b/page/static/js/web/cmaps/90msp-RKSJ-H.bcmap new file mode 100644 index 0000000..bfd3119 Binary files /dev/null and b/page/static/js/web/cmaps/90msp-RKSJ-H.bcmap differ diff --git a/page/static/js/web/cmaps/90msp-RKSJ-V.bcmap b/page/static/js/web/cmaps/90msp-RKSJ-V.bcmap new file mode 100644 index 0000000..25ef14a Binary files /dev/null and b/page/static/js/web/cmaps/90msp-RKSJ-V.bcmap differ diff --git a/page/static/js/web/cmaps/90pv-RKSJ-H.bcmap b/page/static/js/web/cmaps/90pv-RKSJ-H.bcmap new file mode 100644 index 0000000..02f713b Binary files /dev/null and b/page/static/js/web/cmaps/90pv-RKSJ-H.bcmap differ diff --git a/page/static/js/web/cmaps/90pv-RKSJ-V.bcmap b/page/static/js/web/cmaps/90pv-RKSJ-V.bcmap new file mode 100644 index 0000000..d08e0cc Binary files /dev/null and b/page/static/js/web/cmaps/90pv-RKSJ-V.bcmap differ diff --git a/page/static/js/web/cmaps/Add-H.bcmap b/page/static/js/web/cmaps/Add-H.bcmap new file mode 100644 index 0000000..59442ac Binary files /dev/null and b/page/static/js/web/cmaps/Add-H.bcmap differ diff --git a/page/static/js/web/cmaps/Add-RKSJ-H.bcmap b/page/static/js/web/cmaps/Add-RKSJ-H.bcmap new file mode 100644 index 0000000..a3065e4 Binary files /dev/null and b/page/static/js/web/cmaps/Add-RKSJ-H.bcmap differ diff --git a/page/static/js/web/cmaps/Add-RKSJ-V.bcmap b/page/static/js/web/cmaps/Add-RKSJ-V.bcmap new file mode 100644 index 0000000..040014c Binary files /dev/null and b/page/static/js/web/cmaps/Add-RKSJ-V.bcmap differ diff --git a/page/static/js/web/cmaps/Add-V.bcmap b/page/static/js/web/cmaps/Add-V.bcmap new file mode 100644 index 0000000..2f816d3 Binary files /dev/null and b/page/static/js/web/cmaps/Add-V.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-CNS1-0.bcmap b/page/static/js/web/cmaps/Adobe-CNS1-0.bcmap new file mode 100644 index 0000000..88ec04a Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-CNS1-0.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-CNS1-1.bcmap b/page/static/js/web/cmaps/Adobe-CNS1-1.bcmap new file mode 100644 index 0000000..03a5014 Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-CNS1-1.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-CNS1-2.bcmap b/page/static/js/web/cmaps/Adobe-CNS1-2.bcmap new file mode 100644 index 0000000..2aa9514 Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-CNS1-2.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-CNS1-3.bcmap b/page/static/js/web/cmaps/Adobe-CNS1-3.bcmap new file mode 100644 index 0000000..86d8b8c Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-CNS1-3.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-CNS1-4.bcmap b/page/static/js/web/cmaps/Adobe-CNS1-4.bcmap new file mode 100644 index 0000000..f50fc6c Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-CNS1-4.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-CNS1-5.bcmap b/page/static/js/web/cmaps/Adobe-CNS1-5.bcmap new file mode 100644 index 0000000..6caf4a8 Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-CNS1-5.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-CNS1-6.bcmap b/page/static/js/web/cmaps/Adobe-CNS1-6.bcmap new file mode 100644 index 0000000..b77fb07 Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-CNS1-6.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-CNS1-UCS2.bcmap b/page/static/js/web/cmaps/Adobe-CNS1-UCS2.bcmap new file mode 100644 index 0000000..69d79a2 Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-CNS1-UCS2.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-GB1-0.bcmap b/page/static/js/web/cmaps/Adobe-GB1-0.bcmap new file mode 100644 index 0000000..3610108 Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-GB1-0.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-GB1-1.bcmap b/page/static/js/web/cmaps/Adobe-GB1-1.bcmap new file mode 100644 index 0000000..707bb10 Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-GB1-1.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-GB1-2.bcmap b/page/static/js/web/cmaps/Adobe-GB1-2.bcmap new file mode 100644 index 0000000..f7648cc Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-GB1-2.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-GB1-3.bcmap b/page/static/js/web/cmaps/Adobe-GB1-3.bcmap new file mode 100644 index 0000000..8521458 Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-GB1-3.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-GB1-4.bcmap b/page/static/js/web/cmaps/Adobe-GB1-4.bcmap new file mode 100644 index 0000000..e40c63a Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-GB1-4.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-GB1-5.bcmap b/page/static/js/web/cmaps/Adobe-GB1-5.bcmap new file mode 100644 index 0000000..d7623b5 Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-GB1-5.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-GB1-UCS2.bcmap b/page/static/js/web/cmaps/Adobe-GB1-UCS2.bcmap new file mode 100644 index 0000000..7586525 Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-GB1-UCS2.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-Japan1-0.bcmap b/page/static/js/web/cmaps/Adobe-Japan1-0.bcmap new file mode 100644 index 0000000..f0e94ec Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-Japan1-0.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-Japan1-1.bcmap b/page/static/js/web/cmaps/Adobe-Japan1-1.bcmap new file mode 100644 index 0000000..dad42c5 Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-Japan1-1.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-Japan1-2.bcmap b/page/static/js/web/cmaps/Adobe-Japan1-2.bcmap new file mode 100644 index 0000000..090819a Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-Japan1-2.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-Japan1-3.bcmap b/page/static/js/web/cmaps/Adobe-Japan1-3.bcmap new file mode 100644 index 0000000..087dfc1 Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-Japan1-3.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-Japan1-4.bcmap b/page/static/js/web/cmaps/Adobe-Japan1-4.bcmap new file mode 100644 index 0000000..46aa9bf Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-Japan1-4.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-Japan1-5.bcmap b/page/static/js/web/cmaps/Adobe-Japan1-5.bcmap new file mode 100644 index 0000000..5b4b65c Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-Japan1-5.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-Japan1-6.bcmap b/page/static/js/web/cmaps/Adobe-Japan1-6.bcmap new file mode 100644 index 0000000..e77d699 Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-Japan1-6.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-Japan1-UCS2.bcmap b/page/static/js/web/cmaps/Adobe-Japan1-UCS2.bcmap new file mode 100644 index 0000000..128a141 Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-Japan1-UCS2.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-Korea1-0.bcmap b/page/static/js/web/cmaps/Adobe-Korea1-0.bcmap new file mode 100644 index 0000000..cef1a99 Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-Korea1-0.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-Korea1-1.bcmap b/page/static/js/web/cmaps/Adobe-Korea1-1.bcmap new file mode 100644 index 0000000..11ffa36 Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-Korea1-1.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-Korea1-2.bcmap b/page/static/js/web/cmaps/Adobe-Korea1-2.bcmap new file mode 100644 index 0000000..3172308 Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-Korea1-2.bcmap differ diff --git a/page/static/js/web/cmaps/Adobe-Korea1-UCS2.bcmap b/page/static/js/web/cmaps/Adobe-Korea1-UCS2.bcmap new file mode 100644 index 0000000..f3371c0 Binary files /dev/null and b/page/static/js/web/cmaps/Adobe-Korea1-UCS2.bcmap differ diff --git a/page/static/js/web/cmaps/B5-H.bcmap b/page/static/js/web/cmaps/B5-H.bcmap new file mode 100644 index 0000000..beb4d22 Binary files /dev/null and b/page/static/js/web/cmaps/B5-H.bcmap differ diff --git a/page/static/js/web/cmaps/B5-V.bcmap b/page/static/js/web/cmaps/B5-V.bcmap new file mode 100644 index 0000000..2d4f87d Binary files /dev/null and b/page/static/js/web/cmaps/B5-V.bcmap differ diff --git a/page/static/js/web/cmaps/B5pc-H.bcmap b/page/static/js/web/cmaps/B5pc-H.bcmap new file mode 100644 index 0000000..ce00131 Binary files /dev/null and b/page/static/js/web/cmaps/B5pc-H.bcmap differ diff --git a/page/static/js/web/cmaps/B5pc-V.bcmap b/page/static/js/web/cmaps/B5pc-V.bcmap new file mode 100644 index 0000000..73b99ff Binary files /dev/null and b/page/static/js/web/cmaps/B5pc-V.bcmap differ diff --git a/page/static/js/web/cmaps/CNS-EUC-H.bcmap b/page/static/js/web/cmaps/CNS-EUC-H.bcmap new file mode 100644 index 0000000..61d1d0c Binary files /dev/null and b/page/static/js/web/cmaps/CNS-EUC-H.bcmap differ diff --git a/page/static/js/web/cmaps/CNS-EUC-V.bcmap b/page/static/js/web/cmaps/CNS-EUC-V.bcmap new file mode 100644 index 0000000..1a393a5 Binary files /dev/null and b/page/static/js/web/cmaps/CNS-EUC-V.bcmap differ diff --git a/page/static/js/web/cmaps/CNS1-H.bcmap b/page/static/js/web/cmaps/CNS1-H.bcmap new file mode 100644 index 0000000..f738e21 Binary files /dev/null and b/page/static/js/web/cmaps/CNS1-H.bcmap differ diff --git a/page/static/js/web/cmaps/CNS1-V.bcmap b/page/static/js/web/cmaps/CNS1-V.bcmap new file mode 100644 index 0000000..9c3169f Binary files /dev/null and b/page/static/js/web/cmaps/CNS1-V.bcmap differ diff --git a/page/static/js/web/cmaps/CNS2-H.bcmap b/page/static/js/web/cmaps/CNS2-H.bcmap new file mode 100644 index 0000000..c89b352 Binary files /dev/null and b/page/static/js/web/cmaps/CNS2-H.bcmap differ diff --git a/page/static/js/web/cmaps/CNS2-V.bcmap b/page/static/js/web/cmaps/CNS2-V.bcmap new file mode 100644 index 0000000..7588cec --- /dev/null +++ b/page/static/js/web/cmaps/CNS2-V.bcmap @@ -0,0 +1,3 @@ +àRCopyright 1990-2009 Adobe Systems Incorporated. +All rights reserved. +See ./LICENSEáCNS2-H \ No newline at end of file diff --git a/page/static/js/web/cmaps/ETHK-B5-H.bcmap b/page/static/js/web/cmaps/ETHK-B5-H.bcmap new file mode 100644 index 0000000..cb29415 Binary files /dev/null and b/page/static/js/web/cmaps/ETHK-B5-H.bcmap differ diff --git a/page/static/js/web/cmaps/ETHK-B5-V.bcmap b/page/static/js/web/cmaps/ETHK-B5-V.bcmap new file mode 100644 index 0000000..f09aec6 Binary files /dev/null and b/page/static/js/web/cmaps/ETHK-B5-V.bcmap differ diff --git a/page/static/js/web/cmaps/ETen-B5-H.bcmap b/page/static/js/web/cmaps/ETen-B5-H.bcmap new file mode 100644 index 0000000..c2d7746 Binary files /dev/null and b/page/static/js/web/cmaps/ETen-B5-H.bcmap differ diff --git a/page/static/js/web/cmaps/ETen-B5-V.bcmap b/page/static/js/web/cmaps/ETen-B5-V.bcmap new file mode 100644 index 0000000..89bff15 Binary files /dev/null and b/page/static/js/web/cmaps/ETen-B5-V.bcmap differ diff --git a/page/static/js/web/cmaps/ETenms-B5-H.bcmap b/page/static/js/web/cmaps/ETenms-B5-H.bcmap new file mode 100644 index 0000000..a7d69db --- /dev/null +++ b/page/static/js/web/cmaps/ETenms-B5-H.bcmap @@ -0,0 +1,3 @@ +àRCopyright 1990-2009 Adobe Systems Incorporated. +All rights reserved. +See ./LICENSEá ETen-B5-H` ^ \ No newline at end of file diff --git a/page/static/js/web/cmaps/ETenms-B5-V.bcmap b/page/static/js/web/cmaps/ETenms-B5-V.bcmap new file mode 100644 index 0000000..adc5d61 Binary files /dev/null and b/page/static/js/web/cmaps/ETenms-B5-V.bcmap differ diff --git a/page/static/js/web/cmaps/EUC-H.bcmap b/page/static/js/web/cmaps/EUC-H.bcmap new file mode 100644 index 0000000..e92ea5b Binary files /dev/null and b/page/static/js/web/cmaps/EUC-H.bcmap differ diff --git a/page/static/js/web/cmaps/EUC-V.bcmap b/page/static/js/web/cmaps/EUC-V.bcmap new file mode 100644 index 0000000..7a7c183 Binary files /dev/null and b/page/static/js/web/cmaps/EUC-V.bcmap differ diff --git a/page/static/js/web/cmaps/Ext-H.bcmap b/page/static/js/web/cmaps/Ext-H.bcmap new file mode 100644 index 0000000..3b5cde4 Binary files /dev/null and b/page/static/js/web/cmaps/Ext-H.bcmap differ diff --git a/page/static/js/web/cmaps/Ext-RKSJ-H.bcmap b/page/static/js/web/cmaps/Ext-RKSJ-H.bcmap new file mode 100644 index 0000000..ea4d2d9 Binary files /dev/null and b/page/static/js/web/cmaps/Ext-RKSJ-H.bcmap differ diff --git a/page/static/js/web/cmaps/Ext-RKSJ-V.bcmap b/page/static/js/web/cmaps/Ext-RKSJ-V.bcmap new file mode 100644 index 0000000..3457c27 Binary files /dev/null and b/page/static/js/web/cmaps/Ext-RKSJ-V.bcmap differ diff --git a/page/static/js/web/cmaps/Ext-V.bcmap b/page/static/js/web/cmaps/Ext-V.bcmap new file mode 100644 index 0000000..4999ca4 Binary files /dev/null and b/page/static/js/web/cmaps/Ext-V.bcmap differ diff --git a/page/static/js/web/cmaps/GB-EUC-H.bcmap b/page/static/js/web/cmaps/GB-EUC-H.bcmap new file mode 100644 index 0000000..e39908b Binary files /dev/null and b/page/static/js/web/cmaps/GB-EUC-H.bcmap differ diff --git a/page/static/js/web/cmaps/GB-EUC-V.bcmap b/page/static/js/web/cmaps/GB-EUC-V.bcmap new file mode 100644 index 0000000..d5be544 Binary files /dev/null and b/page/static/js/web/cmaps/GB-EUC-V.bcmap differ diff --git a/page/static/js/web/cmaps/GB-H.bcmap b/page/static/js/web/cmaps/GB-H.bcmap new file mode 100644 index 0000000..39189c5 --- /dev/null +++ b/page/static/js/web/cmaps/GB-H.bcmap @@ -0,0 +1,4 @@ +àRCopyright 1990-2009 Adobe Systems Incorporated. +All rights reserved. +See ./LICENSE!!º]aX!!]`21> p z$]‚"R‚d-Uƒ7*„ 4„%+ „Z „{/…%…<9K…b1]†."‡ ‰`]‡,"]ˆ +"]ˆh"]‰F"]Š$"]‹"]‹`"]Œ>"]"]z"]ŽX"]6"]"]r"]‘P"]’."]“ "]“j"]”H"]•&"]–"]–b"]—@"]˜"]˜|"]™Z"]š8"]›"]›t"]œR"]0"]ž"]žl"]ŸJ"] ("]¡"]¡d"]¢B"]£ "X£~']¤W"]¥5"]¦"]¦q"]§O"]¨-"]© "]©i"]ªG"]«%"]¬"]¬a"]­?"]®"]®{"]¯Y"]°7"]±"]±s"]²Q"]³/"]´ "]´k"]µI"]¶'"]·"]·c"]¸A"]¹"]¹}"]º["]»9 \ No newline at end of file diff --git a/page/static/js/web/cmaps/GB-V.bcmap b/page/static/js/web/cmaps/GB-V.bcmap new file mode 100644 index 0000000..3108345 Binary files /dev/null and b/page/static/js/web/cmaps/GB-V.bcmap differ diff --git a/page/static/js/web/cmaps/GBK-EUC-H.bcmap b/page/static/js/web/cmaps/GBK-EUC-H.bcmap new file mode 100644 index 0000000..05fff7e Binary files /dev/null and b/page/static/js/web/cmaps/GBK-EUC-H.bcmap differ diff --git a/page/static/js/web/cmaps/GBK-EUC-V.bcmap b/page/static/js/web/cmaps/GBK-EUC-V.bcmap new file mode 100644 index 0000000..0cdf6be Binary files /dev/null and b/page/static/js/web/cmaps/GBK-EUC-V.bcmap differ diff --git a/page/static/js/web/cmaps/GBK2K-H.bcmap b/page/static/js/web/cmaps/GBK2K-H.bcmap new file mode 100644 index 0000000..46f6ba5 Binary files /dev/null and b/page/static/js/web/cmaps/GBK2K-H.bcmap differ diff --git a/page/static/js/web/cmaps/GBK2K-V.bcmap b/page/static/js/web/cmaps/GBK2K-V.bcmap new file mode 100644 index 0000000..d9a9479 Binary files /dev/null and b/page/static/js/web/cmaps/GBK2K-V.bcmap differ diff --git a/page/static/js/web/cmaps/GBKp-EUC-H.bcmap b/page/static/js/web/cmaps/GBKp-EUC-H.bcmap new file mode 100644 index 0000000..5cb0af6 Binary files /dev/null and b/page/static/js/web/cmaps/GBKp-EUC-H.bcmap differ diff --git a/page/static/js/web/cmaps/GBKp-EUC-V.bcmap b/page/static/js/web/cmaps/GBKp-EUC-V.bcmap new file mode 100644 index 0000000..bca93b8 Binary files /dev/null and b/page/static/js/web/cmaps/GBKp-EUC-V.bcmap differ diff --git a/page/static/js/web/cmaps/GBT-EUC-H.bcmap b/page/static/js/web/cmaps/GBT-EUC-H.bcmap new file mode 100644 index 0000000..4b4e2d3 Binary files /dev/null and b/page/static/js/web/cmaps/GBT-EUC-H.bcmap differ diff --git a/page/static/js/web/cmaps/GBT-EUC-V.bcmap b/page/static/js/web/cmaps/GBT-EUC-V.bcmap new file mode 100644 index 0000000..38f7066 Binary files /dev/null and b/page/static/js/web/cmaps/GBT-EUC-V.bcmap differ diff --git a/page/static/js/web/cmaps/GBT-H.bcmap b/page/static/js/web/cmaps/GBT-H.bcmap new file mode 100644 index 0000000..8437ac3 Binary files /dev/null and b/page/static/js/web/cmaps/GBT-H.bcmap differ diff --git a/page/static/js/web/cmaps/GBT-V.bcmap b/page/static/js/web/cmaps/GBT-V.bcmap new file mode 100644 index 0000000..697ab4a Binary files /dev/null and b/page/static/js/web/cmaps/GBT-V.bcmap differ diff --git a/page/static/js/web/cmaps/GBTpc-EUC-H.bcmap b/page/static/js/web/cmaps/GBTpc-EUC-H.bcmap new file mode 100644 index 0000000..f6e50e8 Binary files /dev/null and b/page/static/js/web/cmaps/GBTpc-EUC-H.bcmap differ diff --git a/page/static/js/web/cmaps/GBTpc-EUC-V.bcmap b/page/static/js/web/cmaps/GBTpc-EUC-V.bcmap new file mode 100644 index 0000000..6c0d71a Binary files /dev/null and b/page/static/js/web/cmaps/GBTpc-EUC-V.bcmap differ diff --git a/page/static/js/web/cmaps/GBpc-EUC-H.bcmap b/page/static/js/web/cmaps/GBpc-EUC-H.bcmap new file mode 100644 index 0000000..c9edf67 Binary files /dev/null and b/page/static/js/web/cmaps/GBpc-EUC-H.bcmap differ diff --git a/page/static/js/web/cmaps/GBpc-EUC-V.bcmap b/page/static/js/web/cmaps/GBpc-EUC-V.bcmap new file mode 100644 index 0000000..31450c9 Binary files /dev/null and b/page/static/js/web/cmaps/GBpc-EUC-V.bcmap differ diff --git a/page/static/js/web/cmaps/H.bcmap b/page/static/js/web/cmaps/H.bcmap new file mode 100644 index 0000000..7b24ea4 Binary files /dev/null and b/page/static/js/web/cmaps/H.bcmap differ diff --git a/page/static/js/web/cmaps/HKdla-B5-H.bcmap b/page/static/js/web/cmaps/HKdla-B5-H.bcmap new file mode 100644 index 0000000..7d30c05 Binary files /dev/null and b/page/static/js/web/cmaps/HKdla-B5-H.bcmap differ diff --git a/page/static/js/web/cmaps/HKdla-B5-V.bcmap b/page/static/js/web/cmaps/HKdla-B5-V.bcmap new file mode 100644 index 0000000..7894694 Binary files /dev/null and b/page/static/js/web/cmaps/HKdla-B5-V.bcmap differ diff --git a/page/static/js/web/cmaps/HKdlb-B5-H.bcmap b/page/static/js/web/cmaps/HKdlb-B5-H.bcmap new file mode 100644 index 0000000..d829a23 Binary files /dev/null and b/page/static/js/web/cmaps/HKdlb-B5-H.bcmap differ diff --git a/page/static/js/web/cmaps/HKdlb-B5-V.bcmap b/page/static/js/web/cmaps/HKdlb-B5-V.bcmap new file mode 100644 index 0000000..2b572b5 Binary files /dev/null and b/page/static/js/web/cmaps/HKdlb-B5-V.bcmap differ diff --git a/page/static/js/web/cmaps/HKgccs-B5-H.bcmap b/page/static/js/web/cmaps/HKgccs-B5-H.bcmap new file mode 100644 index 0000000..971a4f2 Binary files /dev/null and b/page/static/js/web/cmaps/HKgccs-B5-H.bcmap differ diff --git a/page/static/js/web/cmaps/HKgccs-B5-V.bcmap b/page/static/js/web/cmaps/HKgccs-B5-V.bcmap new file mode 100644 index 0000000..d353ca2 Binary files /dev/null and b/page/static/js/web/cmaps/HKgccs-B5-V.bcmap differ diff --git a/page/static/js/web/cmaps/HKm314-B5-H.bcmap b/page/static/js/web/cmaps/HKm314-B5-H.bcmap new file mode 100644 index 0000000..576dc01 Binary files /dev/null and b/page/static/js/web/cmaps/HKm314-B5-H.bcmap differ diff --git a/page/static/js/web/cmaps/HKm314-B5-V.bcmap b/page/static/js/web/cmaps/HKm314-B5-V.bcmap new file mode 100644 index 0000000..0e96d0e Binary files /dev/null and b/page/static/js/web/cmaps/HKm314-B5-V.bcmap differ diff --git a/page/static/js/web/cmaps/HKm471-B5-H.bcmap b/page/static/js/web/cmaps/HKm471-B5-H.bcmap new file mode 100644 index 0000000..11d170c Binary files /dev/null and b/page/static/js/web/cmaps/HKm471-B5-H.bcmap differ diff --git a/page/static/js/web/cmaps/HKm471-B5-V.bcmap b/page/static/js/web/cmaps/HKm471-B5-V.bcmap new file mode 100644 index 0000000..54959bf Binary files /dev/null and b/page/static/js/web/cmaps/HKm471-B5-V.bcmap differ diff --git a/page/static/js/web/cmaps/HKscs-B5-H.bcmap b/page/static/js/web/cmaps/HKscs-B5-H.bcmap new file mode 100644 index 0000000..6ef7857 Binary files /dev/null and b/page/static/js/web/cmaps/HKscs-B5-H.bcmap differ diff --git a/page/static/js/web/cmaps/HKscs-B5-V.bcmap b/page/static/js/web/cmaps/HKscs-B5-V.bcmap new file mode 100644 index 0000000..1fb2fa2 Binary files /dev/null and b/page/static/js/web/cmaps/HKscs-B5-V.bcmap differ diff --git a/page/static/js/web/cmaps/Hankaku.bcmap b/page/static/js/web/cmaps/Hankaku.bcmap new file mode 100644 index 0000000..4b8ec7f Binary files /dev/null and b/page/static/js/web/cmaps/Hankaku.bcmap differ diff --git a/page/static/js/web/cmaps/Hiragana.bcmap b/page/static/js/web/cmaps/Hiragana.bcmap new file mode 100644 index 0000000..17e983e Binary files /dev/null and b/page/static/js/web/cmaps/Hiragana.bcmap differ diff --git a/page/static/js/web/cmaps/KSC-EUC-H.bcmap b/page/static/js/web/cmaps/KSC-EUC-H.bcmap new file mode 100644 index 0000000..a45c65f Binary files /dev/null and b/page/static/js/web/cmaps/KSC-EUC-H.bcmap differ diff --git a/page/static/js/web/cmaps/KSC-EUC-V.bcmap b/page/static/js/web/cmaps/KSC-EUC-V.bcmap new file mode 100644 index 0000000..0e7b21f Binary files /dev/null and b/page/static/js/web/cmaps/KSC-EUC-V.bcmap differ diff --git a/page/static/js/web/cmaps/KSC-H.bcmap b/page/static/js/web/cmaps/KSC-H.bcmap new file mode 100644 index 0000000..b9b22b6 Binary files /dev/null and b/page/static/js/web/cmaps/KSC-H.bcmap differ diff --git a/page/static/js/web/cmaps/KSC-Johab-H.bcmap b/page/static/js/web/cmaps/KSC-Johab-H.bcmap new file mode 100644 index 0000000..2531ffc Binary files /dev/null and b/page/static/js/web/cmaps/KSC-Johab-H.bcmap differ diff --git a/page/static/js/web/cmaps/KSC-Johab-V.bcmap b/page/static/js/web/cmaps/KSC-Johab-V.bcmap new file mode 100644 index 0000000..367ceb2 Binary files /dev/null and b/page/static/js/web/cmaps/KSC-Johab-V.bcmap differ diff --git a/page/static/js/web/cmaps/KSC-V.bcmap b/page/static/js/web/cmaps/KSC-V.bcmap new file mode 100644 index 0000000..6ae2f0b Binary files /dev/null and b/page/static/js/web/cmaps/KSC-V.bcmap differ diff --git a/page/static/js/web/cmaps/KSCms-UHC-H.bcmap b/page/static/js/web/cmaps/KSCms-UHC-H.bcmap new file mode 100644 index 0000000..a8d4240 Binary files /dev/null and b/page/static/js/web/cmaps/KSCms-UHC-H.bcmap differ diff --git a/page/static/js/web/cmaps/KSCms-UHC-HW-H.bcmap b/page/static/js/web/cmaps/KSCms-UHC-HW-H.bcmap new file mode 100644 index 0000000..8b4ae18 Binary files /dev/null and b/page/static/js/web/cmaps/KSCms-UHC-HW-H.bcmap differ diff --git a/page/static/js/web/cmaps/KSCms-UHC-HW-V.bcmap b/page/static/js/web/cmaps/KSCms-UHC-HW-V.bcmap new file mode 100644 index 0000000..b655dbc Binary files /dev/null and b/page/static/js/web/cmaps/KSCms-UHC-HW-V.bcmap differ diff --git a/page/static/js/web/cmaps/KSCms-UHC-V.bcmap b/page/static/js/web/cmaps/KSCms-UHC-V.bcmap new file mode 100644 index 0000000..21f97f6 Binary files /dev/null and b/page/static/js/web/cmaps/KSCms-UHC-V.bcmap differ diff --git a/page/static/js/web/cmaps/KSCpc-EUC-H.bcmap b/page/static/js/web/cmaps/KSCpc-EUC-H.bcmap new file mode 100644 index 0000000..e06f361 Binary files /dev/null and b/page/static/js/web/cmaps/KSCpc-EUC-H.bcmap differ diff --git a/page/static/js/web/cmaps/KSCpc-EUC-V.bcmap b/page/static/js/web/cmaps/KSCpc-EUC-V.bcmap new file mode 100644 index 0000000..f3c9113 Binary files /dev/null and b/page/static/js/web/cmaps/KSCpc-EUC-V.bcmap differ diff --git a/page/static/js/web/cmaps/Katakana.bcmap b/page/static/js/web/cmaps/Katakana.bcmap new file mode 100644 index 0000000..524303c Binary files /dev/null and b/page/static/js/web/cmaps/Katakana.bcmap differ diff --git a/page/static/js/web/cmaps/LICENSE b/page/static/js/web/cmaps/LICENSE new file mode 100644 index 0000000..b1ad168 --- /dev/null +++ b/page/static/js/web/cmaps/LICENSE @@ -0,0 +1,36 @@ +%%Copyright: ----------------------------------------------------------- +%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated. +%%Copyright: All rights reserved. +%%Copyright: +%%Copyright: Redistribution and use in source and binary forms, with or +%%Copyright: without modification, are permitted provided that the +%%Copyright: following conditions are met: +%%Copyright: +%%Copyright: Redistributions of source code must retain the above +%%Copyright: copyright notice, this list of conditions and the following +%%Copyright: disclaimer. +%%Copyright: +%%Copyright: Redistributions in binary form must reproduce the above +%%Copyright: copyright notice, this list of conditions and the following +%%Copyright: disclaimer in the documentation and/or other materials +%%Copyright: provided with the distribution. +%%Copyright: +%%Copyright: Neither the name of Adobe Systems Incorporated nor the names +%%Copyright: of its contributors may be used to endorse or promote +%%Copyright: products derived from this software without specific prior +%%Copyright: written permission. +%%Copyright: +%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +%%Copyright: ----------------------------------------------------------- diff --git a/page/static/js/web/cmaps/NWP-H.bcmap b/page/static/js/web/cmaps/NWP-H.bcmap new file mode 100644 index 0000000..afc5e4b Binary files /dev/null and b/page/static/js/web/cmaps/NWP-H.bcmap differ diff --git a/page/static/js/web/cmaps/NWP-V.bcmap b/page/static/js/web/cmaps/NWP-V.bcmap new file mode 100644 index 0000000..bb5785e Binary files /dev/null and b/page/static/js/web/cmaps/NWP-V.bcmap differ diff --git a/page/static/js/web/cmaps/RKSJ-H.bcmap b/page/static/js/web/cmaps/RKSJ-H.bcmap new file mode 100644 index 0000000..fb8d298 Binary files /dev/null and b/page/static/js/web/cmaps/RKSJ-H.bcmap differ diff --git a/page/static/js/web/cmaps/RKSJ-V.bcmap b/page/static/js/web/cmaps/RKSJ-V.bcmap new file mode 100644 index 0000000..a2555a6 Binary files /dev/null and b/page/static/js/web/cmaps/RKSJ-V.bcmap differ diff --git a/page/static/js/web/cmaps/Roman.bcmap b/page/static/js/web/cmaps/Roman.bcmap new file mode 100644 index 0000000..f896dcf Binary files /dev/null and b/page/static/js/web/cmaps/Roman.bcmap differ diff --git a/page/static/js/web/cmaps/UniCNS-UCS2-H.bcmap b/page/static/js/web/cmaps/UniCNS-UCS2-H.bcmap new file mode 100644 index 0000000..d5db27c Binary files /dev/null and b/page/static/js/web/cmaps/UniCNS-UCS2-H.bcmap differ diff --git a/page/static/js/web/cmaps/UniCNS-UCS2-V.bcmap b/page/static/js/web/cmaps/UniCNS-UCS2-V.bcmap new file mode 100644 index 0000000..1dc9b7a Binary files /dev/null and b/page/static/js/web/cmaps/UniCNS-UCS2-V.bcmap differ diff --git a/page/static/js/web/cmaps/UniCNS-UTF16-H.bcmap b/page/static/js/web/cmaps/UniCNS-UTF16-H.bcmap new file mode 100644 index 0000000..961afef Binary files /dev/null and b/page/static/js/web/cmaps/UniCNS-UTF16-H.bcmap differ diff --git a/page/static/js/web/cmaps/UniCNS-UTF16-V.bcmap b/page/static/js/web/cmaps/UniCNS-UTF16-V.bcmap new file mode 100644 index 0000000..df0cffe Binary files /dev/null and b/page/static/js/web/cmaps/UniCNS-UTF16-V.bcmap differ diff --git a/page/static/js/web/cmaps/UniCNS-UTF32-H.bcmap b/page/static/js/web/cmaps/UniCNS-UTF32-H.bcmap new file mode 100644 index 0000000..1ab18a1 Binary files /dev/null and b/page/static/js/web/cmaps/UniCNS-UTF32-H.bcmap differ diff --git a/page/static/js/web/cmaps/UniCNS-UTF32-V.bcmap b/page/static/js/web/cmaps/UniCNS-UTF32-V.bcmap new file mode 100644 index 0000000..ad14662 Binary files /dev/null and b/page/static/js/web/cmaps/UniCNS-UTF32-V.bcmap differ diff --git a/page/static/js/web/cmaps/UniCNS-UTF8-H.bcmap b/page/static/js/web/cmaps/UniCNS-UTF8-H.bcmap new file mode 100644 index 0000000..83c6bd7 Binary files /dev/null and b/page/static/js/web/cmaps/UniCNS-UTF8-H.bcmap differ diff --git a/page/static/js/web/cmaps/UniCNS-UTF8-V.bcmap b/page/static/js/web/cmaps/UniCNS-UTF8-V.bcmap new file mode 100644 index 0000000..22a27e4 Binary files /dev/null and b/page/static/js/web/cmaps/UniCNS-UTF8-V.bcmap differ diff --git a/page/static/js/web/cmaps/UniGB-UCS2-H.bcmap b/page/static/js/web/cmaps/UniGB-UCS2-H.bcmap new file mode 100644 index 0000000..5bd6228 Binary files /dev/null and b/page/static/js/web/cmaps/UniGB-UCS2-H.bcmap differ diff --git a/page/static/js/web/cmaps/UniGB-UCS2-V.bcmap b/page/static/js/web/cmaps/UniGB-UCS2-V.bcmap new file mode 100644 index 0000000..53c534b Binary files /dev/null and b/page/static/js/web/cmaps/UniGB-UCS2-V.bcmap differ diff --git a/page/static/js/web/cmaps/UniGB-UTF16-H.bcmap b/page/static/js/web/cmaps/UniGB-UTF16-H.bcmap new file mode 100644 index 0000000..b95045b Binary files /dev/null and b/page/static/js/web/cmaps/UniGB-UTF16-H.bcmap differ diff --git a/page/static/js/web/cmaps/UniGB-UTF16-V.bcmap b/page/static/js/web/cmaps/UniGB-UTF16-V.bcmap new file mode 100644 index 0000000..51f023e Binary files /dev/null and b/page/static/js/web/cmaps/UniGB-UTF16-V.bcmap differ diff --git a/page/static/js/web/cmaps/UniGB-UTF32-H.bcmap b/page/static/js/web/cmaps/UniGB-UTF32-H.bcmap new file mode 100644 index 0000000..f0dbd14 Binary files /dev/null and b/page/static/js/web/cmaps/UniGB-UTF32-H.bcmap differ diff --git a/page/static/js/web/cmaps/UniGB-UTF32-V.bcmap b/page/static/js/web/cmaps/UniGB-UTF32-V.bcmap new file mode 100644 index 0000000..ce9c30a Binary files /dev/null and b/page/static/js/web/cmaps/UniGB-UTF32-V.bcmap differ diff --git a/page/static/js/web/cmaps/UniGB-UTF8-H.bcmap b/page/static/js/web/cmaps/UniGB-UTF8-H.bcmap new file mode 100644 index 0000000..982ca46 Binary files /dev/null and b/page/static/js/web/cmaps/UniGB-UTF8-H.bcmap differ diff --git a/page/static/js/web/cmaps/UniGB-UTF8-V.bcmap b/page/static/js/web/cmaps/UniGB-UTF8-V.bcmap new file mode 100644 index 0000000..f78020d Binary files /dev/null and b/page/static/js/web/cmaps/UniGB-UTF8-V.bcmap differ diff --git a/page/static/js/web/cmaps/UniJIS-UCS2-H.bcmap b/page/static/js/web/cmaps/UniJIS-UCS2-H.bcmap new file mode 100644 index 0000000..7daf56a Binary files /dev/null and b/page/static/js/web/cmaps/UniJIS-UCS2-H.bcmap differ diff --git a/page/static/js/web/cmaps/UniJIS-UCS2-HW-H.bcmap b/page/static/js/web/cmaps/UniJIS-UCS2-HW-H.bcmap new file mode 100644 index 0000000..ac9975c Binary files /dev/null and b/page/static/js/web/cmaps/UniJIS-UCS2-HW-H.bcmap differ diff --git a/page/static/js/web/cmaps/UniJIS-UCS2-HW-V.bcmap b/page/static/js/web/cmaps/UniJIS-UCS2-HW-V.bcmap new file mode 100644 index 0000000..3da0a1c Binary files /dev/null and b/page/static/js/web/cmaps/UniJIS-UCS2-HW-V.bcmap differ diff --git a/page/static/js/web/cmaps/UniJIS-UCS2-V.bcmap b/page/static/js/web/cmaps/UniJIS-UCS2-V.bcmap new file mode 100644 index 0000000..c50b9dd Binary files /dev/null and b/page/static/js/web/cmaps/UniJIS-UCS2-V.bcmap differ diff --git a/page/static/js/web/cmaps/UniJIS-UTF16-H.bcmap b/page/static/js/web/cmaps/UniJIS-UTF16-H.bcmap new file mode 100644 index 0000000..6761344 Binary files /dev/null and b/page/static/js/web/cmaps/UniJIS-UTF16-H.bcmap differ diff --git a/page/static/js/web/cmaps/UniJIS-UTF16-V.bcmap b/page/static/js/web/cmaps/UniJIS-UTF16-V.bcmap new file mode 100644 index 0000000..70bf90c Binary files /dev/null and b/page/static/js/web/cmaps/UniJIS-UTF16-V.bcmap differ diff --git a/page/static/js/web/cmaps/UniJIS-UTF32-H.bcmap b/page/static/js/web/cmaps/UniJIS-UTF32-H.bcmap new file mode 100644 index 0000000..7a83d53 Binary files /dev/null and b/page/static/js/web/cmaps/UniJIS-UTF32-H.bcmap differ diff --git a/page/static/js/web/cmaps/UniJIS-UTF32-V.bcmap b/page/static/js/web/cmaps/UniJIS-UTF32-V.bcmap new file mode 100644 index 0000000..7a87135 Binary files /dev/null and b/page/static/js/web/cmaps/UniJIS-UTF32-V.bcmap differ diff --git a/page/static/js/web/cmaps/UniJIS-UTF8-H.bcmap b/page/static/js/web/cmaps/UniJIS-UTF8-H.bcmap new file mode 100644 index 0000000..9f0334c Binary files /dev/null and b/page/static/js/web/cmaps/UniJIS-UTF8-H.bcmap differ diff --git a/page/static/js/web/cmaps/UniJIS-UTF8-V.bcmap b/page/static/js/web/cmaps/UniJIS-UTF8-V.bcmap new file mode 100644 index 0000000..808a94f Binary files /dev/null and b/page/static/js/web/cmaps/UniJIS-UTF8-V.bcmap differ diff --git a/page/static/js/web/cmaps/UniJIS2004-UTF16-H.bcmap b/page/static/js/web/cmaps/UniJIS2004-UTF16-H.bcmap new file mode 100644 index 0000000..d768bf8 Binary files /dev/null and b/page/static/js/web/cmaps/UniJIS2004-UTF16-H.bcmap differ diff --git a/page/static/js/web/cmaps/UniJIS2004-UTF16-V.bcmap b/page/static/js/web/cmaps/UniJIS2004-UTF16-V.bcmap new file mode 100644 index 0000000..3d5bf6f Binary files /dev/null and b/page/static/js/web/cmaps/UniJIS2004-UTF16-V.bcmap differ diff --git a/page/static/js/web/cmaps/UniJIS2004-UTF32-H.bcmap b/page/static/js/web/cmaps/UniJIS2004-UTF32-H.bcmap new file mode 100644 index 0000000..09eee10 Binary files /dev/null and b/page/static/js/web/cmaps/UniJIS2004-UTF32-H.bcmap differ diff --git a/page/static/js/web/cmaps/UniJIS2004-UTF32-V.bcmap b/page/static/js/web/cmaps/UniJIS2004-UTF32-V.bcmap new file mode 100644 index 0000000..6c54600 Binary files /dev/null and b/page/static/js/web/cmaps/UniJIS2004-UTF32-V.bcmap differ diff --git a/page/static/js/web/cmaps/UniJIS2004-UTF8-H.bcmap b/page/static/js/web/cmaps/UniJIS2004-UTF8-H.bcmap new file mode 100644 index 0000000..1b1a64f Binary files /dev/null and b/page/static/js/web/cmaps/UniJIS2004-UTF8-H.bcmap differ diff --git a/page/static/js/web/cmaps/UniJIS2004-UTF8-V.bcmap b/page/static/js/web/cmaps/UniJIS2004-UTF8-V.bcmap new file mode 100644 index 0000000..994aa9e Binary files /dev/null and b/page/static/js/web/cmaps/UniJIS2004-UTF8-V.bcmap differ diff --git a/page/static/js/web/cmaps/UniJISPro-UCS2-HW-V.bcmap b/page/static/js/web/cmaps/UniJISPro-UCS2-HW-V.bcmap new file mode 100644 index 0000000..643f921 Binary files /dev/null and b/page/static/js/web/cmaps/UniJISPro-UCS2-HW-V.bcmap differ diff --git a/page/static/js/web/cmaps/UniJISPro-UCS2-V.bcmap b/page/static/js/web/cmaps/UniJISPro-UCS2-V.bcmap new file mode 100644 index 0000000..c148f67 Binary files /dev/null and b/page/static/js/web/cmaps/UniJISPro-UCS2-V.bcmap differ diff --git a/page/static/js/web/cmaps/UniJISPro-UTF8-V.bcmap b/page/static/js/web/cmaps/UniJISPro-UTF8-V.bcmap new file mode 100644 index 0000000..1849d80 Binary files /dev/null and b/page/static/js/web/cmaps/UniJISPro-UTF8-V.bcmap differ diff --git a/page/static/js/web/cmaps/UniJISX0213-UTF32-H.bcmap b/page/static/js/web/cmaps/UniJISX0213-UTF32-H.bcmap new file mode 100644 index 0000000..a83a677 Binary files /dev/null and b/page/static/js/web/cmaps/UniJISX0213-UTF32-H.bcmap differ diff --git a/page/static/js/web/cmaps/UniJISX0213-UTF32-V.bcmap b/page/static/js/web/cmaps/UniJISX0213-UTF32-V.bcmap new file mode 100644 index 0000000..f527248 Binary files /dev/null and b/page/static/js/web/cmaps/UniJISX0213-UTF32-V.bcmap differ diff --git a/page/static/js/web/cmaps/UniJISX02132004-UTF32-H.bcmap b/page/static/js/web/cmaps/UniJISX02132004-UTF32-H.bcmap new file mode 100644 index 0000000..e1a988d Binary files /dev/null and b/page/static/js/web/cmaps/UniJISX02132004-UTF32-H.bcmap differ diff --git a/page/static/js/web/cmaps/UniJISX02132004-UTF32-V.bcmap b/page/static/js/web/cmaps/UniJISX02132004-UTF32-V.bcmap new file mode 100644 index 0000000..47e054a Binary files /dev/null and b/page/static/js/web/cmaps/UniJISX02132004-UTF32-V.bcmap differ diff --git a/page/static/js/web/cmaps/UniKS-UCS2-H.bcmap b/page/static/js/web/cmaps/UniKS-UCS2-H.bcmap new file mode 100644 index 0000000..b5b9485 Binary files /dev/null and b/page/static/js/web/cmaps/UniKS-UCS2-H.bcmap differ diff --git a/page/static/js/web/cmaps/UniKS-UCS2-V.bcmap b/page/static/js/web/cmaps/UniKS-UCS2-V.bcmap new file mode 100644 index 0000000..026adca Binary files /dev/null and b/page/static/js/web/cmaps/UniKS-UCS2-V.bcmap differ diff --git a/page/static/js/web/cmaps/UniKS-UTF16-H.bcmap b/page/static/js/web/cmaps/UniKS-UTF16-H.bcmap new file mode 100644 index 0000000..fd4e66e Binary files /dev/null and b/page/static/js/web/cmaps/UniKS-UTF16-H.bcmap differ diff --git a/page/static/js/web/cmaps/UniKS-UTF16-V.bcmap b/page/static/js/web/cmaps/UniKS-UTF16-V.bcmap new file mode 100644 index 0000000..075efb7 Binary files /dev/null and b/page/static/js/web/cmaps/UniKS-UTF16-V.bcmap differ diff --git a/page/static/js/web/cmaps/UniKS-UTF32-H.bcmap b/page/static/js/web/cmaps/UniKS-UTF32-H.bcmap new file mode 100644 index 0000000..769d214 Binary files /dev/null and b/page/static/js/web/cmaps/UniKS-UTF32-H.bcmap differ diff --git a/page/static/js/web/cmaps/UniKS-UTF32-V.bcmap b/page/static/js/web/cmaps/UniKS-UTF32-V.bcmap new file mode 100644 index 0000000..bdab208 Binary files /dev/null and b/page/static/js/web/cmaps/UniKS-UTF32-V.bcmap differ diff --git a/page/static/js/web/cmaps/UniKS-UTF8-H.bcmap b/page/static/js/web/cmaps/UniKS-UTF8-H.bcmap new file mode 100644 index 0000000..6ff8674 Binary files /dev/null and b/page/static/js/web/cmaps/UniKS-UTF8-H.bcmap differ diff --git a/page/static/js/web/cmaps/UniKS-UTF8-V.bcmap b/page/static/js/web/cmaps/UniKS-UTF8-V.bcmap new file mode 100644 index 0000000..8dfa76a Binary files /dev/null and b/page/static/js/web/cmaps/UniKS-UTF8-V.bcmap differ diff --git a/page/static/js/web/cmaps/V.bcmap b/page/static/js/web/cmaps/V.bcmap new file mode 100644 index 0000000..fdec990 Binary files /dev/null and b/page/static/js/web/cmaps/V.bcmap differ diff --git a/page/static/js/web/cmaps/WP-Symbol.bcmap b/page/static/js/web/cmaps/WP-Symbol.bcmap new file mode 100644 index 0000000..46729bb Binary files /dev/null and b/page/static/js/web/cmaps/WP-Symbol.bcmap differ diff --git a/page/static/js/web/compressed.tracemonkey-pldi-09.pdf b/page/static/js/web/compressed.tracemonkey-pldi-09.pdf new file mode 100644 index 0000000..6557018 Binary files /dev/null and b/page/static/js/web/compressed.tracemonkey-pldi-09.pdf differ diff --git a/page/static/js/web/debugger.css b/page/static/js/web/debugger.css new file mode 100644 index 0000000..9a7233b --- /dev/null +++ b/page/static/js/web/debugger.css @@ -0,0 +1,113 @@ +/* Copyright 2014 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#PDFBug, +#PDFBug input, +#PDFBug button, +#PDFBug select { + font: message-box; +} +#PDFBug { + background-color: rgba(255, 255, 255, 1); + border: 1px solid rgba(102, 102, 102, 1); + position: fixed; + top: 32px; + right: 0; + bottom: 0; + font-size: 10px; + padding: 0; + width: 300px; +} +#PDFBug .controls { + background: rgba(238, 238, 238, 1); + border-bottom: 1px solid rgba(102, 102, 102, 1); + padding: 3px; +} +#PDFBug .panels { + bottom: 0; + left: 0; + overflow: auto; + position: absolute; + right: 0; + top: 27px; +} +#PDFBug .panels > div { + padding: 5px; +} +#PDFBug button.active { + font-weight: bold; +} +.debuggerShowText, +.debuggerHideText:hover { + background-color: rgba(255, 255, 0, 1); +} +#PDFBug .stats { + font-family: courier; + font-size: 10px; + white-space: pre; +} +#PDFBug .stats .title { + font-weight: bold; +} +#PDFBug table { + font-size: 10px; + white-space: pre; +} +#PDFBug table.showText { + border-collapse: collapse; + text-align: center; +} +#PDFBug table.showText, +#PDFBug table.showText tr, +#PDFBug table.showText td { + border: 1px solid black; + padding: 1px; +} +#PDFBug table.showText td.advance { + color: grey; +} + +#viewer.textLayer-visible .textLayer { + opacity: 1; +} + +#viewer.textLayer-visible .canvasWrapper { + background-color: rgba(128, 255, 128, 1); +} + +#viewer.textLayer-visible .canvasWrapper canvas { + mix-blend-mode: screen; +} + +#viewer.textLayer-visible .textLayer span { + background-color: rgba(255, 255, 0, 0.1); + color: rgba(0, 0, 0, 1); + border: solid 1px rgba(255, 0, 0, 0.5); + box-sizing: border-box; +} + +#viewer.textLayer-visible .textLayer span[aria-owns] { + background-color: rgba(255, 0, 0, 0.3); +} + +#viewer.textLayer-hover .textLayer span:hover { + background-color: rgba(255, 255, 255, 1); + color: rgba(0, 0, 0, 1); +} + +#viewer.textLayer-shadow .textLayer span { + background-color: rgba(255, 255, 255, 0.6); + color: rgba(0, 0, 0, 1); +} diff --git a/page/static/js/web/debugger.js b/page/static/js/web/debugger.js new file mode 100644 index 0000000..8eaf0d6 --- /dev/null +++ b/page/static/js/web/debugger.js @@ -0,0 +1,612 @@ +/* Copyright 2012 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +let opMap; + +const FontInspector = (function FontInspectorClosure() { + let fonts; + let active = false; + const fontAttribute = "data-font-name"; + function removeSelection() { + const divs = document.querySelectorAll(`span[${fontAttribute}]`); + for (const div of divs) { + div.className = ""; + } + } + function resetSelection() { + const divs = document.querySelectorAll(`span[${fontAttribute}]`); + for (const div of divs) { + div.className = "debuggerHideText"; + } + } + function selectFont(fontName, show) { + const divs = document.querySelectorAll( + `span[${fontAttribute}=${fontName}]` + ); + for (const div of divs) { + div.className = show ? "debuggerShowText" : "debuggerHideText"; + } + } + function textLayerClick(e) { + if ( + !e.target.dataset.fontName || + e.target.tagName.toUpperCase() !== "SPAN" + ) { + return; + } + const fontName = e.target.dataset.fontName; + const selects = document.getElementsByTagName("input"); + for (const select of selects) { + if (select.dataset.fontName !== fontName) { + continue; + } + select.checked = !select.checked; + selectFont(fontName, select.checked); + select.scrollIntoView(); + } + } + return { + // Properties/functions needed by PDFBug. + id: "FontInspector", + name: "Font Inspector", + panel: null, + manager: null, + init(pdfjsLib) { + const panel = this.panel; + const tmp = document.createElement("button"); + tmp.addEventListener("click", resetSelection); + tmp.textContent = "Refresh"; + panel.append(tmp); + + fonts = document.createElement("div"); + panel.append(fonts); + }, + cleanup() { + fonts.textContent = ""; + }, + enabled: false, + get active() { + return active; + }, + set active(value) { + active = value; + if (active) { + document.body.addEventListener("click", textLayerClick, true); + resetSelection(); + } else { + document.body.removeEventListener("click", textLayerClick, true); + removeSelection(); + } + }, + // FontInspector specific functions. + fontAdded(fontObj, url) { + function properties(obj, list) { + const moreInfo = document.createElement("table"); + for (const entry of list) { + const tr = document.createElement("tr"); + const td1 = document.createElement("td"); + td1.textContent = entry; + tr.append(td1); + const td2 = document.createElement("td"); + td2.textContent = obj[entry].toString(); + tr.append(td2); + moreInfo.append(tr); + } + return moreInfo; + } + const moreInfo = properties(fontObj, ["name", "type"]); + const fontName = fontObj.loadedName; + const font = document.createElement("div"); + const name = document.createElement("span"); + name.textContent = fontName; + const download = document.createElement("a"); + if (url) { + url = /url\(['"]?([^)"']+)/.exec(url); + download.href = url[1]; + } else if (fontObj.data) { + download.href = URL.createObjectURL( + new Blob([fontObj.data], { type: fontObj.mimetype }) + ); + } + download.textContent = "Download"; + const logIt = document.createElement("a"); + logIt.href = ""; + logIt.textContent = "Log"; + logIt.addEventListener("click", function (event) { + event.preventDefault(); + console.log(fontObj); + }); + const select = document.createElement("input"); + select.setAttribute("type", "checkbox"); + select.dataset.fontName = fontName; + select.addEventListener("click", function () { + selectFont(fontName, select.checked); + }); + font.append(select, name, " ", download, " ", logIt, moreInfo); + fonts.append(font); + // Somewhat of a hack, should probably add a hook for when the text layer + // is done rendering. + setTimeout(() => { + if (this.active) { + resetSelection(); + } + }, 2000); + }, + }; +})(); + +// Manages all the page steppers. +const StepperManager = (function StepperManagerClosure() { + let steppers = []; + let stepperDiv = null; + let stepperControls = null; + let stepperChooser = null; + let breakPoints = Object.create(null); + return { + // Properties/functions needed by PDFBug. + id: "Stepper", + name: "Stepper", + panel: null, + manager: null, + init(pdfjsLib) { + const self = this; + stepperControls = document.createElement("div"); + stepperChooser = document.createElement("select"); + stepperChooser.addEventListener("change", function (event) { + self.selectStepper(this.value); + }); + stepperControls.append(stepperChooser); + stepperDiv = document.createElement("div"); + this.panel.append(stepperControls, stepperDiv); + if (sessionStorage.getItem("pdfjsBreakPoints")) { + breakPoints = JSON.parse(sessionStorage.getItem("pdfjsBreakPoints")); + } + + opMap = Object.create(null); + for (const key in pdfjsLib.OPS) { + opMap[pdfjsLib.OPS[key]] = key; + } + }, + cleanup() { + stepperChooser.textContent = ""; + stepperDiv.textContent = ""; + steppers = []; + }, + enabled: false, + active: false, + // Stepper specific functions. + create(pageIndex) { + const debug = document.createElement("div"); + debug.id = "stepper" + pageIndex; + debug.hidden = true; + debug.className = "stepper"; + stepperDiv.append(debug); + const b = document.createElement("option"); + b.textContent = "Page " + (pageIndex + 1); + b.value = pageIndex; + stepperChooser.append(b); + const initBreakPoints = breakPoints[pageIndex] || []; + const stepper = new Stepper(debug, pageIndex, initBreakPoints); + steppers.push(stepper); + if (steppers.length === 1) { + this.selectStepper(pageIndex, false); + } + return stepper; + }, + selectStepper(pageIndex, selectPanel) { + pageIndex |= 0; + if (selectPanel) { + this.manager.selectPanel(this); + } + for (const stepper of steppers) { + stepper.panel.hidden = stepper.pageIndex !== pageIndex; + } + for (const option of stepperChooser.options) { + option.selected = (option.value | 0) === pageIndex; + } + }, + saveBreakPoints(pageIndex, bps) { + breakPoints[pageIndex] = bps; + sessionStorage.setItem("pdfjsBreakPoints", JSON.stringify(breakPoints)); + }, + }; +})(); + +// The stepper for each page's operatorList. +const Stepper = (function StepperClosure() { + // Shorter way to create element and optionally set textContent. + function c(tag, textContent) { + const d = document.createElement(tag); + if (textContent) { + d.textContent = textContent; + } + return d; + } + + function simplifyArgs(args) { + if (typeof args === "string") { + const MAX_STRING_LENGTH = 75; + return args.length <= MAX_STRING_LENGTH + ? args + : args.substring(0, MAX_STRING_LENGTH) + "..."; + } + if (typeof args !== "object" || args === null) { + return args; + } + if ("length" in args) { + // array + const MAX_ITEMS = 10, + simpleArgs = []; + let i, ii; + for (i = 0, ii = Math.min(MAX_ITEMS, args.length); i < ii; i++) { + simpleArgs.push(simplifyArgs(args[i])); + } + if (i < args.length) { + simpleArgs.push("..."); + } + return simpleArgs; + } + const simpleObj = {}; + for (const key in args) { + simpleObj[key] = simplifyArgs(args[key]); + } + return simpleObj; + } + + // eslint-disable-next-line no-shadow + class Stepper { + constructor(panel, pageIndex, initialBreakPoints) { + this.panel = panel; + this.breakPoint = 0; + this.nextBreakPoint = null; + this.pageIndex = pageIndex; + this.breakPoints = initialBreakPoints; + this.currentIdx = -1; + this.operatorListIdx = 0; + this.indentLevel = 0; + } + + init(operatorList) { + const panel = this.panel; + const content = c("div", "c=continue, s=step"); + const table = c("table"); + content.append(table); + table.cellSpacing = 0; + const headerRow = c("tr"); + table.append(headerRow); + headerRow.append( + c("th", "Break"), + c("th", "Idx"), + c("th", "fn"), + c("th", "args") + ); + panel.append(content); + this.table = table; + this.updateOperatorList(operatorList); + } + + updateOperatorList(operatorList) { + const self = this; + + function cboxOnClick() { + const x = +this.dataset.idx; + if (this.checked) { + self.breakPoints.push(x); + } else { + self.breakPoints.splice(self.breakPoints.indexOf(x), 1); + } + StepperManager.saveBreakPoints(self.pageIndex, self.breakPoints); + } + + const MAX_OPERATORS_COUNT = 15000; + if (this.operatorListIdx > MAX_OPERATORS_COUNT) { + return; + } + + const chunk = document.createDocumentFragment(); + const operatorsToDisplay = Math.min( + MAX_OPERATORS_COUNT, + operatorList.fnArray.length + ); + for (let i = this.operatorListIdx; i < operatorsToDisplay; i++) { + const line = c("tr"); + line.className = "line"; + line.dataset.idx = i; + chunk.append(line); + const checked = this.breakPoints.includes(i); + const args = operatorList.argsArray[i] || []; + + const breakCell = c("td"); + const cbox = c("input"); + cbox.type = "checkbox"; + cbox.className = "points"; + cbox.checked = checked; + cbox.dataset.idx = i; + cbox.onclick = cboxOnClick; + + breakCell.append(cbox); + line.append(breakCell, c("td", i.toString())); + const fn = opMap[operatorList.fnArray[i]]; + let decArgs = args; + if (fn === "showText") { + const glyphs = args[0]; + const charCodeRow = c("tr"); + const fontCharRow = c("tr"); + const unicodeRow = c("tr"); + for (const glyph of glyphs) { + if (typeof glyph === "object" && glyph !== null) { + charCodeRow.append(c("td", glyph.originalCharCode)); + fontCharRow.append(c("td", glyph.fontChar)); + unicodeRow.append(c("td", glyph.unicode)); + } else { + // null or number + const advanceEl = c("td", glyph); + advanceEl.classList.add("advance"); + charCodeRow.append(advanceEl); + fontCharRow.append(c("td")); + unicodeRow.append(c("td")); + } + } + decArgs = c("td"); + const table = c("table"); + table.classList.add("showText"); + decArgs.append(table); + table.append(charCodeRow, fontCharRow, unicodeRow); + } else if (fn === "restore" && this.indentLevel > 0) { + this.indentLevel--; + } + line.append(c("td", " ".repeat(this.indentLevel * 2) + fn)); + if (fn === "save") { + this.indentLevel++; + } + + if (decArgs instanceof HTMLElement) { + line.append(decArgs); + } else { + line.append(c("td", JSON.stringify(simplifyArgs(decArgs)))); + } + } + if (operatorsToDisplay < operatorList.fnArray.length) { + const lastCell = c("td", "..."); + lastCell.colspan = 4; + chunk.append(lastCell); + } + this.operatorListIdx = operatorList.fnArray.length; + this.table.append(chunk); + } + + getNextBreakPoint() { + this.breakPoints.sort(function (a, b) { + return a - b; + }); + for (const breakPoint of this.breakPoints) { + if (breakPoint > this.currentIdx) { + return breakPoint; + } + } + return null; + } + + breakIt(idx, callback) { + StepperManager.selectStepper(this.pageIndex, true); + this.currentIdx = idx; + + const listener = evt => { + switch (evt.keyCode) { + case 83: // step + document.removeEventListener("keydown", listener); + this.nextBreakPoint = this.currentIdx + 1; + this.goTo(-1); + callback(); + break; + case 67: // continue + document.removeEventListener("keydown", listener); + this.nextBreakPoint = this.getNextBreakPoint(); + this.goTo(-1); + callback(); + break; + } + }; + document.addEventListener("keydown", listener); + this.goTo(idx); + } + + goTo(idx) { + const allRows = this.panel.getElementsByClassName("line"); + for (const row of allRows) { + if ((row.dataset.idx | 0) === idx) { + row.style.backgroundColor = "rgb(251,250,207)"; + row.scrollIntoView(); + } else { + row.style.backgroundColor = null; + } + } + } + } + return Stepper; +})(); + +const Stats = (function Stats() { + let stats = []; + function clear(node) { + node.textContent = ""; // Remove any `node` contents from the DOM. + } + function getStatIndex(pageNumber) { + for (const [i, stat] of stats.entries()) { + if (stat.pageNumber === pageNumber) { + return i; + } + } + return false; + } + return { + // Properties/functions needed by PDFBug. + id: "Stats", + name: "Stats", + panel: null, + manager: null, + init(pdfjsLib) {}, + enabled: false, + active: false, + // Stats specific functions. + add(pageNumber, stat) { + if (!stat) { + return; + } + const statsIndex = getStatIndex(pageNumber); + if (statsIndex !== false) { + stats[statsIndex].div.remove(); + stats.splice(statsIndex, 1); + } + const wrapper = document.createElement("div"); + wrapper.className = "stats"; + const title = document.createElement("div"); + title.className = "title"; + title.textContent = "Page: " + pageNumber; + const statsDiv = document.createElement("div"); + statsDiv.textContent = stat.toString(); + wrapper.append(title, statsDiv); + stats.push({ pageNumber, div: wrapper }); + stats.sort(function (a, b) { + return a.pageNumber - b.pageNumber; + }); + clear(this.panel); + for (const entry of stats) { + this.panel.append(entry.div); + } + }, + cleanup() { + stats = []; + clear(this.panel); + }, + }; +})(); + +// Manages all the debugging tools. +const PDFBug = (function PDFBugClosure() { + const panelWidth = 300; + const buttons = []; + let activePanel = null; + + return { + tools: [FontInspector, StepperManager, Stats], + enable(ids) { + const all = ids.length === 1 && ids[0] === "all"; + const tools = this.tools; + for (const tool of tools) { + if (all || ids.includes(tool.id)) { + tool.enabled = true; + } + } + if (!all) { + // Sort the tools by the order they are enabled. + tools.sort(function (a, b) { + let indexA = ids.indexOf(a.id); + indexA = indexA < 0 ? tools.length : indexA; + let indexB = ids.indexOf(b.id); + indexB = indexB < 0 ? tools.length : indexB; + return indexA - indexB; + }); + } + }, + init(pdfjsLib, container, ids) { + this.loadCSS(); + this.enable(ids); + /* + * Basic Layout: + * PDFBug + * Controls + * Panels + * Panel + * Panel + * ... + */ + const ui = document.createElement("div"); + ui.id = "PDFBug"; + + const controls = document.createElement("div"); + controls.setAttribute("class", "controls"); + ui.append(controls); + + const panels = document.createElement("div"); + panels.setAttribute("class", "panels"); + ui.append(panels); + + container.append(ui); + container.style.right = panelWidth + "px"; + + // Initialize all the debugging tools. + for (const tool of this.tools) { + const panel = document.createElement("div"); + const panelButton = document.createElement("button"); + panelButton.textContent = tool.name; + panelButton.addEventListener("click", event => { + event.preventDefault(); + this.selectPanel(tool); + }); + controls.append(panelButton); + panels.append(panel); + tool.panel = panel; + tool.manager = this; + if (tool.enabled) { + tool.init(pdfjsLib); + } else { + panel.textContent = + `${tool.name} is disabled. To enable add "${tool.id}" to ` + + "the pdfBug parameter and refresh (separate multiple by commas)."; + } + buttons.push(panelButton); + } + this.selectPanel(0); + }, + loadCSS() { + const { url } = import.meta; + + const link = document.createElement("link"); + link.rel = "stylesheet"; + link.href = url.replace(/.js$/, ".css"); + + document.head.append(link); + }, + cleanup() { + for (const tool of this.tools) { + if (tool.enabled) { + tool.cleanup(); + } + } + }, + selectPanel(index) { + if (typeof index !== "number") { + index = this.tools.indexOf(index); + } + if (index === activePanel) { + return; + } + activePanel = index; + for (const [j, tool] of this.tools.entries()) { + const isActive = j === index; + buttons[j].classList.toggle("active", isActive); + tool.active = isActive; + tool.panel.hidden = !isActive; + } + }, + }; +})(); + +globalThis.FontInspector = FontInspector; +globalThis.StepperManager = StepperManager; +globalThis.Stats = Stats; + +export { PDFBug }; diff --git a/page/static/js/web/images/annotation-check.svg b/page/static/js/web/images/annotation-check.svg new file mode 100644 index 0000000..71cd16d --- /dev/null +++ b/page/static/js/web/images/annotation-check.svg @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns="http://www.w3.org/2000/svg" + width="40" + height="40" + viewBox="0 0 40 40"> + <path + d="M 1.5006714,23.536225 6.8925879,18.994244 14.585721,26.037937 34.019683,4.5410479 38.499329,9.2235032 14.585721,35.458952 z" + id="path4" + style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:1.25402856;stroke-opacity:1" /> +</svg> diff --git a/page/static/js/web/images/annotation-comment.svg b/page/static/js/web/images/annotation-comment.svg new file mode 100644 index 0000000..86f1f17 --- /dev/null +++ b/page/static/js/web/images/annotation-comment.svg @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns="http://www.w3.org/2000/svg" + height="40" + width="40" + viewBox="0 0 40 40"> + <rect + style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + width="33.76017" + height="33.76017" + x="3.119915" + y="3.119915" /> + <path + d="m 20.677967,8.54499 c -7.342801,0 -13.295293,4.954293 -13.295293,11.065751 0,2.088793 0.3647173,3.484376 1.575539,5.150563 L 6.0267418,31.45501 13.560595,29.011117 c 2.221262,1.387962 4.125932,1.665377 7.117372,1.665377 7.3428,0 13.295291,-4.954295 13.295291,-11.065753 0,-6.111458 -5.952491,-11.065751 -13.295291,-11.065751 z" + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.93031836;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/> +</svg> diff --git a/page/static/js/web/images/annotation-help.svg b/page/static/js/web/images/annotation-help.svg new file mode 100644 index 0000000..00938fe --- /dev/null +++ b/page/static/js/web/images/annotation-help.svg @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns="http://www.w3.org/2000/svg" + width="40" + height="40" + viewBox="0 0 40 40"> + <g + transform="translate(0,-60)" + id="layer1"> + <rect + width="36.460953" + height="34.805603" + x="1.7695236" + y="62.597198" + style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.30826771;stroke-opacity:1" /> + <g + transform="matrix(0.88763677,0,0,0.88763677,2.2472646,8.9890584)"> + <path + d="M 20,64.526342 C 11.454135,64.526342 4.5263421,71.454135 4.5263421,80 4.5263421,88.545865 11.454135,95.473658 20,95.473658 28.545865,95.473658 35.473658,88.545865 35.473658,80 35.473658,71.454135 28.545865,64.526342 20,64.526342 z m -0.408738,9.488564 c 3.527079,0 6.393832,2.84061 6.393832,6.335441 0,3.494831 -2.866753,6.335441 -6.393832,6.335441 -3.527079,0 -6.393832,-2.84061 -6.393832,-6.335441 0,-3.494831 2.866753,-6.335441 6.393832,-6.335441 z" + style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.02768445;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 7.2335209,71.819938 4.9702591,4.161823 c -1.679956,2.581606 -1.443939,6.069592 0.159325,8.677725 l -5.1263071,3.424463 c 0.67516,1.231452 3.0166401,3.547686 4.2331971,4.194757 l 3.907728,-4.567277 c 2.541952,1.45975 5.730694,1.392161 8.438683,-0.12614 l 3.469517,6.108336 c 1.129779,-0.44367 4.742234,-3.449633 5.416358,-5.003859 l -5.46204,-4.415541 c 1.44319,-2.424098 1.651175,-5.267515 0.557303,-7.748623 l 5.903195,-3.833951 C 33.14257,71.704996 30.616217,69.018606 29.02952,67.99296 l -4.118813,4.981678 C 22.411934,71.205099 18.900853,70.937534 16.041319,72.32916 l -3.595408,-5.322091 c -1.345962,0.579488 -4.1293881,2.921233 -5.2123901,4.812869 z m 8.1010311,3.426672 c 2.75284,-2.446266 6.769149,-2.144694 9.048998,0.420874 2.279848,2.56557 2.113919,6.596919 -0.638924,9.043185 -2.752841,2.446267 -6.775754,2.13726 -9.055604,-0.428308 -2.279851,-2.565568 -2.107313,-6.589485 0.64553,-9.035751 z" + style="fill:#000000;fill-opacity:1;stroke:none" /> + </g> + </g> +</svg> diff --git a/page/static/js/web/images/annotation-insert.svg b/page/static/js/web/images/annotation-insert.svg new file mode 100644 index 0000000..519ef68 --- /dev/null +++ b/page/static/js/web/images/annotation-insert.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns="http://www.w3.org/2000/svg" + width="64" + height="64" + viewBox="0 0 64 64"> + <path + d="M 32.003143,1.4044602 57.432701,62.632577 6.5672991,62.627924 z" + style="fill:#ffff00;fill-opacity:0.94117647;fill-rule:nonzero;stroke:#000000;stroke-width:1.00493038;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> +</svg> diff --git a/page/static/js/web/images/annotation-key.svg b/page/static/js/web/images/annotation-key.svg new file mode 100644 index 0000000..8d09d53 --- /dev/null +++ b/page/static/js/web/images/annotation-key.svg @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns="http://www.w3.org/2000/svg" + width="64" + height="64" + viewBox="0 0 64 64"> + <path + d="M 25.470843,9.4933766 C 25.30219,12.141818 30.139101,14.445969 34.704831,13.529144 40.62635,12.541995 41.398833,7.3856498 35.97505,5.777863 31.400921,4.1549155 25.157674,6.5445892 25.470843,9.4933766 z M 4.5246282,17.652051 C 4.068249,11.832873 9.2742983,5.9270407 18.437379,3.0977088 29.751911,-0.87185184 45.495663,1.4008022 53.603953,7.1104009 c 9.275765,6.1889221 7.158128,16.2079421 -3.171076,21.5939521 -1.784316,1.635815 -6.380222,1.21421 -7.068351,3.186186 -1.04003,0.972427 -1.288046,2.050158 -1.232864,3.168203 1.015111,2.000108 -3.831548,1.633216 -3.270553,3.759574 0.589477,5.264544 -0.179276,10.53738 -0.362842,15.806257 -0.492006,2.184998 1.163456,4.574232 -0.734888,6.610642 -2.482919,2.325184 -7.30604,2.189143 -9.193497,-0.274767 -2.733688,-1.740626 -8.254447,-3.615254 -6.104247,-6.339626 3.468112,-1.708686 -2.116197,-3.449897 0.431242,-5.080274 5.058402,-1.39256 -2.393215,-2.304318 -0.146889,-4.334645 3.069198,-0.977415 2.056986,-2.518352 -0.219121,-3.540397 1.876567,-1.807151 1.484149,-4.868919 -2.565455,-5.942205 0.150866,-1.805474 2.905737,-4.136876 -1.679967,-5.20493 C 10.260902,27.882167 4.6872697,22.95045 4.5245945,17.652051 z" + id="path604" + style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:1.72665179;stroke-opacity:1" /> +</svg> diff --git a/page/static/js/web/images/annotation-newparagraph.svg b/page/static/js/web/images/annotation-newparagraph.svg new file mode 100644 index 0000000..38d2497 --- /dev/null +++ b/page/static/js/web/images/annotation-newparagraph.svg @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns="http://www.w3.org/2000/svg" + width="64" + height="64" + viewBox="0 0 64 64"> + <path + d="M 32.003143,10.913072 57.432701,53.086929 6.567299,53.083723 z" + id="path2985" + style="fill:#ffff00;fill-opacity:0.94117647;fill-rule:nonzero;stroke:#000000;stroke-width:0.83403099;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> +</svg> diff --git a/page/static/js/web/images/annotation-noicon.svg b/page/static/js/web/images/annotation-noicon.svg new file mode 100644 index 0000000..c07d108 --- /dev/null +++ b/page/static/js/web/images/annotation-noicon.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns="http://www.w3.org/2000/svg" + width="40" + height="40" + viewBox="0 0 40 40"> +</svg> diff --git a/page/static/js/web/images/annotation-note.svg b/page/static/js/web/images/annotation-note.svg new file mode 100644 index 0000000..7017365 --- /dev/null +++ b/page/static/js/web/images/annotation-note.svg @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns="http://www.w3.org/2000/svg" + width="40" + height="40" + viewBox="0 0 40 40"> + <rect + width="36.075428" + height="31.096582" + x="1.962286" + y="4.4517088" + id="rect4" + style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.23004246;stroke-opacity:1" /> + <rect + width="27.96859" + height="1.5012145" + x="6.0157046" + y="10.285" + id="rect6" + style="fill:#000000;fill-opacity:1;stroke:none" /> + <rect + width="27.96859" + height="0.85783684" + x="6.0157056" + y="23.21689" + id="rect8" + style="fill:#000000;fill-opacity:1;stroke:none" /> + <rect + width="27.96859" + height="0.85783684" + x="5.8130345" + y="28.964394" + id="rect10" + style="fill:#000000;fill-opacity:1;stroke:none" /> + <rect + width="27.96859" + height="0.85783684" + x="6.0157046" + y="17.426493" + id="rect12" + style="fill:#000000;fill-opacity:1;stroke:none" /> +</svg> diff --git a/page/static/js/web/images/annotation-paperclip.svg b/page/static/js/web/images/annotation-paperclip.svg new file mode 100644 index 0000000..2bed225 --- /dev/null +++ b/page/static/js/web/images/annotation-paperclip.svg @@ -0,0 +1,6 @@ +<!-- This Source Code Form is subject to the terms of the Mozilla Public + - License, v. 2.0. If a copy of the MPL was not distributed with this + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" height="40" width="40"> + <path d="M9 3.5a1.5 1.5 0 0 0-3-.001v7.95C6 12.83 7.12 14 8.5 14s2.5-1.17 2.5-2.55V5.5a.5.5 0 0 1 1 0v6.03C11.955 13.427 10.405 15 8.5 15S5.044 13.426 5 11.53V3.5a2.5 2.5 0 0 1 5 0v7.003a1.5 1.5 0 0 1-3-.003v-5a.5.5 0 0 1 1 0v5a.5.5 0 0 0 1 0Z"/> +</svg> diff --git a/page/static/js/web/images/annotation-paragraph.svg b/page/static/js/web/images/annotation-paragraph.svg new file mode 100644 index 0000000..6ae5212 --- /dev/null +++ b/page/static/js/web/images/annotation-paragraph.svg @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns="http://www.w3.org/2000/svg" + width="40" + height="40" + viewBox="0 0 40 40"> + <rect + width="33.76017" + height="33.76017" + x="3.119915" + y="3.119915" + style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 17.692678,34.50206 0,-16.182224 c -1.930515,-0.103225 -3.455824,-0.730383 -4.57593,-1.881473 -1.12011,-1.151067 -1.680164,-2.619596 -1.680164,-4.405591 0,-1.992435 0.621995,-3.5796849 1.865988,-4.7617553 1.243989,-1.1820288 3.06352,-1.7730536 5.458598,-1.7730764 l 9.802246,0 0,2.6789711 -2.229895,0 0,26.3251486 -2.632515,0 0,-26.3251486 -3.45324,0 0,26.3251486 z" + style="font-size:29.42051125px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.07795751;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" /> +</svg> diff --git a/page/static/js/web/images/annotation-pushpin.svg b/page/static/js/web/images/annotation-pushpin.svg new file mode 100644 index 0000000..6e0896c --- /dev/null +++ b/page/static/js/web/images/annotation-pushpin.svg @@ -0,0 +1,7 @@ +<!-- This Source Code Form is subject to the terms of the Mozilla Public + - License, v. 2.0. If a copy of the MPL was not distributed with this + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" height="40" width="40"> + <path d="M8.156 12.5a.99.99 0 0 0 .707-.294l.523-2.574L10.5 8.499l1.058-1.04 2.65-.601a.996.996 0 0 0 0-1.414l-3.657-3.658a.996.996 0 0 0-1.414 0l-.523 2.576L7.5 5.499 6.442 6.535l-2.65.6a.996.996 0 0 0 0 1.413l3.657 3.658a.999.999 0 0 0 .707.295z"/> + <path d="M9.842.996c-.386 0-.77.146-1.06.44a.5.5 0 0 0-.136.251l-.492 2.43-1.008 1.03-.953.933-2.511.566a.5.5 0 0 0-.243.133 1.505 1.505 0 0 0-.002 2.123l1.477 1.477-2.768 2.767a.5.5 0 0 0 0 .707.5.5 0 0 0 .708 0l2.767-2.767 1.475 1.474a1.494 1.494 0 0 0 2.123-.002.5.5 0 0 0 .135-.254l.492-2.427 1.008-1.024.953-.937 2.511-.57a.5.5 0 0 0 .243-.132c.586-.58.583-1.543.002-2.125l-3.659-3.656A1.501 1.501 0 0 0 9.842.996Zm.05 1.025a.394.394 0 0 1 .305.12l3.658 3.657c.18.18.141.432.002.627l-2.41.545a.5.5 0 0 0-.24.131L10.15 8.142a.5.5 0 0 0-.007.006L9.029 9.283a.5.5 0 0 0-.133.25l-.48 2.36c-.082.053-.165.109-.26.109a.492.492 0 0 1-.353-.149L4.145 8.195c-.18-.18-.141-.432-.002-.627l2.41-.545a.5.5 0 0 0 .238-.13L7.85 5.857a.5.5 0 0 0 .007-.008l1.114-1.138a.5.5 0 0 0 .133-.25l.472-2.323a.619.619 0 0 1 .317-.117Z"/> +</svg> diff --git a/page/static/js/web/images/cursor-editorFreeText.svg b/page/static/js/web/images/cursor-editorFreeText.svg new file mode 100644 index 0000000..de2838e --- /dev/null +++ b/page/static/js/web/images/cursor-editorFreeText.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M12 2.75H12.5V2.25V1V0.5H12H10.358C9.91165 0.5 9.47731 0.625661 9.09989 0.860442L9.09886 0.861087L8 1.54837L6.89997 0.860979L6.89911 0.860443C6.5218 0.625734 6.08748 0.5 5.642 0.5H4H3.5V1V2.25V2.75H4H5.642C5.66478 2.75 5.6885 2.75641 5.71008 2.76968C5.71023 2.76977 5.71038 2.76986 5.71053 2.76995L6.817 3.461C6.81704 3.46103 6.81709 3.46105 6.81713 3.46108C6.81713 3.46108 6.81713 3.46108 6.81714 3.46109C6.8552 3.48494 6.876 3.52285 6.876 3.567V8V12.433C6.876 12.4771 6.85523 12.515 6.81722 12.5389C6.81715 12.5389 6.81707 12.539 6.817 12.539L5.70953 13.23C5.70941 13.2301 5.70929 13.2302 5.70917 13.2303C5.68723 13.2438 5.6644 13.25 5.641 13.25H4H3.5V13.75V15V15.5H4H5.642C6.08835 15.5 6.52269 15.3743 6.90011 15.1396L6.90086 15.1391L8 14.4526L9.10003 15.14L9.10089 15.1406C9.47831 15.3753 9.91265 15.501 10.359 15.501H12H12.5V15.001V13.751V13.251H12H10.358C10.3352 13.251 10.3115 13.2446 10.2899 13.2313C10.2897 13.2312 10.2896 13.2311 10.2895 13.231L9.183 12.54C9.18298 12.54 9.18295 12.54 9.18293 12.54C9.18291 12.5399 9.18288 12.5399 9.18286 12.5399C9.14615 12.5169 9.125 12.4797 9.125 12.434V8V3.567C9.125 3.52266 9.14603 3.48441 9.18364 3.4606C9.18377 3.46052 9.1839 3.46043 9.18404 3.46035L10.2895 2.76995C10.2896 2.76985 10.2898 2.76975 10.2899 2.76966C10.3119 2.75619 10.3346 2.75 10.358 2.75H12Z" fill="black" stroke="white"/> +</svg> diff --git a/page/static/js/web/images/cursor-editorInk.svg b/page/static/js/web/images/cursor-editorInk.svg new file mode 100644 index 0000000..1dadb5c --- /dev/null +++ b/page/static/js/web/images/cursor-editorInk.svg @@ -0,0 +1,4 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M0.0189877 13.6645L0.612989 10.4635C0.687989 10.0545 0.884989 9.6805 1.18099 9.3825L9.98199 0.5805C10.756 -0.1925 12.015 -0.1945 12.792 0.5805L14.42 2.2085C15.194 2.9835 15.194 4.2435 14.42 5.0185L5.61599 13.8215C5.31999 14.1165 4.94599 14.3125 4.53799 14.3875L1.33599 14.9815C1.26599 14.9935 1.19799 15.0005 1.12999 15.0005C0.832989 15.0005 0.544988 14.8835 0.330988 14.6695C0.0679874 14.4055 -0.0490122 14.0305 0.0189877 13.6645Z" fill="white"/> +<path d="M0.0189877 13.6645L0.612989 10.4635C0.687989 10.0545 0.884989 9.6805 1.18099 9.3825L9.98199 0.5805C10.756 -0.1925 12.015 -0.1945 12.792 0.5805L14.42 2.2085C15.194 2.9835 15.194 4.2435 14.42 5.0185L5.61599 13.8215C5.31999 14.1165 4.94599 14.3125 4.53799 14.3875L1.33599 14.9815C1.26599 14.9935 1.19799 15.0005 1.12999 15.0005C0.832989 15.0005 0.544988 14.8835 0.330988 14.6695C0.0679874 14.4055 -0.0490122 14.0305 0.0189877 13.6645ZM12.472 5.1965L13.632 4.0365L13.631 3.1885L11.811 1.3675L10.963 1.3685L9.80299 2.5285L12.472 5.1965ZM4.31099 13.1585C4.47099 13.1285 4.61799 13.0515 4.73399 12.9345L11.587 6.0815L8.91899 3.4135L2.06599 10.2655C1.94899 10.3835 1.87199 10.5305 1.84099 10.6915L1.36699 13.2485L1.75199 13.6335L4.31099 13.1585Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/findbarButton-next.svg b/page/static/js/web/images/findbarButton-next.svg new file mode 100644 index 0000000..8cb39be --- /dev/null +++ b/page/static/js/web/images/findbarButton-next.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M10.999 8.352L5.534 13.818C5.41551 13.9303 5.25786 13.9918 5.09466 13.9895C4.93146 13.9872 4.77561 13.9212 4.66033 13.8057C4.54505 13.6902 4.47945 13.5342 4.47752 13.3709C4.47559 13.2077 4.53748 13.0502 4.65 12.932L9.585 7.998L4.651 3.067C4.53862 2.94864 4.47691 2.79106 4.47903 2.62786C4.48114 2.46466 4.54692 2.30874 4.66233 2.19333C4.77774 2.07792 4.93366 2.01215 5.09686 2.01003C5.26006 2.00792 5.41763 2.06962 5.536 2.182L11 7.647L10.999 8.352Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/findbarButton-previous.svg b/page/static/js/web/images/findbarButton-previous.svg new file mode 100644 index 0000000..b610879 --- /dev/null +++ b/page/static/js/web/images/findbarButton-previous.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M5.001 8.352L10.466 13.818C10.5845 13.9303 10.7421 13.9918 10.9053 13.9895C11.0685 13.9872 11.2244 13.9212 11.3397 13.8057C11.4549 13.6902 11.5205 13.5342 11.5225 13.3709C11.5244 13.2077 11.4625 13.0502 11.35 12.932L6.416 7.999L11.349 3.067C11.4614 2.94864 11.5231 2.79106 11.521 2.62786C11.5189 2.46466 11.4531 2.30874 11.3377 2.19333C11.2223 2.07792 11.0663 2.01215 10.9031 2.01003C10.7399 2.00792 10.5824 2.06962 10.464 2.182L5 7.647L5.001 8.352Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/loading-dark.svg b/page/static/js/web/images/loading-dark.svg new file mode 100644 index 0000000..fa5269b --- /dev/null +++ b/page/static/js/web/images/loading-dark.svg @@ -0,0 +1,24 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" +fill="rgba(255,255,255,1)" style="animation:spinLoadingIcon 1s steps(12,end) +infinite"><style>@keyframes +spinLoadingIcon{to{transform:rotate(360deg)}}</style><path +d="M7 3V1s0-1 1-1 1 1 1 1v2s0 1-1 1-1-1-1-1z"/><path d="M4.63 +4.1l-1-1.73S3.13 1.5 4 1c.87-.5 1.37.37 1.37.37l1 1.73s.5.87-.37 +1.37c-.87.57-1.37-.37-1.37-.37z" fill-opacity=".93"/><path +d="M3.1 6.37l-1.73-1S.5 4.87 1 4c.5-.87 1.37-.37 1.37-.37l1.73 1s.87.5.37 +1.37c-.5.87-1.37.37-1.37.37z" fill-opacity=".86"/><path d="M3 +9H1S0 9 0 8s1-1 1-1h2s1 0 1 1-1 1-1 1z" fill-opacity=".79"/><path d="M4.1 11.37l-1.73 1S1.5 12.87 1 +12c-.5-.87.37-1.37.37-1.37l1.73-1s.87-.5 1.37.37c.5.87-.37 1.37-.37 1.37z" +fill-opacity=".72"/><path d="M3.63 13.56l1-1.73s.5-.87 +1.37-.37c.87.5.37 1.37.37 1.37l-1 1.73s-.5.87-1.37.37c-.87-.5-.37-1.37-.37-1.37z" +fill-opacity=".65"/><path d="M7 15v-2s0-1 1-1 1 1 1 1v2s0 1-1 +1-1-1-1-1z" fill-opacity=".58"/><path d="M10.63 +14.56l-1-1.73s-.5-.87.37-1.37c.87-.5 1.37.37 1.37.37l1 1.73s.5.87-.37 +1.37c-.87.5-1.37-.37-1.37-.37z" fill-opacity=".51"/><path +d="M13.56 12.37l-1.73-1s-.87-.5-.37-1.37c.5-.87 1.37-.37 1.37-.37l1.73 1s.87.5.37 +1.37c-.5.87-1.37.37-1.37.37z" fill-opacity=".44"/><path d="M15 +9h-2s-1 0-1-1 1-1 1-1h2s1 0 1 1-1 1-1 1z" fill-opacity=".37"/><path d="M14.56 5.37l-1.73 +1s-.87.5-1.37-.37c-.5-.87.37-1.37.37-1.37l1.73-1s.87-.5 1.37.37c.5.87-.37 1.37-.37 +1.37z" fill-opacity=".3"/><path d="M9.64 3.1l.98-1.66s.5-.874 +1.37-.37c.87.5.37 1.37.37 1.37l-1 1.73s-.5.87-1.37.37c-.87-.5-.37-1.37-.37-1.37z" +fill-opacity=".23"/></svg> \ No newline at end of file diff --git a/page/static/js/web/images/loading-icon.gif b/page/static/js/web/images/loading-icon.gif new file mode 100644 index 0000000..1c72ebb Binary files /dev/null and b/page/static/js/web/images/loading-icon.gif differ diff --git a/page/static/js/web/images/loading.svg b/page/static/js/web/images/loading.svg new file mode 100644 index 0000000..0a15ff6 --- /dev/null +++ b/page/static/js/web/images/loading.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" style="animation:spinLoadingIcon 1s steps(12,end) infinite"><style>@keyframes spinLoadingIcon{to{transform:rotate(360deg)}}</style><path d="M7 3V1s0-1 1-1 1 1 1 1v2s0 1-1 1-1-1-1-1z"/><path d="M4.63 4.1l-1-1.73S3.13 1.5 4 1c.87-.5 1.37.37 1.37.37l1 1.73s.5.87-.37 1.37c-.87.57-1.37-.37-1.37-.37z" fill-opacity=".93"/><path d="M3.1 6.37l-1.73-1S.5 4.87 1 4c.5-.87 1.37-.37 1.37-.37l1.73 1s.87.5.37 1.37c-.5.87-1.37.37-1.37.37z" fill-opacity=".86"/><path d="M3 9H1S0 9 0 8s1-1 1-1h2s1 0 1 1-1 1-1 1z" fill-opacity=".79"/><path d="M4.1 11.37l-1.73 1S1.5 12.87 1 12c-.5-.87.37-1.37.37-1.37l1.73-1s.87-.5 1.37.37c.5.87-.37 1.37-.37 1.37z" fill-opacity=".72"/><path d="M3.63 13.56l1-1.73s.5-.87 1.37-.37c.87.5.37 1.37.37 1.37l-1 1.73s-.5.87-1.37.37c-.87-.5-.37-1.37-.37-1.37z" fill-opacity=".65"/><path d="M7 15v-2s0-1 1-1 1 1 1 1v2s0 1-1 1-1-1-1-1z" fill-opacity=".58"/><path d="M10.63 14.56l-1-1.73s-.5-.87.37-1.37c.87-.5 1.37.37 1.37.37l1 1.73s.5.87-.37 1.37c-.87.5-1.37-.37-1.37-.37z" fill-opacity=".51"/><path d="M13.56 12.37l-1.73-1s-.87-.5-.37-1.37c.5-.87 1.37-.37 1.37-.37l1.73 1s.87.5.37 1.37c-.5.87-1.37.37-1.37.37z" fill-opacity=".44"/><path d="M15 9h-2s-1 0-1-1 1-1 1-1h2s1 0 1 1-1 1-1 1z" fill-opacity=".37"/><path d="M14.56 5.37l-1.73 1s-.87.5-1.37-.37c-.5-.87.37-1.37.37-1.37l1.73-1s.87-.5 1.37.37c.5.87-.37 1.37-.37 1.37z" fill-opacity=".3"/><path d="M9.64 3.1l.98-1.66s.5-.874 1.37-.37c.87.5.37 1.37.37 1.37l-1 1.73s-.5.87-1.37.37c-.87-.5-.37-1.37-.37-1.37z" fill-opacity=".23"/></svg> \ No newline at end of file diff --git a/page/static/js/web/images/secondaryToolbarButton-documentProperties.svg b/page/static/js/web/images/secondaryToolbarButton-documentProperties.svg new file mode 100644 index 0000000..dd3917b --- /dev/null +++ b/page/static/js/web/images/secondaryToolbarButton-documentProperties.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M8 1.5C4.41015 1.5 1.5 4.41015 1.5 8C1.5 11.5899 4.41015 14.5 8 14.5C11.5899 14.5 14.5 11.5899 14.5 8C14.5 4.41015 11.5899 1.5 8 1.5ZM0 8C0 3.58172 3.58172 0 8 0C12.4183 0 16 3.58172 16 8C16 12.4183 12.4183 16 8 16C3.58172 16 0 12.4183 0 8ZM8.75 4V5.5H7.25V4H8.75ZM8.75 12V7H7.25V12H8.75Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/secondaryToolbarButton-firstPage.svg b/page/static/js/web/images/secondaryToolbarButton-firstPage.svg new file mode 100644 index 0000000..f5c917f --- /dev/null +++ b/page/static/js/web/images/secondaryToolbarButton-firstPage.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M14 3.5H2V5H14V3.5ZM8 8.811L12.939 13.75L14.001 12.689L8.531 7.219C8.238 6.926 7.763 6.926 7.47 7.219L2 12.689L3.061 13.75L8 8.811Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/secondaryToolbarButton-handTool.svg b/page/static/js/web/images/secondaryToolbarButton-handTool.svg new file mode 100644 index 0000000..b7073b5 --- /dev/null +++ b/page/static/js/web/images/secondaryToolbarButton-handTool.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M7.75 2.125C7.75 1.78021 8.03021 1.5 8.375 1.5C8.71979 1.5 9 1.78021 9 2.125V3.125V8H10.5V3.125C10.5 2.78021 10.7802 2.5 11.125 2.5C11.4698 2.5 11.75 2.78021 11.75 3.125V4.625V8H13.25V4.625C13.25 4.28021 13.5302 4 13.875 4C14.2198 4 14.5 4.28021 14.5 4.625V12.0188L13.3802 13.6628C13.2954 13.7872 13.25 13.9344 13.25 14.085V16H14.75V14.3162L15.8698 12.6722C15.9546 12.5478 16 12.4006 16 12.25V4.625C16 3.45179 15.0482 2.5 13.875 2.5C13.6346 2.5 13.4035 2.53996 13.188 2.6136C12.959 1.68724 12.1219 1 11.125 1C10.8235 1 10.5366 1.06286 10.2768 1.17618C9.9281 0.478968 9.20726 0 8.375 0C7.54274 0 6.8219 0.478968 6.47323 1.17618C6.21337 1.06286 5.9265 1 5.625 1C4.45179 1 3.5 1.95179 3.5 3.125V7.25317C2.66504 6.54282 1.41035 6.58199 0.621672 7.37067C-0.208221 8.20056 -0.208221 9.54644 0.621672 10.3763L0.62188 10.3765L5.499 15.2498V16H6.999V14.939C6.999 14.74 6.9199 14.5491 6.77912 14.4085L1.68233 9.31567C1.43823 9.07156 1.43823 8.67544 1.68233 8.43133C1.92644 8.18722 2.32257 8.18722 2.56667 8.43133L3.71967 9.58433C3.93417 9.79883 4.25676 9.863 4.53701 9.74691C4.81727 9.63082 5 9.35735 5 9.054V3.125C5 2.78021 5.28022 2.5 5.625 2.5C5.96921 2.5 6.24906 2.77927 6.25 3.12326V8H7.75L7.75 3.125L7.75 3.12178V2.125Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/secondaryToolbarButton-lastPage.svg b/page/static/js/web/images/secondaryToolbarButton-lastPage.svg new file mode 100644 index 0000000..c04f650 --- /dev/null +++ b/page/static/js/web/images/secondaryToolbarButton-lastPage.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M8 8.189L12.939 3.25L14 4.311L8.531 9.781C8.238 10.074 7.763 10.074 7.47 9.781L2 4.311L3.061 3.25L8 8.189ZM14 13.5V12H2V13.5H14Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/secondaryToolbarButton-rotateCcw.svg b/page/static/js/web/images/secondaryToolbarButton-rotateCcw.svg new file mode 100644 index 0000000..da73a1b --- /dev/null +++ b/page/static/js/web/images/secondaryToolbarButton-rotateCcw.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M3.4105 4.83612L4.77001 6.19601C5.06701 6.49201 4.85701 7.00001 4.43701 7.00001H0.862006C0.602006 7.00001 0.391006 6.78901 0.391006 6.52901V2.95401C0.391006 2.53401 0.899006 2.32401 1.19601 2.62101L2.32796 3.75328C3.67958 1.78973 5.9401 0.5 8.5 0.5C12.636 0.5 16 3.864 16 8C16 12.136 12.636 15.5 8.5 15.5C4.704 15.5 1.566 12.663 1.075 9H2.59C3.068 11.833 5.532 14 8.5 14C11.809 14 14.5 11.309 14.5 8C14.5 4.691 11.809 2 8.5 2C6.35262 2 4.46893 3.13503 3.4105 4.83612Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/secondaryToolbarButton-rotateCw.svg b/page/static/js/web/images/secondaryToolbarButton-rotateCw.svg new file mode 100644 index 0000000..c41ce73 --- /dev/null +++ b/page/static/js/web/images/secondaryToolbarButton-rotateCw.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M12.5895 4.83613L11.23 6.19601C10.933 6.49201 11.143 7.00001 11.563 7.00001H15.138C15.398 7.00001 15.609 6.78901 15.609 6.52901V2.95401C15.609 2.53401 15.101 2.32401 14.804 2.62101L13.672 3.75328C12.3204 1.78973 10.0599 0.5 7.5 0.5C3.364 0.5 0 3.864 0 8C0 12.136 3.364 15.5 7.5 15.5C11.296 15.5 14.434 12.663 14.925 9H13.41C12.932 11.833 10.468 14 7.5 14C4.191 14 1.5 11.309 1.5 8C1.5 4.691 4.191 2 7.5 2C9.64738 2 11.5311 3.13503 12.5895 4.83613Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/secondaryToolbarButton-scrollHorizontal.svg b/page/static/js/web/images/secondaryToolbarButton-scrollHorizontal.svg new file mode 100644 index 0000000..fb440b9 --- /dev/null +++ b/page/static/js/web/images/secondaryToolbarButton-scrollHorizontal.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M3 3.78C3 2.7621 2.13279 2.11834 1.25 2.01476V2H1V3.5C1.18133 3.5 1.32279 3.5609 1.40708 3.63029C1.48961 3.69823 1.5 3.75458 1.5 3.78V11.72C1.5 11.7454 1.48961 11.8018 1.40708 11.8697C1.32279 11.9391 1.18133 12 1 12V13.5H1.25V13.4852C2.13279 13.3817 3 12.7379 3 11.72V3.78ZM10.5 4C10.5 3.72386 10.2761 3.5 10 3.5H6.5C6.22386 3.5 6 3.72386 6 4V11.5C6 11.7761 6.22386 12 6.5 12H10C10.2761 12 10.5 11.7761 10.5 11.5V4ZM10 2C11.1046 2 12 2.89543 12 4V11.5C12 12.6046 11.1046 13.5 10 13.5H6.5C5.39543 13.5 4.5 12.6046 4.5 11.5V4C4.5 2.89543 5.39543 2 6.5 2H10ZM15.5 2H15.25V2.01476C14.3672 2.11834 13.5 2.7621 13.5 3.78V11.72C13.5 12.7379 14.3672 13.3817 15.25 13.4852V13.5H15.5V12C15.3187 12 15.1772 11.9391 15.0929 11.8697C15.0104 11.8018 15 11.7454 15 11.72V3.78C15 3.75458 15.0104 3.69823 15.0929 3.63029C15.1772 3.5609 15.3187 3.5 15.5 3.5V2Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/secondaryToolbarButton-scrollPage.svg b/page/static/js/web/images/secondaryToolbarButton-scrollPage.svg new file mode 100644 index 0000000..64a9f50 --- /dev/null +++ b/page/static/js/web/images/secondaryToolbarButton-scrollPage.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M3.5 2C3.5 1.72421 3.72421 1.5 4 1.5H12C12.2758 1.5 12.5 1.72421 12.5 2V14C12.5 14.2758 12.2758 14.5 12 14.5H4C3.72421 14.5 3.5 14.2758 3.5 14V2ZM4 0C2.89579 0 2 0.895786 2 2V14C2 15.1042 2.89579 16 4 16H12C13.1042 16 14 15.1042 14 14V2C14 0.895786 13.1042 0 12 0H4ZM5.89301 6H7.25V10H5.89301C5.54301 10 5.36801 10.423 5.61501 10.67L7.72101 12.776C7.87401 12.929 8.12301 12.929 8.27601 12.776L10.383 10.669C10.63 10.422 10.455 9.99902 10.105 9.99902H8.75V6H10.106C10.456 6 10.632 5.577 10.383 5.331L8.27601 3.224C8.12301 3.071 7.87401 3.071 7.72101 3.224L5.61501 5.33C5.36801 5.577 5.54301 6 5.89301 6Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/secondaryToolbarButton-scrollVertical.svg b/page/static/js/web/images/secondaryToolbarButton-scrollVertical.svg new file mode 100644 index 0000000..dc7e805 --- /dev/null +++ b/page/static/js/web/images/secondaryToolbarButton-scrollVertical.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M2 1V1.25H2.01476C2.11834 2.13279 2.7621 3 3.78 3H11.72C12.7379 3 13.3817 2.13279 13.4852 1.25H13.5V1H12C12 1.18133 11.9391 1.32279 11.8697 1.40708C11.8018 1.48961 11.7454 1.5 11.72 1.5H3.78C3.75458 1.5 3.69823 1.48961 3.63029 1.40708C3.5609 1.32279 3.5 1.18133 3.5 1H2ZM4 6C3.72386 6 3.5 6.22386 3.5 6.5V10C3.5 10.2761 3.72386 10.5 4 10.5H11.5C11.7761 10.5 12 10.2761 12 10V6.5C12 6.22386 11.7761 6 11.5 6H4ZM2 6.5C2 5.39543 2.89543 4.5 4 4.5H11.5C12.6046 4.5 13.5 5.39543 13.5 6.5V10C13.5 11.1046 12.6046 12 11.5 12H4C2.89543 12 2 11.1046 2 10V6.5ZM3.78 13.5C2.7621 13.5 2.11834 14.3672 2.01476 15.25H2V15.5H3.5C3.5 15.3187 3.5609 15.1772 3.63029 15.0929C3.69823 15.0104 3.75458 15 3.78 15H11.72C11.7454 15 11.8018 15.0104 11.8697 15.0929C11.9391 15.1772 12 15.3187 12 15.5H13.5V15.25H13.4852C13.3817 14.3672 12.7379 13.5 11.72 13.5H3.78Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/secondaryToolbarButton-scrollWrapped.svg b/page/static/js/web/images/secondaryToolbarButton-scrollWrapped.svg new file mode 100644 index 0000000..75fe26b --- /dev/null +++ b/page/static/js/web/images/secondaryToolbarButton-scrollWrapped.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M2.5 1C2.5 1.27579 2.72421 1.5 3 1.5H5C5.27579 1.5 5.5 1.27579 5.5 1H7C7 2.10421 6.10421 3 5 3H3C1.89579 3 1 2.10421 1 1H2.5ZM2.5 6C2.5 5.72421 2.72421 5.5 3 5.5H5C5.27579 5.5 5.5 5.72421 5.5 6V10C5.5 10.2758 5.27579 10.5 5 10.5H3C2.72421 10.5 2.5 10.2758 2.5 10V6ZM3 4C1.89579 4 1 4.89579 1 6V10C1 11.1042 1.89579 12 3 12H5C6.10421 12 7 11.1042 7 10V6C7 4.89579 6.10421 4 5 4H3ZM10 6C10 5.72421 10.2242 5.5 10.5 5.5H12.5C12.7758 5.5 13 5.72421 13 6V10C13 10.2758 12.7758 10.5 12.5 10.5H10.5C10.2242 10.5 10 10.2758 10 10V6ZM10.5 4C9.39579 4 8.5 4.89579 8.5 6V10C8.5 11.1042 9.39579 12 10.5 12H12.5C13.6042 12 14.5 11.1042 14.5 10V6C14.5 4.89579 13.6042 4 12.5 4H10.5ZM3 14.5C2.72421 14.5 2.5 14.7242 2.5 15H1C1 13.8958 1.89579 13 3 13H5C6.10421 13 7 13.8958 7 15H5.5C5.5 14.7242 5.27579 14.5 5 14.5H3ZM10 15C10 14.7242 10.2242 14.5 10.5 14.5H12.5C12.7758 14.5 13 14.7242 13 15H14.5C14.5 13.8958 13.6042 13 12.5 13H10.5C9.39579 13 8.5 13.8958 8.5 15H10ZM10.5 1.5C10.2242 1.5 10 1.27579 10 1H8.5C8.5 2.10421 9.39579 3 10.5 3H12.5C13.6042 3 14.5 2.10421 14.5 1H13C13 1.27579 12.7758 1.5 12.5 1.5H10.5Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/secondaryToolbarButton-selectTool.svg b/page/static/js/web/images/secondaryToolbarButton-selectTool.svg new file mode 100644 index 0000000..94d5141 --- /dev/null +++ b/page/static/js/web/images/secondaryToolbarButton-selectTool.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M0.371588 2.93131C-0.203366 1.33422 1.3342 -0.20335 2.93129 0.371603L2.93263 0.372085L12.0716 3.68171C12.0718 3.68178 12.0714 3.68163 12.0716 3.68171C13.4459 4.17758 13.8478 5.9374 12.8076 6.9776L11.8079 7.97727L14.6876 10.8569C15.4705 11.6398 15.4705 12.9047 14.6876 13.6876L13.6476 14.7276C12.8647 15.5105 11.5998 15.5105 10.8169 14.7276L7.93725 11.8479L6.97758 12.8076C5.93739 13.8478 4.17779 13.4465 3.68192 12.0722C3.68184 12.072 3.682 12.0724 3.68192 12.0722L0.371588 2.93131ZM1.78292 2.42323C1.78298 2.4234 1.78286 2.42305 1.78292 2.42323L5.09281 11.5629C5.21725 11.9082 5.65728 12.0066 5.91692 11.7469L7.93725 9.72661L11.8776 13.6669C12.0747 13.864 12.3898 13.864 12.5869 13.6669L13.6269 12.6269C13.824 12.4298 13.824 12.1147 13.6269 11.9176L9.68659 7.97727L11.7469 5.91694C12.0066 5.65729 11.9081 5.21727 11.5629 5.09283L11.5619 5.09245L2.42321 1.78293C2.42304 1.78287 2.42339 1.783 2.42321 1.78293C2.02067 1.63847 1.63846 2.02069 1.78292 2.42323Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/secondaryToolbarButton-spreadEven.svg b/page/static/js/web/images/secondaryToolbarButton-spreadEven.svg new file mode 100644 index 0000000..ce201e3 --- /dev/null +++ b/page/static/js/web/images/secondaryToolbarButton-spreadEven.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path fill-rule="evenodd" d="M2 3.5C1.72421 3.5 1.5 3.72421 1.5 4V12.5C1.5 12.7758 1.72421 13 2 13H7.25V3.5H2ZM14 13H8.75V3.5H14C14.2758 3.5 14.5 3.72421 14.5 4V12.5C14.5 12.7758 14.2758 13 14 13ZM0 4C0 2.89579 0.895786 2 2 2H14C15.1042 2 16 2.89579 16 4V12.5C16 13.6042 15.1042 14.5 14 14.5H2C0.895786 14.5 0 13.6042 0 12.5V4ZM10 6.5H11.5V7.5H10V9H11.5V10H10V11.5H12.25C12.6642 11.5 13 11.1642 13 10.75V5.75C13 5.33579 12.6642 5 12.25 5H10V6.5ZM4.5 6.5H3V5H5.25C5.66421 5 6 5.33579 6 5.75V7.75C6 8.03408 5.8395 8.29378 5.58541 8.42082L4.5 8.96353V10H6V11.5H3.75C3.33579 11.5 3 11.1642 3 10.75V8.5C3 8.21592 3.1605 7.95622 3.41459 7.82918L4.5 7.28647V6.5Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/secondaryToolbarButton-spreadNone.svg b/page/static/js/web/images/secondaryToolbarButton-spreadNone.svg new file mode 100644 index 0000000..e8d487f --- /dev/null +++ b/page/static/js/web/images/secondaryToolbarButton-spreadNone.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M4 1.5C3.72421 1.5 3.5 1.72421 3.5 2V14C3.5 14.2758 3.72421 14.5 4 14.5H12C12.2758 14.5 12.5 14.2758 12.5 14V2C12.5 1.72421 12.2758 1.5 12 1.5H4ZM2 2C2 0.895786 2.89579 0 4 0H12C13.1042 0 14 0.895786 14 2V14C14 15.1042 13.1042 16 12 16H4C2.89579 16 2 15.1042 2 14V2Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/secondaryToolbarButton-spreadOdd.svg b/page/static/js/web/images/secondaryToolbarButton-spreadOdd.svg new file mode 100644 index 0000000..9211a42 --- /dev/null +++ b/page/static/js/web/images/secondaryToolbarButton-spreadOdd.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M1.5 4C1.5 3.72421 1.72421 3.5 2 3.5H7.25V13H2C1.72421 13 1.5 12.7758 1.5 12.5V4ZM8.75 13V3.5H14C14.2758 3.5 14.5 3.72421 14.5 4V12.5C14.5 12.7758 14.2758 13 14 13H8.75ZM2 2C0.895786 2 0 2.89579 0 4V12.5C0 13.6042 0.895786 14.5 2 14.5H14C15.1042 14.5 16 13.6042 16 12.5V4C16 2.89579 15.1042 2 14 2H2ZM4.75 5H3V6.5H4V11.5H5.5V5.75C5.5 5.33579 5.16421 5 4.75 5ZM10 6.5H11.5V7.28647L10.4146 7.82918C10.1605 7.95622 10 8.21592 10 8.5V10.75C10 11.1642 10.3358 11.5 10.75 11.5H13V10H11.5V8.96353L12.5854 8.42082C12.8395 8.29378 13 8.03408 13 7.75V5.75C13 5.33579 12.6642 5 12.25 5H10V6.5Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/toolbarButton-bookmark.svg b/page/static/js/web/images/toolbarButton-bookmark.svg new file mode 100644 index 0000000..c4c37c9 --- /dev/null +++ b/page/static/js/web/images/toolbarButton-bookmark.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M2 3.5C1.72421 3.5 1.5 3.72421 1.5 4V12C1.5 12.2758 1.72421 12.5 2 12.5H14C14.2758 12.5 14.5 12.2758 14.5 12V4C14.5 3.72421 14.2758 3.5 14 3.5H2ZM0 4C0 2.89579 0.895786 2 2 2H14C15.1042 2 16 2.89579 16 4V12C16 13.1042 15.1042 14 14 14H2C0.895786 14 0 13.1042 0 12V4ZM8.75 8.75H7.25V7.25H8.75V8.75ZM8.00001 4.625C5.91142 4.625 4.14736 5.94291 3.45159 7.77847L3.36761 8L3.45159 8.22153C4.14736 10.0571 5.91142 11.375 8.00001 11.375C10.0886 11.375 11.8527 10.0571 12.5484 8.22153L12.6324 8L12.5484 7.77847C11.8527 5.94291 10.0886 4.625 8.00001 4.625ZM8.00001 10.125C6.53912 10.125 5.28508 9.25455 4.71282 8C5.28508 6.74545 6.53912 5.875 8.00001 5.875C9.4609 5.875 10.7149 6.74545 11.2872 8C10.7149 9.25455 9.4609 10.125 8.00001 10.125Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/toolbarButton-currentOutlineItem.svg b/page/static/js/web/images/toolbarButton-currentOutlineItem.svg new file mode 100644 index 0000000..01e6762 --- /dev/null +++ b/page/static/js/web/images/toolbarButton-currentOutlineItem.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M10.803 4.74998V6.02436C10.803 6.39302 10.3571 6.57793 10.0967 6.31753L7.87716 4.098C7.71566 3.93649 7.71566 3.67434 7.87716 3.51283L10.0967 1.29329C10.3571 1.0329 10.8036 1.21722 10.8036 1.58588V3.24998H15V4.74998H10.803ZM8 1.24998H3V2.74998H6.5L8 1.24998ZM6.5 5.24998H3V6.74998H8L6.5 5.24998ZM3 13.25H15V14.75H3V13.25ZM6 9.24998H15V10.75H6V9.24998ZM1.5 5.24998H0V6.74998H1.5V5.24998ZM0 13.25H1.5V14.75H0V13.25ZM1.5 1.24998H0V2.74998H1.5V1.24998ZM3 9.24998H4.5V10.75H3V9.24998Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/toolbarButton-download.svg b/page/static/js/web/images/toolbarButton-download.svg new file mode 100644 index 0000000..e2e850a --- /dev/null +++ b/page/static/js/web/images/toolbarButton-download.svg @@ -0,0 +1,4 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M9.79407 7.31811H7.86307C7.41807 7.31811 7.19407 7.85711 7.50907 8.17211L10.1911 10.8541C10.3861 11.0491 10.7031 11.0491 10.8981 10.8541L13.5801 8.17211C13.8951 7.85711 13.6721 7.31811 13.2261 7.31811H11.2941V4.38211H11.2961V3.13211H11.2941V2.30811H9.79407V3.13211H9.79107V4.38211H9.79507V7.31811H9.79407Z" fill="black"/> +<path d="M14 3.13208H12.796V4.38208H14C14.345 4.38208 14.625 4.66208 14.625 5.00708V13.0071C14.625 13.3521 14.345 13.6321 14 13.6321H2C1.655 13.6321 1.375 13.3521 1.375 13.0071V3.00708C1.375 2.66208 1.655 2.38208 2 2.38208H5.643C5.82 2.38208 5.989 2.45808 6.108 2.58908L7.536 4.17508C7.654 4.30708 7.823 4.38208 8 4.38208H8.291V3.13208H8.278L7.036 1.75208C6.681 1.35808 6.173 1.13208 5.642 1.13208H2C0.966 1.13208 0.125 1.97308 0.125 3.00708V13.0071C0.125 14.0411 0.966 14.8821 2 14.8821H14C15.034 14.8821 15.875 14.0411 15.875 13.0071V5.00708C15.875 3.97308 15.034 3.13208 14 3.13208Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/toolbarButton-editorFreeText.svg b/page/static/js/web/images/toolbarButton-editorFreeText.svg new file mode 100644 index 0000000..e4db3a5 --- /dev/null +++ b/page/static/js/web/images/toolbarButton-editorFreeText.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M8.625 2.942C8.625 2.725 8.735 2.527 8.918 2.412L10.026 1.72C10.126 1.658 10.24 1.625 10.358 1.625H12V0.375H10.358C10.006 0.375 9.663 0.474 9.364 0.66L8.256 1.353C8.161 1.412 8.081 1.488 8 1.562C7.918 1.488 7.839 1.412 7.744 1.353L6.635 0.66C6.336 0.474 5.993 0.375 5.642 0.375H4V1.625H5.642C5.759 1.625 5.874 1.658 5.974 1.72L7.082 2.412C7.266 2.527 7.376 2.725 7.376 2.942V8V13.058C7.376 13.275 7.266 13.473 7.082 13.588L5.973 14.28C5.873 14.342 5.759 14.375 5.641 14.375H4V15.625H5.642C5.994 15.625 6.337 15.526 6.636 15.34L7.744 14.648C7.84 14.588 7.919 14.512 8 14.439C8.081 14.512 8.161 14.588 8.256 14.648L9.365 15.341C9.664 15.527 10.007 15.626 10.359 15.626H12V14.376H10.358C10.241 14.376 10.126 14.343 10.026 14.281L8.918 13.589C8.734 13.474 8.625 13.276 8.625 13.059V8V2.942Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/toolbarButton-editorInk.svg b/page/static/js/web/images/toolbarButton-editorInk.svg new file mode 100644 index 0000000..b579eec --- /dev/null +++ b/page/static/js/web/images/toolbarButton-editorInk.svg @@ -0,0 +1,4 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M2.49913 12.6251C2.61913 12.6251 2.73913 12.6051 2.85713 12.5661L6.29013 11.4201L13.2891 4.4221C14.0191 3.6911 14.0191 2.5011 13.2891 1.7701L12.2291 0.710098C11.4971 -0.0199023 10.3091 -0.0199023 9.57713 0.710098L2.57813 7.7091L1.43313 11.1451C1.29813 11.5511 1.40213 11.9931 1.70513 12.2951C1.92113 12.5101 2.20613 12.6251 2.49913 12.6251ZM10.4611 1.5951C10.7031 1.3511 11.1021 1.3511 11.3441 1.5951L12.4051 2.6561C12.6491 2.8991 12.6491 3.2961 12.4051 3.5391L11.3401 4.6051L9.39513 2.6601L10.4611 1.5951ZM3.67013 8.3851L8.51013 3.5451L10.4541 5.4891L5.61413 10.3301L2.69713 11.3031L3.67013 8.3851Z" fill="black"/> +<path d="M14.8169 13.314L13.0229 13.862C12.3309 14.073 11.5909 14.111 10.8859 13.968L8.80391 13.551C7.58491 13.308 6.29791 13.48 5.18491 14.036C3.95291 14.652 2.46691 14.412 1.49191 13.436L1.44091 13.385L0.60791 14.321C1.46291 15.175 2.59991 15.625 3.75291 15.625C4.42891 15.625 5.10991 15.471 5.74391 15.153C6.60891 14.721 7.60891 14.586 8.55891 14.777L10.6409 15.194C11.5509 15.376 12.5009 15.327 13.3879 15.056L15.1819 14.508L14.8169 13.314Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/toolbarButton-menuArrow.svg b/page/static/js/web/images/toolbarButton-menuArrow.svg new file mode 100644 index 0000000..82ffeaa --- /dev/null +++ b/page/static/js/web/images/toolbarButton-menuArrow.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M8.23336 10.4664L11.8474 6.85339C11.894 6.8071 11.931 6.75203 11.9563 6.69136C11.9816 6.63069 11.9946 6.56562 11.9946 6.49989C11.9946 6.43417 11.9816 6.3691 11.9563 6.30843C11.931 6.24776 11.894 6.19269 11.8474 6.14639C11.7536 6.05266 11.6264 6 11.4939 6C11.3613 6 11.2341 6.05266 11.1404 6.14639L7.99236 9.29339L4.84736 6.14739C4.75305 6.05631 4.62675 6.00592 4.49566 6.00706C4.36456 6.0082 4.23915 6.06078 4.14645 6.15348C4.05374 6.24619 4.00116 6.37159 4.00002 6.50269C3.99888 6.63379 4.04928 6.76009 4.14036 6.85439L7.75236 10.4674L8.23336 10.4664Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/toolbarButton-openFile.svg b/page/static/js/web/images/toolbarButton-openFile.svg new file mode 100644 index 0000000..e773781 --- /dev/null +++ b/page/static/js/web/images/toolbarButton-openFile.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M10.4287 1.08398C10.5111 1.02905 10.608 0.999824 10.707 1H14.7L15 1.3V5.293C15 5.39194 14.9706 5.48864 14.9156 5.57088C14.8606 5.65311 14.7824 5.71718 14.691 5.75498C14.5996 5.79277 14.499 5.80259 14.402 5.78319C14.3049 5.76379 14.2159 5.71605 14.146 5.646L12.973 4.473L12.692 4.192L9.067 7.817C8.94923 7.93347 8.79034 7.99888 8.6247 7.99907C8.45907 7.99925 8.30003 7.93421 8.182 7.818C8.06518 7.70036 7.99962 7.54129 7.99962 7.3755C7.99962 7.20971 8.06518 7.05065 8.182 6.933L11.807 3.308L10.353 1.854C10.2829 1.78407 10.2351 1.6949 10.2158 1.59779C10.1964 1.50068 10.2063 1.40001 10.2442 1.30854C10.2821 1.21707 10.3464 1.13891 10.4287 1.08398ZM7.81694 2.06694C7.69973 2.18415 7.54076 2.25 7.375 2.25H2.85L2.25 2.85V13.15L2.85 13.75H13.15L13.75 13.15V8.625C13.75 8.45924 13.8158 8.30027 13.9331 8.18306C14.0503 8.06585 14.2092 8 14.375 8C14.5408 8 14.6997 8.06585 14.8169 8.18306C14.9342 8.30027 15 8.45924 15 8.625V13C15 13.5304 14.7893 14.0391 14.4142 14.4142C14.0391 14.7893 13.5304 15 13 15H3C2.46957 15 1.96086 14.7893 1.58579 14.4142C1.21071 14.0391 1 13.5304 1 13V3C1 2.46957 1.21071 1.96086 1.58579 1.58579C1.96086 1.21071 2.46957 1 3 1H7.375C7.54076 1 7.69973 1.06585 7.81694 1.18306C7.93415 1.30027 8 1.45924 8 1.625C8 1.79076 7.93415 1.94973 7.81694 2.06694Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/toolbarButton-pageDown.svg b/page/static/js/web/images/toolbarButton-pageDown.svg new file mode 100644 index 0000000..1fc12e7 --- /dev/null +++ b/page/static/js/web/images/toolbarButton-pageDown.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M8.35176 10.9989L13.8178 5.53391C13.876 5.47594 13.9222 5.40702 13.9537 5.33113C13.9851 5.25524 14.0013 5.17387 14.0012 5.0917C14.0011 5.00954 13.9848 4.9282 13.9531 4.85238C13.9215 4.77656 13.8751 4.70775 13.8168 4.64991C13.6991 4.53309 13.5401 4.46753 13.3743 4.46753C13.2085 4.46753 13.0494 4.53309 12.9318 4.64991L7.99776 9.58491L3.06776 4.65091C2.9494 4.53853 2.79183 4.47682 2.62863 4.47894C2.46542 4.48106 2.3095 4.54683 2.19409 4.66224C2.07868 4.77765 2.01291 4.93357 2.01079 5.09677C2.00868 5.25997 2.07039 5.41754 2.18276 5.53591L7.64776 10.9999L8.35176 10.9989Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/toolbarButton-pageUp.svg b/page/static/js/web/images/toolbarButton-pageUp.svg new file mode 100644 index 0000000..0936b9a --- /dev/null +++ b/page/static/js/web/images/toolbarButton-pageUp.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M8.35179 5.001L13.8178 10.466C13.876 10.524 13.9222 10.5929 13.9537 10.6688C13.9852 10.7447 14.0013 10.826 14.0012 10.9082C14.0011 10.9904 13.9848 11.0717 13.9531 11.1475C13.9215 11.2234 13.8751 11.2922 13.8168 11.35C13.6991 11.4668 13.5401 11.5324 13.3743 11.5324C13.2085 11.5324 13.0494 11.4668 12.9318 11.35L7.99879 6.416L3.06679 11.349C2.94842 11.4614 2.79085 11.5231 2.62765 11.521C2.46445 11.5189 2.30853 11.4531 2.19312 11.3377C2.07771 11.2223 2.01193 11.0663 2.00982 10.9031C2.0077 10.7399 2.06941 10.5824 2.18179 10.464L7.64779 5L8.35179 5.001Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/toolbarButton-presentationMode.svg b/page/static/js/web/images/toolbarButton-presentationMode.svg new file mode 100644 index 0000000..901d567 --- /dev/null +++ b/page/static/js/web/images/toolbarButton-presentationMode.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M1.5 3C1.5 2.72421 1.72421 2.5 2 2.5H14C14.2758 2.5 14.5 2.72421 14.5 3V11C14.5 11.2758 14.2758 11.5 14 11.5H2C1.72421 11.5 1.5 11.2758 1.5 11V3ZM2 1C0.895786 1 0 1.89579 0 3V11C0 12.1042 0.895786 13 2 13H2.64979L1.35052 15.2499L2.64949 16L4.38194 13H11.6391L13.3715 16L14.6705 15.2499L13.3712 13H14C15.1042 13 16 12.1042 16 11V3C16 1.89579 15.1042 1 14 1H2ZM5.79501 4.64401V9.35601C5.79501 9.85001 6.32901 10.159 6.75701 9.91401L10.88 7.55801C11.312 7.31201 11.312 6.68901 10.88 6.44201L6.75701 4.08601C6.32801 3.84101 5.79501 4.15001 5.79501 4.64401Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/toolbarButton-print.svg b/page/static/js/web/images/toolbarButton-print.svg new file mode 100644 index 0000000..97a3904 --- /dev/null +++ b/page/static/js/web/images/toolbarButton-print.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M13 4H12V2C12 1.46957 11.7893 0.960859 11.4142 0.585786C11.0391 0.210714 10.5304 0 10 0L6 0C5.46957 0 4.96086 0.210714 4.58579 0.585786C4.21071 0.960859 4 1.46957 4 2V4H3C2.46957 4 1.96086 4.21071 1.58579 4.58579C1.21071 4.96086 1 5.46957 1 6V11C1 11.5304 1.21071 12.0391 1.58579 12.4142C1.96086 12.7893 2.46957 13 3 13H4V14C4 14.5304 4.21071 15.0391 4.58579 15.4142C4.96086 15.7893 5.46957 16 6 16H10C10.5304 16 11.0391 15.7893 11.4142 15.4142C11.7893 15.0391 12 14.5304 12 14V13H13C13.5304 13 14.0391 12.7893 14.4142 12.4142C14.7893 12.0391 15 11.5304 15 11V6C15 5.46957 14.7893 4.96086 14.4142 4.58579C14.0391 4.21071 13.5304 4 13 4V4ZM10.75 14.15L10.15 14.75H5.85L5.25 14.15V10H10.75V14.15ZM10.75 4H5.25V1.85L5.85 1.25H10.15L10.75 1.85V4V4ZM13 7.6L12.6 8H11.4L11 7.6V6.4L11.4 6H12.6L13 6.4V7.6Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/toolbarButton-search.svg b/page/static/js/web/images/toolbarButton-search.svg new file mode 100644 index 0000000..0cc7ae2 --- /dev/null +++ b/page/static/js/web/images/toolbarButton-search.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M10.089 10.973L13.934 14.817C13.9918 14.8754 14.0605 14.9218 14.1364 14.9534C14.2122 14.9851 14.2936 15.0013 14.3757 15.0012C14.4579 15.0011 14.5392 14.9847 14.6149 14.9529C14.6907 14.9211 14.7594 14.8746 14.817 14.816C14.875 14.7579 14.921 14.6889 14.9523 14.613C14.9836 14.5372 14.9997 14.4559 14.9996 14.3738C14.9995 14.2917 14.9833 14.2104 14.9518 14.1346C14.9203 14.0588 14.8741 13.99 14.816 13.932L10.983 10.1L10.989 9.67299C11.489 8.96674 11.8152 8.15249 11.9413 7.29642C12.0674 6.44034 11.9897 5.5666 11.7145 4.74621C11.4394 3.92582 10.9745 3.18192 10.3578 2.57498C9.74104 1.96804 8.98979 1.51519 8.16509 1.25322C7.34039 0.991255 6.46551 0.927572 5.61157 1.06735C4.75763 1.20712 3.94871 1.54641 3.25057 2.05764C2.55243 2.56887 1.98476 3.23761 1.59371 4.0095C1.20265 4.7814 0.999236 5.63468 1 6.49999C1 7.95868 1.57946 9.35763 2.61091 10.3891C3.64236 11.4205 5.04131 12 6.5 12C7.689 12 8.788 11.62 9.687 10.978L10.089 10.973V10.973ZM6.5 10.75C4.157 10.75 2.25 8.84299 2.25 6.49999C2.25 4.15699 4.157 2.24999 6.5 2.24999C8.843 2.24999 10.75 4.15699 10.75 6.49999C10.75 8.84299 8.843 10.75 6.5 10.75Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/toolbarButton-secondaryToolbarToggle.svg b/page/static/js/web/images/toolbarButton-secondaryToolbarToggle.svg new file mode 100644 index 0000000..cace863 --- /dev/null +++ b/page/static/js/web/images/toolbarButton-secondaryToolbarToggle.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M2.53406 13.818L7.99906 8.35203L8.00006 7.64703L2.53606 2.18203C2.41769 2.06965 2.26012 2.00795 2.09692 2.01006C1.93372 2.01218 1.7778 2.07795 1.66239 2.19336C1.54698 2.30877 1.48121 2.46469 1.47909 2.62789C1.47697 2.79109 1.53868 2.94867 1.65106 3.06703L6.58506 7.99803L1.65006 12.932C1.53754 13.0503 1.47565 13.2078 1.47758 13.371C1.47951 13.5342 1.54511 13.6902 1.66039 13.8057C1.77567 13.9213 1.93152 13.9872 2.09472 13.9895C2.25792 13.9918 2.41557 13.9303 2.53406 13.818ZM8.53406 13.818L13.9991 8.35203L14.0001 7.64703L8.53606 2.18203C8.4177 2.06965 8.26012 2.00795 8.09692 2.01006C7.93372 2.01218 7.7778 2.07795 7.66239 2.19336C7.54698 2.30877 7.48121 2.46469 7.47909 2.62789C7.47697 2.79109 7.53868 2.94867 7.65106 3.06703L12.5851 7.99803L7.65006 12.932C7.53754 13.0503 7.47565 13.2078 7.47758 13.371C7.47951 13.5342 7.54511 13.6902 7.66039 13.8057C7.77567 13.9213 7.93152 13.9872 8.09472 13.9895C8.25792 13.9918 8.41557 13.9303 8.53406 13.818Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/toolbarButton-sidebarToggle.svg b/page/static/js/web/images/toolbarButton-sidebarToggle.svg new file mode 100644 index 0000000..1d8d0e4 --- /dev/null +++ b/page/static/js/web/images/toolbarButton-sidebarToggle.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path fill-rule="evenodd" d="M16 4V12.25C16 12.7804 15.7893 13.2891 15.4142 13.6642C15.0391 14.0393 14.5304 14.25 14 14.25H2C1.46957 14.25 0.960859 14.0393 0.585786 13.6642C0.210714 13.2891 0 12.7804 0 12.25V4C0 3.46957 0.210714 2.96086 0.585786 2.58579C0.960859 2.21071 1.46957 2 2 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4ZM1.25 3.85V12.4L1.85 13H6.75V3.25H1.85L1.25 3.85ZM14.15 13H8V3.25H14.15L14.75 3.85V12.4L14.15 13ZM5.35355 10.1464C5.44732 10.2402 5.5 10.3674 5.5 10.5C5.5 10.6326 5.44732 10.7598 5.35355 10.8536C5.25979 10.9473 5.13261 11 5 11H3C2.86739 11 2.74021 10.9473 2.64645 10.8536C2.55268 10.7598 2.5 10.6326 2.5 10.5C2.5 10.3674 2.55268 10.2402 2.64645 10.1464C2.74021 10.0527 2.86739 10 3 10H5C5.13261 10 5.25979 10.0527 5.35355 10.1464ZM5.5 8C5.5 7.86739 5.44732 7.74021 5.35355 7.64645C5.25979 7.55268 5.13261 7.5 5 7.5H3C2.86739 7.5 2.74021 7.55268 2.64645 7.64645C2.55268 7.74021 2.5 7.86739 2.5 8C2.5 8.13261 2.55268 8.25979 2.64645 8.35355C2.74021 8.44732 2.86739 8.5 3 8.5H5C5.13261 8.5 5.25979 8.44732 5.35355 8.35355C5.44732 8.25979 5.5 8.13261 5.5 8ZM5.35355 5.14645C5.44732 5.24021 5.5 5.36739 5.5 5.5C5.5 5.63261 5.44732 5.75979 5.35355 5.85355C5.25979 5.94732 5.13261 6 5 6H3C2.86739 6 2.74021 5.94732 2.64645 5.85355C2.55268 5.75979 2.5 5.63261 2.5 5.5C2.5 5.36739 2.55268 5.24021 2.64645 5.14645C2.74021 5.05268 2.86739 5 3 5H5C5.13261 5 5.25979 5.05268 5.35355 5.14645Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/toolbarButton-viewAttachments.svg b/page/static/js/web/images/toolbarButton-viewAttachments.svg new file mode 100644 index 0000000..ab73f6e --- /dev/null +++ b/page/static/js/web/images/toolbarButton-viewAttachments.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M3.5 3.75C3.5 1.67879 5.17879 0 7.25 0C9.32121 0 11 1.67879 11 3.75V10.25C11 11.4922 9.99221 12.5 8.75 12.5C7.50779 12.5 6.5 11.4922 6.5 10.25V3.5H8V10.25C8 10.6638 8.33621 11 8.75 11C9.16379 11 9.5 10.6638 9.5 10.25V3.75C9.5 2.50721 8.49279 1.5 7.25 1.5C6.00721 1.5 5 2.50721 5 3.75V10.75C5 12.8208 6.67921 14.5 8.75 14.5C10.8208 14.5 12.5 12.8208 12.5 10.75V3.5H14V10.75C14 13.6492 11.6492 16 8.75 16C5.85079 16 3.5 13.6492 3.5 10.75V3.75Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/toolbarButton-viewLayers.svg b/page/static/js/web/images/toolbarButton-viewLayers.svg new file mode 100644 index 0000000..1d72668 --- /dev/null +++ b/page/static/js/web/images/toolbarButton-viewLayers.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M8.36645 2.34562C8.13878 2.21813 7.86122 2.21813 7.63355 2.34562L1.38355 5.84562C1.14669 5.97826 1 6.22853 1 6.5C1 6.77147 1.14669 7.02174 1.38355 7.15438L7.63355 10.6544C7.86122 10.7819 8.13878 10.7819 8.36645 10.6544L14.6165 7.15438C14.8533 7.02174 15 6.77147 15 6.5C15 6.22853 14.8533 5.97826 14.6165 5.84562L8.36645 2.34562ZM8 9.14041L3.28499 6.5L8 3.85959L12.715 6.5L8 9.14041ZM1.63647 9.0766L7.99999 12.6404L14.3255 9.09761L15.0585 10.4063L8.36649 14.1543C8.13881 14.2818 7.86122 14.2819 7.63353 14.1543L0.903534 10.3853L1.63647 9.0766Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/toolbarButton-viewOutline.svg b/page/static/js/web/images/toolbarButton-viewOutline.svg new file mode 100644 index 0000000..7ed1bd9 --- /dev/null +++ b/page/static/js/web/images/toolbarButton-viewOutline.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M3 1.25H15V2.75H3V1.25ZM15 5.25H3V6.75H15V5.25ZM15 13.25H3V14.75H15V13.25ZM15 9.25H6V10.75H15V9.25ZM0 5.25H1.5V6.75H0V5.25ZM1.5 13.25H0V14.75H1.5V13.25ZM0 1.25H1.5V2.75H0V1.25ZM4.5 9.25H3V10.75H4.5V9.25Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/toolbarButton-viewThumbnail.svg b/page/static/js/web/images/toolbarButton-viewThumbnail.svg new file mode 100644 index 0000000..040d123 --- /dev/null +++ b/page/static/js/web/images/toolbarButton-viewThumbnail.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M3.5 2C3.5 1.72421 3.72421 1.5 4 1.5H5.25C5.52579 1.5 5.75 1.72421 5.75 2V5.25C5.75 5.52579 5.52579 5.75 5.25 5.75H4C3.72421 5.75 3.5 5.52579 3.5 5.25V2ZM4 0C2.89579 0 2 0.895786 2 2V5.25C2 6.35421 2.89579 7.25 4 7.25H5.25C6.35421 7.25 7.25 6.35421 7.25 5.25V2C7.25 0.895786 6.35421 0 5.25 0H4ZM3.5 10.75C3.5 10.4742 3.72421 10.25 4 10.25H5.25C5.52579 10.25 5.75 10.4742 5.75 10.75V14C5.75 14.2758 5.52579 14.5 5.25 14.5H4C3.72421 14.5 3.5 14.2758 3.5 14V10.75ZM4 8.75C2.89579 8.75 2 9.64579 2 10.75V14C2 15.1042 2.89579 16 4 16H5.25C6.35421 16 7.25 15.1042 7.25 14V10.75C7.25 9.64579 6.35421 8.75 5.25 8.75H4ZM10.75 1.5C10.4742 1.5 10.25 1.72421 10.25 2V5.25C10.25 5.52579 10.4742 5.75 10.75 5.75H12C12.2758 5.75 12.5 5.52579 12.5 5.25V2C12.5 1.72421 12.2758 1.5 12 1.5H10.75ZM8.75 2C8.75 0.895786 9.64579 0 10.75 0H12C13.1042 0 14 0.895786 14 2V5.25C14 6.35421 13.1042 7.25 12 7.25H10.75C9.64579 7.25 8.75 6.35421 8.75 5.25V2ZM10.25 10.75C10.25 10.4742 10.4742 10.25 10.75 10.25H12C12.2758 10.25 12.5 10.4742 12.5 10.75V14C12.5 14.2758 12.2758 14.5 12 14.5H10.75C10.4742 14.5 10.25 14.2758 10.25 14V10.75ZM10.75 8.75C9.64579 8.75 8.75 9.64579 8.75 10.75V14C8.75 15.1042 9.64579 16 10.75 16H12C13.1042 16 14 15.1042 14 14V10.75C14 9.64579 13.1042 8.75 12 8.75H10.75Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/toolbarButton-zoomIn.svg b/page/static/js/web/images/toolbarButton-zoomIn.svg new file mode 100644 index 0000000..30ec51a --- /dev/null +++ b/page/static/js/web/images/toolbarButton-zoomIn.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M7.00488 9.75V14C7.00488 14.1658 7.07073 14.3247 7.18794 14.4419C7.30515 14.5592 7.46412 14.625 7.62988 14.625C7.79564 14.625 7.95461 14.5592 8.07183 14.4419C8.18904 14.3247 8.25488 14.1658 8.25488 14V9.75L8.75488 9.25H13.0049C13.1706 9.25 13.3296 9.18415 13.4468 9.06694C13.564 8.94973 13.6299 8.79076 13.6299 8.625C13.6299 8.45924 13.564 8.30027 13.4468 8.18306C13.3296 8.06585 13.1706 8 13.0049 8H8.75488L8.25488 7.5V3.25C8.25488 3.08424 8.18904 2.92527 8.07183 2.80806C7.95461 2.69085 7.79564 2.625 7.62988 2.625C7.46412 2.625 7.30515 2.69085 7.18794 2.80806C7.07073 2.92527 7.00488 3.08424 7.00488 3.25V7.5L6.50488 8H2.25488C2.08912 8 1.93015 8.06585 1.81294 8.18306C1.69573 8.30027 1.62988 8.45924 1.62988 8.625C1.62988 8.79076 1.69573 8.94973 1.81294 9.06694C1.93015 9.18415 2.08912 9.25 2.25488 9.25H6.39188L7.00488 9.75Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/toolbarButton-zoomOut.svg b/page/static/js/web/images/toolbarButton-zoomOut.svg new file mode 100644 index 0000000..f273b59 --- /dev/null +++ b/page/static/js/web/images/toolbarButton-zoomOut.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M13.375 9.25C13.5408 9.25 13.6997 9.18415 13.8169 9.06694C13.9342 8.94973 14 8.79076 14 8.625C14 8.45924 13.9342 8.30027 13.8169 8.18306C13.6997 8.06585 13.5408 8 13.375 8H2.625C2.45924 8 2.30027 8.06585 2.18306 8.18306C2.06585 8.30027 2 8.45924 2 8.625C2 8.79076 2.06585 8.94973 2.18306 9.06694C2.30027 9.18415 2.45924 9.25 2.625 9.25H13.375Z" fill="black"/> +</svg> diff --git a/page/static/js/web/images/treeitem-collapsed.svg b/page/static/js/web/images/treeitem-collapsed.svg new file mode 100644 index 0000000..831cddf --- /dev/null +++ b/page/static/js/web/images/treeitem-collapsed.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M13 9L6 5v8z"/></svg> \ No newline at end of file diff --git a/page/static/js/web/images/treeitem-expanded.svg b/page/static/js/web/images/treeitem-expanded.svg new file mode 100644 index 0000000..2d45f0c --- /dev/null +++ b/page/static/js/web/images/treeitem-expanded.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M10 13l4-7H6z"/></svg> \ No newline at end of file diff --git a/page/static/js/web/locale/ach/viewer.properties b/page/static/js/web/locale/ach/viewer.properties new file mode 100644 index 0000000..2d04fd0 --- /dev/null +++ b/page/static/js/web/locale/ach/viewer.properties @@ -0,0 +1,200 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pot buk mukato +previous_label=Mukato +next.title=Pot buk malubo +next_label=Malubo + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pot buk +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=pi {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} me {{pagesCount}}) + +zoom_out.title=Jwik Matidi +zoom_out_label=Jwik Matidi +zoom_in.title=Kwot Madit +zoom_in_label=Kwot Madit +zoom.title=Kwoti +presentation_mode.title=Lokke i kit me tyer +presentation_mode_label=Kit me tyer +open_file.title=Yab Pwail +open_file_label=Yab +print.title=Go +print_label=Go +download.title=Gam +download_label=Gam +bookmark.title=Neno ma kombedi (lok onyo yab i dirica manyen) +bookmark_label=Neno ma kombedi + +# Secondary toolbar and context menu +tools.title=Gintic +tools_label=Gintic +first_page.title=Cit i pot buk mukwongo +first_page_label=Cit i pot buk mukwongo +last_page.title=Cit i pot buk magiko +last_page_label=Cit i pot buk magiko +page_rotate_cw.title=Wire i tung lacuc +page_rotate_cw_label=Wire i tung lacuc +page_rotate_ccw.title=Wire i tung lacam +page_rotate_ccw_label=Wire i tung lacam + +cursor_text_select_tool.title=Cak gitic me yero coc +cursor_text_select_tool_label=Gitic me yero coc +cursor_hand_tool.title=Cak gitic me cing +cursor_hand_tool_label=Gitic cing + + + +# Document properties dialog box +document_properties.title=Jami me gin acoya… +document_properties_label=Jami me gin acoya… +document_properties_file_name=Nying pwail: +document_properties_file_size=Dit pa pwail: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Wiye: +document_properties_author=Ngat mucoyo: +document_properties_subject=Subjek: +document_properties_keywords=Lok mapire tek: +document_properties_creation_date=Nino dwe me cwec: +document_properties_modification_date=Nino dwe me yub: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Lacwec: +document_properties_producer=Layub PDF: +document_properties_version=Kit PDF: +document_properties_page_count=Kwan me pot buk: +document_properties_page_size=Dit pa potbuk: +document_properties_page_size_unit_inches=i +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=atir +document_properties_page_size_orientation_landscape=arii +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Waraga +document_properties_page_size_name_legal=Cik +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized_yes=Eyo +document_properties_linearized_no=Pe +document_properties_close=Lor + +print_progress_message=Yubo coc me agoya… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Juki + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Lok gintic ma inget +toggle_sidebar_label=Lok gintic ma inget +document_outline.title=Nyut Wiyewiye me Gin acoya (dii-kiryo me yaro/kano jami weng) +document_outline_label=Pek pa gin acoya +attachments.title=Nyut twec +attachments_label=Twec +thumbs.title=Nyut cal +thumbs_label=Cal +findbar.title=Nong iye gin acoya +findbar_label=Nong + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pot buk {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Cal me pot buk {{page}} + +# Find panel button title and messages +find_input.title=Nong +find_input.placeholder=Nong i dokumen… +find_previous.title=Nong timme pa lok mukato +find_previous_label=Mukato +find_next.title=Nong timme pa lok malubo +find_next_label=Malubo +find_highlight=Wer weng +find_match_case_label=Lok marwate +find_reached_top=Oo iwi gin acoya, omede ki i tere +find_reached_bottom=Oo i agiki me gin acoya, omede ki iwiye +find_not_found=Lok pe ononge + +# Error panel labels +error_more_info=Ngec Mukene +error_less_info=Ngec Manok +error_close=Lor +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Kwena: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Can kikore {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Pwail: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Rek: {{line}} +rendering_error=Bal otime i kare me nyuto pot buk. + +# Predefined zoom values +page_scale_width=Lac me iye pot buk +page_scale_fit=Porre me pot buk +page_scale_auto=Kwot pire kene +page_scale_actual=Dite kikome +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=Bal otime kun cano PDF. +invalid_file_error=Pwail me PDF ma pe atir onyo obale woko. +missing_file_error=Pwail me PDF tye ka rem. +unexpected_response_error=Lagam mape kigeno pa lapok tic. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Lok angea manok] +password_label=Ket mung me donyo me yabo pwail me PDF man. +password_invalid=Mung me donyo pe atir. Tim ber i tem doki. +password_ok=OK +password_cancel=Juki + +printing_not_supported=Ciko: Layeny ma pe teno goyo liweng. +printing_not_ready=Ciko: PDF pe ocane weng me agoya. +web_fonts_disabled=Kijuko dit pa coc me kakube woko: pe romo tic ki dit pa coc me PDF ma kiketo i kine. + diff --git a/page/static/js/web/locale/af/viewer.properties b/page/static/js/web/locale/af/viewer.properties new file mode 100644 index 0000000..7c8e485 --- /dev/null +++ b/page/static/js/web/locale/af/viewer.properties @@ -0,0 +1,177 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Vorige bladsy +previous_label=Vorige +next.title=Volgende bladsy +next_label=Volgende + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Bladsy +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=van {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} van {{pagesCount}}) + +zoom_out.title=Zoem uit +zoom_out_label=Zoem uit +zoom_in.title=Zoem in +zoom_in_label=Zoem in +zoom.title=Zoem +presentation_mode.title=Wissel na voorleggingsmodus +presentation_mode_label=Voorleggingsmodus +open_file.title=Open lêer +open_file_label=Open +print.title=Druk +print_label=Druk +download.title=Laai af +download_label=Laai af +bookmark.title=Huidige aansig (kopieer of open in nuwe venster) +bookmark_label=Huidige aansig + +# Secondary toolbar and context menu +tools.title=Nutsgoed +tools_label=Nutsgoed +first_page.title=Gaan na eerste bladsy +first_page_label=Gaan na eerste bladsy +last_page.title=Gaan na laaste bladsy +last_page_label=Gaan na laaste bladsy +page_rotate_cw.title=Roteer kloksgewys +page_rotate_cw_label=Roteer kloksgewys +page_rotate_ccw.title=Roteer anti-kloksgewys +page_rotate_ccw_label=Roteer anti-kloksgewys + +cursor_text_select_tool.title=Aktiveer gereedskap om teks te merk +cursor_text_select_tool_label=Teksmerkgereedskap +cursor_hand_tool.title=Aktiveer handjie +cursor_hand_tool_label=Handjie + +# Document properties dialog box +document_properties.title=Dokumenteienskappe… +document_properties_label=Dokumenteienskappe… +document_properties_file_name=Lêernaam: +document_properties_file_size=Lêergrootte: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} kG ({{size_b}} grepe) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MG ({{size_b}} grepe) +document_properties_title=Titel: +document_properties_author=Outeur: +document_properties_subject=Onderwerp: +document_properties_keywords=Sleutelwoorde: +document_properties_creation_date=Skeppingsdatum: +document_properties_modification_date=Wysigingsdatum: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Skepper: +document_properties_producer=PDF-vervaardiger: +document_properties_version=PDF-weergawe: +document_properties_page_count=Aantal bladsye: +document_properties_close=Sluit + +print_progress_message=Berei tans dokument voor om te druk… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Kanselleer + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Sypaneel aan/af +toggle_sidebar_label=Sypaneel aan/af +document_outline.title=Wys dokumentskema (dubbelklik om alle items oop/toe te vou) +document_outline_label=Dokumentoorsig +attachments.title=Wys aanhegsels +attachments_label=Aanhegsels +thumbs.title=Wys duimnaels +thumbs_label=Duimnaels +findbar.title=Soek in dokument +findbar_label=Vind + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Bladsy {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Duimnael van bladsy {{page}} + +# Find panel button title and messages +find_input.title=Vind +find_input.placeholder=Soek in dokument… +find_previous.title=Vind die vorige voorkoms van die frase +find_previous_label=Vorige +find_next.title=Vind die volgende voorkoms van die frase +find_next_label=Volgende +find_highlight=Verlig almal +find_match_case_label=Kassensitief +find_reached_top=Bokant van dokument is bereik; gaan voort van onder af +find_reached_bottom=Einde van dokument is bereik; gaan voort van bo af +find_not_found=Frase nie gevind nie + +# Error panel labels +error_more_info=Meer inligting +error_less_info=Minder inligting +error_close=Sluit +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (ID: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Boodskap: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stapel: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Lêer: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Lyn: {{line}} +rendering_error='n Fout het voorgekom toe die bladsy weergegee is. + +# Predefined zoom values +page_scale_width=Bladsywydte +page_scale_fit=Pas bladsy +page_scale_auto=Outomatiese zoem +page_scale_actual=Werklike grootte +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error='n Fout het voorgekom met die laai van die PDF. +invalid_file_error=Ongeldige of korrupte PDF-lêer. +missing_file_error=PDF-lêer is weg. +unexpected_response_error=Onverwagse antwoord van bediener. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}}-annotasie] +password_label=Gee die wagwoord om dié PDF-lêer mee te open. +password_invalid=Ongeldige wagwoord. Probeer gerus weer. +password_ok=OK +password_cancel=Kanselleer + +printing_not_supported=Waarskuwing: Dié blaaier ondersteun nie drukwerk ten volle nie. +printing_not_ready=Waarskuwing: Die PDF is nog nie volledig gelaai vir drukwerk nie. +web_fonts_disabled=Webfonte is gedeaktiveer: kan nie PDF-fonte wat ingebed is, gebruik nie. + diff --git a/page/static/js/web/locale/an/viewer.properties b/page/static/js/web/locale/an/viewer.properties new file mode 100644 index 0000000..a33eb65 --- /dev/null +++ b/page/static/js/web/locale/an/viewer.properties @@ -0,0 +1,243 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pachina anterior +previous_label=Anterior +next.title=Pachina siguient +next_label=Siguient + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pachina +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Achiquir +zoom_out_label=Achiquir +zoom_in.title=Agrandir +zoom_in_label=Agrandir +zoom.title=Grandaria +presentation_mode.title=Cambear t'o modo de presentación +presentation_mode_label=Modo de presentación +open_file.title=Ubrir o fichero +open_file_label=Ubrir +print.title=Imprentar +print_label=Imprentar +download.title=Descargar +download_label=Descargar +bookmark.title=Vista actual (copiar u ubrir en una nueva finestra) +bookmark_label=Vista actual + +# Secondary toolbar and context menu +tools.title=Ferramientas +tools_label=Ferramientas +first_page.title=Ir ta la primer pachina +first_page_label=Ir ta la primer pachina +last_page.title=Ir ta la zaguer pachina +last_page_label=Ir ta la zaguer pachina +page_rotate_cw.title=Chirar enta la dreita +page_rotate_cw_label=Chira enta la dreita +page_rotate_ccw.title=Chirar enta la zurda +page_rotate_ccw_label=Chirar enta la zurda + +cursor_text_select_tool.title=Activar la ferramienta de selección de texto +cursor_text_select_tool_label=Ferramienta de selección de texto +cursor_hand_tool.title=Activar la ferramienta man +cursor_hand_tool_label=Ferramienta man + +scroll_vertical.title=Usar lo desplazamiento vertical +scroll_vertical_label=Desplazamiento vertical +scroll_horizontal.title=Usar lo desplazamiento horizontal +scroll_horizontal_label=Desplazamiento horizontal +scroll_wrapped.title=Activaar lo desplazamiento contino +scroll_wrapped_label=Desplazamiento contino + +spread_none.title=No unir vistas de pachinas +spread_none_label=Una pachina nomás +spread_odd.title=Mostrar vista de pachinas, con as impars a la zurda +spread_odd_label=Doble pachina, impar a la zurda +spread_even.title=Amostrar vista de pachinas, con as pars a la zurda +spread_even_label=Doble pachina, para a la zurda + +# Document properties dialog box +document_properties.title=Propiedatz d'o documento... +document_properties_label=Propiedatz d'o documento... +document_properties_file_name=Nombre de fichero: +document_properties_file_size=Grandaria d'o fichero: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Titol: +document_properties_author=Autor: +document_properties_subject=Afer: +document_properties_keywords=Parolas clau: +document_properties_creation_date=Calendata de creyación: +document_properties_modification_date=Calendata de modificación: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creyador: +document_properties_producer=Creyador de PDF: +document_properties_version=Versión de PDF: +document_properties_page_count=Numero de pachinas: +document_properties_page_size=Mida de pachina: +document_properties_page_size_unit_inches=pulgadas +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=vertical +document_properties_page_size_orientation_landscape=horizontal +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Carta +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} x {{height}} {{unit}} {{orientation}} +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} x {{height}} {{unit}} {{name}}, {{orientation}} +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista web rapida: +document_properties_linearized_yes=Sí +document_properties_linearized_no=No +document_properties_close=Zarrar + +print_progress_message=Se ye preparando la documentación pa imprentar… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancelar + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Amostrar u amagar a barra lateral +toggle_sidebar_notification2.title=Cambiar barra lateral (lo documento contiene esquema/adchuntos/capas) +toggle_sidebar_label=Amostrar a barra lateral +document_outline.title=Amostrar esquema d'o documento (fer doble clic pa expandir/compactar totz los items) +document_outline_label=Esquema d'o documento +attachments.title=Amostrar os adchuntos +attachments_label=Adchuntos +layers.title=Amostrar capas (doble clic para reiniciar totas las capas a lo estau per defecto) +layers_label=Capas +thumbs.title=Amostrar as miniaturas +thumbs_label=Miniaturas +findbar.title=Trobar en o documento +findbar_label=Trobar + +additional_layers=Capas adicionals +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pachina {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura d'a pachina {{page}} + +# Find panel button title and messages +find_input.title=Trobar +find_input.placeholder=Trobar en o documento… +find_previous.title=Trobar l'anterior coincidencia d'a frase +find_previous_label=Anterior +find_next.title=Trobar a siguient coincidencia d'a frase +find_next_label=Siguient +find_highlight=Resaltar-lo tot +find_match_case_label=Coincidencia de mayusclas/minusclas +find_entire_word_label=Parolas completas +find_reached_top=S'ha plegau a l'inicio d'o documento, se contina dende baixo +find_reached_bottom=S'ha plegau a la fin d'o documento, se contina dende alto +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} de {{total}} coincidencia +find_match_count[two]={{current}} de {{total}} coincidencias +find_match_count[few]={{current}} de {{total}} coincidencias +find_match_count[many]={{current}} de {{total}} coincidencias +find_match_count[other]={{current}} de {{total}} coincidencias +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Mas de {{limit}} coincidencias +find_match_count_limit[one]=Mas de {{limit}} coincidencias +find_match_count_limit[two]=Mas que {{limit}} coincidencias +find_match_count_limit[few]=Mas que {{limit}} coincidencias +find_match_count_limit[many]=Mas que {{limit}} coincidencias +find_match_count_limit[other]=Mas que {{limit}} coincidencias +find_not_found=No s'ha trobau a frase + +# Error panel labels +error_more_info=Mas información +error_less_info=Menos información +error_close=Zarrar +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mensache: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pila: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fichero: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linia: {{line}} +rendering_error=Ha ocurriu una error en renderizar a pachina. + +# Predefined zoom values +page_scale_width=Amplaria d'a pachina +page_scale_fit=Achuste d'a pachina +page_scale_auto=Grandaria automatica +page_scale_actual=Grandaria actual +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=S'ha produciu una error en cargar o PDF. +invalid_file_error=O PDF no ye valido u ye estorbau. +missing_file_error=No i ha fichero PDF. +unexpected_response_error=Respuesta a lo servicio inasperada. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotación {{type}}] +password_label=Introduzca a clau ta ubrir iste fichero PDF. +password_invalid=Clau invalida. Torna a intentar-lo. +password_ok=Acceptar +password_cancel=Cancelar + +printing_not_supported=Pare cuenta: Iste navegador no maneya totalment as impresions. +printing_not_ready=Aviso: Encara no se ha cargau completament o PDF ta imprentar-lo. +web_fonts_disabled=As fuents web son desactivadas: no se puet incrustar fichers PDF. + diff --git a/page/static/js/web/locale/ar/viewer.properties b/page/static/js/web/locale/ar/viewer.properties new file mode 100644 index 0000000..1d389e8 --- /dev/null +++ b/page/static/js/web/locale/ar/viewer.properties @@ -0,0 +1,247 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=الصÙحة السابقة +previous_label=السابقة +next.title=الصÙحة التالية +next_label=التالية + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=صÙحة +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=من {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} من {{pagesCount}}) + +zoom_out.title=بعّد +zoom_out_label=بعّد +zoom_in.title=قرّب +zoom_in_label=قرّب +zoom.title=التقريب +presentation_mode.title=انتقل لوضع العرض التقديمي +presentation_mode_label=وضع العرض التقديمي +open_file.title=اÙتح ملÙًا +open_file_label=اÙتح +print.title=اطبع +print_label=اطبع +download.title=نزّل +download_label=نزّل +bookmark.title=المنظور الحالي (انسخ أو اÙتح ÙÙŠ ناÙذة جديدة) +bookmark_label=المنظور الحالي + +# Secondary toolbar and context menu +tools.title=الأدوات +tools_label=الأدوات +first_page.title=انتقل إلى الصÙحة الأولى +first_page_label=انتقل إلى الصÙحة الأولى +last_page.title=انتقل إلى الصÙحة الأخيرة +last_page_label=انتقل إلى الصÙحة الأخيرة +page_rotate_cw.title=أدر باتجاه عقارب الساعة +page_rotate_cw_label=أدر باتجاه عقارب الساعة +page_rotate_ccw.title=أدر بعكس اتجاه عقارب الساعة +page_rotate_ccw_label=أدر بعكس اتجاه عقارب الساعة + +cursor_text_select_tool.title=Ùعّل أداة اختيار النص +cursor_text_select_tool_label=أداة اختيار النص +cursor_hand_tool.title=Ùعّل أداة اليد +cursor_hand_tool_label=أداة اليد + +scroll_vertical.title=استخدم التمرير الرأسي +scroll_vertical_label=التمرير الرأسي +scroll_horizontal.title=استخدم التمرير الأÙقي +scroll_horizontal_label=التمرير الأÙقي +scroll_wrapped.title=استخدم التمرير الملت٠+scroll_wrapped_label=التمرير الملت٠+ +spread_none.title=لا تدمج هوامش الصÙحات مع بعضها البعض +spread_none_label=بلا هوامش +spread_odd.title=ادمج هوامش الصÙحات الÙردية +spread_odd_label=هوامش الصÙحات الÙردية +spread_even.title=ادمج هوامش الصÙحات الزوجية +spread_even_label=هوامش الصÙحات الزوجية + +# Document properties dialog box +document_properties.title=خصائص المستند… +document_properties_label=خصائص المستند… +document_properties_file_name=اسم الملÙ: +document_properties_file_size=حجم الملÙ: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} Ùƒ.بايت ({{size_b}} بايت) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} Ù….بايت ({{size_b}} بايت) +document_properties_title=العنوان: +document_properties_author=المؤلÙ: +document_properties_subject=الموضوع: +document_properties_keywords=الكلمات الأساسية: +document_properties_creation_date=تاريخ الإنشاء: +document_properties_modification_date=تاريخ التعديل: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}ØŒ {{time}} +document_properties_creator=المنشئ: +document_properties_producer=منتج PDF: +document_properties_version=إصدارة PDF: +document_properties_page_count=عدد الصÙحات: +document_properties_page_size=مقاس الورقة: +document_properties_page_size_unit_inches=بوصة +document_properties_page_size_unit_millimeters=ملم +document_properties_page_size_orientation_portrait=طوليّ +document_properties_page_size_orientation_landscape=عرضيّ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=خطاب +document_properties_page_size_name_legal=قانونيّ +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string=â€{{width}} × â€{{height}} â€{{unit}} (â€{{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string=â€{{width}} × â€{{height}} â€{{unit}} (â€{{name}}ØŒ {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=العرض السريع عبر الوÙب: +document_properties_linearized_yes=نعم +document_properties_linearized_no=لا +document_properties_close=أغلق + +print_progress_message=ÙŠÙحضّر المستند للطباعة… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}Ùª +print_progress_close=ألغ٠+ +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=بدّل ظهور الشريط الجانبي +toggle_sidebar_notification2.title=بدّل ظهور الشريط الجانبي (يحتوي المستند على مخطط أو مرÙقات أو طبقات) +toggle_sidebar_label=بدّل ظهور الشريط الجانبي +document_outline.title=اعرض Ùهرس المستند (نقر مزدوج لتمديد أو تقليص كل العناصر) +document_outline_label=مخطط المستند +attachments.title=اعرض المرÙقات +attachments_label=المÙرÙقات +layers.title=اعرض الطبقات (انقر مرتين لتصÙير كل الطبقات إلى الحالة المبدئية) +layers_label=â€â€Ø§Ù„طبقات +thumbs.title=اعرض Ù…Ùصغرات +thumbs_label=Ù…Ùصغّرات +findbar.title=ابحث ÙÙŠ المستند +findbar_label=ابحث + +additional_layers=الطبقات الإضاÙية +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=صÙحة {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=صÙحة {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=مصغّرة صÙحة {{page}} + +# Find panel button title and messages +find_input.title=ابحث +find_input.placeholder=ابحث ÙÙŠ المستند… +find_previous.title=ابحث عن التّواجد السّابق للعبارة +find_previous_label=السابق +find_next.title=ابحث عن التّواجد التّالي للعبارة +find_next_label=التالي +find_highlight=أبرÙز الكل +find_match_case_label=طابق حالة الأحر٠+find_entire_word_label=كلمات كاملة +find_reached_top=تابعت من الأسÙÙ„ بعدما وصلت إلى بداية المستند +find_reached_bottom=تابعت من الأعلى بعدما وصلت إلى نهاية المستند +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} من أصل مطابقة واحدة +find_match_count[two]={{current}} من أصل مطابقتين +find_match_count[few]={{current}} من أصل {{total}} مطابقات +find_match_count[many]={{current}} من أصل {{total}} مطابقة +find_match_count[other]={{current}} من أصل {{total}} مطابقة +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Ùقط +find_match_count_limit[one]=أكثر من مطابقة واحدة +find_match_count_limit[two]=أكثر من مطابقتين +find_match_count_limit[few]=أكثر من {{limit}} مطابقات +find_match_count_limit[many]=أكثر من {{limit}} مطابقة +find_match_count_limit[other]=أكثر من {{limit}} مطابقة +find_not_found=لا وجود للعبارة + +# Error panel labels +error_more_info=معلومات أكثر +error_less_info=معلومات أقل +error_close=أغلق +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=â€PDF.js Ù†{{version}} â€(بناء: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=الرسالة: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=الرصّة: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=الملÙ: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=السطر: {{line}} +rendering_error=حدث خطأ أثناء عرض الصÙحة. + +# Predefined zoom values +page_scale_width=عرض الصÙحة +page_scale_fit=ملائمة الصÙحة +page_scale_auto=تقريب تلقائي +page_scale_actual=الحجم الÙعلي +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}Ùª + +# Loading indicator messages +loading=يحمّل… +loading_error=حدث عطل أثناء تحميل مل٠PDF. +invalid_file_error=مل٠PDF تال٠أو غير صحيح. +missing_file_error=مل٠PDF غير موجود. +unexpected_response_error=استجابة خادوم غير متوقعة. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}ØŒ {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[تعليق {{type}}] +password_label=أدخل لكلمة السر Ù„Ùتح هذا الملÙ. +password_invalid=كلمة سر خطأ. من Ùضلك أعد المحاولة. +password_ok=حسنا +password_cancel=ألغ٠+ +printing_not_supported=تحذير: لا يدعم هذا المتصÙØ­ الطباعة بشكل كامل. +printing_not_ready=تحذير: مل٠PDF لم ÙŠÙحمّل كاملًا للطباعة. +web_fonts_disabled=خطوط الوب Ù…Ùعطّلة: تعذّر استخدام خطوط PDF المÙضمّنة. + diff --git a/page/static/js/web/locale/ast/viewer.properties b/page/static/js/web/locale/ast/viewer.properties new file mode 100644 index 0000000..1f8bb2e --- /dev/null +++ b/page/static/js/web/locale/ast/viewer.properties @@ -0,0 +1,207 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Páxina anterior +previous_label=Anterior +next.title=Páxina siguiente +next_label=Siguiente + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Páxina +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Alloñar +zoom_out_label=Alloña +zoom_in.title=Averar +zoom_in_label=Avera +zoom.title=Zoom +presentation_mode.title=Cambiar al mou de presentación +presentation_mode_label=Mou de presentación +open_file_label=Abrir +print.title=Imprentar +print_label=Imprentar +download.title=Baxar +download_label=Baxar +bookmark_label=Vista actual + +# Secondary toolbar and context menu +tools.title=Ferramientes +tools_label=Ferramientes +first_page_label=Dir a la primer páxina +last_page_label=Dir a la última páxina +page_rotate_cw.title=Voltia a la derecha +page_rotate_cw_label=Voltiar a la derecha +page_rotate_ccw.title=Voltia a la esquierda +page_rotate_ccw_label=Voltiar a la esquierda + +cursor_text_select_tool.title=Activa la ferramienta d'esbilla de testu +cursor_text_select_tool_label=Ferramienta d'esbilla de testu +cursor_hand_tool.title=Activa la ferramienta de mano +cursor_hand_tool_label=Ferramienta de mano + +scroll_vertical.title=Usa'l desplazamientu vertical +scroll_vertical_label=Desplazamientu vertical +scroll_horizontal.title=Usa'l desplazamientu horizontal +scroll_horizontal_label=Desplazamientu horizontal +scroll_wrapped.title=Usa'l desplazamientu continuu +scroll_wrapped_label=Desplazamientu continuu + +spread_none_label=Fueyes individuales +spread_odd_label=Fueyes pares +spread_even_label=Fueyes impares + +# Document properties dialog box +document_properties.title=Propiedaes del documentu… +document_properties_label=Propiedaes del documentu… +document_properties_file_name=Nome del ficheru: +document_properties_file_size=Tamañu del ficheru: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Títulu: +document_properties_keywords=Pallabres clave: +document_properties_creation_date=Data de creación: +document_properties_modification_date=Data de modificación: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_producer=Productor del PDF: +document_properties_version=Versión del PDF: +document_properties_page_count=Númberu de páxines: +document_properties_page_size=Tamañu de páxina: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=vertical +document_properties_page_size_orientation_landscape=horizontal +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista web rápida: +document_properties_linearized_yes=Sí +document_properties_linearized_no=Non +document_properties_close=Zarrar + +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Encaboxar + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Alternar la barra llateral +attachments.title=Amosar los axuntos +attachments_label=Axuntos +layers_label=Capes +thumbs.title=Amosar les miniatures +thumbs_label=Miniatures +findbar_label=Atopar + +additional_layers=Capes adicionales +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Páxina {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Páxina {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. + +# Find panel button title and messages +find_previous_label=Anterior +find_next_label=Siguiente +find_entire_word_label=Pallabres completes +find_reached_top=Algamóse'l comienzu de la páxina, síguese dende abaxo +find_reached_bottom=Algamóse la fin del documentu, síguese dende arriba +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count[one]={{current}} de {{total}} coincidencia +find_match_count[two]={{current}} de {{total}} coincidencies +find_match_count[few]={{current}} de {{total}} coincidencies +find_match_count[many]={{current}} de {{total}} coincidencies +find_match_count[other]={{current}} de {{total}} coincidencies +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit[zero]=Más de {{limit}} coincidencies +find_match_count_limit[one]=Más de {{limit}} coincidencia +find_match_count_limit[two]=Más de {{limit}} coincidencies +find_match_count_limit[few]=Más de {{limit}} coincidencies +find_match_count_limit[many]=Más de {{limit}} coincidencies +find_match_count_limit[other]=Más de {{limit}} coincidencies + +# Error panel labels +error_more_info=Más información +error_less_info=Menos información +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (compilación: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mensaxe: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pila: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Ficheru: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Llinia: {{line}} + +# Predefined zoom values +page_scale_auto=Zoom automáticu +page_scale_actual=Tamañu real +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Cargando… +loading_error=Asocedió un fallu mentanto se cargaba'l PDF. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +password_ok=Aceptar +password_cancel=Encaboxar + +# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same +# exact string as in the `chrome.properties` file. + diff --git a/page/static/js/web/locale/az/viewer.properties b/page/static/js/web/locale/az/viewer.properties new file mode 100644 index 0000000..3cb27ec --- /dev/null +++ b/page/static/js/web/locale/az/viewer.properties @@ -0,0 +1,243 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=ÆvvÉ™lki sÉ™hifÉ™ +previous_label=ÆvvÉ™lkini tap +next.title=NövbÉ™ti sÉ™hifÉ™ +next_label=Ä°rÉ™li + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=SÉ™hifÉ™ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=/ {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} / {{pagesCount}}) + +zoom_out.title=UzaqlaÅŸ +zoom_out_label=UzaqlaÅŸ +zoom_in.title=YaxınlaÅŸ +zoom_in_label=YaxınlaÅŸ +zoom.title=YaxınlaÅŸdırma +presentation_mode.title=TÉ™qdimat RejiminÉ™ Keç +presentation_mode_label=TÉ™qdimat Rejimi +open_file.title=Fayl Aç +open_file_label=Aç +print.title=Yazdır +print_label=Yazdır +download.title=Endir +download_label=Endir +bookmark.title=Hazırkı görünüş (köçür vÉ™ ya yeni pÉ™ncÉ™rÉ™dÉ™ aç) +bookmark_label=Hazırkı görünüş + +# Secondary toolbar and context menu +tools.title=AlÉ™tlÉ™r +tools_label=AlÉ™tlÉ™r +first_page.title=Ä°lk SÉ™hifÉ™yÉ™ get +first_page_label=Ä°lk SÉ™hifÉ™yÉ™ get +last_page.title=Son SÉ™hifÉ™yÉ™ get +last_page_label=Son SÉ™hifÉ™yÉ™ get +page_rotate_cw.title=Saat Ä°stiqamÉ™tindÉ™ Fırlat +page_rotate_cw_label=Saat Ä°stiqamÉ™tindÉ™ Fırlat +page_rotate_ccw.title=Saat Ä°stiqamÉ™tinin ÆksinÉ™ Fırlat +page_rotate_ccw_label=Saat Ä°stiqamÉ™tinin ÆksinÉ™ Fırlat + +cursor_text_select_tool.title=Yazı seçmÉ™ alÉ™tini aktivləşdir +cursor_text_select_tool_label=Yazı seçmÉ™ alÉ™ti +cursor_hand_tool.title=Æl alÉ™tini aktivləşdir +cursor_hand_tool_label=Æl alÉ™ti + +scroll_vertical.title=Åžaquli sürüşdürmÉ™ iÅŸlÉ™t +scroll_vertical_label=Åžaquli sürüşdürmÉ™ +scroll_horizontal.title=Ãœfüqi sürüşdürmÉ™ iÅŸlÉ™t +scroll_horizontal_label=Ãœfüqi sürüşdürmÉ™ +scroll_wrapped.title=Bükülü sürüşdürmÉ™ iÅŸlÉ™t +scroll_wrapped_label=Bükülü sürüşdürmÉ™ + +spread_none.title=Yan-yana birləşdirilmiÅŸ sÉ™hifÉ™lÉ™ri iÅŸlÉ™tmÉ™ +spread_none_label=BirləşdirmÉ™ +spread_odd.title=Yan-yana birləşdirilmiÅŸ sÉ™hifÉ™lÉ™ri tÉ™k nömrÉ™li sÉ™hifÉ™lÉ™rdÉ™n baÅŸlat +spread_odd_label=TÉ™k nömrÉ™li +spread_even.title=Yan-yana birləşdirilmiÅŸ sÉ™hifÉ™lÉ™ri cüt nömrÉ™li sÉ™hifÉ™lÉ™rdÉ™n baÅŸlat +spread_even_label=Cüt nömrÉ™li + +# Document properties dialog box +document_properties.title=SÉ™nÉ™d xüsusiyyÉ™tlÉ™ri… +document_properties_label=SÉ™nÉ™d xüsusiyyÉ™tlÉ™ri… +document_properties_file_name=Fayl adı: +document_properties_file_size=Fayl ölçüsü: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bayt) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bayt) +document_properties_title=BaÅŸlık: +document_properties_author=Müəllif: +document_properties_subject=Mövzu: +document_properties_keywords=Açar sözlÉ™r: +document_properties_creation_date=Yaradılış Tarixi : +document_properties_modification_date=DÉ™yiÅŸdirilmÉ™ Tarixi : +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Yaradan: +document_properties_producer=PDF yaradıcısı: +document_properties_version=PDF versiyası: +document_properties_page_count=SÉ™hifÉ™ sayı: +document_properties_page_size=SÉ™hifÉ™ Ölçüsü: +document_properties_page_size_unit_inches=inç +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=portret +document_properties_page_size_orientation_landscape=albom +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=MÉ™ktub +document_properties_page_size_name_legal=Hüquqi +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Web View: +document_properties_linearized_yes=BÉ™li +document_properties_linearized_no=Xeyr +document_properties_close=Qapat + +print_progress_message=SÉ™nÉ™d çap üçün hazırlanır… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Ləğv et + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Yan Paneli Aç/BaÄŸla +toggle_sidebar_notification2.title=Yan paneli çevir (sÉ™nÉ™ddÉ™ icmal/baÄŸlamalar/laylar mövcuddur) +toggle_sidebar_label=Yan Paneli Aç/BaÄŸla +document_outline.title=SÉ™nÉ™din eskizini göstÉ™r (bütün bÉ™ndlÉ™ri açmaq/yığmaq üçün iki dÉ™fÉ™ kliklÉ™yin) +document_outline_label=SÉ™nÉ™d strukturu +attachments.title=BaÄŸlamaları göstÉ™r +attachments_label=BaÄŸlamalar +layers.title=Layları göstÉ™r (bütün layları ilkin halına sıfırlamaq üçün iki dÉ™fÉ™ kliklÉ™yin) +layers_label=Laylar +thumbs.title=Kiçik ÅŸÉ™killÉ™ri göstÉ™r +thumbs_label=Kiçik ÅŸÉ™killÉ™r +findbar.title=SÉ™nÉ™ddÉ™ Tap +findbar_label=Tap + +additional_layers=ÆlavÉ™ laylar +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=SÉ™hifÉ™{{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}} sÉ™hifÉ™sinin kiçik vÉ™ziyyÉ™ti + +# Find panel button title and messages +find_input.title=Tap +find_input.placeholder=SÉ™nÉ™ddÉ™ tap… +find_previous.title=Bir öncÉ™ki uyÄŸun gÉ™lÉ™n sözü tapır +find_previous_label=Geri +find_next.title=Bir sonrakı uyÄŸun gÉ™lÉ™n sözü tapır +find_next_label=Ä°rÉ™li +find_highlight=Ä°ÅŸarÉ™lÉ™ +find_match_case_label=Böyük/kiçik hÉ™rfÉ™ hÉ™ssaslıq +find_entire_word_label=Tam sözlÉ™r +find_reached_top=SÉ™nÉ™din yuxarısına çatdı, aÅŸağıdan davam edir +find_reached_bottom=SÉ™nÉ™din sonuna çatdı, yuxarıdan davam edir +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} / {{total}} uyÄŸunluq +find_match_count[two]={{current}} / {{total}} uyÄŸunluq +find_match_count[few]={{current}} / {{total}} uyÄŸunluq +find_match_count[many]={{current}} / {{total}} uyÄŸunluq +find_match_count[other]={{current}} / {{total}} uyÄŸunluq +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]={{limit}}-dan çox uyÄŸunluq +find_match_count_limit[one]={{limit}}-dÉ™n çox uyÄŸunluq +find_match_count_limit[two]={{limit}}-dÉ™n çox uyÄŸunluq +find_match_count_limit[few]={{limit}} uyÄŸunluqdan daha çox +find_match_count_limit[many]={{limit}} uyÄŸunluqdan daha çox +find_match_count_limit[other]={{limit}} uyÄŸunluqdan daha çox +find_not_found=UyÄŸunlaÅŸma tapılmadı + +# Error panel labels +error_more_info=Daha çox mÉ™lumati +error_less_info=Daha az mÉ™lumat +error_close=Qapat +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (yığma: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Ä°smarıc: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stek: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fayl: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=SÉ™tir: {{line}} +rendering_error=SÉ™hifÉ™ göstÉ™rilÉ™rkÉ™n sÉ™hv yarandı. + +# Predefined zoom values +page_scale_width=SÉ™hifÉ™ geniÅŸliyi +page_scale_fit=SÉ™hifÉ™ni sığdır +page_scale_auto=Avtomatik yaxınlaÅŸdır +page_scale_actual=Hazırkı HÉ™cm +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=PDF yüklenÉ™rkÉ™n bir sÉ™hv yarandı. +invalid_file_error=SÉ™hv vÉ™ ya zÉ™dÉ™lÉ™nmiÅŸ olmuÅŸ PDF fayl. +missing_file_error=PDF fayl yoxdur. +unexpected_response_error=GözlÉ™nilmÉ™z server cavabı. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotasiyası] +password_label=Bu PDF faylı açmaq üçün parolu daxil edin. +password_invalid=Parol sÉ™hvdir. Bir daha yoxlayın. +password_ok=Tamam +password_cancel=Ləğv et + +printing_not_supported=XÉ™bÉ™rdarlıq: Çap bu sÉ™yyah tÉ™rÉ™findÉ™n tam olaraq dÉ™stÉ™klÉ™nmir. +printing_not_ready=XÉ™bÉ™rdarlıq: PDF çap üçün tam yüklÉ™nmÉ™yib. +web_fonts_disabled=Web ÅžriftlÉ™r söndürülüb: yerləşdirilmiÅŸ PDF ÅŸriftlÉ™rini istifadÉ™ etmÉ™k mümkün deyil. + diff --git a/page/static/js/web/locale/be/viewer.properties b/page/static/js/web/locale/be/viewer.properties new file mode 100644 index 0000000..d235a96 --- /dev/null +++ b/page/static/js/web/locale/be/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=ПапÑÑ€ÑднÑÑ Ñтаронка +previous_label=ПапÑÑ€ÑднÑÑ +next.title=ÐаÑÑ‚ÑƒÐ¿Ð½Ð°Ñ Ñтаронка +next_label=ÐаÑÑ‚ÑƒÐ¿Ð½Ð°Ñ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Старонка +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=з {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} з {{pagesCount}}) + +zoom_out.title=Паменшыць +zoom_out_label=Паменшыць +zoom_in.title=ПавÑлічыць +zoom_in_label=ПавÑлічыць +zoom.title=ПавÑлічÑнне Ñ‚ÑкÑту +presentation_mode.title=Пераключыцца Ñž Ñ€Ñжым паказу +presentation_mode_label=РÑжым паказу +open_file.title=Ðдкрыць файл +open_file_label=Ðдкрыць +print.title=Друкаваць +print_label=Друкаваць +download.title=СцÑгнуць +download_label=СцÑгнуць +save.title=Захаваць +save_label=Захаваць +bookmark.title=ЦÑперашні выглÑд (ÑкапіÑваць або адкрыць у новым акне) +bookmark_label=ЦÑперашнÑÑ Ð¿Ñ€Ð°Ñва + +bookmark1.title=Ð”Ð·ÐµÐ¹Ð½Ð°Ñ Ñтаронка (паглÑдзець URL-Ð°Ð´Ñ€Ð°Ñ Ð· дзейнай Ñтаронкі) +bookmark1_label=ЦÑперашнÑÑ Ñтаронка + +# Secondary toolbar and context menu +tools.title=Прылады +tools_label=Прылады +first_page.title=ПерайÑці на першую Ñтаронку +first_page_label=ПерайÑці на першую Ñтаронку +last_page.title=ПерайÑці на апошнюю Ñтаронку +last_page_label=ПерайÑці на апошнюю Ñтаронку +page_rotate_cw.title=ПавÑрнуць па Ñонцу +page_rotate_cw_label=ПавÑрнуць па Ñонцу +page_rotate_ccw.title=ПавÑрнуць Ñупраць Ñонца +page_rotate_ccw_label=ПавÑрнуць Ñупраць Ñонца + +cursor_text_select_tool.title=Уключыць прыладу выбару Ñ‚ÑкÑту +cursor_text_select_tool_label=Прылада выбару Ñ‚ÑкÑту +cursor_hand_tool.title=Уключыць ручную прыладу +cursor_hand_tool_label=Ð ÑƒÑ‡Ð½Ð°Ñ Ð¿Ñ€Ñ‹Ð»Ð°Ð´Ð° + +scroll_page.title=ВыкарыÑтоўваць пракрутку Ñтаронкi +scroll_page_label=Пракрутка Ñтаронкi +scroll_vertical.title=Ужываць вертыкальную пракрутку +scroll_vertical_label=Ð’ÐµÑ€Ñ‚Ñ‹ÐºÐ°Ð»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð°ÐºÑ€ÑƒÑ‚ÐºÐ° +scroll_horizontal.title=Ужываць гарызантальную пракрутку +scroll_horizontal_label=Ð“Ð°Ñ€Ñ‹Ð·Ð°Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð°ÐºÑ€ÑƒÑ‚ÐºÐ° +scroll_wrapped.title=Ужываць маштабавальную пракрутку +scroll_wrapped_label=ÐœÐ°ÑˆÑ‚Ð°Ð±Ð°Ð²Ð°Ð»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð°ÐºÑ€ÑƒÑ‚ÐºÐ° + +spread_none.title=Ðе выкарыÑтоўваць Ñ€Ð°Ð·Ð³Ð¾Ñ€Ð½ÑƒÑ‚Ñ‹Ñ Ñтаронкі +spread_none_label=Без разгорнутых Ñтаронак +spread_odd.title=Ð Ð°Ð·Ð³Ð¾Ñ€Ð½ÑƒÑ‚Ñ‹Ñ Ñтаронкі пачынаючы з нÑцотных нумароў +spread_odd_label=ÐÑÑ†Ð¾Ñ‚Ð½Ñ‹Ñ Ñтаронкі злева +spread_even.title=Ð Ð°Ð·Ð³Ð¾Ñ€Ð½ÑƒÑ‚Ñ‹Ñ Ñтаронкі пачынаючы з цотных нумароў +spread_even_label=Ð¦Ð¾Ñ‚Ð½Ñ‹Ñ Ñтаронкі злева + +# Document properties dialog box +document_properties.title=УлаÑціваÑці дакумента… +document_properties_label=УлаÑціваÑці дакумента… +document_properties_file_name=Ðазва файла: +document_properties_file_size=Памер файла: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} КБ ({{size_b}} байт) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} МБ ({{size_b}} байт) +document_properties_title=Загаловак: +document_properties_author=Ðўтар: +document_properties_subject=ТÑма: +document_properties_keywords=ÐšÐ»ÑŽÑ‡Ð°Ð²Ñ‹Ñ Ñловы: +document_properties_creation_date=Дата ÑтварÑннÑ: +document_properties_modification_date=Дата змÑненнÑ: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Стваральнік: +document_properties_producer=Вырабнік PDF: +document_properties_version=ВерÑÑ–Ñ PDF: +document_properties_page_count=КолькаÑць Ñтаронак: +document_properties_page_size=Памер Ñтаронкі: +document_properties_page_size_unit_inches=цалÑÑž +document_properties_page_size_unit_millimeters=мм +document_properties_page_size_orientation_portrait=ÐºÐ½Ñ–Ð¶Ð½Ð°Ñ +document_properties_page_size_orientation_landscape=Ð°Ð»ÑŒÐ±Ð¾Ð¼Ð½Ð°Ñ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Хуткі праглÑд у ІнтÑрнÑце: +document_properties_linearized_yes=Так +document_properties_linearized_no=Ðе +document_properties_close=Закрыць + +print_progress_message=Падрыхтоўка дакумента да друку… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=СкаÑаваць + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Паказаць/Ñхаваць бакавую панÑль +toggle_sidebar_notification2.title=Паказаць/Ñхаваць бакавую панÑль (дакумент мае змеÑÑ‚/укладанні/плаÑÑ‚Ñ‹) +toggle_sidebar_label=Паказаць/Ñхаваць бакавую панÑль +document_outline.title=Паказаць Ñтруктуру дакумента (Ð´Ð²Ð°Ð¹Ð½Ð°Ñ Ð¿Ñтрычка, каб разгарнуць /згарнуць уÑе Ñлементы) +document_outline_label=Структура дакумента +attachments.title=Паказаць далучÑнні +attachments_label=ДалучÑнні +layers.title=Паказаць плаÑÑ‚Ñ‹ (націÑніце двойчы, каб Ñкінуць уÑе плаÑÑ‚Ñ‹ да прадвызначанага Ñтану) +layers_label=ПлаÑÑ‚Ñ‹ +thumbs.title=Паказ мініÑцюр +thumbs_label=МініÑцюры +current_outline_item.title=ЗнайÑці бÑгучы Ñлемент Ñтруктуры +current_outline_item_label=БÑгучы Ñлемент Ñтруктуры +findbar.title=Пошук у дакуменце +findbar_label=ЗнайÑці + +additional_layers=Ð”Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ‹Ñ Ð¿Ð»Ð°ÑÑ‚Ñ‹ +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Старонка {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Старонка {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=МініÑцюра Ñтаронкі {{page}} + +# Find panel button title and messages +find_input.title=Шукаць +find_input.placeholder=Шукаць у дакуменце… +find_previous.title=ЗнайÑці папÑÑ€Ñдні выпадак выразу +find_previous_label=ПапÑÑ€Ñдні +find_next.title=ЗнайÑці наÑтупны выпадак выразу +find_next_label=ÐаÑтупны +find_highlight=Падфарбаваць уÑе +find_match_case_label=Ðдрозніваць вÑлікіÑ/Ð¼Ð°Ð»Ñ‹Ñ Ð»Ñ–Ñ‚Ð°Ñ€Ñ‹ +find_match_diacritics_label=З улікам дыÑкрытык +find_entire_word_label=Словы цалкам +find_reached_top=ДаÑÑгнуты пачатак дакумента, працÑг з канца +find_reached_bottom=ДаÑÑгнуты канец дакумента, працÑг з пачатку +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} з {{total}} ÑÑƒÐ¿Ð°Ð´Ð·ÐµÐ½Ð½Ñ +find_match_count[two]={{current}} з {{total}} ÑупадзеннÑÑž +find_match_count[few]={{current}} з {{total}} ÑупадзеннÑÑž +find_match_count[many]={{current}} з {{total}} ÑупадзеннÑÑž +find_match_count[other]={{current}} з {{total}} ÑупадзеннÑÑž +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Больш за {{limit}} ÑупадзеннÑÑž +find_match_count_limit[one]=Больш за {{limit}} Ñупадзенне +find_match_count_limit[two]=Больш за {{limit}} ÑупадзеннÑÑž +find_match_count_limit[few]=Больш за {{limit}} ÑупадзеннÑÑž +find_match_count_limit[many]=Больш за {{limit}} ÑупадзеннÑÑž +find_match_count_limit[other]=Больш за {{limit}} ÑупадзеннÑÑž +find_not_found=Выраз не знойдзены + +# Error panel labels +error_more_info=ПадрабÑзней +error_less_info=СціÑла +error_close=Закрыць +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js в{{version}} (зборка: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Паведамленне: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=СтоÑ: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Файл: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Радок: {{line}} + +# Predefined zoom values +page_scale_width=Ð¨Ñ‹Ñ€Ñ‹Ð½Ñ Ñтаронкі +page_scale_fit=УціÑненне Ñтаронкі +page_scale_auto=Ðўтаматычнае павелічÑнне +page_scale_actual=Сапраўдны памер +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Чытаецца… +loading_error=ЗдарылаÑÑ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° ў чаÑе загрузкі PDF. +invalid_file_error=ÐÑÑпраўны або пашкоджаны файл PDF. +missing_file_error=ÐдÑутны файл PDF. +unexpected_response_error=Ðечаканы адказ Ñервера. + +rendering_error=ЗдарылаÑÑ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° Ð¿Ð°Ð´Ñ‡Ð°Ñ Ð°Ð´Ð»ÑŽÑÑ‚Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ñтаронкі. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=УвÑдзіце пароль, каб адкрыць гÑÑ‚Ñ‹ файл PDF. +password_invalid=ÐÑдзейÑны пароль. ПаÑпрабуйце зноў. +password_ok=Добра +password_cancel=СкаÑаваць + +printing_not_supported=ПапÑÑ€Ñджанне: друк не падтрымліваецца цалкам гÑтым браўзерам. +printing_not_ready=Увага: PDF не ÑцÑгнуты цалкам Ð´Ð»Ñ Ð´Ñ€ÑƒÐºÐ°Ð²Ð°Ð½Ð½Ñ. +web_fonts_disabled=Шрыфты Сеціва забаронены: немагчыма ўжываць ÑƒÐºÐ»Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ ÑˆÑ€Ñ‹Ñ„Ñ‚Ñ‹ PDF. + +# Editor +editor_free_text2.title=ТÑкÑÑ‚ +editor_free_text2_label=ТÑкÑÑ‚ +editor_ink2.title=МалÑваць +editor_ink2_label=МалÑваць + +free_text2_default_content=Пачніце набор Ñ‚ÑкÑту… + +# Editor Parameters +editor_free_text_color=Колер +editor_free_text_size=Памер +editor_ink_color=Колер +editor_ink_thickness=Ð¢Ð°ÑžÑˆÑ‡Ñ‹Ð½Ñ +editor_ink_opacity=ÐепразрыÑтаÑць + +# Editor aria +editor_free_text2_aria_label=ТÑкÑтавы Ñ€Ñдактар +editor_ink2_aria_label=Графічны Ñ€Ñдактар +editor_ink_canvas_aria_label=Ð’Ñ‹Ñва, ÑÑ‚Ð²Ð¾Ñ€Ð°Ð½Ð°Ñ ÐºÐ°Ñ€Ñ‹Ñтальнікам diff --git a/page/static/js/web/locale/bg/viewer.properties b/page/static/js/web/locale/bg/viewer.properties new file mode 100644 index 0000000..8c27398 --- /dev/null +++ b/page/static/js/web/locale/bg/viewer.properties @@ -0,0 +1,235 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Предишна Ñтраница +previous_label=Предишна +next.title=Следваща Ñтраница +next_label=Следваща + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Страница +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=от {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} от {{pagesCount}}) + +zoom_out.title=ÐамалÑване +zoom_out_label=ÐамалÑване +zoom_in.title=Увеличаване +zoom_in_label=Увеличаване +zoom.title=Мащабиране +presentation_mode.title=Превключване към режим на предÑтавÑне +presentation_mode_label=Режим на предÑтавÑне +open_file.title=ОтварÑне на файл +open_file_label=ОтварÑне +print.title=Отпечатване +print_label=Отпечатване +download.title=ИзтеглÑне +download_label=ИзтеглÑне +bookmark.title=Текущ изглед (копиране или отварÑне в нов прозорец) +bookmark_label=Текущ изглед + +# Secondary toolbar and context menu +tools.title=ИнÑтрументи +tools_label=ИнÑтрументи +first_page.title=Към първата Ñтраница +first_page_label=Към първата Ñтраница +last_page.title=Към поÑледната Ñтраница +last_page_label=Към поÑледната Ñтраница +page_rotate_cw.title=Завъртане по чаÑ. Ñтрелка +page_rotate_cw_label=Завъртане по чаÑовниковата Ñтрелка +page_rotate_ccw.title=Завъртане обратно на чаÑ. Ñтрелка +page_rotate_ccw_label=Завъртане обратно на чаÑовниковата Ñтрелка + +cursor_text_select_tool.title=Включване на инÑтрумента за избор на текÑÑ‚ +cursor_text_select_tool_label=ИнÑтрумент за избор на текÑÑ‚ +cursor_hand_tool.title=Включване на инÑтрумента ръка +cursor_hand_tool_label=ИнÑтрумент ръка + +scroll_vertical.title=Използване на вертикално плъзгане +scroll_vertical_label=Вертикално плъзгане +scroll_horizontal.title=Използване на хоризонтално +scroll_horizontal_label=Хоризонтално плъзгане +scroll_wrapped.title=Използване на мащабируемо плъзгане +scroll_wrapped_label=Мащабируемо плъзгане + +spread_none.title=Режимът на ÑдвоÑване е изключен +spread_none_label=Без ÑдвоÑване +spread_odd.title=СдвоÑване, започвайки от нечетните Ñтраници +spread_odd_label=Ðечетните отлÑво +spread_even.title=СдвоÑване, започвайки от четните Ñтраници +spread_even_label=Четните отлÑво + +# Document properties dialog box +document_properties.title=СвойÑтва на документа… +document_properties_label=СвойÑтва на документа… +document_properties_file_name=Име на файл: +document_properties_file_size=Големина на файл: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} КБ ({{size_b}} байта) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} МБ ({{size_b}} байта) +document_properties_title=Заглавие: +document_properties_author=Ðвтор: +document_properties_subject=Тема: +document_properties_keywords=Ключови думи: +document_properties_creation_date=Дата на Ñъздаване: +document_properties_modification_date=Дата на промÑна: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Създател: +document_properties_producer=PDF произведен от: +document_properties_version=Издание на PDF: +document_properties_page_count=Брой Ñтраници: +document_properties_page_size=Размер на Ñтраницата: +document_properties_page_size_unit_inches=инч +document_properties_page_size_unit_millimeters=мм +document_properties_page_size_orientation_portrait=портрет +document_properties_page_size_orientation_landscape=пейзаж +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Правни въпроÑи +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Бърз преглед: +document_properties_linearized_yes=Да +document_properties_linearized_no=Ðе +document_properties_close=ЗатварÑне + +print_progress_message=ПодготвÑне на документа за отпечатване… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Отказ + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Превключване на Ñтраничната лента +toggle_sidebar_label=Превключване на Ñтраничната лента +document_outline.title=Показване на Ñтруктурата на документа (двукратно щракване за Ñвиване/разгъване на вÑичко) +document_outline_label=Структура на документа +attachments.title=Показване на притурките +attachments_label=Притурки +thumbs.title=Показване на миниатюрите +thumbs_label=Миниатюри +findbar.title=Ðамиране в документа +findbar_label=ТърÑене + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Страница {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Миниатюра на Ñтраница {{page}} + +# Find panel button title and messages +find_input.title=ТърÑене +find_input.placeholder=ТърÑене в документа… +find_previous.title=Ðамиране на предишно Ñъвпадение на фразата +find_previous_label=Предишна +find_next.title=Ðамиране на Ñледващо Ñъвпадение на фразата +find_next_label=Следваща +find_highlight=ОткроÑване на вÑички +find_match_case_label=Съвпадение на региÑтъра +find_entire_word_label=Цели думи +find_reached_top=ДоÑтигнато е началото на документа, продължаване от ÐºÑ€Ð°Ñ +find_reached_bottom=ДоÑтигнат е краÑÑ‚ на документа, продължаване от началото +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} от {{total}} Ñъвпадение +find_match_count[two]={{current}} от {{total}} ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ +find_match_count[few]={{current}} от {{total}} ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ +find_match_count[many]={{current}} от {{total}} ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ +find_match_count[other]={{current}} от {{total}} ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Повече от {{limit}} ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ +find_match_count_limit[one]=Повече от {{limit}} Ñъвпадение +find_match_count_limit[two]=Повече от {{limit}} ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ +find_match_count_limit[few]=Повече от {{limit}} ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ +find_match_count_limit[many]=Повече от {{limit}} ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ +find_match_count_limit[other]=Повече от {{limit}} ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ +find_not_found=Фразата не е намерена + +# Error panel labels +error_more_info=Повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ +error_less_info=По-малко Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ +error_close=ЗатварÑне +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=Издание на PDF.js {{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Съобщение: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Стек: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Файл: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Ред: {{line}} +rendering_error=Грешка при изчертаване на Ñтраницата. + +# Predefined zoom values +page_scale_width=Ширина на Ñтраницата +page_scale_fit=ВмеÑтване в Ñтраницата +page_scale_auto=Ðвтоматично мащабиране +page_scale_actual=ДейÑтвителен размер +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=Получи Ñе грешка при зареждане на PDF-а. +invalid_file_error=Ðевалиден или повреден PDF файл. +missing_file_error=ЛипÑващ PDF файл. +unexpected_response_error=Ðеочакван отговор от Ñървъра. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[ÐÐ½Ð¾Ñ‚Ð°Ñ†Ð¸Ñ {{type}}] +password_label=Въведете парола за отварÑне на този PDF файл. +password_invalid=Ðевалидна парола. МолÑ, опитайте отново. +password_ok=Добре +password_cancel=Отказ + +printing_not_supported=Внимание: Този четец нÑма пълна поддръжка на отпечатване. +printing_not_ready=Внимание: Този PDF файл не е напълно зареден за печат. +web_fonts_disabled=Уеб-шрифтовете Ñа забранени: разрешаване на използването на вградените PDF шрифтове. + diff --git a/page/static/js/web/locale/bn/viewer.properties b/page/static/js/web/locale/bn/viewer.properties new file mode 100644 index 0000000..366f2e5 --- /dev/null +++ b/page/static/js/web/locale/bn/viewer.properties @@ -0,0 +1,239 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ পাতা +previous_label=পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ +next.title=পরবরà§à¦¤à§€ পাতা +next_label=পরবরà§à¦¤à§€ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=পাতা +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} à¦à¦° +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pagesCount}} à¦à¦° {{pageNumber}}) + +zoom_out.title=ছোট আকারে পà§à¦°à¦¦à¦°à§à¦¶à¦¨ +zoom_out_label=ছোট আকারে পà§à¦°à¦¦à¦°à§à¦¶à¦¨ +zoom_in.title=বড় আকারে পà§à¦°à¦¦à¦°à§à¦¶à¦¨ +zoom_in_label=বড় আকারে পà§à¦°à¦¦à¦°à§à¦¶à¦¨ +zoom.title=বড় আকারে পà§à¦°à¦¦à¦°à§à¦¶à¦¨ +presentation_mode.title=উপসà§à¦¥à¦¾à¦ªà¦¨à¦¾ মোডে সà§à¦¯à§à¦‡à¦š করà§à¦¨ +presentation_mode_label=উপসà§à¦¥à¦¾à¦ªà¦¨à¦¾ মোড +open_file.title=ফাইল খà§à¦²à§à¦¨ +open_file_label=খà§à¦²à§à¦¨ +print.title=মà§à¦¦à§à¦°à¦£ +print_label=মà§à¦¦à§à¦°à¦£ +download.title=ডাউনলোড +download_label=ডাউনলোড +bookmark.title=বরà§à¦¤à¦®à¦¾à¦¨ অবসà§à¦¥à¦¾ (অনà§à¦²à¦¿à¦ªà¦¿ অথবা নতà§à¦¨ উইনà§à¦¡à§‹ তে খà§à¦²à§à¦¨) +bookmark_label=বরà§à¦¤à¦®à¦¾à¦¨ অবসà§à¦¥à¦¾ + +# Secondary toolbar and context menu +tools.title=টà§à¦² +tools_label=টà§à¦² +first_page.title=পà§à¦°à¦¥à¦® পাতায় যাও +first_page_label=পà§à¦°à¦¥à¦® পাতায় যাও +last_page.title=শেষ পাতায় যাও +last_page_label=শেষ পাতায় যাও +page_rotate_cw.title=ঘড়ির কাà¦à¦Ÿà¦¾à¦° দিকে ঘোরাও +page_rotate_cw_label=ঘড়ির কাà¦à¦Ÿà¦¾à¦° দিকে ঘোরাও +page_rotate_ccw.title=ঘড়ির কাà¦à¦Ÿà¦¾à¦° বিপরীতে ঘোরাও +page_rotate_ccw_label=ঘড়ির কাà¦à¦Ÿà¦¾à¦° বিপরীতে ঘোরাও + +cursor_text_select_tool.title=লেখা নিরà§à¦¬à¦¾à¦šà¦• টà§à¦² সকà§à¦°à¦¿à§Ÿ করà§à¦¨ +cursor_text_select_tool_label=লেখা নিরà§à¦¬à¦¾à¦šà¦• টà§à¦² +cursor_hand_tool.title=হà§à¦¯à¦¾à¦¨à§à¦¡ টà§à¦² সকà§à¦°à¦¿à¦¯à¦¼ করà§à¦¨ +cursor_hand_tool_label=হà§à¦¯à¦¾à¦¨à§à¦¡ টà§à¦² + +scroll_vertical.title=উলমà§à¦¬ সà§à¦•à§à¦°à¦²à¦¿à¦‚ বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨ +scroll_vertical_label=উলমà§à¦¬ সà§à¦•à§à¦°à¦²à¦¿à¦‚ +scroll_horizontal.title=অনà§à¦­à§‚মিক সà§à¦•à§à¦°à¦²à¦¿à¦‚ বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨ +scroll_horizontal_label=অনà§à¦­à§‚মিক সà§à¦•à§à¦°à¦²à¦¿à¦‚ +scroll_wrapped.title=Wrapped সà§à¦•à§à¦°à§‹à¦²à¦¿à¦‚ বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨ +scroll_wrapped_label=Wrapped সà§à¦•à§à¦°à§‹à¦²à¦¿à¦‚ + +spread_none.title=পেজ সà§à¦ªà§à¦°à§‡à¦¡à¦—à§à¦²à§‹à¦¤à§‡ যোগদান করবেন না +spread_none_label=Spreads নেই +spread_odd_label=বিজোড় Spreads +spread_even_label=জোড় Spreads + +# Document properties dialog box +document_properties.title=নথি বৈশিষà§à¦Ÿà§à¦¯â€¦ +document_properties_label=নথি বৈশিষà§à¦Ÿà§à¦¯â€¦ +document_properties_file_name=ফাইলের নাম: +document_properties_file_size=ফাইলের আকার: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} কেবি ({{size_b}} বাইট) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} à¦à¦®à¦¬à¦¿ ({{size_b}} বাইট) +document_properties_title=শিরোনাম: +document_properties_author=লেখক: +document_properties_subject=বিষয়: +document_properties_keywords=কীওয়ারà§à¦¡: +document_properties_creation_date=তৈরির তারিখ: +document_properties_modification_date=পরিবরà§à¦¤à¦¨à§‡à¦° তারিখ: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=পà§à¦°à¦¸à§à¦¤à§à¦¤à¦•à¦¾à¦°à¦•: +document_properties_producer=পিডিà¦à¦« পà§à¦°à¦¸à§à¦¤à§à¦¤à¦•à¦¾à¦°à¦•: +document_properties_version=পিডিà¦à¦« সংষà§à¦•à¦°à¦£: +document_properties_page_count=মোট পাতা: +document_properties_page_size=পাতার সাইজ: +document_properties_page_size_unit_inches=à¦à¦° মধà§à¦¯à§‡ +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=উলমà§à¦¬ +document_properties_page_size_orientation_landscape=অনà§à¦­à§‚মিক +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=লেটার +document_properties_page_size_name_legal=লীগাল +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Web View: +document_properties_linearized_yes=হà§à¦¯à¦¾à¦ +document_properties_linearized_no=না +document_properties_close=বনà§à¦§ + +print_progress_message=মà§à¦¦à§à¦°à¦£à§‡à¦° জনà§à¦¯ নথি পà§à¦°à¦¸à§à¦¤à§à¦¤ করা হচà§à¦›à§‡â€¦ +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=বাতিল + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=সাইডবার টগল করà§à¦¨ +toggle_sidebar_label=সাইডবার টগল করà§à¦¨ +document_outline.title=নথির আউটলাইন দেখাও (সব আইটেম পà§à¦°à¦¸à¦¾à¦°à¦¿à¦¤/সঙà§à¦•à§à¦šà¦¿à¦¤ করতে ডবল কà§à¦²à¦¿à¦• করà§à¦¨) +document_outline_label=নথির রূপরেখা +attachments.title=সংযà§à¦•à§à¦¤à¦¿ দেখাও +attachments_label=সংযà§à¦•à§à¦¤à¦¿ +thumbs.title=থামà§à¦¬à¦¨à§‡à¦‡à¦² সমূহ পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করà§à¦¨ +thumbs_label=থামà§à¦¬à¦¨à§‡à¦‡à¦² সমূহ +findbar.title=নথির মধà§à¦¯à§‡ খà§à¦à¦œà§à¦¨ +findbar_label=খà§à¦à¦œà§à¦¨ + +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=পাতা {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}} পাতার থামà§à¦¬à¦¨à§‡à¦‡à¦² + +# Find panel button title and messages +find_input.title=খà§à¦à¦œà§à¦¨ +find_input.placeholder=নথির মধà§à¦¯à§‡ খà§à¦à¦œà§à¦¨â€¦ +find_previous.title=বাকà§à¦¯à¦¾à¦‚শের পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ উপসà§à¦¥à¦¿à¦¤à¦¿ অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ +find_previous_label=পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ +find_next.title=বাকà§à¦¯à¦¾à¦‚শের পরবরà§à¦¤à§€ উপসà§à¦¥à¦¿à¦¤à¦¿ অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ +find_next_label=পরবরà§à¦¤à§€ +find_highlight=সব হাইলাইট করà§à¦¨ +find_match_case_label=অকà§à¦·à¦°à§‡à¦° ছাà¦à¦¦ মেলানো +find_entire_word_label=সমà§à¦ªà§‚রà§à¦£ শবà§à¦¦ +find_reached_top=পাতার শà§à¦°à§à¦¤à§‡ পৌছে গেছে, নীচ থেকে আরমà§à¦­ করা হয়েছে +find_reached_bottom=পাতার শেষে পৌছে গেছে, উপর থেকে আরমà§à¦­ করা হয়েছে +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{total}} à¦à¦° {{current}} মিল +find_match_count[two]={{total}} à¦à¦° {{current}} মিল +find_match_count[few]={{total}} à¦à¦° {{current}} মিল +find_match_count[many]={{total}} à¦à¦° {{current}} মিল +find_match_count[other]={{total}} à¦à¦° {{current}} মিল +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]={{limit}} à¦à¦° বেশি মিল +find_match_count_limit[one]={{limit}} à¦à¦° বেশি মিল +find_match_count_limit[two]={{limit}} à¦à¦° বেশি মিল +find_match_count_limit[few]={{limit}} à¦à¦° বেশি মিল +find_match_count_limit[many]={{limit}} à¦à¦° বেশি মিল +find_match_count_limit[other]={{limit}} à¦à¦° বেশি মিল +find_not_found=বাকà§à¦¯à¦¾à¦‚শ পাওয়া যায়নি + +# Error panel labels +error_more_info=আরও তথà§à¦¯ +error_less_info=কম তথà§à¦¯ +error_close=বনà§à¦§ +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=বারà§à¦¤à¦¾: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=নথি: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=লাইন: {{line}} +rendering_error=পাতা উপসà§à¦¥à¦¾à¦ªà¦¨à¦¾à¦° সময় তà§à¦°à§à¦Ÿà¦¿ দেখা দিয়েছে। + +# Predefined zoom values +page_scale_width=পাতার পà§à¦°à¦¸à§à¦¥ +page_scale_fit=পাতা ফিট করà§à¦¨ +page_scale_auto=সà§à¦¬à§Ÿà¦‚কà§à¦°à¦¿à§Ÿ জà§à¦® +page_scale_actual=পà§à¦°à¦•à§ƒà¦¤ আকার +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading_error=পিডিà¦à¦« লোড করার সময় তà§à¦°à§à¦Ÿà¦¿ দেখা দিয়েছে। +invalid_file_error=অকারà§à¦¯à¦•à¦° অথবা কà§à¦·à¦¤à¦¿à¦—à§à¦°à¦¸à§à¦¤ পিডিà¦à¦« ফাইল। +missing_file_error=নিখোà¦à¦œ PDF ফাইল। +unexpected_response_error=অপà§à¦°à¦¤à§à¦¯à¦¾à¦¶à§€à¦¤ সারà§à¦­à¦¾à¦° পà§à¦°à¦¤à¦¿à¦•à§à¦°à¦¿à§Ÿà¦¾à¥¤ + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} টীকা] +password_label=পিডিà¦à¦« ফাইলটি ওপেন করতে পাসওয়ারà§à¦¡ দিন। +password_invalid=ভà§à¦² পাসওয়ারà§à¦¡à¥¤ অনà§à¦—à§à¦°à¦¹ করে আবার চেষà§à¦Ÿà¦¾ করà§à¦¨à¥¤ +password_ok=ঠিক আছে +password_cancel=বাতিল + +printing_not_supported=সতরà§à¦•à¦¤à¦¾: à¦à¦‡ বà§à¦°à¦¾à¦‰à¦œà¦¾à¦°à§‡ মà§à¦¦à§à¦°à¦£ সমà§à¦ªà§‚রà§à¦£à¦­à¦¾à¦¬à§‡ সমরà§à¦¥à¦¿à¦¤ নয়। +printing_not_ready=সতরà§à¦•à§€à¦•à¦°à¦£: পিডিà¦à¦«à¦Ÿà¦¿ মà§à¦¦à§à¦°à¦£à§‡à¦° জনà§à¦¯ সমà§à¦ªà§‚রà§à¦£ লোড হয়নি। +web_fonts_disabled=ওয়েব ফনà§à¦Ÿ নিষà§à¦•à§à¦°à¦¿à§Ÿ: সংযà§à¦•à§à¦¤ পিডিà¦à¦« ফনà§à¦Ÿ বà§à¦¯à¦¬à¦¹à¦¾à¦° করা যাচà§à¦›à§‡ না। + diff --git a/page/static/js/web/locale/bo/viewer.properties b/page/static/js/web/locale/bo/viewer.properties new file mode 100644 index 0000000..d3b3933 --- /dev/null +++ b/page/static/js/web/locale/bo/viewer.properties @@ -0,0 +1,238 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=དྲ་ངོས་སྔོན་མ +previous_label=སྔོན་མ +next.title=དྲ་ངོས་རྗེས་མ +next_label=རྗེས་མ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=ཤོག་ངོས +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=of {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} of {{pagesCount}}) + +zoom_out.title=Zoom Out +zoom_out_label=Zoom Out +zoom_in.title=Zoom In +zoom_in_label=Zoom In +zoom.title=Zoom +presentation_mode.title=Switch to Presentation Mode +presentation_mode_label=Presentation Mode +open_file.title=Open File +open_file_label=Open +print.title=Print +print_label=Print +download.title=Download +download_label=Download +bookmark.title=Current view (copy or open in new window) +bookmark_label=Current View + +# Secondary toolbar and context menu +tools.title=Tools +tools_label=Tools +first_page.title=Go to First Page +first_page_label=Go to First Page +last_page.title=Go to Last Page +last_page_label=Go to Last Page +page_rotate_cw.title=Rotate Clockwise +page_rotate_cw_label=Rotate Clockwise +page_rotate_ccw.title=Rotate Counterclockwise +page_rotate_ccw_label=Rotate Counterclockwise + +cursor_text_select_tool.title=Enable Text Selection Tool +cursor_text_select_tool_label=Text Selection Tool +cursor_hand_tool.title=Enable Hand Tool +cursor_hand_tool_label=Hand Tool + +scroll_vertical.title=Use Vertical Scrolling +scroll_vertical_label=Vertical Scrolling +scroll_horizontal.title=Use Horizontal Scrolling +scroll_horizontal_label=Horizontal Scrolling +scroll_wrapped.title=Use Wrapped Scrolling +scroll_wrapped_label=Wrapped Scrolling + +spread_none.title=Do not join page spreads +spread_none_label=No Spreads +spread_odd.title=Join page spreads starting with odd-numbered pages +spread_odd_label=Odd Spreads +spread_even.title=Join page spreads starting with even-numbered pages +spread_even_label=Even Spreads + +# Document properties dialog box +document_properties.title=Document Properties… +document_properties_label=Document Properties… +document_properties_file_name=File name: +document_properties_file_size=File size: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Title: +document_properties_author=Author: +document_properties_subject=Subject: +document_properties_keywords=Keywords: +document_properties_creation_date=Creation Date: +document_properties_modification_date=Modification Date: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creator: +document_properties_producer=PDF Producer: +document_properties_version=PDF Version: +document_properties_page_count=Page Count: +document_properties_page_size=Page Size: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=portrait +document_properties_page_size_orientation_landscape=landscape +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Web View: +document_properties_linearized_yes=Yes +document_properties_linearized_no=No +document_properties_close=Close + +print_progress_message=Preparing document for printing… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancel + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Toggle Sidebar +toggle_sidebar_label=Toggle Sidebar +document_outline.title=Show Document Outline (double-click to expand/collapse all items) +document_outline_label=Document Outline +attachments.title=Show Attachments +attachments_label=Attachments +thumbs.title=Show Thumbnails +thumbs_label=Thumbnails +findbar.title=Find in Document +findbar_label=Find + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Page {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Thumbnail of Page {{page}} + +# Find panel button title and messages +find_input.title=Find +find_input.placeholder=Find in document… +find_previous.title=Find the previous occurrence of the phrase +find_previous_label=Previous +find_next.title=Find the next occurrence of the phrase +find_next_label=Next +find_highlight=Highlight all +find_match_case_label=Match case +find_entire_word_label=Whole words +find_reached_top=Reached top of document, continued from bottom +find_reached_bottom=Reached end of document, continued from top +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} of {{total}} match +find_match_count[two]={{current}} of {{total}} matches +find_match_count[few]={{current}} of {{total}} matches +find_match_count[many]={{current}} of {{total}} matches +find_match_count[other]={{current}} of {{total}} matches +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=More than {{limit}} matches +find_match_count_limit[one]=More than {{limit}} match +find_match_count_limit[two]=More than {{limit}} matches +find_match_count_limit[few]=More than {{limit}} matches +find_match_count_limit[many]=More than {{limit}} matches +find_match_count_limit[other]=More than {{limit}} matches +find_not_found=Phrase not found + +# Error panel labels +error_more_info=More Information +error_less_info=Less Information +error_close=Close +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Message: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=File: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Line: {{line}} +rendering_error=An error occurred while rendering the page. + +# Predefined zoom values +page_scale_width=Page Width +page_scale_fit=Page Fit +page_scale_auto=Automatic Zoom +page_scale_actual=Actual Size +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=An error occurred while loading the PDF. +invalid_file_error=Invalid or corrupted PDF file. +missing_file_error=Missing PDF file. +unexpected_response_error=Unexpected server response. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=Enter the password to open this PDF file. +password_invalid=Invalid password. Please try again. +password_ok=OK +password_cancel=Cancel + +printing_not_supported=Warning: Printing is not fully supported by this browser. +printing_not_ready=Warning: The PDF is not fully loaded for printing. +web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. + diff --git a/page/static/js/web/locale/br/viewer.properties b/page/static/js/web/locale/br/viewer.properties new file mode 100644 index 0000000..ea3b696 --- /dev/null +++ b/page/static/js/web/locale/br/viewer.properties @@ -0,0 +1,247 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pajenn a-raok +previous_label=A-raok +next.title=Pajenn war-lerc'h +next_label=War-lerc'h + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pajenn +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=eus {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} war {{pagesCount}}) + +zoom_out.title=Zoum bihanaat +zoom_out_label=Zoum bihanaat +zoom_in.title=Zoum brasaat +zoom_in_label=Zoum brasaat +zoom.title=Zoum +presentation_mode.title=Trec'haoliñ etrezek ar mod kinnigadenn +presentation_mode_label=Mod kinnigadenn +open_file.title=Digeriñ ur restr +open_file_label=Digeriñ ur restr +print.title=Moullañ +print_label=Moullañ +download.title=Pellgargañ +download_label=Pellgargañ +bookmark.title=Gwel bremanel (eilañ pe zigeriñ e-barzh ur prenestr nevez) +bookmark_label=Gwel bremanel + +# Secondary toolbar and context menu +tools.title=Ostilhoù +tools_label=Ostilhoù +first_page.title=Mont d'ar bajenn gentañ +first_page_label=Mont d'ar bajenn gentañ +last_page.title=Mont d'ar bajenn diwezhañ +last_page_label=Mont d'ar bajenn diwezhañ +page_rotate_cw.title=C'hwelañ gant roud ar bizied +page_rotate_cw_label=C'hwelañ gant roud ar bizied +page_rotate_ccw.title=C'hwelañ gant roud gin ar bizied +page_rotate_ccw_label=C'hwelañ gant roud gin ar bizied + +cursor_text_select_tool.title=Gweredekaat an ostilh diuzañ testenn +cursor_text_select_tool_label=Ostilh diuzañ testenn +cursor_hand_tool.title=Gweredekaat an ostilh dorn +cursor_hand_tool_label=Ostilh dorn + +scroll_vertical.title=Arverañ an dibunañ a-blom +scroll_vertical_label=Dibunañ a-serzh +scroll_horizontal.title=Arverañ an dibunañ a-blaen +scroll_horizontal_label=Dibunañ a-blaen +scroll_wrapped.title=Arverañ an dibunañ paket +scroll_wrapped_label=Dibunañ paket + +spread_none.title=Chom hep stagañ ar skignadurioù +spread_none_label=Skignadenn ebet +spread_odd.title=Lakaat ar pajennadoù en ur gregiñ gant ar pajennoù ampar +spread_odd_label=Pajennoù ampar +spread_even.title=Lakaat ar pajennadoù en ur gregiñ gant ar pajennoù par +spread_even_label=Pajennoù par + +# Document properties dialog box +document_properties.title=Perzhioù an teul… +document_properties_label=Perzhioù an teul… +document_properties_file_name=Anv restr: +document_properties_file_size=Ment ar restr: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} Ke ({{size_b}} eizhbit) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} Me ({{size_b}} eizhbit) +document_properties_title=Titl: +document_properties_author=Aozer: +document_properties_subject=Danvez: +document_properties_keywords=Gerioù-alc'hwez: +document_properties_creation_date=Deiziad krouiñ: +document_properties_modification_date=Deiziad kemmañ: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Krouer: +document_properties_producer=Kenderc'her PDF: +document_properties_version=Handelv PDF: +document_properties_page_count=Niver a bajennoù: +document_properties_page_size=Ment ar bajenn: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=poltred +document_properties_page_size_orientation_landscape=gweledva +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Lizher +document_properties_page_size_name_legal=Lezennel +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Gwel Web Herrek: +document_properties_linearized_yes=Ya +document_properties_linearized_no=Ket +document_properties_close=Serriñ + +print_progress_message=O prientiñ an teul evit moullañ... +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Nullañ + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Diskouez/kuzhat ar varrenn gostez +toggle_sidebar_notification2.title=Trec'haoliñ ar varrenn-gostez (ur steuñv pe stagadennoù a zo en teul) +toggle_sidebar_label=Diskouez/kuzhat ar varrenn gostez +document_outline.title=Diskouez steuñv an teul (daouglikit evit brasaat/bihanaat an holl elfennoù) +document_outline_label=Sinedoù an teuliad +attachments.title=Diskouez ar c'henstagadurioù +attachments_label=Kenstagadurioù +layers.title=Diskouez ar gwiskadoù (daou-glikañ evit adderaouekaat an holl gwiskadoù d'o stad dre ziouer) +layers_label=Gwiskadoù +thumbs.title=Diskouez ar melvennoù +thumbs_label=Melvennoù +findbar.title=Klask e-barzh an teuliad +findbar_label=Klask + +additional_layers=Gwiskadoù ouzhpenn +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Pajenn {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pajenn {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Melvenn ar bajenn {{page}} + +# Find panel button title and messages +find_input.title=Klask +find_input.placeholder=Klask e-barzh an teuliad +find_previous.title=Kavout an tamm frazenn kent o klotañ ganti +find_previous_label=Kent +find_next.title=Kavout an tamm frazenn war-lerc'h o klotañ ganti +find_next_label=War-lerc'h +find_highlight=Usskediñ pep tra +find_match_case_label=Teurel evezh ouzh ar pennlizherennoù +find_entire_word_label=Gerioù a-bezh +find_reached_top=Tizhet eo bet derou ar bajenn, kenderc'hel diouzh an diaz +find_reached_bottom=Tizhet eo bet dibenn ar bajenn, kenderc'hel diouzh ar c'hrec'h +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]=Klotadenn {{current}} war {{total}} +find_match_count[two]=Klotadenn {{current}} war {{total}} +find_match_count[few]=Klotadenn {{current}} war {{total}} +find_match_count[many]=Klotadenn {{current}} war {{total}} +find_match_count[other]=Klotadenn {{current}} war {{total}} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Muioc'h eget {{limit}} a glotadennoù +find_match_count_limit[one]=Muioc'h eget {{limit}} a glotadennoù +find_match_count_limit[two]=Muioc'h eget {{limit}} a glotadennoù +find_match_count_limit[few]=Muioc'h eget {{limit}} a glotadennoù +find_match_count_limit[many]=Muioc'h eget {{limit}} a glotadennoù +find_match_count_limit[other]=Muioc'h eget {{limit}} a glotadennoù +find_not_found=N'haller ket kavout ar frazenn + +# Error panel labels +error_more_info=Muioc'h a ditouroù +error_less_info=Nebeutoc'h a ditouroù +error_close=Serriñ +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js handelv {{version}} (kempunadur: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Kemennadenn: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Torn: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Restr: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linenn: {{line}} +rendering_error=Degouezhet ez eus bet ur fazi e-pad skrammañ ar bajennad. + +# Predefined zoom values +page_scale_width=Led ar bajenn +page_scale_fit=Pajenn a-bezh +page_scale_auto=Zoum emgefreek +page_scale_actual=Ment wir +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=O kargañ… +loading_error=Degouezhet ez eus bet ur fazi e-pad kargañ ar PDF. +invalid_file_error=Restr PDF didalvoudek pe kontronet. +missing_file_error=Restr PDF o vankout. +unexpected_response_error=Respont dic'hortoz a-berzh an dafariad + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Notennañ] +password_label=Enankit ar ger-tremen evit digeriñ ar restr PDF-mañ. +password_invalid=Ger-tremen didalvoudek. Klaskit en-dro mar plij. +password_ok=Mat eo +password_cancel=Nullañ + +printing_not_supported=Kemenn: N'eo ket skoret penn-da-benn ar moullañ gant ar merdeer-mañ. +printing_not_ready=Kemenn: N'hall ket bezañ moullet ar restr PDF rak n'eo ket karget penn-da-benn. +web_fonts_disabled=Diweredekaet eo an nodrezhoù web: n'haller ket arverañ an nodrezhoù PDF enframmet. + diff --git a/page/static/js/web/locale/brx/viewer.properties b/page/static/js/web/locale/brx/viewer.properties new file mode 100644 index 0000000..8211505 --- /dev/null +++ b/page/static/js/web/locale/brx/viewer.properties @@ -0,0 +1,205 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=आगोलनि बिलाइ +previous_label=आगोलनि +next.title=उननि बिलाइ +next_label=उननि + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=बिलाइ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} नि +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pagesCount}} नि {{pageNumber}}) + +zoom_out.title=फिसायै जà¥à¤® खालाम +zoom_out_label=फिसायै जà¥à¤® खालाम +zoom_in.title=गेदेरै जà¥à¤® खालाम +zoom_in_label=गेदेरै जà¥à¤® खालाम +zoom.title=जà¥à¤® खालाम +presentation_mode.title=दिनà¥à¤¥à¤¿à¤«à¥à¤‚नाय म'डआव थां +presentation_mode_label=दिनà¥à¤¥à¤¿à¤«à¥à¤‚नाय म'ड +open_file.title=फाइलखौ खेव +open_file_label=खेव +print.title=साफाय +print_label=साफाय +download.title=डाउनल'ड खालाम +download_label=डाउनल'ड खालाम +bookmark.title=दानि नà¥à¤¥à¤¾à¤¯ (गोदान उइनà¥à¤¡'आव कपि खालाम à¤à¤¬à¤¾ खेव) +bookmark_label=दानि नà¥à¤¥à¤¾à¤¯ + +# Secondary toolbar and context menu +tools.title=टà¥à¤² +tools_label=टà¥à¤² +first_page.title=गिबि बिलाइआव थां +first_page_label=गिबि बिलाइआव थां +last_page.title=जोबथा बिलाइआव थां +last_page_label=जोबथा बिलाइआव थां +page_rotate_cw.title=घरि गिदिंनाय फारà¥à¤¸à¥‡ फिदिं +page_rotate_cw_label=घरि गिदिंनाय फारà¥à¤¸à¥‡ फिदिं +page_rotate_ccw.title=घरि गिदिंनाय उलà¥à¤¥à¤¾ फारà¥à¤¸à¥‡ फिदिं +page_rotate_ccw_label=घरि गिदिंनाय उलà¥à¤¥à¤¾ फारà¥à¤¸à¥‡ फिदिं + + + + +# Document properties dialog box +document_properties.title=फोरमान बिलाइनि आखà¥à¤¥à¤¾à¤¯... +document_properties_label=फोरमान बिलाइनि आखà¥à¤¥à¤¾à¤¯... +document_properties_file_name=फाइलनि मà¥à¤‚: +document_properties_file_size=फाइलनि महर: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} बाइट) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} बाइट) +document_properties_title=बिमà¥à¤‚: +document_properties_author=लिरगिरि: +document_properties_subject=आयदा: +document_properties_keywords=गाहाय सोदोब: +document_properties_creation_date=सोरजिनाय अकà¥à¤Ÿ': +document_properties_modification_date=सà¥à¤¦à¥à¤°à¤¾à¤¯à¤¨à¤¾à¤¯ अकà¥à¤Ÿ': +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=सोरजिगà¥à¤°à¤¾: +document_properties_producer=PDF दिहà¥à¤¨à¤—à¥à¤°à¤¾: +document_properties_version=PDF बिसान: +document_properties_page_count=बिलाइनि हिसाब: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=प'रà¥à¤Ÿà¥à¤°à¥‡à¤Ÿ +document_properties_page_size_orientation_landscape=लेणà¥à¤¡à¤¸à¥à¤•à¥‡à¤ª +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=लायजाम +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized_yes=नंगौ +document_properties_linearized_no=नङा +document_properties_close=बनà¥à¤¦ खालाम + +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=नेवसि + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=टगà¥à¤—ल साइडबार +toggle_sidebar_label=टगà¥à¤—ल साइडबार +document_outline_label=फोरमान बिलाइ सिमा हांखो +attachments.title=नांजाब होनायखौ दिनà¥à¤¥à¤¿ +attachments_label=नांजाब होनाय +thumbs.title=थामनेइलखौ दिनà¥à¤¥à¤¿ +thumbs_label=थामनेइल +findbar.title=फोरमान बिलाइआव नागिरना दिहà¥à¤¨ +findbar_label=नायगिरना दिहà¥à¤¨ + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=बिलाइ {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=बिलाइ {{page}} नि थामनेइल + +# Find panel button title and messages +find_input.title=नायगिरना दिहà¥à¤¨ +find_input.placeholder=फोरमान बिलाइआव नागिरना दिहà¥à¤¨... +find_previous.title=बाथà¥à¤°à¤¾ खोनà¥à¤¦à¥‹à¤¬à¤¨à¤¿ सिगांनि नà¥à¤œà¤¾à¤¥à¤¿à¤¨à¤¾à¤¯à¤–ौ नागिर +find_previous_label=आगोलनि +find_next.title=बाथà¥à¤°à¤¾ खोनà¥à¤¦à¥‹à¤¬à¤¨à¤¿ उननि नà¥à¤œà¤¾à¤¥à¤¿à¤¨à¤¾à¤¯à¤–ौ नागिर +find_next_label=उननि +find_highlight=गासैखौबो हाइलाइट खालाम +find_match_case_label=गोरोबनाय केस +find_reached_top=थालो निफà¥à¤°à¤¾à¤¯ जागायनानै फोरमान बिलाइनि बिजौआव सौहैबाय +find_reached_bottom=बिजौ निफà¥à¤°à¤¾à¤¯ जागायनानै फोरमान बिलाइनि बिजौआव सौहैबाय +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_not_found=बाथà¥à¤°à¤¾ खोनà¥à¤¦à¥‹à¤¬ मोनाखै + +# Error panel labels +error_more_info=गोबां फोरमायथिहोगà¥à¤°à¤¾ +error_less_info=खम फोरमायथिहोगà¥à¤°à¤¾ +error_close=बनà¥à¤¦ खालाम +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=खौरां: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=सà¥à¤Ÿà¥‡à¤•: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=फाइल: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=सारि: {{line}} +rendering_error=बिलाइखौ राव सोलायनाय समाव मोनसे गोरोनà¥à¤¥à¤¿ जादों। + +# Predefined zoom values +page_scale_width=बिलाइनि गà¥à¤µà¤¾à¤° +page_scale_fit=बिलाइ गोरोबनाय +page_scale_auto=गावनोगाव जà¥à¤® +page_scale_actual=थार महर +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=PDF ल'ड खालामनाय समाव मोनसे गोरोनà¥à¤¥à¤¿ जाबाय। +invalid_file_error=बाहायजायै à¤à¤¬à¤¾ गाजà¥à¤°à¤¿ जानाय PDF फाइल +missing_file_error=गोमानाय PDF फाइल +unexpected_response_error=मिजिंथियै सारà¥à¤­à¤¾à¤° फिननाय। + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} सोदोब बेखेवनाय] +password_label=बे PDF फाइलखौ खेवनो पासवारà¥à¤¡ हाबहो। +password_invalid=बाहायजायै पासवारà¥à¤¡à¥¤ अननानै फिन नाजा। +password_ok=OK +password_cancel=नेवसि + +printing_not_supported=सांगà¥à¤°à¤¾à¤‚थि: साफायनाया बे बà¥à¤°à¤¾à¤‰à¤œà¤¾à¤°à¤œà¥‹à¤‚ आबà¥à¤™à¥ˆ हेफाजाब होजाया। +printing_not_ready=सांगà¥à¤°à¤¾à¤‚थि: PDF खौ साफायनायनि थाखाय फà¥à¤°à¤¾à¤¯à¥ˆ ल'ड खालामाखै। +web_fonts_disabled=वेब फनà¥à¤Ÿà¤–ौ लोरबां खालामबाय: अरजाबहोनाय PDF फनà¥à¤Ÿà¤–ौ बाहायनो हायाखै। + diff --git a/page/static/js/web/locale/bs/viewer.properties b/page/static/js/web/locale/bs/viewer.properties new file mode 100644 index 0000000..b482bb1 --- /dev/null +++ b/page/static/js/web/locale/bs/viewer.properties @@ -0,0 +1,194 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Prethodna strana +previous_label=Prethodna +next.title=Sljedeća strna +next_label=Sljedeća + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Strana +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=od {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} od {{pagesCount}}) + +zoom_out.title=Umanji +zoom_out_label=Umanji +zoom_in.title=Uvećaj +zoom_in_label=Uvećaj +zoom.title=Uvećanje +presentation_mode.title=Prebaci se u prezentacijski režim +presentation_mode_label=Prezentacijski režim +open_file.title=Otvori fajl +open_file_label=Otvori +print.title=Å tampaj +print_label=Å tampaj +download.title=Preuzmi +download_label=Preuzmi +bookmark.title=Trenutni prikaz (kopiraj ili otvori u novom prozoru) +bookmark_label=Trenutni prikaz + +# Secondary toolbar and context menu +tools.title=Alati +tools_label=Alati +first_page.title=Idi na prvu stranu +first_page_label=Idi na prvu stranu +last_page.title=Idi na zadnju stranu +last_page_label=Idi na zadnju stranu +page_rotate_cw.title=Rotiraj u smjeru kazaljke na satu +page_rotate_cw_label=Rotiraj u smjeru kazaljke na satu +page_rotate_ccw.title=Rotiraj suprotno smjeru kazaljke na satu +page_rotate_ccw_label=Rotiraj suprotno smjeru kazaljke na satu + +cursor_text_select_tool.title=Omogući alat za oznaÄavanje teksta +cursor_text_select_tool_label=Alat za oznaÄavanje teksta +cursor_hand_tool.title=Omogući ruÄni alat +cursor_hand_tool_label=RuÄni alat + +# Document properties dialog box +document_properties.title=Svojstva dokumenta... +document_properties_label=Svojstva dokumenta... +document_properties_file_name=Naziv fajla: +document_properties_file_size=VeliÄina fajla: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bajta) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bajta) +document_properties_title=Naslov: +document_properties_author=Autor: +document_properties_subject=Predmet: +document_properties_keywords=KljuÄne rijeÄi: +document_properties_creation_date=Datum kreiranja: +document_properties_modification_date=Datum promjene: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Kreator: +document_properties_producer=PDF stvaratelj: +document_properties_version=PDF verzija: +document_properties_page_count=Broj stranica: +document_properties_page_size=VeliÄina stranice: +document_properties_page_size_unit_inches=u +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=uspravno +document_properties_page_size_orientation_landscape=vodoravno +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Pismo +document_properties_page_size_name_legal=Pravni +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +document_properties_close=Zatvori + +print_progress_message=Pripremam dokument za Å¡tampu… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Otkaži + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=UkljuÄi/iskljuÄi boÄnu traku +toggle_sidebar_label=UkljuÄi/iskljuÄi boÄnu traku +document_outline.title=Prikaži outline dokumenta (dvoklik za skupljanje/Å¡irenje svih stavki) +document_outline_label=Konture dokumenta +attachments.title=Prikaži priloge +attachments_label=Prilozi +thumbs.title=Prikaži thumbnailove +thumbs_label=Thumbnailovi +findbar.title=PronaÄ‘i u dokumentu +findbar_label=PronaÄ‘i + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Strana {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Thumbnail strane {{page}} + +# Find panel button title and messages +find_input.title=PronaÄ‘i +find_input.placeholder=PronaÄ‘i u dokumentu… +find_previous.title=PronaÄ‘i prethodno pojavljivanje fraze +find_previous_label=Prethodno +find_next.title=PronaÄ‘i sljedeće pojavljivanje fraze +find_next_label=Sljedeće +find_highlight=OznaÄi sve +find_match_case_label=Osjetljivost na karaktere +find_reached_top=Dostigao sam vrh dokumenta, nastavljam sa dna +find_reached_bottom=Dostigao sam kraj dokumenta, nastavljam sa vrha +find_not_found=Fraza nije pronaÄ‘ena + +# Error panel labels +error_more_info=ViÅ¡e informacija +error_less_info=Manje informacija +error_close=Zatvori +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Poruka: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fajl: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linija: {{line}} +rendering_error=DoÅ¡lo je do greÅ¡ke prilikom renderiranja strane. + +# Predefined zoom values +page_scale_width=Å irina strane +page_scale_fit=Uklopi stranu +page_scale_auto=Automatsko uvećanje +page_scale_actual=Stvarna veliÄina +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=DoÅ¡lo je do greÅ¡ke prilikom uÄitavanja PDF-a. +invalid_file_error=Neispravan ili oÅ¡tećen PDF fajl. +missing_file_error=Nedostaje PDF fajl. +unexpected_response_error=NeoÄekivani odgovor servera. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} pribiljeÅ¡ka] +password_label=UpiÅ¡ite lozinku da biste otvorili ovaj PDF fajl. +password_invalid=PogreÅ¡na lozinka. PokuÅ¡ajte ponovo. +password_ok=OK +password_cancel=Otkaži + +printing_not_supported=Upozorenje: Å tampanje nije u potpunosti podržano u ovom browseru. +printing_not_ready=Upozorenje: PDF nije u potpunosti uÄitan za Å¡tampanje. +web_fonts_disabled=Web fontovi su onemogućeni: nemoguće koristiti ubaÄene PDF fontove. + diff --git a/page/static/js/web/locale/ca/viewer.properties b/page/static/js/web/locale/ca/viewer.properties new file mode 100644 index 0000000..eaa4571 --- /dev/null +++ b/page/static/js/web/locale/ca/viewer.properties @@ -0,0 +1,251 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pàgina anterior +previous_label=Anterior +next.title=Pàgina següent +next_label=Següent + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pàgina +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Redueix +zoom_out_label=Redueix +zoom_in.title=Amplia +zoom_in_label=Amplia +zoom.title=Escala +presentation_mode.title=Canvia al mode de presentació +presentation_mode_label=Mode de presentació +open_file.title=Obre el fitxer +open_file_label=Obre +print.title=Imprimeix +print_label=Imprimeix +download.title=Baixa +download_label=Baixa +bookmark.title=Vista actual (copia o obre en una finestra nova) +bookmark_label=Vista actual + +# Secondary toolbar and context menu +tools.title=Eines +tools_label=Eines +first_page.title=Vés a la primera pàgina +first_page_label=Vés a la primera pàgina +last_page.title=Vés a l'última pàgina +last_page_label=Vés a l'última pàgina +page_rotate_cw.title=Gira cap a la dreta +page_rotate_cw_label=Gira cap a la dreta +page_rotate_ccw.title=Gira cap a l'esquerra +page_rotate_ccw_label=Gira cap a l'esquerra + +cursor_text_select_tool.title=Habilita l'eina de selecció de text +cursor_text_select_tool_label=Eina de selecció de text +cursor_hand_tool.title=Habilita l'eina de mà +cursor_hand_tool_label=Eina de mà + +scroll_page.title=Usa el desplaçament de pàgina +scroll_page_label=Desplaçament de pàgina +scroll_vertical.title=Utilitza el desplaçament vertical +scroll_vertical_label=Desplaçament vertical +scroll_horizontal.title=Utilitza el desplaçament horitzontal +scroll_horizontal_label=Desplaçament horitzontal +scroll_wrapped.title=Activa el desplaçament continu +scroll_wrapped_label=Desplaçament continu + +spread_none.title=No agrupis les pàgines de dues en dues +spread_none_label=Una sola pàgina +spread_odd.title=Mostra dues pàgines començant per les pàgines de numeració senar +spread_odd_label=Doble pàgina (senar) +spread_even.title=Mostra dues pàgines començant per les pàgines de numeració parell +spread_even_label=Doble pàgina (parell) + +# Document properties dialog box +document_properties.title=Propietats del document… +document_properties_label=Propietats del document… +document_properties_file_name=Nom del fitxer: +document_properties_file_size=Mida del fitxer: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Títol: +document_properties_author=Autor: +document_properties_subject=Assumpte: +document_properties_keywords=Paraules clau: +document_properties_creation_date=Data de creació: +document_properties_modification_date=Data de modificació: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creador: +document_properties_producer=Generador de PDF: +document_properties_version=Versió de PDF: +document_properties_page_count=Nombre de pàgines: +document_properties_page_size=Mida de la pàgina: +document_properties_page_size_unit_inches=polzades +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=vertical +document_properties_page_size_orientation_landscape=apaïsat +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Carta +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista web ràpida: +document_properties_linearized_yes=Sí +document_properties_linearized_no=No +document_properties_close=Tanca + +print_progress_message=S'està preparant la impressió del document… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancel·la + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Mostra/amaga la barra lateral +toggle_sidebar_notification2.title=Mostra/amaga la barra lateral (el document conté un esquema, adjuncions o capes) +toggle_sidebar_label=Mostra/amaga la barra lateral +document_outline.title=Mostra l'esquema del document (doble clic per ampliar/reduir tots els elements) +document_outline_label=Esquema del document +attachments.title=Mostra les adjuncions +attachments_label=Adjuncions +layers.title=Mostra les capes (doble clic per restablir totes les capes al seu estat per defecte) +layers_label=Capes +thumbs.title=Mostra les miniatures +thumbs_label=Miniatures +current_outline_item.title=Cerca l'element d'esquema actual +current_outline_item_label=Element d'esquema actual +findbar.title=Cerca al document +findbar_label=Cerca + +additional_layers=Capes addicionals +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Pàgina {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pàgina {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura de la pàgina {{page}} + +# Find panel button title and messages +find_input.title=Cerca +find_input.placeholder=Cerca al document… +find_previous.title=Cerca l'anterior coincidència de l'expressió +find_previous_label=Anterior +find_next.title=Cerca la següent coincidència de l'expressió +find_next_label=Següent +find_highlight=Ressalta-ho tot +find_match_case_label=Distingeix entre majúscules i minúscules +find_entire_word_label=Paraules senceres +find_reached_top=S'ha arribat al principi del document, es continua pel final +find_reached_bottom=S'ha arribat al final del document, es continua pel principi +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} de {{total}} coincidència +find_match_count[two]={{current}} de {{total}} coincidències +find_match_count[few]={{current}} de {{total}} coincidències +find_match_count[many]={{current}} de {{total}} coincidències +find_match_count[other]={{current}} de {{total}} coincidències +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Més de {{limit}} coincidències +find_match_count_limit[one]=Més d'{{limit}} coincidència +find_match_count_limit[two]=Més de {{limit}} coincidències +find_match_count_limit[few]=Més de {{limit}} coincidències +find_match_count_limit[many]=Més de {{limit}} coincidències +find_match_count_limit[other]=Més de {{limit}} coincidències +find_not_found=No s'ha trobat l'expressió + +# Error panel labels +error_more_info=Més informació +error_less_info=Menys informació +error_close=Tanca +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (muntatge: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Missatge: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pila: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fitxer: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Línia: {{line}} +rendering_error=S'ha produït un error mentre es renderitzava la pàgina. + +# Predefined zoom values +page_scale_width=Amplada de la pàgina +page_scale_fit=Ajusta la pàgina +page_scale_auto=Zoom automàtic +page_scale_actual=Mida real +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=S'està carregant… +loading_error=S'ha produït un error en carregar el PDF. +invalid_file_error=El fitxer PDF no és vàlid o està malmès. +missing_file_error=Falta el fitxer PDF. +unexpected_response_error=Resposta inesperada del servidor. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotació {{type}}] +password_label=Introduïu la contrasenya per obrir aquest fitxer PDF. +password_invalid=La contrasenya no és vàlida. Torneu-ho a provar. +password_ok=D'acord +password_cancel=Cancel·la + +printing_not_supported=Avís: la impressió no és plenament funcional en aquest navegador. +printing_not_ready=Atenció: el PDF no s'ha acabat de carregar per imprimir-lo. +web_fonts_disabled=Els tipus de lletra web estan desactivats: no es poden utilitzar els tipus de lletra incrustats al PDF. + diff --git a/page/static/js/web/locale/cak/viewer.properties b/page/static/js/web/locale/cak/viewer.properties new file mode 100644 index 0000000..6be4710 --- /dev/null +++ b/page/static/js/web/locale/cak/viewer.properties @@ -0,0 +1,249 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Jun kan ruxaq +previous_label=Jun kan +next.title=Jun chik ruxaq +next_label=Jun chik + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Ruxaq +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=richin {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} richin {{pagesCount}}) + +zoom_out.title=Tich'utinirisäx +zoom_out_label=Tich'utinirisäx +zoom_in.title=Tinimirisäx +zoom_in_label=Tinimirisäx +zoom.title=Sum +presentation_mode.title=Tijal ri rub'anikil niwachin +presentation_mode_label=Pa rub'eyal niwachin +open_file.title=Tijaq Yakb'äl +open_file_label=Tijaq +print.title=Titz'ajb'äx +print_label=Titz'ajb'äx +download.title=Tiqasäx +download_label=Tiqasäx +bookmark.title=Rutz'etik wakami (tiwachib'ëx o tijaq pa jun k'ak'a' tzuwäch) +bookmark_label=Rutzub'al wakami + +# Secondary toolbar and context menu +tools.title=Samajib'äl +tools_label=Samajib'äl +first_page.title=Tib'e pa nab'ey ruxaq +first_page_label=Tib'e pa nab'ey ruxaq +last_page.title=Tib'e pa ruk'isib'äl ruxaq +last_page_label=Tib'e pa ruk'isib'äl ruxaq +page_rotate_cw.title=Tisutïx pan ajkiq'a' +page_rotate_cw_label=Tisutïx pan ajkiq'a' +page_rotate_ccw.title=Tisutïx pan ajxokon +page_rotate_ccw_label=Tisutïx pan ajxokon + +cursor_text_select_tool.title=Titzij ri rusamajib'al Rucha'ik Rucholajem Tzij +cursor_text_select_tool_label=Rusamajib'al Rucha'ik Rucholajem Tzij +cursor_hand_tool.title=Titzij ri q'ab'aj samajib'äl +cursor_hand_tool_label=Q'ab'aj Samajib'äl + +scroll_vertical.title=Tokisäx Pa'äl Q'axanem +scroll_vertical_label=Pa'äl Q'axanem +scroll_horizontal.title=Tokisäx Kotz'öl Q'axanem +scroll_horizontal_label=Kotz'öl Q'axanem +scroll_wrapped.title=Tokisäx Tzub'aj Q'axanem +scroll_wrapped_label=Tzub'aj Q'axanem + +spread_none.title=Man ketun taq ruxaq pa rub'eyal wuj +spread_none_label=Majun Rub'eyal +spread_odd.title=Ke'atunu' ri taq ruxaq rik'in natikirisaj rik'in jun man k'ulaj ta rajilab'al +spread_odd_label=Man K'ulaj Ta Rub'eyal +spread_even.title=Ke'atunu' ri taq ruxaq rik'in natikirisaj rik'in jun k'ulaj rajilab'al +spread_even_label=K'ulaj Rub'eyal + +# Document properties dialog box +document_properties.title=Taq richinil wuj… +document_properties_label=Taq richinil wuj… +document_properties_file_name=Rub'i' yakb'äl: +document_properties_file_size=Runimilem yakb'äl: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=B'i'aj: +document_properties_author=B'anel: +document_properties_subject=Taqikil: +document_properties_keywords=Kixe'el taq tzij: +document_properties_creation_date=Ruq'ijul xtz'uk: +document_properties_modification_date=Ruq'ijul xjalwachïx: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Q'inonel: +document_properties_producer=PDF b'anöy: +document_properties_version=PDF ruwäch: +document_properties_page_count=Jarupe' ruxaq: +document_properties_page_size=Runimilem ri Ruxaq: +document_properties_page_size_unit_inches=pa +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=rupalem +document_properties_page_size_orientation_landscape=rukotz'olem +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Loman wuj +document_properties_page_size_name_legal=Taqanel tzijol +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Anin Rutz'etik Ajk'amaya'l: +document_properties_linearized_yes=Ja' +document_properties_linearized_no=Mani +document_properties_close=Titz'apïx + +print_progress_message=Ruchojmirisaxik wuj richin nitz'ajb'äx… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Tiq'at + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Tijal ri ajxikin kajtz'ik +toggle_sidebar_notification2.title=Tik'ex ri ajxikin yuqkajtz'ik (ri wuj eruk'wan taq ruchi'/taqo/kuchuj) +toggle_sidebar_label=Tijal ri ajxikin kajtz'ik +document_outline.title=Tik'ut pe ruch'akulal wuj (kamul-pitz'oj richin nirik'/nich'utinirisäx ronojel ruch'akulal) +document_outline_label=Ruch'akulal wuj +attachments.title=Kek'ut pe ri taq taqoj +attachments_label=Taq taqoj +layers.title=Kek'ut taq Kuchuj (ka'i'-pitz' richin yetzolïx ronojel ri taq kuchuj e k'o wi) +layers_label=Taq kuchuj +thumbs.title=Kek'ut pe taq ch'utiq +thumbs_label=Koköj +current_outline_item.title=Kekanöx Taq Ch'akulal Kik'wan Chib'äl +current_outline_item_label=Taq Ch'akulal Kik'wan Chib'äl +findbar.title=Tikanöx chupam ri wuj +findbar_label=Tikanöx + +additional_layers=Tz'aqat ta Kuchuj +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Ruxaq {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Ruxaq {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Ruch'utinirisaxik ruxaq {{page}} + +# Find panel button title and messages +find_input.title=Tikanöx +find_input.placeholder=Tikanöx pa wuj… +find_previous.title=Tib'an b'enam pa ri jun kan q'aptzij xilitäj +find_previous_label=Jun kan +find_next.title=Tib'e pa ri jun chik pajtzij xilitäj +find_next_label=Jun chik +find_highlight=Tiya' retal ronojel +find_match_case_label=Tuk'äm ri' kik'in taq nimatz'ib' chuqa' taq ch'utitz'ib' +find_entire_word_label=Tz'aqät taq tzij +find_reached_top=Xb'eq'i' ri rutikirib'al wuj, xtikanöx k'a pa ruk'isib'äl +find_reached_bottom=Xb'eq'i' ri ruk'isib'äl wuj, xtikanöx pa rutikirib'al +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} richin {{total}} nuk'äm ri' +find_match_count[two]={{current}} richin {{total}} nikik'äm ki' +find_match_count[few]={{current}} richin {{total}} nikik'äm ki' +find_match_count[many]={{current}} richin {{total}} nikik'äm ki' +find_match_count[other]={{current}} richin {{total}} nikik'äm ki' +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=K'ïy chi re {{limit}} nikik'äm ki' +find_match_count_limit[one]=K'ïy chi re {{limit}} nuk'äm ri' +find_match_count_limit[two]=K'ïy chi re {{limit}} nikik'äm ki' +find_match_count_limit[few]=K'ïy chi re {{limit}} nikik'äm ki' +find_match_count_limit[many]=K'ïy chi re {{limit}} nikik'äm ki' +find_match_count_limit[other]=K'ïy chi re {{limit}} nikik'äm ki' +find_not_found=Man xilitäj ta ri pajtzij + +# Error panel labels +error_more_info=Ch'aqa' chik rutzijol +error_less_info=Jub'a' ok rutzijol +error_close=Titz'apïx +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Uqxa'n: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Tzub'aj: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Yakb'äl: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=B'ey: {{line}} +rendering_error=Xk'ulwachitäj jun sachoj toq ninuk'wachij ri ruxaq. + +# Predefined zoom values +page_scale_width=Ruwa ruxaq +page_scale_fit=Tinuk' ruxaq +page_scale_auto=Yonil chi nimilem +page_scale_actual=Runimilem Wakami +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Nisamäj… +loading_error=\u0020Xk'ulwachitäj jun sach'oj toq xnuk'ux ri PDF . +invalid_file_error=Man oke ta o yujtajinäq ri PDF yakb'äl. +missing_file_error=Man xilitäj ta ri PDF yakb'äl. +unexpected_response_error=Man oyob'en ta tz'olin rutzij ruk'u'x samaj. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Tz'ib'anïk] +password_label=Tatz'ib'aj ri ewan tzij richin najäq re yakb'äl re' pa PDF. +password_invalid=Man okel ta ri ewan tzij: Tatojtob'ej chik. +password_ok=Ãœtz +password_cancel=Tiq'at + +printing_not_supported=Rutzijol k'ayewal: Ri rutz'ajb'axik man koch'el ta ronojel pa re okik'amaya'l re'. +printing_not_ready=Rutzijol k'ayewal: Ri PDF man xusamajij ta ronojel richin nitz'ajb'äx. +web_fonts_disabled=E chupül ri taq ajk'amaya'l tz'ib': man tikirel ta nokisäx ri taq tz'ib' PDF pa ch'ikenïk + diff --git a/page/static/js/web/locale/ckb/viewer.properties b/page/static/js/web/locale/ckb/viewer.properties new file mode 100644 index 0000000..91403cd --- /dev/null +++ b/page/static/js/web/locale/ckb/viewer.properties @@ -0,0 +1,234 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Ù¾Û•Ú•Û•ÛŒ پێشوو +previous_label=پێشوو +next.title=Ù¾Û•Ú•Û•ÛŒ دوواتر +next_label=دوواتر + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=پەرە +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=Ù„Û• {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} Ù„Û• {{pagesCount}}) + +zoom_out.title=ڕۆچوونی +zoom_out_label=ڕۆچوونی +zoom_in.title=هێنانەپێش +zoom_in_label=هێنانەپێش +zoom.title=زووم +presentation_mode.title=گۆڕین بۆ دۆخی پێشکەشکردن +presentation_mode_label=دۆخی پێشکەشکردن +open_file.title=Ù¾Û•Ú•Ú¯Û• بکەرەوە +open_file_label=کردنەوە +print.title=چاپکردن +print_label=چاپکردن +download.title=داگرتن +download_label=داگرتن +bookmark.title=پێشبینینی ئێستا(لەبەریبگرەوە یان پەنجەرەیەکی نوێ بکەرەوە) +bookmark_label=پیشبینینی ئێستا + +# Secondary toolbar and context menu +tools.title=ئامرازەکان +tools_label=ئامرازەکان +first_page.title=برۆ بۆ یەکەم Ù¾Û•Ú•Û• +first_page_label=بڕۆ بۆ یەکەم Ù¾Û•Ú•Û• +last_page.title=بڕۆ بۆ کۆتا Ù¾Û•Ú•Û• +last_page_label=بڕۆ بۆ کۆتا Ù¾Û•Ú•Û• +page_rotate_cw.title=ئاڕاستەی میلی کاتژمێر +page_rotate_cw_label=ئاڕاستەی میلی کاتژمێر +page_rotate_ccw.title=پێچەوانەی میلی کاتژمێر +page_rotate_ccw_label=پێچەوانەی میلی کاتژمێر + +cursor_text_select_tool.title=توڵامرازی نیشانکەری دەق چالاک بکە +cursor_text_select_tool_label=توڵامرازی نیشانکەری دەق +cursor_hand_tool.title=توڵامرازی دەستی چالاک بکە +cursor_hand_tool_label=توڵامرازی دەستی + +scroll_vertical.title=ناردنی ئەستوونی بەکاربێنە +scroll_vertical_label=ناردنی ئەستوونی +scroll_horizontal.title=ناردنی ئاسۆیی بەکاربێنە +scroll_horizontal_label=ناردنی ئاسۆیی +scroll_wrapped.title=ناردنی لوولکراو بەکاربێنە +scroll_wrapped_label=ناردنی لوولکراو + + +# Document properties dialog box +document_properties.title=تایبەتمەندییەکانی بەڵگەنامە... +document_properties_label=تایبەتمەندییەکانی بەڵگەنامە... +document_properties_file_name=ناوی Ù¾Û•Ú•Ú¯Û•: +document_properties_file_size=قەبارەی Ù¾Û•Ú•Ú¯Û•: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} کب ({{size_b}} بایت) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} مب ({{size_b}} بایت) +document_properties_title=سەردێڕ: +document_properties_author=نووسەر +document_properties_subject=بابەت: +document_properties_keywords=کلیلەوشە: +document_properties_creation_date=بەرواری درووستکردن: +document_properties_modification_date=بەرواری دەستکاریکردن: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=درووستکەر: +document_properties_producer=بەرهەمهێنەری PDF: +document_properties_version=وەشانی PDF: +document_properties_page_count=ژمارەی پەرەکان: +document_properties_page_size=قەبارەی Ù¾Û•Ú•Û•: +document_properties_page_size_unit_inches=ئینچ +document_properties_page_size_unit_millimeters=ملم +document_properties_page_size_orientation_portrait=پۆرترەیت(درێژ) +document_properties_page_size_orientation_landscape=پانیی +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=نامە +document_properties_page_size_name_legal=یاسایی +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=پیشاندانی وێبی خێرا: +document_properties_linearized_yes=بەڵێ +document_properties_linearized_no=نەخێر +document_properties_close=داخستن + +print_progress_message=بەڵگەنامە ئامادەدەکرێت بۆ چاپکردن... +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=پاشگەزبوونەوە + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=لاتەنیشت پیشاندان/شاردنەوە +toggle_sidebar_label=لاتەنیشت پیشاندان/شاردنەوە +document_outline_label=سنووری چوارچێوە +attachments.title=پاشکۆکان پیشان بدە +attachments_label=پاشکۆکان +layers_label=چینەکان +thumbs.title=ÙˆÛŽÙ†Û†Ú†Ú©Û• پیشان بدە +thumbs_label=ÙˆÛŽÙ†Û†Ú†Ú©Û• +findbar.title=Ù„Û• بەڵگەنامە بگەرێ +findbar_label=دۆزینەوە + +additional_layers=چینی زیاتر +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Ù¾Û•Ú•Û•ÛŒ {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=ÙˆÛŽÙ†Û†Ú†Ú©Û•ÛŒ Ù¾Û•Ú•Û•ÛŒ {{page}} + +# Find panel button title and messages +find_input.title=دۆزینەوە +find_input.placeholder=Ù„Û• بەڵگەنامە بگەرێ... +find_previous.title=هەبوونی پێشوو بدۆزرەوە Ù„Û• ڕستەکەدا +find_previous_label=پێشوو +find_next.title=هەبوونی داهاتوو بدۆزەرەوە Ù„Û• ڕستەکەدا +find_next_label=دوواتر +find_highlight=هەمووی نیشانە بکە +find_match_case_label=دۆخی لەیەکچوون +find_entire_word_label=هەموو وشەکان +find_reached_top=گەشتیتە سەرەوەی بەڵگەنامە، Ù„Û• خوارەوە دەستت پێکرد +find_reached_bottom=گەشتیتە کۆتایی بەڵگەنامە. لەسەرەوە دەستت پێکرد +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} Ù„Û• Ú©Û†ÛŒ {{total}} لەیەکچوو +find_match_count[two]={{current}} Ù„Û• Ú©Û†ÛŒ {{total}} لەیەکچوو +find_match_count[few]={{current}} Ù„Û• Ú©Û†ÛŒ {{total}} لەیەکچوو +find_match_count[many]={{current}} Ù„Û• Ú©Û†ÛŒ {{total}} لەیەکچوو +find_match_count[other]={{current}} Ù„Û• Ú©Û†ÛŒ {{total}} لەیەکچوو +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=زیاتر Ù„Û• {{limit}} لەیەکچوو +find_match_count_limit[one]=زیاتر Ù„Û• {{limit}} لەیەکچوو +find_match_count_limit[two]=زیاتر Ù„Û• {{limit}} لەیەکچوو +find_match_count_limit[few]=زیاتر Ù„Û• {{limit}} لەیەکچوو +find_match_count_limit[many]=زیاتر Ù„Û• {{limit}} لەیەکچوو +find_match_count_limit[other]=زیاتر Ù„Û• {{limit}} لەیەکچوو +find_not_found=نووسین نەدۆزرایەوە + +# Error panel labels +error_more_info=زانیاری زیاتر +error_less_info=زانیاری کەمتر +error_close=داخستن +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=پەیام: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=لەسەریەک: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Ù¾Û•Ú•Ú¯Û•: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Ù‡ÛŽÚµ: {{line}} +rendering_error=هەڵەیەک ڕوویدا Ù„Û• کاتی پوختەکردنی (ڕێندەر) Ù¾Û•Ú•Û•. + +# Predefined zoom values +page_scale_width=پانی Ù¾Û•Ú•Û• +page_scale_fit=پڕبوونی Ù¾Û•Ú•Û• +page_scale_auto=زوومی خۆکار +page_scale_actual=قەبارەی ڕاستی +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=هەڵەیەک ڕوویدا Ù„Û• کاتی بارکردنی PDF. +invalid_file_error=Ù¾Û•Ú•Ú¯Û•ÛŒ pdf تێکچووە یان نەگونجاوە. +missing_file_error=Ù¾Û•Ú•Ú¯Û•ÛŒ pdf بوونی نیە. +unexpected_response_error=وەڵامی ڕاژەخوازی نەخوازراو. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} سەرنج] +password_label=وشەی تێپەڕ بنووسە بۆ کردنەوەی Ù¾Û•Ú•Ú¯Û•ÛŒ pdf. +password_invalid=وشەی تێپەڕ هەڵەیە. تکایە دووبارە Ù‡Û•ÙˆÚµ بدەرەوە. +password_ok=باشە +password_cancel=پاشگەزبوونەوە + +printing_not_supported=ئاگاداربە: چاپکردن بە تەواوی پشتگیر ناکرێت Ù„Û•Ù… وێبگەڕە. +printing_not_ready=ئاگاداربە: PDF بە تەواوی بارنەبووە بۆ چاپکردن. +web_fonts_disabled=جۆرەپیتی وێب ناچالاکە: نەتوانی جۆرەپیتی تێخراوی ناو pdfÙ€Û•Ú©Û• بەکاربێت. + diff --git a/page/static/js/web/locale/cs/viewer.properties b/page/static/js/web/locale/cs/viewer.properties new file mode 100644 index 0000000..173f90a --- /dev/null +++ b/page/static/js/web/locale/cs/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=PÅ™ejde na pÅ™edchozí stránku +previous_label=PÅ™edchozí +next.title=PÅ™ejde na následující stránku +next_label=Další + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Stránka +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=z {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} z {{pagesCount}}) + +zoom_out.title=Zmenší velikost +zoom_out_label=ZmenÅ¡it +zoom_in.title=ZvÄ›tší velikost +zoom_in_label=ZvÄ›tÅ¡it +zoom.title=Nastaví velikost +presentation_mode.title=PÅ™epne do režimu prezentace +presentation_mode_label=Režim prezentace +open_file.title=OtevÅ™e soubor +open_file_label=Otevřít +print.title=Vytiskne dokument +print_label=Vytisknout +download.title=Stáhne dokument +download_label=Stáhnout +save.title=Uložit +save_label=Uložit +bookmark.title=SouÄasný pohled (kopírovat nebo otevřít v novém oknÄ›) +bookmark_label=SouÄasný pohled + +bookmark1.title=Aktuální stránka (zobrazit URL od aktuální stránky) +bookmark1_label=Aktuální stránka + +# Secondary toolbar and context menu +tools.title=Nástroje +tools_label=Nástroje +first_page.title=PÅ™ejde na první stránku +first_page_label=PÅ™ejít na první stránku +last_page.title=PÅ™ejde na poslední stránku +last_page_label=PÅ™ejít na poslední stránku +page_rotate_cw.title=OtoÄí po smÄ›ru hodin +page_rotate_cw_label=OtoÄit po smÄ›ru hodin +page_rotate_ccw.title=OtoÄí proti smÄ›ru hodin +page_rotate_ccw_label=OtoÄit proti smÄ›ru hodin + +cursor_text_select_tool.title=Povolí výbÄ›r textu +cursor_text_select_tool_label=VýbÄ›r textu +cursor_hand_tool.title=Povolí nástroj ruÄiÄka +cursor_hand_tool_label=Nástroj ruÄiÄka + +scroll_page.title=Posouvat po stránkách +scroll_page_label=Posouvání po stránkách +scroll_vertical.title=Použít svislé posouvání +scroll_vertical_label=Svislé posouvání +scroll_horizontal.title=Použít vodorovné posouvání +scroll_horizontal_label=Vodorovné posouvání +scroll_wrapped.title=Použít postupné posouvání +scroll_wrapped_label=Postupné posouvání + +spread_none.title=Nesdružovat stránky +spread_none_label=Žádné sdružení +spread_odd.title=Sdruží stránky s umístÄ›ním lichých vlevo +spread_odd_label=Sdružení stránek (liché vlevo) +spread_even.title=Sdruží stránky s umístÄ›ním sudých vlevo +spread_even_label=Sdružení stránek (sudé vlevo) + +# Document properties dialog box +document_properties.title=Vlastnosti dokumentu… +document_properties_label=Vlastnosti dokumentu… +document_properties_file_name=Název souboru: +document_properties_file_size=Velikost souboru: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bajtů) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bajtů) +document_properties_title=Název stránky: +document_properties_author=Autor: +document_properties_subject=PÅ™edmÄ›t: +document_properties_keywords=KlíÄová slova: +document_properties_creation_date=Datum vytvoÅ™ení: +document_properties_modification_date=Datum úpravy: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=VytvoÅ™il: +document_properties_producer=Tvůrce PDF: +document_properties_version=Verze PDF: +document_properties_page_count=PoÄet stránek: +document_properties_page_size=Velikost stránky: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=na výšku +document_properties_page_size_orientation_landscape=na šířku +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Dopis +document_properties_page_size_name_legal=Právní dokument +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Rychlé zobrazování z webu: +document_properties_linearized_yes=Ano +document_properties_linearized_no=Ne +document_properties_close=Zavřít + +print_progress_message=Příprava dokumentu pro tisk… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}} % +print_progress_close=ZruÅ¡it + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Postranní liÅ¡ta +toggle_sidebar_notification2.title=PÅ™epnout postranní liÅ¡tu (dokument obsahuje osnovu/přílohy/vrstvy) +toggle_sidebar_label=Postranní liÅ¡ta +document_outline.title=Zobrazí osnovu dokumentu (poklepání pÅ™epne zobrazení vÅ¡ech položek) +document_outline_label=Osnova dokumentu +attachments.title=Zobrazí přílohy +attachments_label=Přílohy +layers.title=Zobrazit vrstvy (poklepáním obnovíte vÅ¡echny vrstvy do výchozího stavu) +layers_label=Vrstvy +thumbs.title=Zobrazí náhledy +thumbs_label=Náhledy +current_outline_item.title=Najít aktuální položku v osnovÄ› +current_outline_item_label=Aktuální položka v osnovÄ› +findbar.title=Najde v dokumentu +findbar_label=Najít + +additional_layers=Další vrstvy +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Strana {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Strana {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Náhled strany {{page}} + +# Find panel button title and messages +find_input.title=Najít +find_input.placeholder=Najít v dokumentu… +find_previous.title=Najde pÅ™edchozí výskyt hledaného textu +find_previous_label=PÅ™edchozí +find_next.title=Najde další výskyt hledaného textu +find_next_label=Další +find_highlight=Zvýraznit +find_match_case_label=RozliÅ¡ovat velikost +find_match_diacritics_label=RozliÅ¡ovat diakritiku +find_entire_word_label=Celá slova +find_reached_top=Dosažen zaÄátek dokumentu, pokraÄuje se od konce +find_reached_bottom=Dosažen konec dokumentu, pokraÄuje se od zaÄátku +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}}. z {{total}} výskytu +find_match_count[two]={{current}}. z {{total}} výskytů +find_match_count[few]={{current}}. z {{total}} výskytů +find_match_count[many]={{current}}. z {{total}} výskytů +find_match_count[other]={{current}}. z {{total}} výskytů +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Více než {{limit}} výskytů +find_match_count_limit[one]=Více než {{limit}} výskyt +find_match_count_limit[two]=Více než {{limit}} výskyty +find_match_count_limit[few]=Více než {{limit}} výskyty +find_match_count_limit[many]=Více než {{limit}} výskytů +find_match_count_limit[other]=Více než {{limit}} výskytů +find_not_found=Hledaný text nenalezen + +# Error panel labels +error_more_info=Více informací +error_less_info=MénÄ› informací +error_close=Zavřít +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (sestavení: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Zpráva: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Zásobník: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Soubor: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Řádek: {{line}} + +# Predefined zoom values +page_scale_width=Podle šířky +page_scale_fit=Podle výšky +page_scale_auto=Automatická velikost +page_scale_actual=SkuteÄná velikost +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}} % + +# Loading indicator messages +loading=NaÄítání… +loading_error=PÅ™i nahrávání PDF nastala chyba. +invalid_file_error=Neplatný nebo chybný soubor PDF. +missing_file_error=Chybí soubor PDF. +unexpected_response_error=NeoÄekávaná odpovÄ›Ä serveru. + +rendering_error=PÅ™i vykreslování stránky nastala chyba. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotace typu {{type}}] +password_label=Pro otevÅ™ení PDF souboru vložte heslo. +password_invalid=Neplatné heslo. Zkuste to znovu. +password_ok=OK +password_cancel=ZruÅ¡it + +printing_not_supported=UpozornÄ›ní: Tisk není v tomto prohlížeÄi plnÄ› podporován. +printing_not_ready=UpozornÄ›ní: Dokument PDF není kompletnÄ› naÄten. +web_fonts_disabled=Webová písma jsou zakázána, proto není možné použít vložená písma PDF. + +# Editor +editor_free_text2.title=Text +editor_free_text2_label=Text +editor_ink2.title=Kreslení +editor_ink2_label=Kreslení + +free_text2_default_content=ZaÄnÄ›te psát… + +# Editor Parameters +editor_free_text_color=Barva +editor_free_text_size=Velikost +editor_ink_color=Barva +editor_ink_thickness=TlouÅ¡Å¥ka +editor_ink_opacity=Průhlednost + +# Editor aria +editor_free_text2_aria_label=Textový editor +editor_ink2_aria_label=Editor kreslení +editor_ink_canvas_aria_label=Uživatelem vytvoÅ™ený obrázek diff --git a/page/static/js/web/locale/cy/viewer.properties b/page/static/js/web/locale/cy/viewer.properties new file mode 100644 index 0000000..d66930d --- /dev/null +++ b/page/static/js/web/locale/cy/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Tudalen Flaenorol +previous_label=Blaenorol +next.title=Tudalen Nesaf +next_label=Nesaf + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Tudalen +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=o {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} o {{pagesCount}}) + +zoom_out.title=Chwyddo Allan +zoom_out_label=Chwyddo Allan +zoom_in.title=Chwyddo Mewn +zoom_in_label=Chwyddo Mewn +zoom.title=Chwyddo +presentation_mode.title=Newid i'r Modd Cyflwyno +presentation_mode_label=Modd Cyflwyno +open_file.title=Agor Ffeil +open_file_label=Agor +print.title=Argraffu +print_label=Argraffu +download.title=Llwyth +download_label=Llwytho i Lawr +save.title=Cadw +save_label=Cadw +bookmark.title=Golwg cyfredol (copïo neu agor ffenestr newydd) +bookmark_label=Golwg Gyfredol + +bookmark1.title=Tudalen Gyfredol (Gweld URL o'r Dudalen Gyfredol) +bookmark1_label=Tudalen Gyfredol + +# Secondary toolbar and context menu +tools.title=Offer +tools_label=Offer +first_page.title=Mynd i'r Dudalen Gyntaf +first_page_label=Mynd i'r Dudalen Gyntaf +last_page.title=Mynd i'r Dudalen Olaf +last_page_label=Mynd i'r Dudalen Olaf +page_rotate_cw.title=Cylchdroi Clocwedd +page_rotate_cw_label=Cylchdroi Clocwedd +page_rotate_ccw.title=Cylchdroi Gwrthglocwedd +page_rotate_ccw_label=Cylchdroi Gwrthglocwedd + +cursor_text_select_tool.title=Galluogi Dewis Offeryn Testun +cursor_text_select_tool_label=Offeryn Dewis Testun +cursor_hand_tool.title=Galluogi Offeryn Llaw +cursor_hand_tool_label=Offeryn Llaw + +scroll_page.title=Defnyddio Sgrolio Tudalen +scroll_page_label=Sgrolio Tudalen +scroll_vertical.title=Defnyddio Sgrolio Fertigol +scroll_vertical_label=Sgrolio Fertigol +scroll_horizontal.title=Defnyddio Sgrolio Llorweddol +scroll_horizontal_label=Sgrolio Llorweddol +scroll_wrapped.title=Defnyddio Sgrolio Amlapio +scroll_wrapped_label=Sgrolio Amlapio + +spread_none.title=Peidio uno trawsdaleniadau +spread_none_label=Dim Trawsdaleniadau +spread_odd.title=Uno trawsdaleniadau gan gychwyn gyda thudalennau odrif +spread_odd_label=Trawsdaleniadau Odrif +spread_even.title=Uno trawsdaleniadau gan gychwyn gyda thudalennau eilrif +spread_even_label=Trawsdaleniadau Eilrif + +# Document properties dialog box +document_properties.title=Priodweddau Dogfen… +document_properties_label=Priodweddau Dogfen… +document_properties_file_name=Enw ffeil: +document_properties_file_size=Maint ffeil: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} beit) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} beit) +document_properties_title=Teitl: +document_properties_author=Awdur: +document_properties_subject=Pwnc: +document_properties_keywords=Allweddair: +document_properties_creation_date=Dyddiad Creu: +document_properties_modification_date=Dyddiad Addasu: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Crewr: +document_properties_producer=Cynhyrchydd PDF: +document_properties_version=Fersiwn PDF: +document_properties_page_count=Cyfrif Tudalen: +document_properties_page_size=Maint Tudalen: +document_properties_page_size_unit_inches=o fewn +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=portread +document_properties_page_size_orientation_landscape=tirlun +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Llythyr +document_properties_page_size_name_legal=Cyfreithiol +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Golwg Gwe Cyflym: +document_properties_linearized_yes=Iawn +document_properties_linearized_no=Na +document_properties_close=Cau + +print_progress_message=Paratoi dogfen ar gyfer ei hargraffu… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Diddymu + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Toglo'r Bar Ochr +toggle_sidebar_notification2.title=Toglo'r Bar Ochr (mae'r ddogfen yn cynnwys amlinelliadau/atodiadau/haenau) +toggle_sidebar_label=Toglo'r Bar Ochr +document_outline.title=Dangos Amlinell Dogfen (clic dwbl i ymestyn/cau pob eitem) +document_outline_label=Amlinelliad Dogfen +attachments.title=Dangos Atodiadau +attachments_label=Atodiadau +layers.title=Dangos Haenau (cliciwch ddwywaith i ailosod yr holl haenau i'r cyflwr rhagosodedig) +layers_label=Haenau +thumbs.title=Dangos Lluniau Bach +thumbs_label=Lluniau Bach +current_outline_item.title=Canfod yr Eitem Amlinellol Gyfredol +current_outline_item_label=Yr Eitem Amlinellol Gyfredol +findbar.title=Canfod yn y Ddogfen +findbar_label=Canfod + +additional_layers=Haenau Ychwanegol +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Tudalen {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Tudalen {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Llun Bach Tudalen {{page}} + +# Find panel button title and messages +find_input.title=Canfod +find_input.placeholder=Canfod yn y ddogfen… +find_previous.title=Canfod enghraifft flaenorol o'r ymadrodd +find_previous_label=Blaenorol +find_next.title=Canfod enghraifft nesaf yr ymadrodd +find_next_label=Nesaf +find_highlight=Amlygu popeth +find_match_case_label=Cydweddu maint +find_match_diacritics_label=Diacritigau Cyfatebol +find_entire_word_label=Geiriau cyfan +find_reached_top=Wedi cyrraedd brig y dudalen, parhau o'r gwaelod +find_reached_bottom=Wedi cyrraedd diwedd y dudalen, parhau o'r brig +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} o {{total}} cydweddiad +find_match_count[two]={{current}} o {{total}} cydweddiad +find_match_count[few]={{current}} o {{total}} cydweddiad +find_match_count[many]={{current}} o {{total}} cydweddiad +find_match_count[other]={{current}} o {{total}} cydweddiad +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Mwy na {{limit}} cydweddiad +find_match_count_limit[one]=Mwy na {{limit}} cydweddiad +find_match_count_limit[two]=Mwy na {{limit}} cydweddiad +find_match_count_limit[few]=Mwy na {{limit}} cydweddiad +find_match_count_limit[many]=Mwy na {{limit}} cydweddiad +find_match_count_limit[other]=Mwy na {{limit}} cydweddiad +find_not_found=Heb ganfod ymadrodd + +# Error panel labels +error_more_info=Rhagor o Wybodaeth +error_less_info=Llai o wybodaeth +error_close=Cau +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Neges: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stac: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Ffeil: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Llinell: {{line}} + +# Predefined zoom values +page_scale_width=Lled Tudalen +page_scale_fit=Ffit Tudalen +page_scale_auto=Chwyddo Awtomatig +page_scale_actual=Maint Gwirioneddol +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Yn llwytho… +loading_error=Digwyddodd gwall wrth lwytho'r PDF. +invalid_file_error=Ffeil PDF annilys neu llwgr. +missing_file_error=Ffeil PDF coll. +unexpected_response_error=Ymateb annisgwyl gan y gweinydd. + +rendering_error=Digwyddodd gwall wrth adeiladu'r dudalen. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anodiad {{type}} ] +password_label=Rhowch gyfrinair i agor y PDF. +password_invalid=Cyfrinair annilys. Ceisiwch eto. +password_ok=Iawn +password_cancel=Diddymu + +printing_not_supported=Rhybudd: Nid yw argraffu yn cael ei gynnal yn llawn gan y porwr. +printing_not_ready=Rhybudd: Nid yw'r PDF wedi ei lwytho'n llawn ar gyfer argraffu. +web_fonts_disabled=Ffontiau gwe wedi eu hanalluogi: methu defnyddio ffontiau PDF mewnblanedig. + +# Editor +editor_free_text2.title=Testun +editor_free_text2_label=Testun +editor_ink2.title=Lluniadu +editor_ink2_label=Lluniadu + +free_text2_default_content=Cychwyn teipio… + +# Editor Parameters +editor_free_text_color=Lliw +editor_free_text_size=Maint +editor_ink_color=Lliw +editor_ink_thickness=Trwch +editor_ink_opacity=Didreiddedd + +# Editor aria +editor_free_text2_aria_label=Golygydd Testun +editor_ink2_aria_label=Golygydd Lluniadu +editor_ink_canvas_aria_label=Delwedd wedi'i chreu gan ddefnyddwyr diff --git a/page/static/js/web/locale/da/viewer.properties b/page/static/js/web/locale/da/viewer.properties new file mode 100644 index 0000000..c9bb6d1 --- /dev/null +++ b/page/static/js/web/locale/da/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Forrige side +previous_label=Forrige +next.title=Næste side +next_label=Næste + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Side +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=af {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} af {{pagesCount}}) + +zoom_out.title=Zoom ud +zoom_out_label=Zoom ud +zoom_in.title=Zoom ind +zoom_in_label=Zoom ind +zoom.title=Zoom +presentation_mode.title=Skift til fuldskærmsvisning +presentation_mode_label=Fuldskærmsvisning +open_file.title=Ã…bn fil +open_file_label=Ã…bn +print.title=Udskriv +print_label=Udskriv +download.title=Hent +download_label=Hent +save.title=Gem +save_label=Gem +bookmark.title=Aktuel visning (kopier eller Ã¥bn i et nyt vindue) +bookmark_label=Aktuel visning + +bookmark1.title=Aktuel side (vis URL fra den aktuelle side) +bookmark1_label=Aktuel side + +# Secondary toolbar and context menu +tools.title=Funktioner +tools_label=Funktioner +first_page.title=GÃ¥ til første side +first_page_label=GÃ¥ til første side +last_page.title=GÃ¥ til sidste side +last_page_label=GÃ¥ til sidste side +page_rotate_cw.title=Roter med uret +page_rotate_cw_label=Roter med uret +page_rotate_ccw.title=Roter mod uret +page_rotate_ccw_label=Roter mod uret + +cursor_text_select_tool.title=Aktiver markeringsværktøj +cursor_text_select_tool_label=Markeringsværktøj +cursor_hand_tool.title=Aktiver hÃ¥ndværktøj +cursor_hand_tool_label=HÃ¥ndværktøj + +scroll_page.title=Brug sidescrolling +scroll_page_label=Sidescrolling +scroll_vertical.title=Brug vertikal scrolling +scroll_vertical_label=Vertikal scrolling +scroll_horizontal.title=Brug horisontal scrolling +scroll_horizontal_label=Horisontal scrolling +scroll_wrapped.title=Brug ombrudt scrolling +scroll_wrapped_label=Ombrudt scrolling + +spread_none.title=Vis enkeltsider +spread_none_label=Enkeltsider +spread_odd.title=Vis opslag med ulige sidenumre til venstre +spread_odd_label=Opslag med forside +spread_even.title=Vis opslag med lige sidenumre til venstre +spread_even_label=Opslag uden forside + +# Document properties dialog box +document_properties.title=Dokumentegenskaber… +document_properties_label=Dokumentegenskaber… +document_properties_file_name=Filnavn: +document_properties_file_size=Filstørrelse: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Titel: +document_properties_author=Forfatter: +document_properties_subject=Emne: +document_properties_keywords=Nøgleord: +document_properties_creation_date=Oprettet: +document_properties_modification_date=Redigeret: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Program: +document_properties_producer=PDF-producent: +document_properties_version=PDF-version: +document_properties_page_count=Antal sider: +document_properties_page_size=Sidestørrelse: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=stÃ¥ende +document_properties_page_size_orientation_landscape=liggende +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Hurtig web-visning: +document_properties_linearized_yes=Ja +document_properties_linearized_no=Nej +document_properties_close=Luk + +print_progress_message=Forbereder dokument til udskrivning… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Annuller + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=SlÃ¥ sidepanel til eller fra +toggle_sidebar_notification2.title=SlÃ¥ sidepanel til eller fra (dokumentet indeholder disposition/vedhæftede filer/lag) +toggle_sidebar_label=SlÃ¥ sidepanel til eller fra +document_outline.title=Vis dokumentets disposition (dobbeltklik for at vise/skjule alle elementer) +document_outline_label=Dokument-disposition +attachments.title=Vis vedhæftede filer +attachments_label=Vedhæftede filer +layers.title=Vis lag (dobbeltklik for at nulstille alle lag til standard-tilstanden) +layers_label=Lag +thumbs.title=Vis miniaturer +thumbs_label=Miniaturer +current_outline_item.title=Find det aktuelle dispositions-element +current_outline_item_label=Aktuelt dispositions-element +findbar.title=Find i dokument +findbar_label=Find + +additional_layers=Yderligere lag +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Side {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Side {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniature af side {{page}} + +# Find panel button title and messages +find_input.title=Find +find_input.placeholder=Find i dokument… +find_previous.title=Find den forrige forekomst +find_previous_label=Forrige +find_next.title=Find den næste forekomst +find_next_label=Næste +find_highlight=Fremhæv alle +find_match_case_label=Forskel pÃ¥ store og smÃ¥ bogstaver +find_match_diacritics_label=Diakritiske tegn +find_entire_word_label=Hele ord +find_reached_top=Toppen af siden blev nÃ¥et, fortsatte fra bunden +find_reached_bottom=Bunden af siden blev nÃ¥et, fortsatte fra toppen +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} af {{total}} forekomst +find_match_count[two]={{current}} af {{total}} forekomster +find_match_count[few]={{current}} af {{total}} forekomster +find_match_count[many]={{current}} af {{total}} forekomster +find_match_count[other]={{current}} af {{total}} forekomster +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Mere end {{limit}} forekomster +find_match_count_limit[one]=Mere end {{limit}} forekomst +find_match_count_limit[two]=Mere end {{limit}} forekomster +find_match_count_limit[few]=Mere end {{limit}} forekomster +find_match_count_limit[many]=Mere end {{limit}} forekomster +find_match_count_limit[other]=Mere end {{limit}} forekomster +find_not_found=Der blev ikke fundet noget + +# Error panel labels +error_more_info=Mere information +error_less_info=Mindre information +error_close=Luk +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Fejlmeddelelse: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fil: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linje: {{line}} + +# Predefined zoom values +page_scale_width=Sidebredde +page_scale_fit=Tilpas til side +page_scale_auto=Automatisk zoom +page_scale_actual=Faktisk størrelse +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Indlæser… +loading_error=Der opstod en fejl ved indlæsning af PDF-filen. +invalid_file_error=PDF-filen er ugyldig eller ødelagt. +missing_file_error=Manglende PDF-fil. +unexpected_response_error=Uventet svar fra serveren. + +rendering_error=Der opstod en fejl ved generering af siden. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}}kommentar] +password_label=Angiv adgangskode til at Ã¥bne denne PDF-fil. +password_invalid=Ugyldig adgangskode. Prøv igen. +password_ok=OK +password_cancel=Fortryd + +printing_not_supported=Advarsel: Udskrivning er ikke fuldt understøttet af browseren. +printing_not_ready=Advarsel: PDF-filen er ikke fuldt indlæst til udskrivning. +web_fonts_disabled=Webskrifttyper er deaktiverede. De indlejrede skrifttyper i PDF-filen kan ikke anvendes. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=Tegn +editor_ink2_label=Tegn + +free_text2_default_content=Begynd at skrive… + +# Editor Parameters +editor_free_text_color=Farve +editor_free_text_size=Størrelse +editor_ink_color=Farve +editor_ink_thickness=Tykkelse +editor_ink_opacity=Uigennemsigtighed + +# Editor aria +editor_free_text2_aria_label=Teksteditor +editor_ink2_aria_label=Tegnings-editor +editor_ink_canvas_aria_label=Brugeroprettet billede diff --git a/page/static/js/web/locale/de/viewer.properties b/page/static/js/web/locale/de/viewer.properties new file mode 100644 index 0000000..1da1e4b --- /dev/null +++ b/page/static/js/web/locale/de/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Eine Seite zurück +previous_label=Zurück +next.title=Eine Seite vor +next_label=Vor + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Seite +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=von {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} von {{pagesCount}}) + +zoom_out.title=Verkleinern +zoom_out_label=Verkleinern +zoom_in.title=Vergrößern +zoom_in_label=Vergrößern +zoom.title=Zoom +presentation_mode.title=In Präsentationsmodus wechseln +presentation_mode_label=Präsentationsmodus +open_file.title=Datei öffnen +open_file_label=Öffnen +print.title=Drucken +print_label=Drucken +download.title=Dokument speichern +download_label=Speichern +save.title=Speichern +save_label=Speichern +bookmark.title=Aktuelle Ansicht (zum Kopieren oder Öffnen in einem neuen Fenster) +bookmark_label=Aktuelle Ansicht + +bookmark1.title=Aktuelle Seite (URL von aktueller Seite anzeigen) +bookmark1_label=Aktuelle Seite + +# Secondary toolbar and context menu +tools.title=Werkzeuge +tools_label=Werkzeuge +first_page.title=Erste Seite anzeigen +first_page_label=Erste Seite anzeigen +last_page.title=Letzte Seite anzeigen +last_page_label=Letzte Seite anzeigen +page_rotate_cw.title=Im Uhrzeigersinn drehen +page_rotate_cw_label=Im Uhrzeigersinn drehen +page_rotate_ccw.title=Gegen Uhrzeigersinn drehen +page_rotate_ccw_label=Gegen Uhrzeigersinn drehen + +cursor_text_select_tool.title=Textauswahl-Werkzeug aktivieren +cursor_text_select_tool_label=Textauswahl-Werkzeug +cursor_hand_tool.title=Hand-Werkzeug aktivieren +cursor_hand_tool_label=Hand-Werkzeug + +scroll_page.title=Seiten einzeln anordnen +scroll_page_label=Einzelseitenanordnung +scroll_vertical.title=Seiten übereinander anordnen +scroll_vertical_label=Vertikale Seitenanordnung +scroll_horizontal.title=Seiten nebeneinander anordnen +scroll_horizontal_label=Horizontale Seitenanordnung +scroll_wrapped.title=Seiten neben- und übereinander anordnen, abhängig vom Platz +scroll_wrapped_label=Kombinierte Seitenanordnung + +spread_none.title=Seiten nicht nebeneinander anzeigen +spread_none_label=Einzelne Seiten +spread_odd.title=Jeweils eine ungerade und eine gerade Seite nebeneinander anzeigen +spread_odd_label=Ungerade + gerade Seite +spread_even.title=Jeweils eine gerade und eine ungerade Seite nebeneinander anzeigen +spread_even_label=Gerade + ungerade Seite + +# Document properties dialog box +document_properties.title=Dokumenteigenschaften +document_properties_label=Dokumenteigenschaften… +document_properties_file_name=Dateiname: +document_properties_file_size=Dateigröße: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} Bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} Bytes) +document_properties_title=Titel: +document_properties_author=Autor: +document_properties_subject=Thema: +document_properties_keywords=Stichwörter: +document_properties_creation_date=Erstelldatum: +document_properties_modification_date=Bearbeitungsdatum: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}} {{time}} +document_properties_creator=Anwendung: +document_properties_producer=PDF erstellt mit: +document_properties_version=PDF-Version: +document_properties_page_count=Seitenzahl: +document_properties_page_size=Seitengröße: +document_properties_page_size_unit_inches=Zoll +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=Hochformat +document_properties_page_size_orientation_landscape=Querformat +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Schnelle Webanzeige: +document_properties_linearized_yes=Ja +document_properties_linearized_no=Nein +document_properties_close=Schließen + +print_progress_message=Dokument wird für Drucken vorbereitet… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}} % +print_progress_close=Abbrechen + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Sidebar umschalten +toggle_sidebar_notification2.title=Sidebar umschalten (Dokument enthält Dokumentstruktur/Anhänge/Ebenen) +toggle_sidebar_label=Sidebar umschalten +document_outline.title=Dokumentstruktur anzeigen (Doppelklicken, um alle Einträge aus- bzw. einzuklappen) +document_outline_label=Dokumentstruktur +attachments.title=Anhänge anzeigen +attachments_label=Anhänge +layers.title=Ebenen anzeigen (Doppelklicken, um alle Ebenen auf den Standardzustand zurückzusetzen) +layers_label=Ebenen +thumbs.title=Miniaturansichten anzeigen +thumbs_label=Miniaturansichten +current_outline_item.title=Aktuelles Struktur-Element finden +current_outline_item_label=Aktuelles Struktur-Element +findbar.title=Dokument durchsuchen +findbar_label=Suchen + +additional_layers=Zusätzliche Ebenen +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Seite {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Seite {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniaturansicht von Seite {{page}} + +# Find panel button title and messages +find_input.title=Suchen +find_input.placeholder=Im Dokument suchen… +find_previous.title=Vorheriges Vorkommen des Suchbegriffs finden +find_previous_label=Zurück +find_next.title=Nächstes Vorkommen des Suchbegriffs finden +find_next_label=Weiter +find_highlight=Alle hervorheben +find_match_case_label=Groß-/Kleinschreibung beachten +find_match_diacritics_label=Akzente +find_entire_word_label=Ganze Wörter +find_reached_top=Anfang des Dokuments erreicht, fahre am Ende fort +find_reached_bottom=Ende des Dokuments erreicht, fahre am Anfang fort +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} von {{total}} Ãœbereinstimmung +find_match_count[two]={{current}} von {{total}} Ãœbereinstimmungen +find_match_count[few]={{current}} von {{total}} Ãœbereinstimmungen +find_match_count[many]={{current}} von {{total}} Ãœbereinstimmungen +find_match_count[other]={{current}} von {{total}} Ãœbereinstimmungen +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Mehr als {{limit}} Ãœbereinstimmungen +find_match_count_limit[one]=Mehr als {{limit}} Ãœbereinstimmung +find_match_count_limit[two]=Mehr als {{limit}} Ãœbereinstimmungen +find_match_count_limit[few]=Mehr als {{limit}} Ãœbereinstimmungen +find_match_count_limit[many]=Mehr als {{limit}} Ãœbereinstimmungen +find_match_count_limit[other]=Mehr als {{limit}} Ãœbereinstimmungen +find_not_found=Suchbegriff nicht gefunden + +# Error panel labels +error_more_info=Mehr Informationen +error_less_info=Weniger Informationen +error_close=Schließen +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js Version {{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Nachricht: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Aufrufliste: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Datei: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Zeile: {{line}} + +# Predefined zoom values +page_scale_width=Seitenbreite +page_scale_fit=Seitengröße +page_scale_auto=Automatischer Zoom +page_scale_actual=Originalgröße +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}} % + +# Loading indicator messages +loading=Wird geladen… +loading_error=Beim Laden der PDF-Datei trat ein Fehler auf. +invalid_file_error=Ungültige oder beschädigte PDF-Datei +missing_file_error=Fehlende PDF-Datei +unexpected_response_error=Unerwartete Antwort des Servers + +rendering_error=Beim Darstellen der Seite trat ein Fehler auf. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anlage: {{type}}] +password_label=Geben Sie zum Öffnen der PDF-Datei deren Passwort ein. +password_invalid=Falsches Passwort. Bitte versuchen Sie es erneut. +password_ok=OK +password_cancel=Abbrechen + +printing_not_supported=Warnung: Die Drucken-Funktion wird durch diesen Browser nicht vollständig unterstützt. +printing_not_ready=Warnung: Die PDF-Datei ist nicht vollständig geladen, dies ist für das Drucken aber empfohlen. +web_fonts_disabled=Web-Schriftarten sind deaktiviert: Eingebettete PDF-Schriftarten konnten nicht geladen werden. + +# Editor +editor_free_text2.title=Text +editor_free_text2_label=Text +editor_ink2.title=Zeichnen +editor_ink2_label=Zeichnen + +free_text2_default_content=Schreiben beginnen… + +# Editor Parameters +editor_free_text_color=Farbe +editor_free_text_size=Größe +editor_ink_color=Farbe +editor_ink_thickness=Dicke +editor_ink_opacity=Deckkraft + +# Editor aria +editor_free_text2_aria_label=Texteditor +editor_ink2_aria_label=Zeichnungseditor +editor_ink_canvas_aria_label=Vom Benutzer erstelltes Bild diff --git a/page/static/js/web/locale/dsb/viewer.properties b/page/static/js/web/locale/dsb/viewer.properties new file mode 100644 index 0000000..87d09b4 --- /dev/null +++ b/page/static/js/web/locale/dsb/viewer.properties @@ -0,0 +1,274 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=PjerwjejÅ¡ny bok +previous_label=SlÄ›dk +next.title=PÅ›iducy bok +next_label=Dalej + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Bok +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=z {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} z {{pagesCount}}) + +zoom_out.title=PómjeÅ„Å¡yÅ› +zoom_out_label=PómjeÅ„Å¡yÅ› +zoom_in.title=PówÄ›tÅ¡yÅ› +zoom_in_label=PówÄ›tÅ¡yÅ› +zoom.title=SkalÄ›rowanje +presentation_mode.title=Do prezentaciskego modusa pÅ›ejÅ› +presentation_mode_label=Prezentaciski modus +open_file.title=Dataju wócyniÅ› +open_file_label=WócyniÅ› +print.title=ÅšišćaÅ› +print_label=ÅšišćaÅ› +download.title=ZeśěgnuÅ› +download_label=ZeśěgnuÅ› +save.title=SkÅ‚adowaÅ› +save_label=SkÅ‚adowaÅ› +bookmark.title=Aktualny naglÄ›d (kopÄ›rowaÅ› abo w nowem woknje wócyniÅ›) +bookmark_label=Aktualny naglÄ›d + +# Secondary toolbar and context menu +tools.title=RÄ›dy +tools_label=RÄ›dy +first_page.title=K prÄ›dnemu bokoju +first_page_label=K prÄ›dnemu bokoju +last_page.title=K slÄ›dnemu bokoju +last_page_label=K slÄ›dnemu bokoju +page_rotate_cw.title=WobwjertnuÅ› ako Å¡pÄ›ra źo +page_rotate_cw_label=WobwjertnuÅ› ako Å¡pÄ›ra źo +page_rotate_ccw.title=WobwjertnuÅ› nawopaki ako Å¡pÄ›ra źo +page_rotate_ccw_label=WobwjertnuÅ› nawopaki ako Å¡pÄ›ra źo + +cursor_text_select_tool.title=RÄ›d za wubÄ›ranje teksta zmóžniÅ› +cursor_text_select_tool_label=RÄ›d za wubÄ›ranje teksta +cursor_hand_tool.title=Rucny rÄ›d zmóžniÅ› +cursor_hand_tool_label=Rucny rÄ›d + +scroll_page.title=Kulanje boka wužywaÅ› +scroll_page_label=Kulanje boka +scroll_vertical.title=Wertikalne suwanje wužywaÅ› +scroll_vertical_label=Wertikalne suwanje +scroll_horizontal.title=Horicontalne suwanje wužywaÅ› +scroll_horizontal_label=Horicontalne suwanje +scroll_wrapped.title=Pózlažke suwanje wužywaÅ› +scroll_wrapped_label=Pózlažke suwanje + +spread_none.title=Boki njezwÄ›zaÅ› +spread_none_label=Žeden dwójny bok +spread_odd.title=Boki zachopinajucy z njerownymi bokami zwÄ›zaÅ› +spread_odd_label=Njerowne boki +spread_even.title=Boki zachopinajucy z rownymi bokami zwÄ›zaÅ› +spread_even_label=Rowne boki + +# Document properties dialog box +document_properties.title=Dokumentowe kakosći… +document_properties_label=Dokumentowe kakosći… +document_properties_file_name=MÄ› dataje: +document_properties_file_size=Wjelikosć dataje: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bajtow) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bajtow) +document_properties_title=Titel: +document_properties_author=Awtor: +document_properties_subject=Tema: +document_properties_keywords=Klucowe sÅ‚owa: +document_properties_creation_date=Datum napóranja: +document_properties_modification_date=Datum zmÄ›ny: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Awtor: +document_properties_producer=PDF-gótowaÅ•: +document_properties_version=PDF-wersija: +document_properties_page_count=Licba bokow: +document_properties_page_size=Wjelikosć boka: +document_properties_page_size_unit_inches=col +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=wusoki format +document_properties_page_size_orientation_landscape=prÄ›cny format +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Web View: +document_properties_linearized_yes=Jo +document_properties_linearized_no=NÄ› +document_properties_close=ZacyniÅ› + +print_progress_message=Dokument pÅ›igótujo se za Å›išćanje… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=PÅ›etergnuÅ› + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Bócnicu pokazaÅ›/schowaÅ› +toggle_sidebar_notification2.title=Bocnicu pÅ›eÅ¡altowaÅ› (dokument rozrÄ›dowanje/pÅ›ipiski/warstwy wopÅ›imujo) +toggle_sidebar_label=Bócnicu pokazaÅ›/schowaÅ› +document_outline.title=Dokumentowe naraźenje pokazaÅ› (dwójne kliknjenje, aby se wÅ¡ykne zapiski pokazali/schowali) +document_outline_label=Dokumentowa struktura +attachments.title=PÅ›idanki pokazaÅ› +attachments_label=PÅ›idanki +layers.title=Warstwy pokazaÅ› (klikniÅ›o dwójcy, aby wÅ¡ykne warstwy na standardny staw slÄ›dk stajiÅ‚) +layers_label=Warstwy +thumbs.title=Miniatury pokazaÅ› +thumbs_label=Miniatury +current_outline_item.title=Aktualny rozrÄ›dowaÅ„ski zapisk pytaÅ› +current_outline_item_label=Aktualny rozrÄ›dowaÅ„ski zapisk +findbar.title=W dokumenÅ›e pytaÅ› +findbar_label=PytaÅ› + +additional_layers=DalÅ¡ne warstwy +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Bok {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Bok {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura boka {{page}} + +# Find panel button title and messages +find_input.title=PytaÅ› +find_input.placeholder=W dokumenÅ›e pytaś… +find_previous.title=PjerwjejÅ¡ne wustupowanje pytaÅ„skego wuraza pytaÅ› +find_previous_label=SlÄ›dk +find_next.title=PÅ›idujuce wustupowanje pytaÅ„skego wuraza pytaÅ› +find_next_label=Dalej +find_highlight=WÅ¡ykne wuzwignuÅ› +find_match_case_label=Na wjelikopisanje źiwaÅ› +find_match_diacritics_label=Diakritiske znamuÅ¡ka wužywaÅ› +find_entire_word_label=CeÅ‚e sÅ‚owa +find_reached_top=ZachopjeÅ„k dokumenta dostany, pókÅ¡acujo se z kóńcom +find_reached_bottom=Kóńc dokumenta dostany, pókÅ¡acujo se ze zachopjeÅ„kom +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} z {{total}} wótpowÄ›dnika +find_match_count[two]={{current}} z {{total}} wótpowÄ›dnikowu +find_match_count[few]={{current}} z {{total}} wótpowÄ›dnikow +find_match_count[many]={{current}} z {{total}} wótpowÄ›dnikow +find_match_count[other]={{current}} z {{total}} wótpowÄ›dnikow +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=WÄ›cej ako {{limit}} wótpowÄ›dnikow +find_match_count_limit[one]=WÄ›cej ako {{limit}} wótpowÄ›dnik +find_match_count_limit[two]=WÄ›cej ako {{limit}} wótpowÄ›dnika +find_match_count_limit[few]=WÄ›cej ako {{limit}} wótpowÄ›dniki +find_match_count_limit[many]=WÄ›cej ako {{limit}} wótpowÄ›dnikow +find_match_count_limit[other]=WÄ›cej ako {{limit}} wótpowÄ›dnikow +find_not_found=PytaÅ„ski wuraz njejo se namakaÅ‚ + +# Error panel labels +error_more_info=WÄ›cej informacijow +error_less_info=Mjenjej informacijow +error_close=ZacyniÅ› +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Powěźenka: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Lisćina zawoÅ‚anjow: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Dataja: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Smužka: {{line}} + +# Predefined zoom values +page_scale_width=Å yrokosć boka +page_scale_fit=Wjelikosć boka +page_scale_auto=Awtomatiske skalÄ›rowanje +page_scale_actual=Aktualna wjelikosć +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Zacytujo se… +loading_error=PÅ›i zacytowanju PDF jo zmólka nastaÅ‚a. +invalid_file_error=NjepÅ‚aÅ›iwa abo wobÅ¡kóźona PDF-dataja. +missing_file_error=Felujuca PDF-dataja. +unexpected_response_error=Njewócakane serwerowe wótegrono. + +rendering_error=PÅ›i zwobraznjanju boka jo zmólka nastaÅ‚a. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Typ pÅ›ipiskow: {{type}}] +password_label=ZapódajÅ›o gronidÅ‚o, aby PDF-dataju wócyniÅ‚. +password_invalid=NjepÅ‚aÅ›iwe gronidÅ‚o. PÅ¡osym wopytajÅ›o hyšći raz. +password_ok=W pórěźe +password_cancel=PÅ›etergnuÅ› + +printing_not_supported=Warnowanje: Åšišćanje njepódpÄ›ra se poÅ‚nje pÅ›ez toÅ› ten wobglÄ›dowak. +printing_not_ready=Warnowanje: PDF njejo se za Å›išćanje dopoÅ‚nje zacytaÅ‚. +web_fonts_disabled=Webpisma su znjemóžnjone: njejo móžno, zasajźone PDF-pisma wužywaÅ›. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=KresliÅ› +editor_ink2_label=KresliÅ› + +free_text2_default_content=ZachopÅ›o pisaś… + +# Editor Parameters +editor_free_text_color=Barwa +editor_free_text_size=Wjelikosć +editor_ink_color=Barwa +editor_ink_thickness=TÅ‚ustosć +editor_ink_opacity=Opacita + +# Editor aria +editor_free_text2_aria_label=Tekstowy editor +editor_ink2_aria_label=KresleÅ„ski editor +editor_ink_canvas_aria_label=Wobraz napórany wót wužywarja diff --git a/page/static/js/web/locale/el/viewer.properties b/page/static/js/web/locale/el/viewer.properties new file mode 100644 index 0000000..e476df4 --- /dev/null +++ b/page/static/js/web/locale/el/viewer.properties @@ -0,0 +1,278 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=ΠÏοηγοÏμενη σελίδα +previous_label=ΠÏοηγοÏμενη +next.title=Επόμενη σελίδα +next_label=Επόμενη + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Σελίδα +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=από {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} από {{pagesCount}}) + +zoom_out.title=ΣμίκÏυνση +zoom_out_label=ΣμίκÏυνση +zoom_in.title=Μεγέθυνση +zoom_in_label=Μεγέθυνση +zoom.title=Ζουμ +presentation_mode.title=Εναλλαγή σε λειτουÏγία παÏουσίασης +presentation_mode_label=ΛειτουÏγία παÏουσίασης +open_file.title=Άνοιγμα αÏχείου +open_file_label=Άνοιγμα +print.title=ΕκτÏπωση +print_label=ΕκτÏπωση +download.title=Λήψη +download_label=Λήψη +save.title=Αποθήκευση +save_label=Αποθήκευση +bookmark.title=ΤÏέχουσα Ï€Ïοβολή (αντιγÏαφή ή άνοιγμα σε νέο παÏάθυÏο) +bookmark_label=ΤÏέχουσα Ï€Ïοβολή + +bookmark1_label=ΤÏέχουσα σελίδα + +# Secondary toolbar and context menu +tools.title=ΕÏγαλεία +tools_label=ΕÏγαλεία +first_page.title=Μετάβαση στην Ï€Ïώτη σελίδα +first_page_label=Μετάβαση στην Ï€Ïώτη σελίδα +last_page.title=Μετάβαση στην τελευταία σελίδα +last_page_label=Μετάβαση στην τελευταία σελίδα +page_rotate_cw.title=ΔεξιόστÏοφη πεÏιστÏοφή +page_rotate_cw_label=ΔεξιόστÏοφη πεÏιστÏοφή +page_rotate_ccw.title=ΑÏιστεÏόστÏοφη πεÏιστÏοφή +page_rotate_ccw_label=ΑÏιστεÏόστÏοφη πεÏιστÏοφή + +cursor_text_select_tool.title=ΕνεÏγοποίηση εÏγαλείου επιλογής κειμένου +cursor_text_select_tool_label=ΕÏγαλείο επιλογής κειμένου +cursor_hand_tool.title=ΕνεÏγοποίηση εÏγαλείου χεÏÎ¹Î¿Ï +cursor_hand_tool_label=ΕÏγαλείο χεÏÎ¹Î¿Ï + +scroll_page.title=ΧÏήση κÏλισης σελίδας +scroll_page_label=ΚÏλιση σελίδας +scroll_vertical.title=ΧÏήση κάθετης κÏλισης +scroll_vertical_label=Κάθετη κÏλιση +scroll_horizontal.title=ΧÏήση οÏιζόντιας κÏλισης +scroll_horizontal_label=ΟÏιζόντια κÏλιση +scroll_wrapped.title=ΧÏήση κυκλικής κÏλισης +scroll_wrapped_label=Κυκλική κÏλιση + +spread_none.title=Îα μην γίνει σÏνδεση επεκτάσεων σελίδων +spread_none_label=ΧωÏίς επεκτάσεις +spread_odd.title=ΣÏνδεση επεκτάσεων σελίδων ξεκινώντας από τις μονές σελίδες +spread_odd_label=Μονές επεκτάσεις +spread_even.title=ΣÏνδεση επεκτάσεων σελίδων ξεκινώντας από τις ζυγές σελίδες +spread_even_label=Ζυγές επεκτάσεις + +# Document properties dialog box +document_properties.title=Ιδιότητες εγγÏάφου… +document_properties_label=Ιδιότητες εγγÏάφου… +document_properties_file_name=Όνομα αÏχείου: +document_properties_file_size=Μέγεθος αÏχείου: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Τίτλος: +document_properties_author=ΣυγγÏαφέας: +document_properties_subject=Θέμα: +document_properties_keywords=Λέξεις-κλειδιά: +document_properties_creation_date=ΗμεÏομηνία δημιουÏγίας: +document_properties_modification_date=ΗμεÏομηνία Ï„Ïοποποίησης: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=ΔημιουÏγός: +document_properties_producer=ΠαÏαγωγός PDF: +document_properties_version=Έκδοση PDF: +document_properties_page_count=ΑÏιθμός σελίδων: +document_properties_page_size=Μέγεθος σελίδας: +document_properties_page_size_unit_inches=ίντσες +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=κατακόÏυφα +document_properties_page_size_orientation_landscape=οÏιζόντια +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Επιστολή +document_properties_page_size_name_legal=ΤÏπου Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Ταχεία Ï€Ïοβολή ιστοÏ: +document_properties_linearized_yes=Îαι +document_properties_linearized_no=Όχι +document_properties_close=Κλείσιμο + +print_progress_message=ΠÏοετοιμασία του εγγÏάφου για εκτÏπωση… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=ΑκÏÏωση + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=(Απ)ενεÏγοποίηση πλαϊνής γÏαμμής +toggle_sidebar_notification2.title=(Απ)ενεÏγοποίηση πλαϊνής γÏαμμής (το έγγÏαφο πεÏιέχει πεÏίγÏαμμα/συνημμένα/επίπεδα) +toggle_sidebar_label=(Απ)ενεÏγοποίηση πλαϊνής γÏαμμής +document_outline.title=Εμφάνιση διάÏθÏωσης εγγÏάφου (διπλό κλικ για ανάπτυξη/σÏμπτυξη όλων των στοιχείων) +document_outline_label=ΔιάÏθÏωση εγγÏάφου +attachments.title=Εμφάνιση συνημμένων +attachments_label=Συνημμένα +layers.title=Εμφάνιση επιπέδων (διπλό κλικ για επαναφοÏά όλων των επιπέδων στην Ï€Ïοεπιλεγμένη κατάσταση) +layers_label=Επίπεδα +thumbs.title=Εμφάνιση μικÏογÏαφιών +thumbs_label=ΜικÏογÏαφίες +current_outline_item.title=ΕÏÏεση Ï„Ïέχοντος στοιχείου διάÏθÏωσης +current_outline_item_label=ΤÏέχον στοιχείο διάÏθÏωσης +findbar.title=ΕÏÏεση στο έγγÏαφο +findbar_label=ΕÏÏεση + +additional_layers=ΕπιπÏόσθετα επίπεδα +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Σελίδα {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Σελίδα {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=ΜικÏογÏαφία σελίδας {{page}} + +# Find panel button title and messages +find_input.title=ΕÏÏεση +find_input.placeholder=ΕÏÏεση στο έγγÏαφο… +find_previous.title=ΕÏÏεση της Ï€ÏοηγοÏμενης εμφάνισης της φÏάσης +find_previous_label=ΠÏοηγοÏμενο +find_next.title=ΕÏÏεση της επόμενης εμφάνισης της φÏάσης +find_next_label=Επόμενο +find_highlight=Επισήμανση όλων +find_match_case_label=Συμφωνία πεζών/κεφαλαίων +find_match_diacritics_label=Αντιστοίχιση διακÏιτικών +find_entire_word_label=ΟλόκληÏες λέξεις +find_reached_top=Φτάσατε στην αÏχή του εγγÏάφου, συνέχεια από το τέλος +find_reached_bottom=Φτάσατε στο τέλος του εγγÏάφου, συνέχεια από την αÏχή +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} από {{total}} αντιστοιχία +find_match_count[two]={{current}} από {{total}} αντιστοιχίες +find_match_count[few]={{current}} από {{total}} αντιστοιχίες +find_match_count[many]={{current}} από {{total}} αντιστοιχίες +find_match_count[other]={{current}} από {{total}} αντιστοιχίες +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=ΠεÏισσότεÏες από {{limit}} αντιστοιχίες +find_match_count_limit[one]=ΠεÏισσότεÏες από {{limit}} αντιστοιχία +find_match_count_limit[two]=ΠεÏισσότεÏες από {{limit}} αντιστοιχίες +find_match_count_limit[few]=ΠεÏισσότεÏες από {{limit}} αντιστοιχίες +find_match_count_limit[many]=ΠεÏισσότεÏες από {{limit}} αντιστοιχίες +find_match_count_limit[other]=ΠεÏισσότεÏες από {{limit}} αντιστοιχίες +find_not_found=Η φÏάση δεν βÏέθηκε + +# Error panel labels +error_more_info=ΠεÏισσότεÏες πληÏοφοÏίες +error_less_info=ΛιγότεÏες πληÏοφοÏίες +error_close=Κλείσιμο +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (έκδοση: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Μήνυμα: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Στοίβα: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=ΑÏχείο: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=ΓÏαμμή: {{line}} + +# Predefined zoom values +page_scale_width=Πλάτος σελίδας +page_scale_fit=Μέγεθος σελίδας +page_scale_auto=Αυτόματο ζουμ +page_scale_actual=ΠÏαγματικό μέγεθος +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=ΦόÏτωση… + +# Loading indicator messages +loading_error=ΠÏοέκυψε σφάλμα κατά τη φόÏτωση του PDF. +invalid_file_error=Μη έγκυÏο ή κατεστÏαμμένο αÏχείο PDF. +missing_file_error=Λείπει αÏχείο PDF. +unexpected_response_error=Μη αναμενόμενη απόκÏιση από το διακομιστή. + +rendering_error=ΠÏοέκυψε σφάλμα κατά την εμφάνιση της σελίδας. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Σχόλιο «{{type}}»] +password_label=Εισαγάγετε τον κωδικό Ï€Ïόσβασης για να ανοίξετε αυτό το αÏχείο PDF. +password_invalid=Μη έγκυÏος κωδικός Ï€Ïόσβασης. ΠαÏακαλώ δοκιμάστε ξανά. +password_ok=OK +password_cancel=ΑκÏÏωση + +printing_not_supported=ΠÏοειδοποίηση: Η εκτÏπωση δεν υποστηÏίζεται πλήÏως από το Ï€ÏόγÏαμμα πεÏιήγησης. +printing_not_ready=ΠÏοειδοποίηση: Το PDF δεν φοÏτώθηκε πλήÏως για εκτÏπωση. +web_fonts_disabled=Οι γÏαμματοσειÏές Î¹ÏƒÏ„Î¿Ï ÎµÎ¯Î½Î±Î¹ ανενεÏγές: δεν είναι δυνατή η χÏήση των ενσωματωμένων γÏαμματοσειÏών PDF. + +# Editor +editor_free_text2.title=Κείμενο +editor_free_text2_label=Κείμενο +editor_ink2.title=Σχέδιο +editor_ink2_label=Σχέδιο + +free_text2_default_content=Ξεκινήστε να πληκτÏολογείτε… + +# Editor Parameters +editor_free_text_color=ΧÏώμα +editor_free_text_size=Μέγεθος +editor_ink_color=ΧÏώμα +editor_ink_thickness=Πάχος +editor_ink_opacity=Αδιαφάνεια + +# Editor aria +editor_free_text2_aria_label=ΕπεξεÏγασία κειμένου +editor_ink2_aria_label=ΕπεξεÏγασία σχεδίων +editor_ink_canvas_aria_label=Εικόνα από τον χÏήστη diff --git a/page/static/js/web/locale/en-CA/viewer.properties b/page/static/js/web/locale/en-CA/viewer.properties new file mode 100644 index 0000000..0ad449f --- /dev/null +++ b/page/static/js/web/locale/en-CA/viewer.properties @@ -0,0 +1,274 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Previous Page +previous_label=Previous +next.title=Next Page +next_label=Next + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Page +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=of {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} of {{pagesCount}}) + +zoom_out.title=Zoom Out +zoom_out_label=Zoom Out +zoom_in.title=Zoom In +zoom_in_label=Zoom In +zoom.title=Zoom +presentation_mode.title=Switch to Presentation Mode +presentation_mode_label=Presentation Mode +open_file.title=Open File +open_file_label=Open +print.title=Print +print_label=Print +download.title=Download +download_label=Download +save.title=Save +save_label=Save +bookmark.title=Current view (copy or open in new window) +bookmark_label=Current View + +# Secondary toolbar and context menu +tools.title=Tools +tools_label=Tools +first_page.title=Go to First Page +first_page_label=Go to First Page +last_page.title=Go to Last Page +last_page_label=Go to Last Page +page_rotate_cw.title=Rotate Clockwise +page_rotate_cw_label=Rotate Clockwise +page_rotate_ccw.title=Rotate Counterclockwise +page_rotate_ccw_label=Rotate Counterclockwise + +cursor_text_select_tool.title=Enable Text Selection Tool +cursor_text_select_tool_label=Text Selection Tool +cursor_hand_tool.title=Enable Hand Tool +cursor_hand_tool_label=Hand Tool + +scroll_page.title=Use Page Scrolling +scroll_page_label=Page Scrolling +scroll_vertical.title=Use Vertical Scrolling +scroll_vertical_label=Vertical Scrolling +scroll_horizontal.title=Use Horizontal Scrolling +scroll_horizontal_label=Horizontal Scrolling +scroll_wrapped.title=Use Wrapped Scrolling +scroll_wrapped_label=Wrapped Scrolling + +spread_none.title=Do not join page spreads +spread_none_label=No Spreads +spread_odd.title=Join page spreads starting with odd-numbered pages +spread_odd_label=Odd Spreads +spread_even.title=Join page spreads starting with even-numbered pages +spread_even_label=Even Spreads + +# Document properties dialog box +document_properties.title=Document Properties… +document_properties_label=Document Properties… +document_properties_file_name=File name: +document_properties_file_size=File size: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} kB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Title: +document_properties_author=Author: +document_properties_subject=Subject: +document_properties_keywords=Keywords: +document_properties_creation_date=Creation Date: +document_properties_modification_date=Modification Date: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creator: +document_properties_producer=PDF Producer: +document_properties_version=PDF Version: +document_properties_page_count=Page Count: +document_properties_page_size=Page Size: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=portrait +document_properties_page_size_orientation_landscape=landscape +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Web View: +document_properties_linearized_yes=Yes +document_properties_linearized_no=No +document_properties_close=Close + +print_progress_message=Preparing document for printing… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancel + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Toggle Sidebar +toggle_sidebar_notification2.title=Toggle Sidebar (document contains outline/attachments/layers) +toggle_sidebar_label=Toggle Sidebar +document_outline.title=Show Document Outline (double-click to expand/collapse all items) +document_outline_label=Document Outline +attachments.title=Show Attachments +attachments_label=Attachments +layers.title=Show Layers (double-click to reset all layers to the default state) +layers_label=Layers +thumbs.title=Show Thumbnails +thumbs_label=Thumbnails +current_outline_item.title=Find Current Outline Item +current_outline_item_label=Current Outline Item +findbar.title=Find in Document +findbar_label=Find + +additional_layers=Additional Layers +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Page {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Page {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Thumbnail of Page {{page}} + +# Find panel button title and messages +find_input.title=Find +find_input.placeholder=Find in document… +find_previous.title=Find the previous occurrence of the phrase +find_previous_label=Previous +find_next.title=Find the next occurrence of the phrase +find_next_label=Next +find_highlight=Highlight All +find_match_case_label=Match Case +find_match_diacritics_label=Match Diacritics +find_entire_word_label=Whole Words +find_reached_top=Reached top of document, continued from bottom +find_reached_bottom=Reached end of document, continued from top +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} of {{total}} match +find_match_count[two]={{current}} of {{total}} matches +find_match_count[few]={{current}} of {{total}} matches +find_match_count[many]={{current}} of {{total}} matches +find_match_count[other]={{current}} of {{total}} matches +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=More than {{limit}} matches +find_match_count_limit[one]=More than {{limit}} match +find_match_count_limit[two]=More than {{limit}} matches +find_match_count_limit[few]=More than {{limit}} matches +find_match_count_limit[many]=More than {{limit}} matches +find_match_count_limit[other]=More than {{limit}} matches +find_not_found=Phrase not found + +# Error panel labels +error_more_info=More Information +error_less_info=Less Information +error_close=Close +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Message: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=File: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Line: {{line}} + +# Predefined zoom values +page_scale_width=Page Width +page_scale_fit=Page Fit +page_scale_auto=Automatic Zoom +page_scale_actual=Actual Size +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Loading… +loading_error=An error occurred while loading the PDF. +invalid_file_error=Invalid or corrupted PDF file. +missing_file_error=Missing PDF file. +unexpected_response_error=Unexpected server response. + +rendering_error=An error occurred while rendering the page. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=Enter the password to open this PDF file. +password_invalid=Invalid password. Please try again. +password_ok=OK +password_cancel=Cancel + +printing_not_supported=Warning: Printing is not fully supported by this browser. +printing_not_ready=Warning: The PDF is not fully loaded for printing. +web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. + +# Editor +editor_free_text2.title=Text +editor_free_text2_label=Text +editor_ink2.title=Draw +editor_ink2_label=Draw + +free_text2_default_content=Start typing… + +# Editor Parameters +editor_free_text_color=Colour +editor_free_text_size=Size +editor_ink_color=Colour +editor_ink_thickness=Thickness +editor_ink_opacity=Opacity + +# Editor aria +editor_free_text2_aria_label=Text Editor +editor_ink2_aria_label=Draw Editor +editor_ink_canvas_aria_label=User-created image diff --git a/page/static/js/web/locale/en-GB/viewer.properties b/page/static/js/web/locale/en-GB/viewer.properties new file mode 100644 index 0000000..0440902 --- /dev/null +++ b/page/static/js/web/locale/en-GB/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Previous Page +previous_label=Previous +next.title=Next Page +next_label=Next + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Page +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=of {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} of {{pagesCount}}) + +zoom_out.title=Zoom Out +zoom_out_label=Zoom Out +zoom_in.title=Zoom In +zoom_in_label=Zoom In +zoom.title=Zoom +presentation_mode.title=Switch to Presentation Mode +presentation_mode_label=Presentation Mode +open_file.title=Open File +open_file_label=Open +print.title=Print +print_label=Print +download.title=Download +download_label=Download +save.title=Save +save_label=Save +bookmark.title=Current view (copy or open in new window) +bookmark_label=Current View + +bookmark1.title=Current Page (View URL from Current Page) +bookmark1_label=Current Page + +# Secondary toolbar and context menu +tools.title=Tools +tools_label=Tools +first_page.title=Go to First Page +first_page_label=Go to First Page +last_page.title=Go to Last Page +last_page_label=Go to Last Page +page_rotate_cw.title=Rotate Clockwise +page_rotate_cw_label=Rotate Clockwise +page_rotate_ccw.title=Rotate Anti-Clockwise +page_rotate_ccw_label=Rotate Anti-Clockwise + +cursor_text_select_tool.title=Enable Text Selection Tool +cursor_text_select_tool_label=Text Selection Tool +cursor_hand_tool.title=Enable Hand Tool +cursor_hand_tool_label=Hand Tool + +scroll_page.title=Use Page Scrolling +scroll_page_label=Page Scrolling +scroll_vertical.title=Use Vertical Scrolling +scroll_vertical_label=Vertical Scrolling +scroll_horizontal.title=Use Horizontal Scrolling +scroll_horizontal_label=Horizontal Scrolling +scroll_wrapped.title=Use Wrapped Scrolling +scroll_wrapped_label=Wrapped Scrolling + +spread_none.title=Do not join page spreads +spread_none_label=No Spreads +spread_odd.title=Join page spreads starting with odd-numbered pages +spread_odd_label=Odd Spreads +spread_even.title=Join page spreads starting with even-numbered pages +spread_even_label=Even Spreads + +# Document properties dialog box +document_properties.title=Document Properties… +document_properties_label=Document Properties… +document_properties_file_name=File name: +document_properties_file_size=File size: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} kB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Title: +document_properties_author=Author: +document_properties_subject=Subject: +document_properties_keywords=Keywords: +document_properties_creation_date=Creation Date: +document_properties_modification_date=Modification Date: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creator: +document_properties_producer=PDF Producer: +document_properties_version=PDF Version: +document_properties_page_count=Page Count: +document_properties_page_size=Page Size: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=portrait +document_properties_page_size_orientation_landscape=landscape +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Web View: +document_properties_linearized_yes=Yes +document_properties_linearized_no=No +document_properties_close=Close + +print_progress_message=Preparing document for printing… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancel + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Toggle Sidebar +toggle_sidebar_notification2.title=Toggle Sidebar (document contains outline/attachments/layers) +toggle_sidebar_label=Toggle Sidebar +document_outline.title=Show Document Outline (double-click to expand/collapse all items) +document_outline_label=Document Outline +attachments.title=Show Attachments +attachments_label=Attachments +layers.title=Show Layers (double-click to reset all layers to the default state) +layers_label=Layers +thumbs.title=Show Thumbnails +thumbs_label=Thumbnails +current_outline_item.title=Find Current Outline Item +current_outline_item_label=Current Outline Item +findbar.title=Find in Document +findbar_label=Find + +additional_layers=Additional Layers +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Page {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Page {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Thumbnail of Page {{page}} + +# Find panel button title and messages +find_input.title=Find +find_input.placeholder=Find in document… +find_previous.title=Find the previous occurrence of the phrase +find_previous_label=Previous +find_next.title=Find the next occurrence of the phrase +find_next_label=Next +find_highlight=Highlight All +find_match_case_label=Match Case +find_match_diacritics_label=Match Diacritics +find_entire_word_label=Whole Words +find_reached_top=Reached top of document, continued from bottom +find_reached_bottom=Reached end of document, continued from top +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} of {{total}} match +find_match_count[two]={{current}} of {{total}} matches +find_match_count[few]={{current}} of {{total}} matches +find_match_count[many]={{current}} of {{total}} matches +find_match_count[other]={{current}} of {{total}} matches +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=More than {{limit}} matches +find_match_count_limit[one]=More than {{limit}} match +find_match_count_limit[two]=More than {{limit}} matches +find_match_count_limit[few]=More than {{limit}} matches +find_match_count_limit[many]=More than {{limit}} matches +find_match_count_limit[other]=More than {{limit}} matches +find_not_found=Phrase not found + +# Error panel labels +error_more_info=More Information +error_less_info=Less Information +error_close=Close +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Message: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=File: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Line: {{line}} + +# Predefined zoom values +page_scale_width=Page Width +page_scale_fit=Page Fit +page_scale_auto=Automatic Zoom +page_scale_actual=Actual Size +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Loading… +loading_error=An error occurred while loading the PDF. +invalid_file_error=Invalid or corrupted PDF file. +missing_file_error=Missing PDF file. +unexpected_response_error=Unexpected server response. + +rendering_error=An error occurred while rendering the page. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=Enter the password to open this PDF file. +password_invalid=Invalid password. Please try again. +password_ok=OK +password_cancel=Cancel + +printing_not_supported=Warning: Printing is not fully supported by this browser. +printing_not_ready=Warning: The PDF is not fully loaded for printing. +web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. + +# Editor +editor_free_text2.title=Text +editor_free_text2_label=Text +editor_ink2.title=Draw +editor_ink2_label=Draw + +free_text2_default_content=Start typing… + +# Editor Parameters +editor_free_text_color=Colour +editor_free_text_size=Size +editor_ink_color=Colour +editor_ink_thickness=Thickness +editor_ink_opacity=Opacity + +# Editor aria +editor_free_text2_aria_label=Text Editor +editor_ink2_aria_label=Draw Editor +editor_ink_canvas_aria_label=User-created image diff --git a/page/static/js/web/locale/en-US/viewer.properties b/page/static/js/web/locale/en-US/viewer.properties new file mode 100644 index 0000000..b3241bd --- /dev/null +++ b/page/static/js/web/locale/en-US/viewer.properties @@ -0,0 +1,252 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Previous Page +previous_label=Previous +next.title=Next Page +next_label=Next + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Page +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=of {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} of {{pagesCount}}) + +zoom_out.title=Zoom Out +zoom_out_label=Zoom Out +zoom_in.title=Zoom In +zoom_in_label=Zoom In +zoom.title=Zoom +presentation_mode.title=Switch to Presentation Mode +presentation_mode_label=Presentation Mode +open_file.title=Open File +open_file_label=Open +print.title=Print +print_label=Print +save.title=Save +save_label=Save +bookmark1.title=Current Page (View URL from Current Page) +bookmark1_label=Current Page + +# Secondary toolbar and context menu +tools.title=Tools +tools_label=Tools +first_page.title=Go to First Page +first_page_label=Go to First Page +last_page.title=Go to Last Page +last_page_label=Go to Last Page +page_rotate_cw.title=Rotate Clockwise +page_rotate_cw_label=Rotate Clockwise +page_rotate_ccw.title=Rotate Counterclockwise +page_rotate_ccw_label=Rotate Counterclockwise + +cursor_text_select_tool.title=Enable Text Selection Tool +cursor_text_select_tool_label=Text Selection Tool +cursor_hand_tool.title=Enable Hand Tool +cursor_hand_tool_label=Hand Tool + +scroll_page.title=Use Page Scrolling +scroll_page_label=Page Scrolling +scroll_vertical.title=Use Vertical Scrolling +scroll_vertical_label=Vertical Scrolling +scroll_horizontal.title=Use Horizontal Scrolling +scroll_horizontal_label=Horizontal Scrolling +scroll_wrapped.title=Use Wrapped Scrolling +scroll_wrapped_label=Wrapped Scrolling + +spread_none.title=Do not join page spreads +spread_none_label=No Spreads +spread_odd.title=Join page spreads starting with odd-numbered pages +spread_odd_label=Odd Spreads +spread_even.title=Join page spreads starting with even-numbered pages +spread_even_label=Even Spreads + +# Document properties dialog box +document_properties.title=Document Properties… +document_properties_label=Document Properties… +document_properties_file_name=File name: +document_properties_file_size=File size: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Title: +document_properties_author=Author: +document_properties_subject=Subject: +document_properties_keywords=Keywords: +document_properties_creation_date=Creation Date: +document_properties_modification_date=Modification Date: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creator: +document_properties_producer=PDF Producer: +document_properties_version=PDF Version: +document_properties_page_count=Page Count: +document_properties_page_size=Page Size: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=portrait +document_properties_page_size_orientation_landscape=landscape +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Web View: +document_properties_linearized_yes=Yes +document_properties_linearized_no=No +document_properties_close=Close + +print_progress_message=Preparing document for printing… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancel + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Toggle Sidebar +toggle_sidebar_notification2.title=Toggle Sidebar (document contains outline/attachments/layers) +toggle_sidebar_label=Toggle Sidebar +document_outline.title=Show Document Outline (double-click to expand/collapse all items) +document_outline_label=Document Outline +attachments.title=Show Attachments +attachments_label=Attachments +layers.title=Show Layers (double-click to reset all layers to the default state) +layers_label=Layers +thumbs.title=Show Thumbnails +thumbs_label=Thumbnails +current_outline_item.title=Find Current Outline Item +current_outline_item_label=Current Outline Item +findbar.title=Find in Document +findbar_label=Find + +additional_layers=Additional Layers +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Page {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Page {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Thumbnail of Page {{page}} + +# Find panel button title and messages +find_input.title=Find +find_input.placeholder=Find in document… +find_previous.title=Find the previous occurrence of the phrase +find_previous_label=Previous +find_next.title=Find the next occurrence of the phrase +find_next_label=Next +find_highlight=Highlight All +find_match_case_label=Match Case +find_match_diacritics_label=Match Diacritics +find_entire_word_label=Whole Words +find_reached_top=Reached top of document, continued from bottom +find_reached_bottom=Reached end of document, continued from top +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} of {{total}} match +find_match_count[two]={{current}} of {{total}} matches +find_match_count[few]={{current}} of {{total}} matches +find_match_count[many]={{current}} of {{total}} matches +find_match_count[other]={{current}} of {{total}} matches +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=More than {{limit}} matches +find_match_count_limit[one]=More than {{limit}} match +find_match_count_limit[two]=More than {{limit}} matches +find_match_count_limit[few]=More than {{limit}} matches +find_match_count_limit[many]=More than {{limit}} matches +find_match_count_limit[other]=More than {{limit}} matches +find_not_found=Phrase not found + +# Predefined zoom values +page_scale_width=Page Width +page_scale_fit=Page Fit +page_scale_auto=Automatic Zoom +page_scale_actual=Actual Size +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading_error=An error occurred while loading the PDF. +invalid_file_error=Invalid or corrupted PDF file. +missing_file_error=Missing PDF file. +unexpected_response_error=Unexpected server response. +rendering_error=An error occurred while rendering the page. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=Enter the password to open this PDF file. +password_invalid=Invalid password. Please try again. +password_ok=OK +password_cancel=Cancel + +printing_not_supported=Warning: Printing is not fully supported by this browser. +printing_not_ready=Warning: The PDF is not fully loaded for printing. +web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. + +# Editor +editor_free_text2.title=Text +editor_free_text2_label=Text +editor_ink2.title=Draw +editor_ink2_label=Draw + +free_text2_default_content=Start typing… + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Size +editor_ink_color=Color +editor_ink_thickness=Thickness +editor_ink_opacity=Opacity + +# Editor aria +editor_free_text2_aria_label=Text Editor +editor_ink2_aria_label=Draw Editor +editor_ink_canvas_aria_label=User-created image diff --git a/page/static/js/web/locale/eo/viewer.properties b/page/static/js/web/locale/eo/viewer.properties new file mode 100644 index 0000000..b542100 --- /dev/null +++ b/page/static/js/web/locale/eo/viewer.properties @@ -0,0 +1,274 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=AntaÅ­a paÄo +previous_label=MalantaÅ­en +next.title=Venonta paÄo +next_label=AntaÅ­en + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=PaÄo +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=el {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} el {{pagesCount}}) + +zoom_out.title=Malpligrandigi +zoom_out_label=Malpligrandigi +zoom_in.title=Pligrandigi +zoom_in_label=Pligrandigi +zoom.title=Pligrandigilo +presentation_mode.title=Iri al prezenta reÄimo +presentation_mode_label=Prezenta reÄimo +open_file.title=Malfermi dosieron +open_file_label=Malfermi +print.title=Presi +print_label=Presi +download.title=ElÅuti +download_label=ElÅuti +save.title=Konservi +save_label=Konservi +bookmark.title=Nuna vido (kopii aÅ­ malfermi en nova fenestro) +bookmark_label=Nuna vido + +# Secondary toolbar and context menu +tools.title=Iloj +tools_label=Iloj +first_page.title=Iri al la unua paÄo +first_page_label=Iri al la unua paÄo +last_page.title=Iri al la lasta paÄo +last_page_label=Iri al la lasta paÄo +page_rotate_cw.title=Rotaciigi dekstrume +page_rotate_cw_label=Rotaciigi dekstrume +page_rotate_ccw.title=Rotaciigi maldekstrume +page_rotate_ccw_label=Rotaciigi maldekstrume + +cursor_text_select_tool.title=Aktivigi tekstan elektilon +cursor_text_select_tool_label=Teksta elektilo +cursor_hand_tool.title=Aktivigi ilon de mano +cursor_hand_tool_label=Ilo de mano + +scroll_page.title=Uzi Åovadon de paÄo +scroll_page_label=Åœovado de paÄo +scroll_vertical.title=Uzi vertikalan Åovadon +scroll_vertical_label=Vertikala Åovado +scroll_horizontal.title=Uzi horizontalan Åovadon +scroll_horizontal_label=Horizontala Åovado +scroll_wrapped.title=Uzi ambaÅ­direktan Åovadon +scroll_wrapped_label=AmbaÅ­direkta Åovado + +spread_none.title=Ne montri paÄojn po du +spread_none_label=UnupaÄa vido +spread_odd.title=Kunigi paÄojn komencante per nepara paÄo +spread_odd_label=Po du paÄoj, neparaj maldekstre +spread_even.title=Kunigi paÄojn komencante per para paÄo +spread_even_label=Po du paÄoj, paraj maldekstre + +# Document properties dialog box +document_properties.title=Atributoj de dokumento… +document_properties_label=Atributoj de dokumento… +document_properties_file_name=Nomo de dosiero: +document_properties_file_size=Grando de dosiero: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KO ({{size_b}} oktetoj) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MO ({{size_b}} oktetoj) +document_properties_title=Titolo: +document_properties_author=AÅ­toro: +document_properties_subject=Temo: +document_properties_keywords=Åœlosilvorto: +document_properties_creation_date=Dato de kreado: +document_properties_modification_date=Dato de modifo: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Kreinto: +document_properties_producer=Produktinto de PDF: +document_properties_version=Versio de PDF: +document_properties_page_count=Nombro de paÄoj: +document_properties_page_size=Grando de paÄo: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=vertikala +document_properties_page_size_orientation_landscape=horizontala +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letera +document_properties_page_size_name_legal=Jura +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Rapida tekstaĵa vido: +document_properties_linearized_yes=Jes +document_properties_linearized_no=Ne +document_properties_close=Fermi + +print_progress_message=Preparo de dokumento por presi Äin … +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Nuligi + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Montri/kaÅi flankan strion +toggle_sidebar_notification2.title=Montri/kaÅi flankan strion (la dokumento enhavas konturon/kunsendaĵojn/tavolojn) +toggle_sidebar_label=Montri/kaÅi flankan strion +document_outline.title=Montri la konturon de dokumento (alklaku duoble por faldi/malfaldi ĉiujn elementojn) +document_outline_label=Konturo de dokumento +attachments.title=Montri kunsendaĵojn +attachments_label=Kunsendaĵojn +layers.title=Montri tavolojn (duoble alklaku por remeti ĉiujn tavolojn en la norman staton) +layers_label=Tavoloj +thumbs.title=Montri miniaturojn +thumbs_label=Miniaturoj +current_outline_item.title=Trovi nunan konturan elementon +current_outline_item_label=Nuna kontura elemento +findbar.title=Serĉi en dokumento +findbar_label=Serĉi + +additional_layers=Aldonaj tavoloj +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=PaÄo {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=PaÄo {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniaturo de paÄo {{page}} + +# Find panel button title and messages +find_input.title=Serĉi +find_input.placeholder=Serĉi en dokumento… +find_previous.title=Serĉi la antaÅ­an aperon de la frazo +find_previous_label=MalantaÅ­en +find_next.title=Serĉi la venontan aperon de la frazo +find_next_label=AntaÅ­en +find_highlight=Elstarigi ĉiujn +find_match_case_label=Distingi inter majuskloj kaj minuskloj +find_match_diacritics_label=Respekti supersignojn +find_entire_word_label=Tutaj vortoj +find_reached_top=Komenco de la dokumento atingita, daÅ­rigado ekde la fino +find_reached_bottom=Fino de la dokumento atingita, daÅ­rigado ekde la komenco +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} el {{total}} kongruo +find_match_count[two]={{current}} el {{total}} kongruoj +find_match_count[few]={{current}} el {{total}} kongruoj +find_match_count[many]={{current}} el {{total}} kongruoj +find_match_count[other]={{current}} el {{total}} kongruoj +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Pli ol {{limit}} kongruoj +find_match_count_limit[one]=Pli ol {{limit}} kongruo +find_match_count_limit[two]=Pli ol {{limit}} kongruoj +find_match_count_limit[few]=Pli ol {{limit}} kongruoj +find_match_count_limit[many]=Pli ol {{limit}} kongruoj +find_match_count_limit[other]=Pli ol {{limit}} kongruoj +find_not_found=Frazo ne trovita + +# Error panel labels +error_more_info=Pli da informo +error_less_info=Malpli da informo +error_close=Fermi +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=MesaÄo: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stako: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Dosiero: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linio: {{line}} + +# Predefined zoom values +page_scale_width=LarÄo de paÄo +page_scale_fit=Adapti paÄon +page_scale_auto=AÅ­tomata skalo +page_scale_actual=Reala grando +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Åœargado… +loading_error=Okazis eraro dum la Åargado de la PDF dosiero. +invalid_file_error=Nevalida aÅ­ difektita PDF dosiero. +missing_file_error=Mankas dosiero PDF. +unexpected_response_error=Neatendita respondo de servilo. + +rendering_error=Okazis eraro dum la montro de la paÄo. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Prinoto: {{type}}] +password_label=Tajpu pasvorton por malfermi tiun ĉi dosieron PDF. +password_invalid=Nevalida pasvorto. Bonvolu provi denove. +password_ok=Akcepti +password_cancel=Nuligi + +printing_not_supported=Averto: tiu ĉi retumilo ne plene subtenas presadon. +printing_not_ready=Averto: la PDF dosiero ne estas plene Åargita por presado. +web_fonts_disabled=Neaktivaj teksaĵaj tiparoj: ne elbas uzi enmetitajn tiparojn de PDF. + +# Editor +editor_free_text2.title=Teksto +editor_free_text2_label=Teksto +editor_ink2.title=Desegni +editor_ink2_label=Desegni + +free_text2_default_content=Ektajpi… + +# Editor Parameters +editor_free_text_color=Koloro +editor_free_text_size=Grando +editor_ink_color=Koloro +editor_ink_thickness=Dikeco +editor_ink_opacity=Maldiafaneco + +# Editor aria +editor_free_text2_aria_label=Tekstan redaktilon +editor_ink2_aria_label=Desegnan redaktilon +editor_ink_canvas_aria_label=Bildo kreita de uzanto diff --git a/page/static/js/web/locale/es-AR/viewer.properties b/page/static/js/web/locale/es-AR/viewer.properties new file mode 100644 index 0000000..7ef14e1 --- /dev/null +++ b/page/static/js/web/locale/es-AR/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Página anterior +previous_label=Anterior +next.title=Página siguiente +next_label=Siguiente + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Página +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=( {{pageNumber}} de {{pagesCount}} ) + +zoom_out.title=Alejar +zoom_out_label=Alejar +zoom_in.title=Acercar +zoom_in_label=Acercar +zoom.title=Zoom +presentation_mode.title=Cambiar a modo presentación +presentation_mode_label=Modo presentación +open_file.title=Abrir archivo +open_file_label=Abrir +print.title=Imprimir +print_label=Imprimir +download.title=Descargar +download_label=Descargar +save.title=Guardar +save_label=Guardar +bookmark.title=Vista actual (copiar o abrir en nueva ventana) +bookmark_label=Vista actual + +bookmark1.title=Página actual (Ver URL de la página actual) +bookmark1_label=Página actual + +# Secondary toolbar and context menu +tools.title=Herramientas +tools_label=Herramientas +first_page.title=Ir a primera página +first_page_label=Ir a primera página +last_page.title=Ir a última página +last_page_label=Ir a última página +page_rotate_cw.title=Rotar horario +page_rotate_cw_label=Rotar horario +page_rotate_ccw.title=Rotar antihorario +page_rotate_ccw_label=Rotar antihorario + +cursor_text_select_tool.title=Habilitar herramienta de selección de texto +cursor_text_select_tool_label=Herramienta de selección de texto +cursor_hand_tool.title=Habilitar herramienta mano +cursor_hand_tool_label=Herramienta mano + +scroll_page.title=Usar desplazamiento de página +scroll_page_label=Desplazamiento de página +scroll_vertical.title=Usar desplazamiento vertical +scroll_vertical_label=Desplazamiento vertical +scroll_horizontal.title=Usar desplazamiento vertical +scroll_horizontal_label=Desplazamiento horizontal +scroll_wrapped.title=Usar desplazamiento encapsulado +scroll_wrapped_label=Desplazamiento encapsulado + +spread_none.title=No unir páginas dobles +spread_none_label=Sin dobles +spread_odd.title=Unir páginas dobles comenzando con las impares +spread_odd_label=Dobles impares +spread_even.title=Unir páginas dobles comenzando con las pares +spread_even_label=Dobles pares + +# Document properties dialog box +document_properties.title=Propiedades del documento… +document_properties_label=Propiedades del documento… +document_properties_file_name=Nombre de archivo: +document_properties_file_size=Tamaño de archovo: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Título: +document_properties_author=Autor: +document_properties_subject=Asunto: +document_properties_keywords=Palabras clave: +document_properties_creation_date=Fecha de creación: +document_properties_modification_date=Fecha de modificación: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creador: +document_properties_producer=PDF Productor: +document_properties_version=Versión de PDF: +document_properties_page_count=Cantidad de páginas: +document_properties_page_size=Tamaño de página: +document_properties_page_size_unit_inches=en +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=normal +document_properties_page_size_orientation_landscape=apaisado +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Carta +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista rápida de la Web: +document_properties_linearized_yes=Sí +document_properties_linearized_no=No +document_properties_close=Cerrar + +print_progress_message=Preparando documento para imprimir… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancelar + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Alternar barra lateral +toggle_sidebar_notification2.title=Alternar barra lateral (el documento contiene esquemas/adjuntos/capas) +toggle_sidebar_label=Alternar barra lateral +document_outline.title=Mostrar esquema del documento (doble clic para expandir/colapsar todos los ítems) +document_outline_label=Esquema del documento +attachments.title=Mostrar adjuntos +attachments_label=Adjuntos +layers.title=Mostrar capas (doble clic para restablecer todas las capas al estado predeterminado) +layers_label=Capas +thumbs.title=Mostrar miniaturas +thumbs_label=Miniaturas +current_outline_item.title=Buscar elemento de esquema actual +current_outline_item_label=Elemento de esquema actual +findbar.title=Buscar en documento +findbar_label=Buscar + +additional_layers=Capas adicionales +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Página {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Página {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura de página {{page}} + +# Find panel button title and messages +find_input.title=Buscar +find_input.placeholder=Buscar en documento… +find_previous.title=Buscar la aparición anterior de la frase +find_previous_label=Anterior +find_next.title=Buscar la siguiente aparición de la frase +find_next_label=Siguiente +find_highlight=Resaltar todo +find_match_case_label=Coincidir mayúsculas +find_match_diacritics_label=Coincidir diacríticos +find_entire_word_label=Palabras completas +find_reached_top=Inicio de documento alcanzado, continuando desde abajo +find_reached_bottom=Fin de documento alcanzando, continuando desde arriba +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} de {{total}} coincidencias +find_match_count[two]={{current}} de {{total}} coincidencias +find_match_count[few]={{current}} de {{total}} coincidencias +find_match_count[many]={{current}} de {{total}} coincidencias +find_match_count[other]={{current}} de {{total}} coincidencias +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Más de {{limit}} coincidencias +find_match_count_limit[one]=Más de {{limit}} coinciden +find_match_count_limit[two]=Más de {{limit}} coincidencias +find_match_count_limit[few]=Más de {{limit}} coincidencias +find_match_count_limit[many]=Más de {{limit}} coincidencias +find_match_count_limit[other]=Más de {{limit}} coincidencias +find_not_found=Frase no encontrada + +# Error panel labels +error_more_info=Más información +error_less_info=Menos información +error_close=Cerrar +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mensaje: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pila: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Archivo: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Línea: {{line}} + +# Predefined zoom values +page_scale_width=Ancho de página +page_scale_fit=Ajustar página +page_scale_auto=Zoom automático +page_scale_actual=Tamaño real +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Cargando… +loading_error=Ocurrió un error al cargar el PDF. +invalid_file_error=Archivo PDF no válido o cocrrupto. +missing_file_error=Archivo PDF faltante. +unexpected_response_error=Respuesta del servidor inesperada. + +rendering_error=Ocurrió un error al dibujar la página. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Anotación] +password_label=Ingrese la contraseña para abrir este archivo PDF +password_invalid=Contraseña inválida. Intente nuevamente. +password_ok=Aceptar +password_cancel=Cancelar + +printing_not_supported=Advertencia: La impresión no está totalmente soportada por este navegador. +printing_not_ready=Advertencia: El PDF no está completamente cargado para impresión. +web_fonts_disabled=Tipografía web deshabilitada: no se pueden usar tipos incrustados en PDF. + +# Editor +editor_free_text2.title=Texto +editor_free_text2_label=Texto +editor_ink2.title=Dibujar +editor_ink2_label=Dibujar + +free_text2_default_content=Empezar a tipear… + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Tamaño +editor_ink_color=Color +editor_ink_thickness=Espesor +editor_ink_opacity=Opacidad + +# Editor aria +editor_free_text2_aria_label=Editor de texto +editor_ink2_aria_label=Editor de dibujos +editor_ink_canvas_aria_label=Imagen creada por el usuario diff --git a/page/static/js/web/locale/es-CL/viewer.properties b/page/static/js/web/locale/es-CL/viewer.properties new file mode 100644 index 0000000..d7354b5 --- /dev/null +++ b/page/static/js/web/locale/es-CL/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Página anterior +previous_label=Anterior +next.title=Página siguiente +next_label=Siguiente + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Página +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Alejar +zoom_out_label=Alejar +zoom_in.title=Acercar +zoom_in_label=Acercar +zoom.title=Ampliación +presentation_mode.title=Cambiar al modo de presentación +presentation_mode_label=Modo de presentación +open_file.title=Abrir archivo +open_file_label=Abrir +print.title=Imprimir +print_label=Imprimir +download.title=Descargar +download_label=Descargar +save.title=Guardar +save_label=Guardar +bookmark.title=Vista actual (copiar o abrir en nueva ventana) +bookmark_label=Vista actual + +bookmark1.title=Página actual (Ver URL de la página actual) +bookmark1_label=Página actual + +# Secondary toolbar and context menu +tools.title=Herramientas +tools_label=Herramientas +first_page.title=Ir a la primera página +first_page_label=Ir a la primera página +last_page.title=Ir a la última página +last_page_label=Ir a la última página +page_rotate_cw.title=Girar a la derecha +page_rotate_cw_label=Girar a la derecha +page_rotate_ccw.title=Girar a la izquierda +page_rotate_ccw_label=Girar a la izquierda + +cursor_text_select_tool.title=Activar la herramienta de selección de texto +cursor_text_select_tool_label=Herramienta de selección de texto +cursor_hand_tool.title=Activar la herramienta de mano +cursor_hand_tool_label=Herramienta de mano + +scroll_page.title=Usar desplazamiento de página +scroll_page_label=Desplazamiento de página +scroll_vertical.title=Usar desplazamiento vertical +scroll_vertical_label=Desplazamiento vertical +scroll_horizontal.title=Usar desplazamiento horizontal +scroll_horizontal_label=Desplazamiento horizontal +scroll_wrapped.title=Usar desplazamiento en bloque +scroll_wrapped_label=Desplazamiento en bloque + +spread_none.title=No juntar páginas a modo de libro +spread_none_label=Vista de una página +spread_odd.title=Junta las páginas partiendo con una de número impar +spread_odd_label=Vista de libro impar +spread_even.title=Junta las páginas partiendo con una de número par +spread_even_label=Vista de libro par + +# Document properties dialog box +document_properties.title=Propiedades del documento… +document_properties_label=Propiedades del documento… +document_properties_file_name=Nombre de archivo: +document_properties_file_size=Tamaño del archivo: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Título: +document_properties_author=Autor: +document_properties_subject=Asunto: +document_properties_keywords=Palabras clave: +document_properties_creation_date=Fecha de creación: +document_properties_modification_date=Fecha de modificación: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creador: +document_properties_producer=Productor del PDF: +document_properties_version=Versión de PDF: +document_properties_page_count=Cantidad de páginas: +document_properties_page_size=Tamaño de la página: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=vertical +document_properties_page_size_orientation_landscape=horizontal +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Carta +document_properties_page_size_name_legal=Oficio +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista rápida en Web: +document_properties_linearized_yes=Sí +document_properties_linearized_no=No +document_properties_close=Cerrar + +print_progress_message=Preparando documento para impresión… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancelar + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Barra lateral +toggle_sidebar_notification2.title=Cambiar barra lateral (índice de contenidos del documento/adjuntos/capas) +toggle_sidebar_label=Mostrar u ocultar la barra lateral +document_outline.title=Mostrar esquema del documento (doble clic para expandir/contraer todos los elementos) +document_outline_label=Esquema del documento +attachments.title=Mostrar adjuntos +attachments_label=Adjuntos +layers.title=Mostrar capas (doble clic para restablecer todas las capas al estado predeterminado) +layers_label=Capas +thumbs.title=Mostrar miniaturas +thumbs_label=Miniaturas +current_outline_item.title=Buscar elemento de esquema actual +current_outline_item_label=Elemento de esquema actual +findbar.title=Buscar en el documento +findbar_label=Buscar + +additional_layers=Capas adicionales +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Página {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Página {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura de la página {{page}} + +# Find panel button title and messages +find_input.title=Encontrar +find_input.placeholder=Encontrar en el documento… +find_previous.title=Buscar la aparición anterior de la frase +find_previous_label=Previo +find_next.title=Buscar la siguiente aparición de la frase +find_next_label=Siguiente +find_highlight=Destacar todos +find_match_case_label=Coincidir mayús./minús. +find_match_diacritics_label=Coincidir diacríticos +find_entire_word_label=Palabras completas +find_reached_top=Se alcanzó el inicio del documento, continuando desde el final +find_reached_bottom=Se alcanzó el final del documento, continuando desde el inicio +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]=Coincidencia {{current}} de {{total}} +find_match_count[two]=Coincidencia {{current}} de {{total}} +find_match_count[few]=Coincidencia {{current}} de {{total}} +find_match_count[many]=Coincidencia {{current}} de {{total}} +find_match_count[other]=Coincidencia {{current}} de {{total}} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Más de {{limit}} coincidencias +find_match_count_limit[one]=Más de {{limit}} coincidencia +find_match_count_limit[two]=Más de {{limit}} coincidencias +find_match_count_limit[few]=Más de {{limit}} coincidencias +find_match_count_limit[many]=Más de {{limit}} coincidencias +find_match_count_limit[other]=Más de {{limit}} coincidencias +find_not_found=Frase no encontrada + +# Error panel labels +error_more_info=Más información +error_less_info=Menos información +error_close=Cerrar +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (compilación: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mensaje: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pila: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Archivo: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Línea: {{line}} + +# Predefined zoom values +page_scale_width=Ancho de página +page_scale_fit=Ajuste de página +page_scale_auto=Aumento automático +page_scale_actual=Tamaño actual +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Cargando… +loading_error=Ocurrió un error al cargar el PDF. +invalid_file_error=Archivo PDF inválido o corrupto. +missing_file_error=Falta el archivo PDF. +unexpected_response_error=Respuesta del servidor inesperada. + +rendering_error=Ocurrió un error al renderizar la página. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Anotación] +password_label=Ingrese la contraseña para abrir este archivo PDF. +password_invalid=Contraseña inválida. Por favor, vuelve a intentarlo. +password_ok=Aceptar +password_cancel=Cancelar + +printing_not_supported=Advertencia: Imprimir no está soportado completamente por este navegador. +printing_not_ready=Advertencia: El PDF no está completamente cargado para ser impreso. +web_fonts_disabled=Las tipografías web están desactivadas: imposible usar las fuentes PDF embebidas. + +# Editor +editor_free_text2.title=Texto +editor_free_text2_label=Texto +editor_ink2.title=Dibujar +editor_ink2_label=Dibujar + +free_text2_default_content=Empieza a escribir… + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Tamaño +editor_ink_color=Color +editor_ink_thickness=Grosor +editor_ink_opacity=Opacidad + +# Editor aria +editor_free_text2_aria_label=Editor de texto +editor_ink2_aria_label=Editor de dibujos +editor_ink_canvas_aria_label=Imagen creada por el usuario diff --git a/page/static/js/web/locale/es-ES/viewer.properties b/page/static/js/web/locale/es-ES/viewer.properties new file mode 100644 index 0000000..9fed99b --- /dev/null +++ b/page/static/js/web/locale/es-ES/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Página anterior +previous_label=Anterior +next.title=Página siguiente +next_label=Siguiente + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Página +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Reducir +zoom_out_label=Reducir +zoom_in.title=Aumentar +zoom_in_label=Aumentar +zoom.title=Tamaño +presentation_mode.title=Cambiar al modo presentación +presentation_mode_label=Modo presentación +open_file.title=Abrir archivo +open_file_label=Abrir +print.title=Imprimir +print_label=Imprimir +download.title=Descargar +download_label=Descargar +save.title=Guardar +save_label=Guardar +bookmark.title=Vista actual (copiar o abrir en una nueva ventana) +bookmark_label=Vista actual + +bookmark1.title=Página actual (Ver URL de la página actual) +bookmark1_label=Página actual + +# Secondary toolbar and context menu +tools.title=Herramientas +tools_label=Herramientas +first_page.title=Ir a la primera página +first_page_label=Ir a la primera página +last_page.title=Ir a la última página +last_page_label=Ir a la última página +page_rotate_cw.title=Rotar en sentido horario +page_rotate_cw_label=Rotar en sentido horario +page_rotate_ccw.title=Rotar en sentido antihorario +page_rotate_ccw_label=Rotar en sentido antihorario + +cursor_text_select_tool.title=Activar herramienta de selección de texto +cursor_text_select_tool_label=Herramienta de selección de texto +cursor_hand_tool.title=Activar herramienta de mano +cursor_hand_tool_label=Herramienta de mano + +scroll_page.title=Usar desplazamiento de página +scroll_page_label=Desplazamiento de página +scroll_vertical.title=Usar desplazamiento vertical +scroll_vertical_label=Desplazamiento vertical +scroll_horizontal.title=Usar desplazamiento horizontal +scroll_horizontal_label=Desplazamiento horizontal +scroll_wrapped.title=Usar desplazamiento en bloque +scroll_wrapped_label=Desplazamiento en bloque + +spread_none.title=No juntar páginas en vista de libro +spread_none_label=Vista de libro +spread_odd.title=Juntar las páginas partiendo de una con número impar +spread_odd_label=Vista de libro impar +spread_even.title=Juntar las páginas partiendo de una con número par +spread_even_label=Vista de libro par + +# Document properties dialog box +document_properties.title=Propiedades del documento… +document_properties_label=Propiedades del documento… +document_properties_file_name=Nombre de archivo: +document_properties_file_size=Tamaño de archivo: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Título: +document_properties_author=Autor: +document_properties_subject=Asunto: +document_properties_keywords=Palabras clave: +document_properties_creation_date=Fecha de creación: +document_properties_modification_date=Fecha de modificación: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creador: +document_properties_producer=Productor PDF: +document_properties_version=Versión PDF: +document_properties_page_count=Número de páginas: +document_properties_page_size=Tamaño de la página: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=vertical +document_properties_page_size_orientation_landscape=horizontal +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Carta +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista rápida de la web: +document_properties_linearized_yes=Sí +document_properties_linearized_no=No +document_properties_close=Cerrar + +print_progress_message=Preparando documento para impresión… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancelar + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Cambiar barra lateral +toggle_sidebar_notification2.title=Alternar barra lateral (el documento contiene esquemas/adjuntos/capas) +toggle_sidebar_label=Cambiar barra lateral +document_outline.title=Mostrar resumen del documento (doble clic para expandir/contraer todos los elementos) +document_outline_label=Resumen de documento +attachments.title=Mostrar adjuntos +attachments_label=Adjuntos +layers.title=Mostrar capas (doble clic para restablecer todas las capas al estado predeterminado) +layers_label=Capas +thumbs.title=Mostrar miniaturas +thumbs_label=Miniaturas +current_outline_item.title=Encontrar elemento de esquema actual +current_outline_item_label=Elemento de esquema actual +findbar.title=Buscar en el documento +findbar_label=Buscar + +additional_layers=Capas adicionales +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Página {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Página {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura de la página {{page}} + +# Find panel button title and messages +find_input.title=Buscar +find_input.placeholder=Buscar en el documento… +find_previous.title=Encontrar la anterior aparición de la frase +find_previous_label=Anterior +find_next.title=Encontrar la siguiente aparición de esta frase +find_next_label=Siguiente +find_highlight=Resaltar todos +find_match_case_label=Coincidencia de mayús./minús. +find_match_diacritics_label=Coincidir diacríticos +find_entire_word_label=Palabras completas +find_reached_top=Se alcanzó el inicio del documento, se continúa desde el final +find_reached_bottom=Se alcanzó el final del documento, se continúa desde el inicio +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} de {{total}} coincidencia +find_match_count[two]={{current}} de {{total}} coincidencias +find_match_count[few]={{current}} de {{total}} coincidencias +find_match_count[many]={{current}} de {{total}} coincidencias +find_match_count[other]={{current}} de {{total}} coincidencias +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Más de {{limit}} coincidencias +find_match_count_limit[one]=Más de {{limit}} coincidencia +find_match_count_limit[two]=Más de {{limit}} coincidencias +find_match_count_limit[few]=Más de {{limit}} coincidencias +find_match_count_limit[many]=Más de {{limit}} coincidencias +find_match_count_limit[other]=Más de {{limit}} coincidencias +find_not_found=Frase no encontrada + +# Error panel labels +error_more_info=Más información +error_less_info=Menos información +error_close=Cerrar +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mensaje: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pila: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Archivo: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Línea: {{line}} + +# Predefined zoom values +page_scale_width=Anchura de la página +page_scale_fit=Ajuste de la página +page_scale_auto=Tamaño automático +page_scale_actual=Tamaño real +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Cargando… +loading_error=Ocurrió un error al cargar el PDF. +invalid_file_error=Fichero PDF no válido o corrupto. +missing_file_error=No hay fichero PDF. +unexpected_response_error=Respuesta inesperada del servidor. + +rendering_error=Ocurrió un error al renderizar la página. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotación {{type}}] +password_label=Introduzca la contraseña para abrir este archivo PDF. +password_invalid=Contraseña no válida. Vuelva a intentarlo. +password_ok=Aceptar +password_cancel=Cancelar + +printing_not_supported=Advertencia: Imprimir no está totalmente soportado por este navegador. +printing_not_ready=Advertencia: Este PDF no se ha cargado completamente para poder imprimirse. +web_fonts_disabled=Las tipografías web están desactivadas: es imposible usar las tipografías PDF embebidas. + +# Editor +editor_free_text2.title=Texto +editor_free_text2_label=Texto +editor_ink2.title=Dibujar +editor_ink2_label=Dibujar + +free_text2_default_content=Empezar a escribir… + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Tamaño +editor_ink_color=Color +editor_ink_thickness=Grosor +editor_ink_opacity=Opacidad + +# Editor aria +editor_free_text2_aria_label=Editor de texto +editor_ink2_aria_label=Editor de dibujos +editor_ink_canvas_aria_label=Imagen creada por el usuario diff --git a/page/static/js/web/locale/es-MX/viewer.properties b/page/static/js/web/locale/es-MX/viewer.properties new file mode 100644 index 0000000..de083e9 --- /dev/null +++ b/page/static/js/web/locale/es-MX/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Página anterior +previous_label=Anterior +next.title=Página siguiente +next_label=Siguiente + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Página +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Reducir +zoom_out_label=Reducir +zoom_in.title=Aumentar +zoom_in_label=Aumentar +zoom.title=Zoom +presentation_mode.title=Cambiar al modo presentación +presentation_mode_label=Modo presentación +open_file.title=Abrir archivo +open_file_label=Abrir +print.title=Imprimir +print_label=Imprimir +download.title=Descargar +download_label=Descargar +save.title=Guardar +save_label=Guardar +bookmark.title=Vista actual (copiar o abrir en una nueva ventana) +bookmark_label=Vista actual + +bookmark1.title=Página actual (Ver URL de la página actual) +bookmark1_label=Página actual + +# Secondary toolbar and context menu +tools.title=Herramientas +tools_label=Herramientas +first_page.title=Ir a la primera página +first_page_label=Ir a la primera página +last_page.title=Ir a la última página +last_page_label=Ir a la última página +page_rotate_cw.title=Girar a la derecha +page_rotate_cw_label=Girar a la derecha +page_rotate_ccw.title=Girar a la izquierda +page_rotate_ccw_label=Girar a la izquierda + +cursor_text_select_tool.title=Activar la herramienta de selección de texto +cursor_text_select_tool_label=Herramienta de selección de texto +cursor_hand_tool.title=Activar la herramienta de mano +cursor_hand_tool_label=Herramienta de mano + +scroll_page.title=Usar desplazamiento de página +scroll_page_label=Desplazamiento de página +scroll_vertical.title=Usar desplazamiento vertical +scroll_vertical_label=Desplazamiento vertical +scroll_horizontal.title=Usar desplazamiento horizontal +scroll_horizontal_label=Desplazamiento horizontal +scroll_wrapped.title=Usar desplazamiento encapsulado +scroll_wrapped_label=Desplazamiento encapsulado + +spread_none.title=No unir páginas separadas +spread_none_label=Vista de una página +spread_odd.title=Unir las páginas partiendo con una de número impar +spread_odd_label=Vista de libro impar +spread_even.title=Juntar las páginas partiendo con una de número par +spread_even_label=Vista de libro par + +# Document properties dialog box +document_properties.title=Propiedades del documento… +document_properties_label=Propiedades del documento… +document_properties_file_name=Nombre del archivo: +document_properties_file_size=Tamaño del archivo: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Título: +document_properties_author=Autor: +document_properties_subject=Asunto: +document_properties_keywords=Palabras claves: +document_properties_creation_date=Fecha de creación: +document_properties_modification_date=Fecha de modificación: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creador: +document_properties_producer=Productor PDF: +document_properties_version=Versión PDF: +document_properties_page_count=Número de páginas: +document_properties_page_size=Tamaño de la página: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=vertical +document_properties_page_size_orientation_landscape=horizontal +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Carta +document_properties_page_size_name_legal=Oficio +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista rápida de la web: +document_properties_linearized_yes=Sí +document_properties_linearized_no=No +document_properties_close=Cerrar + +print_progress_message=Preparando documento para impresión… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancelar + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Cambiar barra lateral +toggle_sidebar_notification2.title=Alternar barra lateral (el documento contiene esquemas/adjuntos/capas) +toggle_sidebar_label=Cambiar barra lateral +document_outline.title=Mostrar esquema del documento (doble clic para expandir/contraer todos los elementos) +document_outline_label=Esquema del documento +attachments.title=Mostrar adjuntos +attachments_label=Adjuntos +layers.title=Mostrar capas (doble clic para restablecer todas las capas al estado predeterminado) +layers_label=Capas +thumbs.title=Mostrar miniaturas +thumbs_label=Miniaturas +current_outline_item.title=Buscar elemento de esquema actual +current_outline_item_label=Elemento de esquema actual +findbar.title=Buscar en el documento +findbar_label=Buscar + +additional_layers=Capas adicionales +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Página {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Página {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura de la página {{page}} + +# Find panel button title and messages +find_input.title=Buscar +find_input.placeholder=Buscar en el documento… +find_previous.title=Ir a la anterior frase encontrada +find_previous_label=Anterior +find_next.title=Ir a la siguiente frase encontrada +find_next_label=Siguiente +find_highlight=Resaltar todo +find_match_case_label=Coincidir con mayúsculas y minúsculas +find_match_diacritics_label=Coincidir diacríticos +find_entire_word_label=Palabras completas +find_reached_top=Se alcanzó el inicio del documento, se buscará al final +find_reached_bottom=Se alcanzó el final del documento, se buscará al inicio +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} de {{total}} coincidencia +find_match_count[two]={{current}} de {{total}} coincidencias +find_match_count[few]={{current}} de {{total}} coincidencias +find_match_count[many]={{current}} de {{total}} coincidencias +find_match_count[other]={{current}} de {{total}} coincidencias +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Más de {{limit}} coincidencias +find_match_count_limit[one]=Más de {{limit}} coinciden +find_match_count_limit[two]=Más de {{limit}} coincidencias +find_match_count_limit[few]=Más de {{limit}} coincidencias +find_match_count_limit[many]=Más de {{limit}} coincidencias +find_match_count_limit[other]=Más de {{limit}} coincidencias +find_not_found=No se encontró la frase + +# Error panel labels +error_more_info=Más información +error_less_info=Menos información +error_close=Cerrar +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mensaje: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pila: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Archivo: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Línea: {{line}} + +# Predefined zoom values +page_scale_width=Ancho de página +page_scale_fit=Ajustar página +page_scale_auto=Zoom automático +page_scale_actual=Tamaño real +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Cargando… +loading_error=Un error ocurrió al cargar el PDF. +invalid_file_error=Archivo PDF invalido o dañado. +missing_file_error=Archivo PDF no encontrado. +unexpected_response_error=Respuesta inesperada del servidor. + +rendering_error=Un error ocurrió al renderizar la página. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} anotación] +password_label=Ingresa la contraseña para abrir este archivo PDF. +password_invalid=Contraseña inválida. Por favor intenta de nuevo. +password_ok=Aceptar +password_cancel=Cancelar + +printing_not_supported=Advertencia: La impresión no esta completamente soportada por este navegador. +printing_not_ready=Advertencia: El PDF no cargo completamente para impresión. +web_fonts_disabled=Las fuentes web están desactivadas: es imposible usar las fuentes PDF embebidas. + +# Editor +editor_free_text2.title=Texto +editor_free_text2_label=Texto +editor_ink2.title=Dibujar +editor_ink2_label=Dibujar + +free_text2_default_content=Empieza a escribir… + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Tamaño +editor_ink_color=Color +editor_ink_thickness=Grossor +editor_ink_opacity=Opacidad + +# Editor aria +editor_free_text2_aria_label=Editor de texto +editor_ink2_aria_label=Editor de dibujo +editor_ink_canvas_aria_label=Imagen creada por el usuario diff --git a/page/static/js/web/locale/et/viewer.properties b/page/static/js/web/locale/et/viewer.properties new file mode 100644 index 0000000..1af8a40 --- /dev/null +++ b/page/static/js/web/locale/et/viewer.properties @@ -0,0 +1,262 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Eelmine lehekülg +previous_label=Eelmine +next.title=Järgmine lehekülg +next_label=Järgmine + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Leht +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=/ {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}}/{{pagesCount}}) + +zoom_out.title=Vähenda +zoom_out_label=Vähenda +zoom_in.title=Suurenda +zoom_in_label=Suurenda +zoom.title=Suurendamine +presentation_mode.title=Lülitu esitlusrežiimi +presentation_mode_label=Esitlusrežiim +open_file.title=Ava fail +open_file_label=Ava +print.title=Prindi +print_label=Prindi +download.title=Laadi alla +download_label=Laadi alla +bookmark.title=Praegune vaade (kopeeri või ava uues aknas) +bookmark_label=Praegune vaade + +# Secondary toolbar and context menu +tools.title=Tööriistad +tools_label=Tööriistad +first_page.title=Mine esimesele leheküljele +first_page_label=Mine esimesele leheküljele +last_page.title=Mine viimasele leheküljele +last_page_label=Mine viimasele leheküljele +page_rotate_cw.title=Pööra päripäeva +page_rotate_cw_label=Pööra päripäeva +page_rotate_ccw.title=Pööra vastupäeva +page_rotate_ccw_label=Pööra vastupäeva + +cursor_text_select_tool.title=Luba teksti valimise tööriist +cursor_text_select_tool_label=Teksti valimise tööriist +cursor_hand_tool.title=Luba sirvimistööriist +cursor_hand_tool_label=Sirvimistööriist + +scroll_page.title=Kasutatakse lehe kaupa kerimist +scroll_page_label=Lehe kaupa kerimine +scroll_vertical.title=Kasuta vertikaalset kerimist +scroll_vertical_label=Vertikaalne kerimine +scroll_horizontal.title=Kasuta horisontaalset kerimist +scroll_horizontal_label=Horisontaalne kerimine +scroll_wrapped.title=Kasuta rohkem mahutavat kerimist +scroll_wrapped_label=Rohkem mahutav kerimine + +spread_none.title=Ära kõrvuta lehekülgi +spread_none_label=Lehtede kõrvutamine puudub +spread_odd.title=Kõrvuta leheküljed, alustades paaritute numbritega lehekülgedega +spread_odd_label=Kõrvutamine paaritute numbritega alustades +spread_even.title=Kõrvuta leheküljed, alustades paarisnumbritega lehekülgedega +spread_even_label=Kõrvutamine paarisnumbritega alustades + +# Document properties dialog box +document_properties.title=Dokumendi omadused… +document_properties_label=Dokumendi omadused… +document_properties_file_name=Faili nimi: +document_properties_file_size=Faili suurus: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KiB ({{size_b}} baiti) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MiB ({{size_b}} baiti) +document_properties_title=Pealkiri: +document_properties_author=Autor: +document_properties_subject=Teema: +document_properties_keywords=Märksõnad: +document_properties_creation_date=Loodud: +document_properties_modification_date=Muudetud: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}} {{time}} +document_properties_creator=Looja: +document_properties_producer=Generaator: +document_properties_version=Generaatori versioon: +document_properties_page_count=Lehekülgi: +document_properties_page_size=Lehe suurus: +document_properties_page_size_unit_inches=tolli +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=vertikaalpaigutus +document_properties_page_size_orientation_landscape=rõhtpaigutus +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized="Fast Web View" tugi: +document_properties_linearized_yes=Jah +document_properties_linearized_no=Ei +document_properties_close=Sulge + +print_progress_message=Dokumendi ettevalmistamine printimiseks… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Loobu + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Näita külgriba +toggle_sidebar_notification2.title=Näita külgriba (dokument sisaldab sisukorda/manuseid/kihte) +toggle_sidebar_label=Näita külgriba +document_outline.title=Näita sisukorda (kõigi punktide laiendamiseks/ahendamiseks topeltklõpsa) +document_outline_label=Näita sisukorda +attachments.title=Näita manuseid +attachments_label=Manused +layers.title=Näita kihte (kõikide kihtide vaikeolekusse lähtestamiseks topeltklõpsa) +layers_label=Kihid +thumbs.title=Näita pisipilte +thumbs_label=Pisipildid +current_outline_item.title=Otsi üles praegune kontuuriüksus +current_outline_item_label=Praegune kontuuriüksus +findbar.title=Otsi dokumendist +findbar_label=Otsi + +additional_layers=Täiendavad kihid +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Lehekülg {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title={{page}}. lehekülg +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}}. lehekülje pisipilt + +# Find panel button title and messages +find_input.title=Otsi +find_input.placeholder=Otsi dokumendist… +find_previous.title=Otsi fraasi eelmine esinemiskoht +find_previous_label=Eelmine +find_next.title=Otsi fraasi järgmine esinemiskoht +find_next_label=Järgmine +find_highlight=Too kõik esile +find_match_case_label=Tõstutundlik +find_match_diacritics_label=Otsitakse diakriitiliselt +find_entire_word_label=Täissõnad +find_reached_top=Jõuti dokumendi algusesse, jätkati lõpust +find_reached_bottom=Jõuti dokumendi lõppu, jätkati algusest +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]=vaste {{current}}/{{total}} +find_match_count[two]=vaste {{current}}/{{total}} +find_match_count[few]=vaste {{current}}/{{total}} +find_match_count[many]=vaste {{current}}/{{total}} +find_match_count[other]=vaste {{current}}/{{total}} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Rohkem kui {{limit}} vastet +find_match_count_limit[one]=Rohkem kui {{limit}} vaste +find_match_count_limit[two]=Rohkem kui {{limit}} vastet +find_match_count_limit[few]=Rohkem kui {{limit}} vastet +find_match_count_limit[many]=Rohkem kui {{limit}} vastet +find_match_count_limit[other]=Rohkem kui {{limit}} vastet +find_not_found=Fraasi ei leitud + +# Error panel labels +error_more_info=Rohkem teavet +error_less_info=Vähem teavet +error_close=Sulge +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Teade: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fail: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Rida: {{line}} +rendering_error=Lehe renderdamisel esines viga. + +# Predefined zoom values +page_scale_width=Mahuta laiusele +page_scale_fit=Mahuta leheküljele +page_scale_auto=Automaatne suurendamine +page_scale_actual=Tegelik suurus +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Laadimine… +loading_error=PDFi laadimisel esines viga. +invalid_file_error=Vigane või rikutud PDF-fail. +missing_file_error=PDF-fail puudub. +unexpected_response_error=Ootamatu vastus serverilt. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}} {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=PDF-faili avamiseks sisesta parool. +password_invalid=Vigane parool. Palun proovi uuesti. +password_ok=Sobib +password_cancel=Loobu + +printing_not_supported=Hoiatus: printimine pole selle brauseri poolt täielikult toetatud. +printing_not_ready=Hoiatus: PDF pole printimiseks täielikult laaditud. +web_fonts_disabled=Veebifondid on keelatud: PDFiga kaasatud fonte pole võimalik kasutada. + +# Editor +editor_none.title=Keela annotatsioonide muutmine +editor_none_label=Keela muutmine +editor_free_text.title=Lisa vabateksti annotatsioon +editor_free_text_label=Vabateksti annotatsioon +editor_ink.title=Lisa tindiannotatsioon +editor_ink_label=Tindiannotatsioon + +free_text_default_content=Sisesta tekst… + diff --git a/page/static/js/web/locale/eu/viewer.properties b/page/static/js/web/locale/eu/viewer.properties new file mode 100644 index 0000000..0f7e6ff --- /dev/null +++ b/page/static/js/web/locale/eu/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Aurreko orria +previous_label=Aurrekoa +next.title=Hurrengo orria +next_label=Hurrengoa + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Orria +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=/ {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages={{pagesCount}}/{{pageNumber}} + +zoom_out.title=Urrundu zooma +zoom_out_label=Urrundu zooma +zoom_in.title=Gerturatu zooma +zoom_in_label=Gerturatu zooma +zoom.title=Zooma +presentation_mode.title=Aldatu aurkezpen modura +presentation_mode_label=Arkezpen modua +open_file.title=Ireki fitxategia +open_file_label=Ireki +print.title=Inprimatu +print_label=Inprimatu +download.title=Deskargatu +download_label=Deskargatu +save.title=Gorde +save_label=Gorde +bookmark.title=Uneko ikuspegia (kopiatu edo ireki leiho berrian) +bookmark_label=Uneko ikuspegia + +bookmark1.title=Uneko orria (ikusi uneko orriaren URLa) +bookmark1_label=Uneko orria + +# Secondary toolbar and context menu +tools.title=Tresnak +tools_label=Tresnak +first_page.title=Joan lehen orrira +first_page_label=Joan lehen orrira +last_page.title=Joan azken orrira +last_page_label=Joan azken orrira +page_rotate_cw.title=Biratu erlojuaren norantzan +page_rotate_cw_label=Biratu erlojuaren norantzan +page_rotate_ccw.title=Biratu erlojuaren aurkako norantzan +page_rotate_ccw_label=Biratu erlojuaren aurkako norantzan + +cursor_text_select_tool.title=Gaitu testuaren hautapen tresna +cursor_text_select_tool_label=Testuaren hautapen tresna +cursor_hand_tool.title=Gaitu eskuaren tresna +cursor_hand_tool_label=Eskuaren tresna + +scroll_page.title=Erabili orriaren korritzea +scroll_page_label=Orriaren korritzea +scroll_vertical.title=Erabili korritze bertikala +scroll_vertical_label=Korritze bertikala +scroll_horizontal.title=Erabili korritze horizontala +scroll_horizontal_label=Korritze horizontala +scroll_wrapped.title=Erabili korritze egokitua +scroll_wrapped_label=Korritze egokitua + +spread_none.title=Ez elkartu barreiatutako orriak +spread_none_label=Barreiatzerik ez +spread_odd.title=Elkartu barreiatutako orriak bakoiti zenbakidunekin hasita +spread_odd_label=Barreiatze bakoitia +spread_even.title=Elkartu barreiatutako orriak bikoiti zenbakidunekin hasita +spread_even_label=Barreiatze bikoitia + +# Document properties dialog box +document_properties.title=Dokumentuaren propietateak… +document_properties_label=Dokumentuaren propietateak… +document_properties_file_name=Fitxategi-izena: +document_properties_file_size=Fitxategiaren tamaina: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} byte) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} byte) +document_properties_title=Izenburua: +document_properties_author=Egilea: +document_properties_subject=Gaia: +document_properties_keywords=Gako-hitzak: +document_properties_creation_date=Sortze-data: +document_properties_modification_date=Aldatze-data: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Sortzailea: +document_properties_producer=PDFaren ekoizlea: +document_properties_version=PDF bertsioa: +document_properties_page_count=Orrialde kopurua: +document_properties_page_size=Orriaren tamaina: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=bertikala +document_properties_page_size_orientation_landscape=horizontala +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Gutuna +document_properties_page_size_name_legal=Legala +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Webeko ikuspegi bizkorra: +document_properties_linearized_yes=Bai +document_properties_linearized_no=Ez +document_properties_close=Itxi + +print_progress_message=Dokumentua inprimatzeko prestatzen… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent=%{{progress}} +print_progress_close=Utzi + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Txandakatu alboko barra +toggle_sidebar_notification2.title=Txandakatu alboko barra (dokumentuak eskema/eranskinak/geruzak ditu) +toggle_sidebar_label=Txandakatu alboko barra +document_outline.title=Erakutsi dokumentuaren eskema (klik bikoitza elementu guztiak zabaltzeko/tolesteko) +document_outline_label=Dokumentuaren eskema +attachments.title=Erakutsi eranskinak +attachments_label=Eranskinak +layers.title=Erakutsi geruzak (klik bikoitza geruza guztiak egoera lehenetsira berrezartzeko) +layers_label=Geruzak +thumbs.title=Erakutsi koadro txikiak +thumbs_label=Koadro txikiak +current_outline_item.title=Bilatu uneko eskemaren elementua +current_outline_item_label=Uneko eskemaren elementua +findbar.title=Bilatu dokumentuan +findbar_label=Bilatu + +additional_layers=Geruza gehigarriak +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark={{page}}. orria +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title={{page}}. orria +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}}. orriaren koadro txikia + +# Find panel button title and messages +find_input.title=Bilatu +find_input.placeholder=Bilatu dokumentuan… +find_previous.title=Bilatu esaldiaren aurreko parekatzea +find_previous_label=Aurrekoa +find_next.title=Bilatu esaldiaren hurrengo parekatzea +find_next_label=Hurrengoa +find_highlight=Nabarmendu guztia +find_match_case_label=Bat etorri maiuskulekin/minuskulekin +find_match_diacritics_label=Bereizi diakritikoak +find_entire_word_label=Hitz osoak +find_reached_top=Dokumentuaren hasierara heldu da, bukaeratik jarraitzen +find_reached_bottom=Dokumentuaren bukaerara heldu da, hasieratik jarraitzen +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{total}}/{{current}}. bat etortzea +find_match_count[two]={{total}}/{{current}}. bat etortzea +find_match_count[few]={{total}}/{{current}}. bat etortzea +find_match_count[many]={{total}}/{{current}}. bat etortzea +find_match_count[other]={{total}}/{{current}}. bat etortzea +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]={{limit}} bat-etortze baino gehiago +find_match_count_limit[one]=Bat-etortze {{limit}} baino gehiago +find_match_count_limit[two]={{limit}} bat-etortze baino gehiago +find_match_count_limit[few]={{limit}} bat-etortze baino gehiago +find_match_count_limit[many]={{limit}} bat-etortze baino gehiago +find_match_count_limit[other]={{limit}} bat-etortze baino gehiago +find_not_found=Esaldia ez da aurkitu + +# Error panel labels +error_more_info=Informazio gehiago +error_less_info=Informazio gutxiago +error_close=Itxi +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (eraikuntza: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mezua: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pila: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fitxategia: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Lerroa: {{line}} + +# Predefined zoom values +page_scale_width=Orriaren zabalera +page_scale_fit=Doitu orrira +page_scale_auto=Zoom automatikoa +page_scale_actual=Benetako tamaina +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent=%{{scale}} + +# Loading indicator messages +loading=Kargatzen… +loading_error=Errorea gertatu da PDFa kargatzean. +invalid_file_error=PDF fitxategi baliogabe edo hondatua. +missing_file_error=PDF fitxategia falta da. +unexpected_response_error=Espero gabeko zerbitzariaren erantzuna. + +rendering_error=Errorea gertatu da orria errendatzean. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} ohartarazpena] +password_label=Idatzi PDF fitxategi hau irekitzeko pasahitza. +password_invalid=Pasahitz baliogabea. Saiatu berriro mesedez. +password_ok=Ados +password_cancel=Utzi + +printing_not_supported=Abisua: inprimatzeko euskarria ez da erabatekoa nabigatzaile honetan. +printing_not_ready=Abisua: PDFa ez dago erabat kargatuta inprimatzeko. +web_fonts_disabled=Webeko letra-tipoak desgaituta daude: ezin dira kapsulatutako PDF letra-tipoak erabili. + +# Editor +editor_free_text2.title=Testua +editor_free_text2_label=Testua +editor_ink2.title=Marrazkia +editor_ink2_label=Marrazkia + +free_text2_default_content=Hasi idazten… + +# Editor Parameters +editor_free_text_color=Kolorea +editor_free_text_size=Tamaina +editor_ink_color=Kolorea +editor_ink_thickness=Loditasuna +editor_ink_opacity=Opakutasuna + +# Editor aria +editor_free_text2_aria_label=Testu-editorea +editor_ink2_aria_label=Marrazki-editorea +editor_ink_canvas_aria_label=Erabiltzaileak sortutako irudia diff --git a/page/static/js/web/locale/fa/viewer.properties b/page/static/js/web/locale/fa/viewer.properties new file mode 100644 index 0000000..f39748d --- /dev/null +++ b/page/static/js/web/locale/fa/viewer.properties @@ -0,0 +1,216 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=صÙحهٔ قبلی +previous_label=قبلی +next.title=صÙحهٔ بعدی +next_label=بعدی + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=صÙحه +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=از {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}}از {{pagesCount}}) + +zoom_out.title=کوچک‌نمایی +zoom_out_label=کوچک‌نمایی +zoom_in.title=بزرگ‌نمایی +zoom_in_label=بزرگ‌نمایی +zoom.title=زوم +presentation_mode.title=تغییر به حالت ارائه +presentation_mode_label=حالت ارائه +open_file.title=باز کردن پرونده +open_file_label=باز کردن +print.title=چاپ +print_label=چاپ +download.title=بارگیری +download_label=بارگیری +bookmark.title=نمای Ùعلی (رونوشت Ùˆ یا نشان دادن در پنجره جدید) +bookmark_label=نمای Ùعلی + +# Secondary toolbar and context menu +tools.title=ابزارها +tools_label=ابزارها +first_page.title=برو به اولین صÙحه +first_page_label=برو به اولین صÙحه +last_page.title=برو به آخرین صÙحه +last_page_label=برو به آخرین صÙحه +page_rotate_cw.title=چرخش ساعتگرد +page_rotate_cw_label=چرخش ساعتگرد +page_rotate_ccw.title=چرخش پاد ساعتگرد +page_rotate_ccw_label=چرخش پاد ساعتگرد + +cursor_text_select_tool.title=Ùعال کردن ابزار٠انتخاب٠متن +cursor_text_select_tool_label=ابزار٠انتخاب٠متن +cursor_hand_tool.title=Ùعال کردن ابزار٠دست +cursor_hand_tool_label=ابزار دست + +scroll_vertical.title=استÙاده از پیمایش عمودی +scroll_vertical_label=پیمایش عمودی +scroll_horizontal.title=استÙاده از پیمایش اÙÙ‚ÛŒ +scroll_horizontal_label=پیمایش اÙÙ‚ÛŒ + + +# Document properties dialog box +document_properties.title=خصوصیات سند... +document_properties_label=خصوصیات سند... +document_properties_file_name=نام Ùایل: +document_properties_file_size=حجم پرونده: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} کیلوبایت ({{size_b}} بایت) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} مگابایت ({{size_b}} بایت) +document_properties_title=عنوان: +document_properties_author=نویسنده: +document_properties_subject=موضوع: +document_properties_keywords=کلیدواژه‌ها: +document_properties_creation_date=تاریخ ایجاد: +document_properties_modification_date=تاریخ ویرایش: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}ØŒ {{time}} +document_properties_creator=ایجاد کننده: +document_properties_producer=ایجاد کننده PDF: +document_properties_version=نسخه PDF: +document_properties_page_count=تعداد صÙحات: +document_properties_page_size=اندازه صÙحه: +document_properties_page_size_unit_inches=اینچ +document_properties_page_size_unit_millimeters=میلی‌متر +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=نامه +document_properties_page_size_name_legal=حقوقی +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized_yes=بله +document_properties_linearized_no=خیر +document_properties_close=بستن + +print_progress_message=آماده سازی مدارک برای چاپ کردن… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=لغو + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=باز Ùˆ بسته کردن نوار کناری +toggle_sidebar_label=تغییرحالت نوارکناری +document_outline.title=نمایش رئوس مطالب مدارک(برای بازشدن/جمع شدن همه موارد دوبار کلیک کنید) +document_outline_label=طرح نوشتار +attachments.title=نمایش پیوست‌ها +attachments_label=پیوست‌ها +thumbs.title=نمایش تصاویر بندانگشتی +thumbs_label=تصاویر بندانگشتی +findbar.title=جستجو در سند +findbar_label=پیدا کردن + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=صÙحه {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=تصویر بند‌ انگشتی صÙحه {{page}} + +# Find panel button title and messages +find_input.title=پیدا کردن +find_input.placeholder=پیدا کردن در سند… +find_previous.title=پیدا کردن رخداد قبلی عبارت +find_previous_label=قبلی +find_next.title=پیدا کردن رخداد بعدی عبارت +find_next_label=بعدی +find_highlight=برجسته Ùˆ هایلایت کردن همه موارد +find_match_case_label=تطبیق Ú©ÙˆÚ†Ú©ÛŒ Ùˆ بزرگی حرو٠+find_entire_word_label=تمام کلمه‌ها +find_reached_top=به بالای صÙحه رسیدیم، از پایین ادامه می‌دهیم +find_reached_bottom=به آخر صÙحه رسیدیم، از بالا ادامه می‌دهیم +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count[one]={{current}} از {{total}} مطابقت دارد +find_match_count[two]={{current}} از {{total}} مطابقت دارد +find_match_count[few]={{current}} از {{total}} مطابقت دارد +find_match_count[many]={{current}} از {{total}} مطابقت دارد +find_match_count[other]={{current}} از {{total}} مطابقت دارد +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_not_found=عبارت پیدا نشد + +# Error panel labels +error_more_info=اطلاعات بیشتر +error_less_info=اطلاعات کمتر +error_close=بستن +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=â€PDF.js ورژن{{version}} â€(ساخت: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=پیام: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=توده: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=پرونده: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=سطر: {{line}} +rendering_error=هنگام بارگیری صÙحه خطایی رخ داد. + +# Predefined zoom values +page_scale_width=عرض صÙحه +page_scale_fit=اندازه کردن صÙحه +page_scale_auto=بزرگنمایی خودکار +page_scale_actual=اندازه واقعی‌ +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=هنگام بارگیری پرونده PDF خطایی رخ داد. +invalid_file_error=پرونده PDF نامعتبر یامعیوب می‌باشد. +missing_file_error=پرونده PDF یاÙت نشد. +unexpected_response_error=پاسخ پیش بینی نشده سرور + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=جهت باز کردن پرونده PDF گذرواژه را وارد نمائید. +password_invalid=گذرواژه نامعتبر. لطÙا مجددا تلاش کنید. +password_ok=تأیید +password_cancel=لغو + +printing_not_supported=هشدار: قابلیت چاپ به‌طور کامل در این مرورگر پشتیبانی نمی‌شود. +printing_not_ready=اخطار: پرونده PDF بطور کامل بارگیری نشده Ùˆ امکان چاپ وجود ندارد. +web_fonts_disabled=Ùونت های تحت وب غیر Ùعال شده اند: امکان استÙاده از نمایش دهنده داخلی PDF وجود ندارد. + diff --git a/page/static/js/web/locale/ff/viewer.properties b/page/static/js/web/locale/ff/viewer.properties new file mode 100644 index 0000000..9acff5b --- /dev/null +++ b/page/static/js/web/locale/ff/viewer.properties @@ -0,0 +1,235 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Hello Æennungo +previous_label=ÆennuÉ—o +next.title=Hello faango +next_label=Yeeso + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Hello +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=e nder {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} of {{pagesCount}}) + +zoom_out.title=Lonngo WoÉ—É—a +zoom_out_label=Lonngo WoÉ—É—a +zoom_in.title=Lonngo Ara +zoom_in_label=Lonngo Ara +zoom.title=Lonngo +presentation_mode.title=Faytu to Presentation Mode +presentation_mode_label=Presentation Mode +open_file.title=Uddit Fiilde +open_file_label=Uddit +print.title=Winndito +print_label=Winndito +download.title=Aawto +download_label=Aawto +bookmark.title=Jiytol gonangol (natto walla uddit e henorde) +bookmark_label=Jiytol Gonangol + +# Secondary toolbar and context menu +tools.title=KuutorÉ—e +tools_label=KuutorÉ—e +first_page.title=Yah to hello adanngo +first_page_label=Yah to hello adanngo +last_page.title=Yah to hello wattindiingo +last_page_label=Yah to hello wattindiingo +page_rotate_cw.title=Yiiltu Faya Ñaamo +page_rotate_cw_label=Yiiltu Faya Ñaamo +page_rotate_ccw.title=Yiiltu Faya Nano +page_rotate_ccw_label=Yiiltu Faya Nano + +cursor_text_select_tool.title=Gollin kaÉ“irgel cuÉ“irgel binndi +cursor_text_select_tool_label=KaÉ“irgel cuÉ“irgel binndi +cursor_hand_tool.title=Hurmin kuutorgal junngo +cursor_hand_tool_label=KaÉ“irgel junngo + +scroll_vertical.title=Huutoro gorwitol daringol +scroll_vertical_label=Gorwitol daringol +scroll_horizontal.title=Huutoro gorwitol lelingol +scroll_horizontal_label=Gorwitol daringol +scroll_wrapped.title=Huutoro gorwitol coomingol +scroll_wrapped_label=Gorwitol coomingol + +spread_none.title=Hoto tawtu kelle kelle +spread_none_label=Alaa Spreads +spread_odd.title=Tawtu kelle puÉ—É—ortooÉ—e kelle teelÉ—e +spread_odd_label=Kelle teelÉ—e +spread_even.title=Tawtu É—ereeji kelle puÉ—É—oriiÉ—i kelle teeltuÉ—e +spread_even_label=Kelle teeltuÉ—e + +# Document properties dialog box +document_properties.title=KeeroraaÉ—i Winndannde… +document_properties_label=KeeroraaÉ—i Winndannde… +document_properties_file_name=Innde fiilde: +document_properties_file_size=Æetol fiilde: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bite) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bite) +document_properties_title=Tiitoonde: +document_properties_author=BinnduÉ—o: +document_properties_subject=ToÉ“É“ere: +document_properties_keywords=Kelmekele jiytirÉ—e: +document_properties_creation_date=Ñalnde Sosaa: +document_properties_modification_date=Ñalnde Waylaa: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=CosÉ—o: +document_properties_producer=PaggiiÉ—o PDF: +document_properties_version=Yamre PDF: +document_properties_page_count=Limoore Kelle: +document_properties_page_size=Æeto Hello: +document_properties_page_size_unit_inches=nder +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=dariingo +document_properties_page_size_orientation_landscape=wertiingo +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Æataake +document_properties_page_size_name_legal=Laawol +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=ÆŠisngo geese yaawngo: +document_properties_linearized_yes=Eey +document_properties_linearized_no=Alaa +document_properties_close=Uddu + +print_progress_message=Nana heboo winnditaade fiilannde… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Haaytu + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Toggilo Palal Sawndo +toggle_sidebar_label=Toggilo Palal Sawndo +document_outline.title=Hollu Ƴiyal Fiilannde (dobdobo ngam wertude/taggude teme fof) +document_outline_label=ToÉ“É“e Fiilannde +attachments.title=Hollu ÆŠisanÉ—e +attachments_label=ÆŠisanÉ—e +thumbs.title=Hollu DooÉ“e +thumbs_label=DooÉ“e +findbar.title=Yiylo e fiilannde +findbar_label=Yiytu + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Hello {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=DooÉ“re Hello {{page}} + +# Find panel button title and messages +find_input.title=Yiytu +find_input.placeholder=Yiylo nder dokimaa +find_previous.title=Yiylo cilol É“ennugol konngol ngol +find_previous_label=ÆennuÉ—o +find_next.title=Yiylo cilol garowol konngol ngol +find_next_label=Yeeso +find_highlight=Jalbin fof +find_match_case_label=JaaÉ“nu darnde +find_entire_word_label=Kelme timmuÉ—e tan +find_reached_top=HeÉ“ii fuÉ—É—orde fiilannde, jokku faya les +find_reached_bottom=HeÉ“ii hoore fiilannde, jokku faya les +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} wonande laabi {{total}} +find_match_count[two]={{current}} wonande laabi {{total}} +find_match_count[few]={{current}} wonande laabi {{total}} +find_match_count[many]={{current}} wonande laabi {{total}} +find_match_count[other]={{current}} wonande laabi {{total}} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Ko É“uri laabi {{limit}} +find_match_count_limit[one]=Ko É“uri laani {{limit}} +find_match_count_limit[two]=Ko É“uri laabi {{limit}} +find_match_count_limit[few]=Ko É“uri laabi {{limit}} +find_match_count_limit[many]=Ko É“uri laabi {{limit}} +find_match_count_limit[other]=Ko É“uri laabi {{limit}} +find_not_found=Konngi njiyataa + +# Error panel labels +error_more_info=Æeydu Humpito +error_less_info=Ustu Humpito +error_close=Uddu +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Æatakuure: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fiilde: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Gorol: {{line}} +rendering_error=Juumre waÉ—ii tuma nde yoÅ‹kittoo hello. + +# Predefined zoom values +page_scale_width=Njaajeendi Hello +page_scale_fit=KeÆ´eendi Hello +page_scale_auto=Loongorde Jaajol +page_scale_actual=Æetol Jaati +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=Juumre waÉ—ii tuma nde loowata PDF oo. +invalid_file_error=Fiilde PDF moÆ´Æ´aani walla jiibii. +missing_file_error=Fiilde PDF ena Å‹akki. +unexpected_response_error=Jaabtol sarworde tijjinooka. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Siiftannde] +password_label=Naatu finnde ngam uddite ndee fiilde PDF. +password_invalid=Finnde moÆ´Æ´aani. TiiÉ—no eto kadi. +password_ok=OK +password_cancel=Haaytu + +printing_not_supported=Reentino: Winnditagol tammbitaaka no feewi e ndee wanngorde. +printing_not_ready=Reentino: PDF oo loowaaki haa timmi ngam winnditagol. +web_fonts_disabled=Ponte geese ko daaÆ´aaÉ—e: horiima huutoraade ponte PDF coomtoraaÉ—e. + diff --git a/page/static/js/web/locale/fi/viewer.properties b/page/static/js/web/locale/fi/viewer.properties new file mode 100644 index 0000000..653510d --- /dev/null +++ b/page/static/js/web/locale/fi/viewer.properties @@ -0,0 +1,274 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Edellinen sivu +previous_label=Edellinen +next.title=Seuraava sivu +next_label=Seuraava + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Sivu +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=/ {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} / {{pagesCount}}) + +zoom_out.title=Loitonna +zoom_out_label=Loitonna +zoom_in.title=Lähennä +zoom_in_label=Lähennä +zoom.title=Suurennus +presentation_mode.title=Siirry esitystilaan +presentation_mode_label=Esitystila +open_file.title=Avaa tiedosto +open_file_label=Avaa +print.title=Tulosta +print_label=Tulosta +download.title=Lataa +download_label=Lataa +save.title=Tallenna +save_label=Tallenna +bookmark.title=Avoin ikkuna (kopioi tai avaa uuteen ikkunaan) +bookmark_label=Avoin ikkuna + +# Secondary toolbar and context menu +tools.title=Tools +tools_label=Tools +first_page.title=Siirry ensimmäiselle sivulle +first_page_label=Siirry ensimmäiselle sivulle +last_page.title=Siirry viimeiselle sivulle +last_page_label=Siirry viimeiselle sivulle +page_rotate_cw.title=Kierrä oikealle +page_rotate_cw_label=Kierrä oikealle +page_rotate_ccw.title=Kierrä vasemmalle +page_rotate_ccw_label=Kierrä vasemmalle + +cursor_text_select_tool.title=Käytä tekstinvalintatyökalua +cursor_text_select_tool_label=Tekstinvalintatyökalu +cursor_hand_tool.title=Käytä käsityökalua +cursor_hand_tool_label=Käsityökalu + +scroll_page.title=Käytä sivun vieritystä +scroll_page_label=Sivun vieritys +scroll_vertical.title=Käytä pystysuuntaista vieritystä +scroll_vertical_label=Pystysuuntainen vieritys +scroll_horizontal.title=Käytä vaakasuuntaista vieritystä +scroll_horizontal_label=Vaakasuuntainen vieritys +scroll_wrapped.title=Käytä rivittyvää vieritystä +scroll_wrapped_label=Rivittyvä vieritys + +spread_none.title=Älä yhdistä sivuja aukeamiksi +spread_none_label=Ei aukeamia +spread_odd.title=Yhdistä sivut aukeamiksi alkaen parittomalta sivulta +spread_odd_label=Parittomalta alkavat aukeamat +spread_even.title=Yhdistä sivut aukeamiksi alkaen parilliselta sivulta +spread_even_label=Parilliselta alkavat aukeamat + +# Document properties dialog box +document_properties.title=Dokumentin ominaisuudet… +document_properties_label=Dokumentin ominaisuudet… +document_properties_file_name=Tiedoston nimi: +document_properties_file_size=Tiedoston koko: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} kt ({{size_b}} tavua) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} Mt ({{size_b}} tavua) +document_properties_title=Otsikko: +document_properties_author=Tekijä: +document_properties_subject=Aihe: +document_properties_keywords=Avainsanat: +document_properties_creation_date=Luomispäivämäärä: +document_properties_modification_date=Muokkauspäivämäärä: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Luoja: +document_properties_producer=PDF-tuottaja: +document_properties_version=PDF-versio: +document_properties_page_count=Sivujen määrä: +document_properties_page_size=Sivun koko: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=pysty +document_properties_page_size_orientation_landscape=vaaka +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Nopea web-katselu: +document_properties_linearized_yes=Kyllä +document_properties_linearized_no=Ei +document_properties_close=Sulje + +print_progress_message=Valmistellaan dokumenttia tulostamista varten… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}} % +print_progress_close=Peruuta + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Näytä/piilota sivupaneeli +toggle_sidebar_notification2.title=Näytä/piilota sivupaneeli (dokumentissa on sisällys/liitteitä/tasoja) +toggle_sidebar_label=Näytä/piilota sivupaneeli +document_outline.title=Näytä dokumentin sisällys (laajenna tai kutista kohdat kaksoisnapsauttamalla) +document_outline_label=Dokumentin sisällys +attachments.title=Näytä liitteet +attachments_label=Liitteet +layers.title=Näytä tasot (kaksoisnapsauta palauttaaksesi kaikki tasot oletustilaan) +layers_label=Tasot +thumbs.title=Näytä pienoiskuvat +thumbs_label=Pienoiskuvat +current_outline_item.title=Etsi nykyinen sisällyksen kohta +current_outline_item_label=Nykyinen sisällyksen kohta +findbar.title=Etsi dokumentista +findbar_label=Etsi + +additional_layers=Lisätasot +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Sivu {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Sivu {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Pienoiskuva sivusta {{page}} + +# Find panel button title and messages +find_input.title=Etsi +find_input.placeholder=Etsi dokumentista… +find_previous.title=Etsi hakusanan edellinen osuma +find_previous_label=Edellinen +find_next.title=Etsi hakusanan seuraava osuma +find_next_label=Seuraava +find_highlight=Korosta kaikki +find_match_case_label=Huomioi kirjainkoko +find_match_diacritics_label=Erota tarkkeet +find_entire_word_label=Kokonaiset sanat +find_reached_top=Päästiin dokumentin alkuun, jatketaan lopusta +find_reached_bottom=Päästiin dokumentin loppuun, jatketaan alusta +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} / {{total}} osuma +find_match_count[two]={{current}} / {{total}} osumaa +find_match_count[few]={{current}} / {{total}} osumaa +find_match_count[many]={{current}} / {{total}} osumaa +find_match_count[other]={{current}} / {{total}} osumaa +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Enemmän kuin {{limit}} osumaa +find_match_count_limit[one]=Enemmän kuin {{limit}} osuma +find_match_count_limit[two]=Enemmän kuin {{limit}} osumaa +find_match_count_limit[few]=Enemmän kuin {{limit}} osumaa +find_match_count_limit[many]=Enemmän kuin {{limit}} osumaa +find_match_count_limit[other]=Enemmän kuin {{limit}} osumaa +find_not_found=Hakusanaa ei löytynyt + +# Error panel labels +error_more_info=Lisätietoja +error_less_info=Lisätietoja +error_close=Sulje +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (kooste: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Virheilmoitus: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pino: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Tiedosto: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Rivi: {{line}} + +# Predefined zoom values +page_scale_width=Sivun leveys +page_scale_fit=Koko sivu +page_scale_auto=Automaattinen suurennus +page_scale_actual=Todellinen koko +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}} % + +# Loading indicator messages +loading=Ladataan… +loading_error=Tapahtui virhe ladattaessa PDF-tiedostoa. +invalid_file_error=Virheellinen tai vioittunut PDF-tiedosto. +missing_file_error=Puuttuva PDF-tiedosto. +unexpected_response_error=Odottamaton vastaus palvelimelta. + +rendering_error=Tapahtui virhe piirrettäessä sivua. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}}-merkintä] +password_label=Kirjoita PDF-tiedoston salasana. +password_invalid=Virheellinen salasana. Yritä uudestaan. +password_ok=OK +password_cancel=Peruuta + +printing_not_supported=Varoitus: Selain ei tue kaikkia tulostustapoja. +printing_not_ready=Varoitus: PDF-tiedosto ei ole vielä latautunut kokonaan, eikä sitä voi vielä tulostaa. +web_fonts_disabled=Verkkosivujen omat kirjasinlajit on estetty: ei voida käyttää upotettuja PDF-kirjasinlajeja. + +# Editor +editor_free_text2.title=Teksti +editor_free_text2_label=Teksti +editor_ink2.title=Piirros +editor_ink2_label=Piirros + +free_text2_default_content=Aloita kirjoittaminen… + +# Editor Parameters +editor_free_text_color=Väri +editor_free_text_size=Koko +editor_ink_color=Väri +editor_ink_thickness=Paksuus +editor_ink_opacity=Peittävyys + +# Editor aria +editor_free_text2_aria_label=Tekstimuokkain +editor_ink2_aria_label=Piirrustusmuokkain +editor_ink_canvas_aria_label=Käyttäjän luoma kuva diff --git a/page/static/js/web/locale/fr/viewer.properties b/page/static/js/web/locale/fr/viewer.properties new file mode 100644 index 0000000..c5d9c14 --- /dev/null +++ b/page/static/js/web/locale/fr/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Page précédente +previous_label=Précédent +next.title=Page suivante +next_label=Suivant + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Page +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=sur {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} sur {{pagesCount}}) + +zoom_out.title=Zoom arrière +zoom_out_label=Zoom arrière +zoom_in.title=Zoom avant +zoom_in_label=Zoom avant +zoom.title=Zoom +presentation_mode.title=Basculer en mode présentation +presentation_mode_label=Mode présentation +open_file.title=Ouvrir le fichier +open_file_label=Ouvrir le fichier +print.title=Imprimer +print_label=Imprimer +download.title=Télécharger +download_label=Télécharger +save.title=Enregistrer +save_label=Enregistrer +bookmark.title=Affichage courant (copier ou ouvrir dans une nouvelle fenêtre) +bookmark_label=Affichage actuel + +bookmark1.title=Page courante (montrer l’adresse de la page courante) +bookmark1_label=Page courante + +# Secondary toolbar and context menu +tools.title=Outils +tools_label=Outils +first_page.title=Aller à la première page +first_page_label=Aller à la première page +last_page.title=Aller à la dernière page +last_page_label=Aller à la dernière page +page_rotate_cw.title=Rotation horaire +page_rotate_cw_label=Rotation horaire +page_rotate_ccw.title=Rotation antihoraire +page_rotate_ccw_label=Rotation antihoraire + +cursor_text_select_tool.title=Activer l’outil de sélection de texte +cursor_text_select_tool_label=Outil de sélection de texte +cursor_hand_tool.title=Activer l’outil main +cursor_hand_tool_label=Outil main + +scroll_page.title=Utiliser le défilement par page +scroll_page_label=Défilement par page +scroll_vertical.title=Utiliser le défilement vertical +scroll_vertical_label=Défilement vertical +scroll_horizontal.title=Utiliser le défilement horizontal +scroll_horizontal_label=Défilement horizontal +scroll_wrapped.title=Utiliser le défilement par bloc +scroll_wrapped_label=Défilement par bloc + +spread_none.title=Ne pas afficher les pages deux à deux +spread_none_label=Pas de double affichage +spread_odd.title=Afficher les pages par deux, impaires à gauche +spread_odd_label=Doubles pages, impaires à gauche +spread_even.title=Afficher les pages par deux, paires à gauche +spread_even_label=Doubles pages, paires à gauche + +# Document properties dialog box +document_properties.title=Propriétés du document… +document_properties_label=Propriétés du document… +document_properties_file_name=Nom du fichier : +document_properties_file_size=Taille du fichier : +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} Ko ({{size_b}} octets) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} Mo ({{size_b}} octets) +document_properties_title=Titre : +document_properties_author=Auteur : +document_properties_subject=Sujet : +document_properties_keywords=Mots-clés : +document_properties_creation_date=Date de création : +document_properties_modification_date=Modifié le : +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}} à {{time}} +document_properties_creator=Créé par : +document_properties_producer=Outil de conversion PDF : +document_properties_version=Version PDF : +document_properties_page_count=Nombre de pages : +document_properties_page_size=Taille de la page : +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=portrait +document_properties_page_size_orientation_landscape=paysage +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=lettre +document_properties_page_size_name_legal=document juridique +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Affichage rapide des pages web : +document_properties_linearized_yes=Oui +document_properties_linearized_no=Non +document_properties_close=Fermer + +print_progress_message=Préparation du document pour l’impression… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}} % +print_progress_close=Annuler + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Afficher/Masquer le panneau latéral +toggle_sidebar_notification2.title=Afficher/Masquer le panneau latéral (le document contient des signets/pièces jointes/calques) +toggle_sidebar_label=Afficher/Masquer le panneau latéral +document_outline.title=Afficher les signets du document (double-cliquer pour développer/réduire tous les éléments) +document_outline_label=Signets du document +attachments.title=Afficher les pièces jointes +attachments_label=Pièces jointes +layers.title=Afficher les calques (double-cliquer pour réinitialiser tous les calques à l’état par défaut) +layers_label=Calques +thumbs.title=Afficher les vignettes +thumbs_label=Vignettes +current_outline_item.title=Trouver l’élément de plan actuel +current_outline_item_label=Élément de plan actuel +findbar.title=Rechercher dans le document +findbar_label=Rechercher + +additional_layers=Calques additionnels +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Page {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Page {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Vignette de la page {{page}} + +# Find panel button title and messages +find_input.title=Rechercher +find_input.placeholder=Rechercher dans le document… +find_previous.title=Trouver l’occurrence précédente de l’expression +find_previous_label=Précédent +find_next.title=Trouver la prochaine occurrence de l’expression +find_next_label=Suivant +find_highlight=Tout surligner +find_match_case_label=Respecter la casse +find_match_diacritics_label=Respecter les accents et diacritiques +find_entire_word_label=Mots entiers +find_reached_top=Haut de la page atteint, poursuite depuis la fin +find_reached_bottom=Bas de la page atteint, poursuite au début +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]=Occurrence {{current}} sur {{total}} +find_match_count[two]=Occurrence {{current}} sur {{total}} +find_match_count[few]=Occurrence {{current}} sur {{total}} +find_match_count[many]=Occurrence {{current}} sur {{total}} +find_match_count[other]=Occurrence {{current}} sur {{total}} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Plus de {{limit}} correspondances +find_match_count_limit[one]=Plus de {{limit}} correspondance +find_match_count_limit[two]=Plus de {{limit}} correspondances +find_match_count_limit[few]=Plus de {{limit}} correspondances +find_match_count_limit[many]=Plus de {{limit}} correspondances +find_match_count_limit[other]=Plus de {{limit}} correspondances +find_not_found=Expression non trouvée + +# Error panel labels +error_more_info=Plus d’informations +error_less_info=Moins d’informations +error_close=Fermer +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (identifiant de compilation : {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Message : {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pile : {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fichier : {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Ligne : {{line}} + +# Predefined zoom values +page_scale_width=Pleine largeur +page_scale_fit=Page entière +page_scale_auto=Zoom automatique +page_scale_actual=Taille réelle +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}} % + +# Loading indicator messages +loading=Chargement… +loading_error=Une erreur s’est produite lors du chargement du fichier PDF. +invalid_file_error=Fichier PDF invalide ou corrompu. +missing_file_error=Fichier PDF manquant. +unexpected_response_error=Réponse inattendue du serveur. + +rendering_error=Une erreur s’est produite lors de l’affichage de la page. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}} à {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Annotation {{type}}] +password_label=Veuillez saisir le mot de passe pour ouvrir ce fichier PDF. +password_invalid=Mot de passe incorrect. Veuillez réessayer. +password_ok=OK +password_cancel=Annuler + +printing_not_supported=Attention : l’impression n’est pas totalement prise en charge par ce navigateur. +printing_not_ready=Attention : le PDF n’est pas entièrement chargé pour pouvoir l’imprimer. +web_fonts_disabled=Les polices web sont désactivées : impossible d’utiliser les polices intégrées au PDF. + +# Editor +editor_free_text2.title=Texte +editor_free_text2_label=Texte +editor_ink2.title=Dessiner +editor_ink2_label=Dessiner + +free_text2_default_content=Commencer à écrire… + +# Editor Parameters +editor_free_text_color=Couleur +editor_free_text_size=Taille +editor_ink_color=Couleur +editor_ink_thickness=Épaisseur +editor_ink_opacity=Opacité + +# Editor aria +editor_free_text2_aria_label=Éditeur de texte +editor_ink2_aria_label=Éditeur de dessin +editor_ink_canvas_aria_label=Image créée par l’utilisateur·trice diff --git a/page/static/js/web/locale/fur/viewer.properties b/page/static/js/web/locale/fur/viewer.properties new file mode 100644 index 0000000..379485b --- /dev/null +++ b/page/static/js/web/locale/fur/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pagjine precedente +previous_label=Indaûr +next.title=Prossime pagjine +next_label=Indevant + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pagjine +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=di {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} di {{pagesCount}}) + +zoom_out.title=Impiçulìs +zoom_out_label=Impiçulìs +zoom_in.title=Ingrandìs +zoom_in_label=Ingrandìs +zoom.title=Ingrandiment +presentation_mode.title=Passe ae modalitât presentazion +presentation_mode_label=Modalitât presentazion +open_file.title=Vierç un file +open_file_label=Vierç +print.title=Stampe +print_label=Stampe +download.title=Discjame +download_label=Discjame +save.title=Salve +save_label=Salve +bookmark.title=Viodude atuâl (copie o vierç intun gnûf barcon) +bookmark_label=Viodude atuâl + +bookmark1.title=Pagjine corinte (mostre URL de pagjine atuâl) +bookmark1_label=Pagjine corinte + +# Secondary toolbar and context menu +tools.title=Struments +tools_label=Struments +first_page.title=Va ae prime pagjine +first_page_label=Va ae prime pagjine +last_page.title=Va ae ultime pagjine +last_page_label=Va ae ultime pagjine +page_rotate_cw.title=Zire in sens orari +page_rotate_cw_label=Zire in sens orari +page_rotate_ccw.title=Zire in sens antiorari +page_rotate_ccw_label=Zire in sens antiorari + +cursor_text_select_tool.title=Ative il strument di selezion dal test +cursor_text_select_tool_label=Strument di selezion dal test +cursor_hand_tool.title=Ative il strument manute +cursor_hand_tool_label=Strument manute + +scroll_page.title=Dopre il scoriment des pagjinis +scroll_page_label=Scoriment pagjinis +scroll_vertical.title=Dopre scoriment verticâl +scroll_vertical_label=Scoriment verticâl +scroll_horizontal.title=Dopre scoriment orizontâl +scroll_horizontal_label=Scoriment orizontâl +scroll_wrapped.title=Dopre scoriment par blocs +scroll_wrapped_label=Scoriment par blocs + +spread_none.title=No sta meti dongje pagjinis in cubie +spread_none_label=No cubiis di pagjinis +spread_odd.title=Met dongje cubiis di pagjinis scomençant des pagjinis dispar +spread_odd_label=Cubiis di pagjinis, dispar a çampe +spread_even.title=Met dongje cubiis di pagjinis scomençant des pagjinis pâr +spread_even_label=Cubiis di pagjinis, pâr a çampe + +# Document properties dialog box +document_properties.title=Proprietâts dal document… +document_properties_label=Proprietâts dal document… +document_properties_file_name=Non dal file: +document_properties_file_size=Dimension dal file: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Titul: +document_properties_author=Autôr: +document_properties_subject=Ogjet: +document_properties_keywords=Peraulis clâf: +document_properties_creation_date=Date di creazion: +document_properties_modification_date=Date di modifiche: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creatôr +document_properties_producer=Gjeneradôr PDF: +document_properties_version=Version PDF: +document_properties_page_count=Numar di pagjinis: +document_properties_page_size=Dimension de pagjine: +document_properties_page_size_unit_inches=oncis +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=verticâl +document_properties_page_size_orientation_landscape=orizontâl +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letare +document_properties_page_size_name_legal=Legâl +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Visualizazion web svelte: +document_properties_linearized_yes=Sì +document_properties_linearized_no=No +document_properties_close=Siere + +print_progress_message=Daûr a prontâ il document pe stampe… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Anule + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Ative/Disative sbare laterâl +toggle_sidebar_notification2.title=Ative/Disative sbare laterâl (il document al conten struture/zontis/strâts) +toggle_sidebar_label=Ative/Disative sbare laterâl +document_outline.title=Mostre la struture dal document (dopli clic par slargjâ/strenzi ducj i elements) +document_outline_label=Struture dal document +attachments.title=Mostre lis zontis +attachments_label=Zontis +layers.title=Mostre i strâts (dopli clic par ristabilî ducj i strâts al stât predefinît) +layers_label=Strâts +thumbs.title=Mostre miniaturis +thumbs_label=Miniaturis +current_outline_item.title=Cjate l'element de struture atuâl +current_outline_item_label=Element de struture atuâl +findbar.title=Cjate tal document +findbar_label=Cjate + +additional_layers=Strâts adizionâi +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Pagjine {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pagjine {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniature de pagjine {{page}} + +# Find panel button title and messages +find_input.title=Cjate +find_input.placeholder=Cjate tal document… +find_previous.title=Cjate il câs precedent dal test +find_previous_label=Precedent +find_next.title=Cjate il câs sucessîf dal test +find_next_label=Sucessîf +find_highlight=Evidenzie dut +find_match_case_label=Fâs distinzion tra maiusculis e minusculis +find_match_diacritics_label=Corispondence diacritiche +find_entire_word_label=Peraulis interiis +find_reached_top=Si è rivâts al inizi dal document e si à continuât de fin +find_reached_bottom=Si è rivât ae fin dal document e si à continuât dal inizi +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} di {{total}} corispondence +find_match_count[two]={{current}} di {{total}} corispondencis +find_match_count[few]={{current}} di {{total}} corispondencis +find_match_count[many]={{current}} di {{total}} corispondencis +find_match_count[other]={{current}} di {{total}} corispondencis +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Plui di {{limit}} corispondencis +find_match_count_limit[one]=Plui di {{limit}} corispondence +find_match_count_limit[two]=Plui di {{limit}} corispondencis +find_match_count_limit[few]=Plui di {{limit}} corispondencis +find_match_count_limit[many]=Plui di {{limit}} corispondencis +find_match_count_limit[other]=Plui di {{limit}} corispondencis +find_not_found=Test no cjatât + +# Error panel labels +error_more_info=Altris informazions +error_less_info=Mancul informazions +error_close=Siere +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (compilazion: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Messaç: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=File: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Rie: {{line}} + +# Predefined zoom values +page_scale_width=Largjece de pagjine +page_scale_fit=Pagjine interie +page_scale_auto=Ingrandiment automatic +page_scale_actual=Dimension reâl +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Daûr a cjamâ… +loading_error=Al è vignût fûr un erôr intant che si cjariave il PDF. +invalid_file_error=File PDF no valit o ruvinât. +missing_file_error=Al mancje il file PDF. +unexpected_response_error=Rispueste dal servidôr inspietade. + +rendering_error=Al è vignût fûr un erôr tal realizâ la visualizazion de pagjine. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotazion {{type}}] +password_label=Inserìs la password par vierzi chest file PDF. +password_invalid=Password no valide. Par plasê torne prove. +password_ok=Va ben +password_cancel=Anule + +printing_not_supported=Atenzion: la stampe no je supuartade ad implen di chest navigadôr. +printing_not_ready=Atenzion: il PDF nol è stât cjamât dal dut pe stampe. +web_fonts_disabled=I caratars dal Web a son disativâts: Impussibil doprâ i caratars PDF incorporâts. + +# Editor +editor_free_text2.title=Test +editor_free_text2_label=Test +editor_ink2.title=Dissen +editor_ink2_label=Dissen + +free_text2_default_content=Scomence a scrivi… + +# Editor Parameters +editor_free_text_color=Colôr +editor_free_text_size=Dimension +editor_ink_color=Colôr +editor_ink_thickness=Spessôr +editor_ink_opacity=Opacitât + +# Editor aria +editor_free_text2_aria_label=Editôr di test +editor_ink2_aria_label=Editôr dissens +editor_ink_canvas_aria_label=Imagjin creade dal utent diff --git a/page/static/js/web/locale/fy-NL/viewer.properties b/page/static/js/web/locale/fy-NL/viewer.properties new file mode 100644 index 0000000..eab939a --- /dev/null +++ b/page/static/js/web/locale/fy-NL/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Foarige side +previous_label=Foarige +next.title=Folgjende side +next_label=Folgjende + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Side +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=fan {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} fan {{pagesCount}}) + +zoom_out.title=Utzoome +zoom_out_label=Utzoome +zoom_in.title=Ynzoome +zoom_in_label=Ynzoome +zoom.title=Zoome +presentation_mode.title=Wikselje nei presintaasjemodus +presentation_mode_label=Presintaasjemodus +open_file.title=Bestân iepenje +open_file_label=Iepenje +print.title=Ofdrukke +print_label=Ofdrukke +download.title=Downloade +download_label=Downloade +save.title=Bewarje +save_label=Bewarje +bookmark.title=Aktuele finster (kopiearje of iepenje yn nij finster) +bookmark_label=Aktuele finster + +bookmark1.title=Aktuele side (URL fan aktuele side besjen) +bookmark1_label=Aktuele side + +# Secondary toolbar and context menu +tools.title=Ark +tools_label=Ark +first_page.title=Gean nei earste side +first_page_label=Gean nei earste side +last_page.title=Gean nei lêste side +last_page_label=Gean nei lêste side +page_rotate_cw.title=Rjochtsom draaie +page_rotate_cw_label=Rjochtsom draaie +page_rotate_ccw.title=Linksom draaie +page_rotate_ccw_label=Linksom draaie + +cursor_text_select_tool.title=Tekstseleksjehelpmiddel ynskeakelje +cursor_text_select_tool_label=Tekstseleksjehelpmiddel +cursor_hand_tool.title=Hânhelpmiddel ynskeakelje +cursor_hand_tool_label=Hânhelpmiddel + +scroll_page.title=Sideskowen brûke +scroll_page_label=Sideskowen +scroll_vertical.title=Fertikaal skowe brûke +scroll_vertical_label=Fertikaal skowe +scroll_horizontal.title=Horizontaal skowe brûke +scroll_horizontal_label=Horizontaal skowe +scroll_wrapped.title=Skowe mei oersjoch brûke +scroll_wrapped_label=Skowe mei oersjoch + +spread_none.title=Sidesprieding net gearfetsje +spread_none_label=Gjin sprieding +spread_odd.title=Sidesprieding gearfetsje te starten mei ûneven nûmers +spread_odd_label=Uneven sprieding +spread_even.title=Sidesprieding gearfetsje te starten mei even nûmers +spread_even_label=Even sprieding + +# Document properties dialog box +document_properties.title=Dokuminteigenskippen… +document_properties_label=Dokuminteigenskippen… +document_properties_file_name=Bestânsnamme: +document_properties_file_size=Bestânsgrutte: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Titel: +document_properties_author=Auteur: +document_properties_subject=Underwerp: +document_properties_keywords=Kaaiwurden: +document_properties_creation_date=Oanmaakdatum: +document_properties_modification_date=Bewurkingsdatum: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Makker: +document_properties_producer=PDF-makker: +document_properties_version=PDF-ferzje: +document_properties_page_count=Siden: +document_properties_page_size=Sideformaat: +document_properties_page_size_unit_inches=yn +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=steand +document_properties_page_size_orientation_landscape=lizzend +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Juridysk +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Flugge webwerjefte: +document_properties_linearized_yes=Ja +document_properties_linearized_no=Nee +document_properties_close=Slute + +print_progress_message=Dokumint tariede oar ôfdrukken… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Annulearje + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Sidebalke yn-/útskeakelje +toggle_sidebar_notification2.title=Sidebalke yn-/útskeakelje (dokumint befettet oersjoch/bylagen/lagen) +toggle_sidebar_label=Sidebalke yn-/útskeakelje +document_outline.title=Dokumintoersjoch toane (dûbelklik om alle items út/yn te klappen) +document_outline_label=Dokumintoersjoch +attachments.title=Bylagen toane +attachments_label=Bylagen +layers.title=Lagen toane (dûbelklik om alle lagen nei de standertsteat werom te setten) +layers_label=Lagen +thumbs.title=Foarbylden toane +thumbs_label=Foarbylden +current_outline_item.title=Aktueel item yn ynhâldsopjefte sykje +current_outline_item_label=Aktueel item yn ynhâldsopjefte +findbar.title=Sykje yn dokumint +findbar_label=Sykje + +additional_layers=Oanfoljende lagen +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Side {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Side {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Foarbyld fan side {{page}} + +# Find panel button title and messages +find_input.title=Sykje +find_input.placeholder=Sykje yn dokumint… +find_previous.title=It foarige foarkommen fan de tekst sykje +find_previous_label=Foarige +find_next.title=It folgjende foarkommen fan de tekst sykje +find_next_label=Folgjende +find_highlight=Alles markearje +find_match_case_label=Haadlettergefoelich +find_match_diacritics_label=Diakrityske tekens brûke +find_entire_word_label=Hiele wurden +find_reached_top=Boppekant fan dokumint berikt, trochgien fan ûnder ôf +find_reached_bottom=Ein fan dokumint berikt, trochgien fan boppe ôf +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} fan {{total}} oerienkomst +find_match_count[two]={{current}} fan {{total}} oerienkomsten +find_match_count[few]={{current}} fan {{total}} oerienkomsten +find_match_count[many]={{current}} fan {{total}} oerienkomsten +find_match_count[other]={{current}} fan {{total}} oerienkomsten +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Mear as {{limit}} oerienkomsten +find_match_count_limit[one]=Mear as {{limit}} oerienkomst +find_match_count_limit[two]=Mear as {{limit}} oerienkomsten +find_match_count_limit[few]=Mear as {{limit}} oerienkomsten +find_match_count_limit[many]=Mear as {{limit}} oerienkomsten +find_match_count_limit[other]=Mear as {{limit}} oerienkomsten +find_not_found=Tekst net fûn + +# Error panel labels +error_more_info=Mear ynformaasje +error_less_info=Minder ynformaasje +error_close=Slute +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js f{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Berjocht: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Bestân: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Rigel: {{line}} + +# Predefined zoom values +page_scale_width=Sidebreedte +page_scale_fit=Hiele side +page_scale_auto=Automatysk zoome +page_scale_actual=Werklike grutte +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Lade… +loading_error=Der is in flater bard by it laden fan de PDF. +invalid_file_error=Ynfalide of korruptearre PDF-bestân. +missing_file_error=PDF-bestân ûntbrekt. +unexpected_response_error=Unferwacht serverantwurd. + +rendering_error=Der is in flater bard by it renderjen fan de side. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}}-annotaasje] +password_label=Jou it wachtwurd om dit PDF-bestân te iepenjen. +password_invalid=Ferkeard wachtwurd. Probearje opnij. +password_ok=OK +password_cancel=Annulearje + +printing_not_supported=Warning: Printen is net folslein stipe troch dizze browser. +printing_not_ready=Warning: PDF is net folslein laden om ôf te drukken. +web_fonts_disabled=Weblettertypen binne útskeakele: gebrûk fan ynsluten PDF-lettertypen is net mooglik. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=Tekenje +editor_ink2_label=Tekenje + +free_text2_default_content=Begjin mei typen… + +# Editor Parameters +editor_free_text_color=Kleur +editor_free_text_size=Grutte +editor_ink_color=Kleur +editor_ink_thickness=Tsjokte +editor_ink_opacity=Transparânsje + +# Editor aria +editor_free_text2_aria_label=Tekstbewurker +editor_ink2_aria_label=Tekeningbewurker +editor_ink_canvas_aria_label=Troch brûker makke ôfbylding diff --git a/page/static/js/web/locale/ga-IE/viewer.properties b/page/static/js/web/locale/ga-IE/viewer.properties new file mode 100644 index 0000000..31833e7 --- /dev/null +++ b/page/static/js/web/locale/ga-IE/viewer.properties @@ -0,0 +1,202 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=An Leathanach Roimhe Seo +previous_label=Roimhe Seo +next.title=An Chéad Leathanach Eile +next_label=Ar Aghaidh + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Leathanach +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=as {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} as {{pagesCount}}) + +zoom_out.title=Súmáil Amach +zoom_out_label=Súmáil Amach +zoom_in.title=Súmáil Isteach +zoom_in_label=Súmáil Isteach +zoom.title=Súmáil +presentation_mode.title=Úsáid an Mód Láithreoireachta +presentation_mode_label=Mód Láithreoireachta +open_file.title=Oscail Comhad +open_file_label=Oscail +print.title=Priontáil +print_label=Priontáil +download.title=Ãoslódáil +download_label=Ãoslódáil +bookmark.title=An t-amharc reatha (cóipeáil nó oscail i bhfuinneog nua) +bookmark_label=An tAmharc Reatha + +# Secondary toolbar and context menu +tools.title=Uirlisí +tools_label=Uirlisí +first_page.title=Go dtí an chéad leathanach +first_page_label=Go dtí an chéad leathanach +last_page.title=Go dtí an leathanach deiridh +last_page_label=Go dtí an leathanach deiridh +page_rotate_cw.title=Rothlaigh ar deiseal +page_rotate_cw_label=Rothlaigh ar deiseal +page_rotate_ccw.title=Rothlaigh ar tuathal +page_rotate_ccw_label=Rothlaigh ar tuathal + +cursor_text_select_tool.title=Cumasaigh an Uirlis Roghnaithe Téacs +cursor_text_select_tool_label=Uirlis Roghnaithe Téacs +cursor_hand_tool.title=Cumasaigh an Uirlis Láimhe +cursor_hand_tool_label=Uirlis Láimhe + + + +# Document properties dialog box +document_properties.title=Airíonna na Cáipéise… +document_properties_label=Airíonna na Cáipéise… +document_properties_file_name=Ainm an chomhaid: +document_properties_file_size=Méid an chomhaid: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} kB ({{size_b}} beart) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} beart) +document_properties_title=Teideal: +document_properties_author=Údar: +document_properties_subject=Ãbhar: +document_properties_keywords=Eochairfhocail: +document_properties_creation_date=Dáta Cruthaithe: +document_properties_modification_date=Dáta Athraithe: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Cruthaitheoir: +document_properties_producer=Cruthaitheoir an PDF: +document_properties_version=Leagan PDF: +document_properties_page_count=Líon Leathanach: +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_close=Dún + +print_progress_message=Cáipéis á hullmhú le priontáil… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cealaigh + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Scoránaigh an Barra Taoibh +toggle_sidebar_label=Scoránaigh an Barra Taoibh +document_outline.title=Taispeáin Imlíne na Cáipéise (déchliceáil chun chuile rud a leathnú nó a laghdú) +document_outline_label=Creatlach na Cáipéise +attachments.title=Taispeáin Iatáin +attachments_label=Iatáin +thumbs.title=Taispeáin Mionsamhlacha +thumbs_label=Mionsamhlacha +findbar.title=Aimsigh sa Cháipéis +findbar_label=Aimsigh + +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Leathanach {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Mionsamhail Leathanaigh {{page}} + +# Find panel button title and messages +find_input.title=Aimsigh +find_input.placeholder=Aimsigh sa cháipéis… +find_previous.title=Aimsigh an sampla roimhe seo den nath seo +find_previous_label=Roimhe seo +find_next.title=Aimsigh an chéad sampla eile den nath sin +find_next_label=Ar aghaidh +find_highlight=Aibhsigh uile +find_match_case_label=Cásíogair +find_entire_word_label=Focail iomlána +find_reached_top=Ag barr na cáipéise, ag leanúint ón mbun +find_reached_bottom=Ag bun na cáipéise, ag leanúint ón mbarr +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_not_found=Frása gan aimsiú + +# Error panel labels +error_more_info=Tuilleadh Eolais +error_less_info=Níos Lú Eolais +error_close=Dún +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Teachtaireacht: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Cruach: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Comhad: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Líne: {{line}} +rendering_error=Tharla earráid agus an leathanach á leagan amach. + +# Predefined zoom values +page_scale_width=Leithead Leathanaigh +page_scale_fit=Laghdaigh go dtí an Leathanach +page_scale_auto=Súmáil Uathoibríoch +page_scale_actual=Fíormhéid +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading_error=Tharla earráid agus an cháipéis PDF á lódáil. +invalid_file_error=Comhad neamhbhailí nó truaillithe PDF. +missing_file_error=Comhad PDF ar iarraidh. +unexpected_response_error=Freagra ón bhfreastalaí nach rabhthas ag súil leis. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anótáil {{type}}] +password_label=Cuir an focal faire isteach chun an comhad PDF seo a oscailt. +password_invalid=Focal faire mícheart. Déan iarracht eile. +password_ok=OK +password_cancel=Cealaigh + +printing_not_supported=Rabhadh: Ní thacaíonn an brabhsálaí le priontáil go hiomlán. +printing_not_ready=Rabhadh: Ní féidir an PDF a phriontáil go dtí go mbeidh an cháipéis iomlán lódáilte. +web_fonts_disabled=Tá clófhoirne Gréasáin díchumasaithe: ní féidir clófhoirne leabaithe PDF a úsáid. + diff --git a/page/static/js/web/locale/gd/viewer.properties b/page/static/js/web/locale/gd/viewer.properties new file mode 100644 index 0000000..c510c6b --- /dev/null +++ b/page/static/js/web/locale/gd/viewer.properties @@ -0,0 +1,249 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=An duilleag roimhe +previous_label=Air ais +next.title=An ath-dhuilleag +next_label=Air adhart + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Duilleag +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=à {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} à {{pagesCount}}) + +zoom_out.title=Sùm a-mach +zoom_out_label=Sùm a-mach +zoom_in.title=Sùm a-steach +zoom_in_label=Sùm a-steach +zoom.title=Sùm +presentation_mode.title=Gearr leum dhan mhodh taisbeanaidh +presentation_mode_label=Am modh taisbeanaidh +open_file.title=Fosgail faidhle +open_file_label=Fosgail +print.title=Clò-bhuail +print_label=Clò-bhuail +download.title=Luchdaich a-nuas +download_label=Luchdaich a-nuas +bookmark.title=An sealladh làithreach (dèan lethbhreac no fosgail e ann an uinneag ùr) +bookmark_label=An sealladh làithreach + +# Secondary toolbar and context menu +tools.title=Innealan +tools_label=Innealan +first_page.title=Rach gun chiad duilleag +first_page_label=Rach gun chiad duilleag +last_page.title=Rach gun duilleag mu dheireadh +last_page_label=Rach gun duilleag mu dheireadh +page_rotate_cw.title=Cuairtich gu deiseil +page_rotate_cw_label=Cuairtich gu deiseil +page_rotate_ccw.title=Cuairtich gu tuathail +page_rotate_ccw_label=Cuairtich gu tuathail + +cursor_text_select_tool.title=Cuir an comas inneal taghadh an teacsa +cursor_text_select_tool_label=Inneal taghadh an teacsa +cursor_hand_tool.title=Cuir inneal na làimhe an comas +cursor_hand_tool_label=Inneal na làimhe + +scroll_vertical.title=Cleachd sgroladh inghearach +scroll_vertical_label=Sgroladh inghearach +scroll_horizontal.title=Cleachd sgroladh còmhnard +scroll_horizontal_label=Sgroladh còmhnard +scroll_wrapped.title=Cleachd sgroladh paisgte +scroll_wrapped_label=Sgroladh paisgte + +spread_none.title=Na cuir còmhla sgoileadh dhuilleagan +spread_none_label=Gun sgaoileadh dhuilleagan +spread_odd.title=Cuir còmhla duilleagan sgaoilte a thòisicheas le duilleagan aig a bheil àireamh chorr +spread_odd_label=Sgaoileadh dhuilleagan corra +spread_even.title=Cuir còmhla duilleagan sgaoilte a thòisicheas le duilleagan aig a bheil àireamh chothrom +spread_even_label=Sgaoileadh dhuilleagan cothrom + +# Document properties dialog box +document_properties.title=Roghainnean na sgrìobhainne… +document_properties_label=Roghainnean na sgrìobhainne… +document_properties_file_name=Ainm an fhaidhle: +document_properties_file_size=Meud an fhaidhle: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Tiotal: +document_properties_author=Ùghdar: +document_properties_subject=Cuspair: +document_properties_keywords=Faclan-luirg: +document_properties_creation_date=Latha a chruthachaidh: +document_properties_modification_date=Latha atharrachaidh: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Cruthadair: +document_properties_producer=Saothraiche a' PDF: +document_properties_version=Tionndadh a' PDF: +document_properties_page_count=Àireamh de dhuilleagan: +document_properties_page_size=Meud na duilleige: +document_properties_page_size_unit_inches=ann an +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=portraid +document_properties_page_size_orientation_landscape=dreach-tìre +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Litir +document_properties_page_size_name_legal=Laghail +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Grad shealladh-lìn: +document_properties_linearized_yes=Tha +document_properties_linearized_no=Chan eil +document_properties_close=Dùin + +print_progress_message=Ag ullachadh na sgrìobhainn airson clò-bhualadh… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Sguir dheth + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Toglaich am bàr-taoibh +toggle_sidebar_notification2.title=Toglaich am bàr-taoibh (tha oir-loidhne/ceanglachain/breathan aig an sgrìobhainn) +toggle_sidebar_label=Toglaich am bàr-taoibh +document_outline.title=Seall oir-loidhne na sgrìobhainn (dèan briogadh dùbailte airson a h-uile nì a leudachadh/a cho-theannadh) +document_outline_label=Oir-loidhne na sgrìobhainne +attachments.title=Seall na ceanglachain +attachments_label=Ceanglachain +layers.title=Seall na breathan (dèan briogadh dùbailte airson a h-uile breath ath-shuidheachadh dhan staid bhunaiteach) +layers_label=Breathan +thumbs.title=Seall na dealbhagan +thumbs_label=Dealbhagan +current_outline_item.title=Lorg nì làithreach na h-oir-loidhne +current_outline_item_label=Nì làithreach na h-oir-loidhne +findbar.title=Lorg san sgrìobhainn +findbar_label=Lorg + +additional_layers=Barrachd breathan +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Duilleag {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Duilleag a {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Dealbhag duilleag a {{page}} + +# Find panel button title and messages +find_input.title=Lorg +find_input.placeholder=Lorg san sgrìobhainn... +find_previous.title=Lorg làthair roimhe na h-abairt seo +find_previous_label=Air ais +find_next.title=Lorg ath-làthair na h-abairt seo +find_next_label=Air adhart +find_highlight=Soillsich a h-uile +find_match_case_label=Aire do litrichean mòra is beaga +find_entire_word_label=Faclan-slàna +find_reached_top=Ràinig sinn barr na duilleige, a' leantainn air adhart o bhonn na duilleige +find_reached_bottom=Ràinig sinn bonn na duilleige, a' leantainn air adhart o bharr na duilleige +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} à {{total}} mhaids +find_match_count[two]={{current}} à {{total}} mhaids +find_match_count[few]={{current}} à {{total}} maidsichean +find_match_count[many]={{current}} à {{total}} maids +find_match_count[other]={{current}} à {{total}} maids +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Barrachd air {{limit}} maids +find_match_count_limit[one]=Barrachd air {{limit}} mhaids +find_match_count_limit[two]=Barrachd air {{limit}} mhaids +find_match_count_limit[few]=Barrachd air {{limit}} maidsichean +find_match_count_limit[many]=Barrachd air {{limit}} maids +find_match_count_limit[other]=Barrachd air {{limit}} maids +find_not_found=Cha deach an abairt a lorg + +# Error panel labels +error_more_info=Barrachd fiosrachaidh +error_less_info=Nas lugha de dh'fhiosrachadh +error_close=Dùin +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Teachdaireachd: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stac: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Faidhle: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Loidhne: {{line}} +rendering_error=Thachair mearachd rè reandaradh na duilleige. + +# Predefined zoom values +page_scale_width=Leud na duilleige +page_scale_fit=Freagair ri meud na duilleige +page_scale_auto=Sùm fèin-obrachail +page_scale_actual=Am fìor-mheud +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=’Ga luchdadh… +loading_error=Thachair mearachd rè luchdadh a' PDF. +invalid_file_error=Faidhle PDF a tha mì-dhligheach no coirbte. +missing_file_error=Faidhle PDF a tha a dhìth. +unexpected_response_error=Freagairt on fhrithealaiche ris nach robh dùil. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Nòtachadh {{type}}] +password_label=Cuir a-steach am facal-faire gus am faidhle PDF seo fhosgladh. +password_invalid=Tha am facal-faire cearr. Nach fheuch thu ris a-rithist? +password_ok=Ceart ma-thà +password_cancel=Sguir dheth + +printing_not_supported=Rabhadh: Chan eil am brabhsair seo a' cur làn-taic ri clò-bhualadh. +printing_not_ready=Rabhadh: Cha deach am PDF a luchdadh gu tur airson clò-bhualadh. +web_fonts_disabled=Tha cruthan-clò lìn à comas: Chan urrainn dhuinn cruthan-clò PDF leabaichte a chleachdadh. + diff --git a/page/static/js/web/locale/gl/viewer.properties b/page/static/js/web/locale/gl/viewer.properties new file mode 100644 index 0000000..0aa2ef1 --- /dev/null +++ b/page/static/js/web/locale/gl/viewer.properties @@ -0,0 +1,249 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Páxina anterior +previous_label=Anterior +next.title=Seguinte páxina +next_label=Seguinte + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Páxina +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Reducir +zoom_out_label=Reducir +zoom_in.title=Ampliar +zoom_in_label=Ampliar +zoom.title=Zoom +presentation_mode.title=Cambiar ao modo presentación +presentation_mode_label=Modo presentación +open_file.title=Abrir ficheiro +open_file_label=Abrir +print.title=Imprimir +print_label=Imprimir +download.title=Descargar +download_label=Descargar +bookmark.title=Vista actual (copiar ou abrir nunha nova xanela) +bookmark_label=Vista actual + +# Secondary toolbar and context menu +tools.title=Ferramentas +tools_label=Ferramentas +first_page.title=Ir á primeira páxina +first_page_label=Ir á primeira páxina +last_page.title=Ir á última páxina +last_page_label=Ir á última páxina +page_rotate_cw.title=Rotar no sentido das agullas do reloxo +page_rotate_cw_label=Rotar no sentido das agullas do reloxo +page_rotate_ccw.title=Rotar no sentido contrario ás agullas do reloxo +page_rotate_ccw_label=Rotar no sentido contrario ás agullas do reloxo + +cursor_text_select_tool.title=Activar a ferramenta de selección de texto +cursor_text_select_tool_label=Ferramenta de selección de texto +cursor_hand_tool.title=Activar a ferramenta man +cursor_hand_tool_label=Ferramenta man + +scroll_vertical.title=Usar o desprazamento vertical +scroll_vertical_label=Desprazamento vertical +scroll_horizontal.title=Usar o desprazamento horizontal +scroll_horizontal_label=Desprazamento horizontal +scroll_wrapped.title=Usar desprazamento en bloque +scroll_wrapped_label=Desprazamento en bloque + +spread_none.title=Non agrupar páxinas +spread_none_label=Ningún agrupamento +spread_odd.title=Crea grupo de páxinas que comezan con números de páxina impares +spread_odd_label=Agrupamento impar +spread_even.title=Crea grupo de páxinas que comezan con números de páxina pares +spread_even_label=Agrupamento par + +# Document properties dialog box +document_properties.title=Propiedades do documento… +document_properties_label=Propiedades do documento… +document_properties_file_name=Nome do ficheiro: +document_properties_file_size=Tamaño do ficheiro: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Título: +document_properties_author=Autor: +document_properties_subject=Asunto: +document_properties_keywords=Palabras clave: +document_properties_creation_date=Data de creación: +document_properties_modification_date=Data de modificación: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creado por: +document_properties_producer=Xenerador do PDF: +document_properties_version=Versión de PDF: +document_properties_page_count=Número de páxinas: +document_properties_page_size=Tamaño da páxina: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=Vertical +document_properties_page_size_orientation_landscape=Horizontal +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Carta +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Visualización rápida das páxinas web: +document_properties_linearized_yes=Si +document_properties_linearized_no=Non +document_properties_close=Pechar + +print_progress_message=Preparando documento para imprimir… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancelar + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Amosar/agochar a barra lateral +toggle_sidebar_notification2.title=Alternar barra lateral (o documento contén esquema/anexos/capas) +toggle_sidebar_label=Amosar/agochar a barra lateral +document_outline.title=Amosar o esquema do documento (prema dúas veces para expandir/contraer todos os elementos) +document_outline_label=Esquema do documento +attachments.title=Amosar anexos +attachments_label=Anexos +layers.title=Mostrar capas (prema dúas veces para restaurar todas as capas o estado predeterminado) +layers_label=Capas +thumbs.title=Amosar miniaturas +thumbs_label=Miniaturas +current_outline_item.title=Atopar o elemento delimitado actualmente +current_outline_item_label=Elemento delimitado actualmente +findbar.title=Atopar no documento +findbar_label=Atopar + +additional_layers=Capas adicionais +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Páxina {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Páxina {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura da páxina {{page}} + +# Find panel button title and messages +find_input.title=Atopar +find_input.placeholder=Atopar no documento… +find_previous.title=Atopar a anterior aparición da frase +find_previous_label=Anterior +find_next.title=Atopar a seguinte aparición da frase +find_next_label=Seguinte +find_highlight=Realzar todo +find_match_case_label=Diferenciar maiúsculas de minúsculas +find_entire_word_label=Palabras completas +find_reached_top=Chegouse ao inicio do documento, continuar desde o final +find_reached_bottom=Chegouse ao final do documento, continuar desde o inicio +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} de {{total}} coincidencia +find_match_count[two]={{current}} de {{total}} coincidencias +find_match_count[few]={{current}} de {{total}} coincidencias +find_match_count[many]={{current}} de {{total}} coincidencias +find_match_count[other]={{current}} de {{total}} coincidencias +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Máis de {{limit}} coincidencias +find_match_count_limit[one]=Máis de {{limit}} coincidencia +find_match_count_limit[two]=Máis de {{limit}} coincidencias +find_match_count_limit[few]=Máis de {{limit}} coincidencias +find_match_count_limit[many]=Máis de {{limit}} coincidencias +find_match_count_limit[other]=Máis de {{limit}} coincidencias +find_not_found=Non se atopou a frase + +# Error panel labels +error_more_info=Máis información +error_less_info=Menos información +error_close=Pechar +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (Identificador da compilación: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mensaxe: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pila: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Ficheiro: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Liña: {{line}} +rendering_error=Produciuse un erro ao representar a páxina. + +# Predefined zoom values +page_scale_width=Largura da páxina +page_scale_fit=Axuste de páxina +page_scale_auto=Zoom automático +page_scale_actual=Tamaño actual +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=A cargar… +loading_error=Produciuse un erro ao cargar o PDF. +invalid_file_error=Ficheiro PDF danado ou non válido. +missing_file_error=Falta o ficheiro PDF. +unexpected_response_error=Resposta inesperada do servidor. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotación {{type}}] +password_label=Escriba o contrasinal para abrir este ficheiro PDF. +password_invalid=Contrasinal incorrecto. Tente de novo. +password_ok=Aceptar +password_cancel=Cancelar + +printing_not_supported=Aviso: A impresión non é compatíbel de todo con este navegador. +printing_not_ready=Aviso: O PDF non se cargou completamente para imprimirse. +web_fonts_disabled=Desactiváronse as fontes web: foi imposíbel usar as fontes incrustadas no PDF. + diff --git a/page/static/js/web/locale/gn/viewer.properties b/page/static/js/web/locale/gn/viewer.properties new file mode 100644 index 0000000..b5589c3 --- /dev/null +++ b/page/static/js/web/locale/gn/viewer.properties @@ -0,0 +1,279 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Kuatiarogue mboyvegua +previous_label=Mboyvegua +next.title=Kuatiarogue upeigua +next_label=Upeigua + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Kuatiarogue +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} gui +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} of {{pagesCount}}) + +zoom_out.title=MomichÄ© +zoom_out_label=MomichÄ© +zoom_in.title=Mbotuicha +zoom_in_label=Mbotuicha +zoom.title=Tuichakue +presentation_mode.title=Jehechauka reko moambue +presentation_mode_label=Jehechauka reko +open_file.title=Marandurendápe jeike +open_file_label=Jeike +print.title=Monguatia +print_label=Monguatia +download.title=Mboguejy +download_label=Mboguejy +save.title=Ñongatu +save_label=Ñongatu +bookmark.title=Ag̃agua jehecha (mbohasarã térã eike peteÄ© ovetã pyahúpe) +bookmark_label=Ag̃agua jehecha + +bookmark1.title=Kuatiarogue ag̃agua (Ehecha URL kuatiarogue ag̃agua) +bookmark1_label=Kuatiarogue Ag̃agua + +# Secondary toolbar and context menu +tools.title=Tembipuru +tools_label=Tembipuru +first_page.title=Kuatiarogue ñepyrÅ©me jeho +first_page_label=Kuatiarogue ñepyrÅ©me jeho +last_page.title=Kuatiarogue pahápe jeho +last_page_label=Kuatiarogue pahápe jeho +page_rotate_cw.title=Aravóicha mbojere +page_rotate_cw_label=Aravóicha mbojere +page_rotate_ccw.title=Aravo rapykue gotyo mbojere +page_rotate_ccw_label=Aravo rapykue gotyo mbojere + +cursor_text_select_tool.title=Emyandy moñe’ẽrã jeporavo rembipuru +cursor_text_select_tool_label=Moñe’ẽrã jeporavo rembipuru +cursor_hand_tool.title=Tembipuru po pegua myandy +cursor_hand_tool_label=Tembipuru po pegua + +scroll_page.title=Eipuru kuatiarogue jeku’e +scroll_page_label=Kuatiarogue jeku’e +scroll_vertical.title=Eipuru jeku’e ykeguáva +scroll_vertical_label=Jeku’e ykeguáva +scroll_horizontal.title=Eipuru jeku’e yvate gotyo +scroll_horizontal_label=Jeku’e yvate gotyo +scroll_wrapped.title=Eipuru jeku’e mbohyrupyre +scroll_wrapped_label=Jeku’e mbohyrupyre + +spread_none.title=Ani ejuaju spreads kuatiarogue ndive +spread_none_label=Spreads ỹre +spread_odd.title=Embojuaju kuatiarogue jepysokue eñepyrÅ©vo kuatiarogue impar-vagui +spread_odd_label=Spreads impar +spread_even.title=Embojuaju kuatiarogue jepysokue eñepyrÅ©vo kuatiarogue par-vagui +spread_even_label=Ipukuve uvei + +# Document properties dialog box +document_properties.title=Kuatia mba’etee… +document_properties_label=Kuatia mba’etee… +document_properties_file_name=Marandurenda réra: +document_properties_file_size=Marandurenda tuichakue: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Teratee: +document_properties_author=Apohára: +document_properties_subject=Mba’egua: +document_properties_keywords=Jehero: +document_properties_creation_date=Teñoihague arange: +document_properties_modification_date=Iñambue hague arange: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Apo’ypyha: +document_properties_producer=PDF mbosako’iha: +document_properties_version=PDF mbojuehegua: +document_properties_page_count=Kuatiarogue papapy: +document_properties_page_size=Kuatiarogue tuichakue: +document_properties_page_size_unit_inches=Amo +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=OÄ©háicha +document_properties_page_size_orientation_landscape=apaisado +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Kuatiañe’ẽ +document_properties_page_size_name_legal=Tee +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Ñanduti jahecha pya’e: +document_properties_linearized_yes=Añete +document_properties_linearized_no=Ahániri +document_properties_close=Mboty + +print_progress_message=Embosako’i kuatia emonguatia hag̃ua… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Heja + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Tenda yke moambue +toggle_sidebar_notification2.title=Embojopyru tenda ykegua (kuatia oguereko kuaakaha/moirÅ©ha/ñuãha) +toggle_sidebar_label=Tenda yke moambue +document_outline.title=Ehechauka kuatia rape (eikutu mokõi jey embotuicha/emomichÄ© hag̃ua opavavete mba’epuru) +document_outline_label=Kuatia apopyre +attachments.title=MoirÅ©ha jehechauka +attachments_label=MoirÅ©ha +layers.title=Ehechauka ñuãha (eikutu jo’a emomba’apo hag̃ua opaite ñuãha tekoypýpe) +layers_label=Ñuãha +thumbs.title=Mba’emirÄ© jehechauka +thumbs_label=Mba’emirÄ© +current_outline_item.title=Eheka mba’epuru ag̃aguaitéva +current_outline_item_label=Mba’epuru ag̃aguaitéva +findbar.title=Kuatiápe jeheka +findbar_label=Juhu + +additional_layers=Ñuãha moirÅ©guáva +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Kuatiarogue {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Kuatiarogue {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Kuatiarogue mba’emirÄ© {{page}} + +# Find panel button title and messages +find_input.title=Juhu +find_input.placeholder=Kuatiápe jejuhu… +find_previous.title=Ejuhu ñe’ẽrysýi osẽ’ypy hague +find_previous_label=Mboyvegua +find_next.title=Eho ñe’ẽ juhupyre upeiguávape +find_next_label=Upeigua +find_highlight=Embojekuaavepa +find_match_case_label=Ejesareko taiguasu/taimichÄ©re +find_match_diacritics_label=Diacrítico moñondive +find_entire_word_label=Ñe’ẽ oÄ©mbáva +find_reached_top=Ojehupyty kuatia ñepyrÅ©, oku’ejeýta kuatia paha guive +find_reached_bottom=Ojehupyty kuatia paha, oku’ejeýta kuatia ñepyrÅ© guive +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} {{total}} ojojoguáva +find_match_count[two]={{current}} {{total}} ojojoguáva +find_match_count[few]={{current}} {{total}} ojojoguáva +find_match_count[many]={{current}} {{total}} ojojoguáva +find_match_count[other]={{current}} {{total}} ojojoguáva +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Hetave {{limit}} ojojoguáva +find_match_count_limit[one]=Hetave {{limit}} ojojogua +find_match_count_limit[two]=Hetave {{limit}} ojojoguáva +find_match_count_limit[few]=Hetave {{limit}} ojojoguáva +find_match_count_limit[many]=Hetave {{limit}} ojojoguáva +find_match_count_limit[other]=Hetave {{limit}} ojojoguáva +find_not_found=Ñe’ẽrysýi ojejuhu’ỹva + +# Error panel labels +error_more_info=Maranduve +error_less_info=Sa’ive marandu +error_close=Mboty +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Ñe’ẽmondo: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Mbojo’apy: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Marandurenda: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Tairenda: {{line}} + +# Predefined zoom values +page_scale_width=Kuatiarogue pekue +page_scale_fit=Kuatiarogue ñemoÄ©porã +page_scale_auto=Tuichakue ijeheguíva +page_scale_actual=Tuichakue ag̃agua +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Henyhẽhína… + +# Loading indicator messages +loading_error=Oiko jejavy PDF oñemyeñyhẽnguévo. +invalid_file_error=PDF marandurenda ndoikóiva térã ivaipyréva. +missing_file_error=Ndaipóri PDF marandurenda +unexpected_response_error=Mohendahavusu mbohovái ñeha’arõ’ỹva. + +rendering_error=Oiko jejavy ehechaukasévo kuatiarogue. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Jehaipy {{type}}] +password_label=Emoinge ñe’ẽñemi eipe’a hag̃ua ko marandurenda PDF. +password_invalid=Ñe’ẽñemi ndoikóiva. Eha’ã jey. +password_ok=MONEĨ +password_cancel=Heja + +printing_not_supported=Kyhyjerã: Ñembokuatia ndojokupytypái ko kundahára ndive. +printing_not_ready=Kyhyjerã: Ko PDF nahenyhẽmbái oñembokuatia hag̃uáicha. +web_fonts_disabled=Ñanduti taity oñemongéma: ndaikatumo’ãi eipuru PDF jehai’íva taity. + +# Editor +editor_free_text2.title=Moñe’ẽrã +editor_free_text2_label=Moñe’ẽrã +editor_ink2.title=Moha’ãnga +editor_ink2_label=Moha’ãnga + +free_text2_default_content=Ehai ñepyrũ… + +# Editor Parameters +editor_free_text_color=Sa’y +editor_free_text_size=Tuichakue +editor_ink_color=Sa’y +editor_ink_thickness=Anambusu +editor_ink_opacity=PytÅ©ngy + +# Editor aria +editor_free_text2_aria_label=Moñe’ẽrã moheñoiha +editor_ink2_aria_label=Ta’ãnga moheñoiha +editor_ink_canvas_aria_label=Ta’ãnga omoheñóiva puruhára diff --git a/page/static/js/web/locale/gu-IN/viewer.properties b/page/static/js/web/locale/gu-IN/viewer.properties new file mode 100644 index 0000000..8e6c44f --- /dev/null +++ b/page/static/js/web/locale/gu-IN/viewer.properties @@ -0,0 +1,235 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=પહેલાનૠપાનà«àª‚ +previous_label=પહેલાનૠ+next.title=આગળનૠપાનà«àª‚ +next_label=આગળનà«àª‚ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=પાનà«àª‚ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=નો {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} નો {{pagesCount}}) + +zoom_out.title=મોટૠકરો +zoom_out_label=મોટૠકરો +zoom_in.title=નાનà«àª‚ કરો +zoom_in_label=નાનà«àª‚ કરો +zoom.title=નાનà«àª‚ મોટૠકરો +presentation_mode.title=રજૂઆત સà«àª¥àª¿àª¤àª¿àª®àª¾àª‚ જાવ +presentation_mode_label=રજૂઆત સà«àª¥àª¿àª¤àª¿ +open_file.title=ફાઇલ ખોલો +open_file_label=ખોલો +print.title=છાપો +print_label=છારો +download.title=ડાઉનલોડ +download_label=ડાઉનલોડ +bookmark.title=વરà«àª¤àª®àª¾àª¨ દૃશà«àª¯ (નવી વિનà«àª¡à«‹àª®àª¾àª‚ નકલ કરો અથવા ખોલો) +bookmark_label=વરà«àª¤àª®àª¾àª¨ દૃશà«àª¯ + +# Secondary toolbar and context menu +tools.title=સાધનો +tools_label=સાધનો +first_page.title=પહેલાં પાનામાં જાવ +first_page_label=પà«àª°àª¥àª® પાનાં પર જાવ +last_page.title=છેલà«àª²àª¾ પાનાં પર જાવ +last_page_label=છેલà«àª²àª¾ પાનાં પર જાવ +page_rotate_cw.title=ઘડિયાળનાં કાંટા તરફ ફેરવો +page_rotate_cw_label=ઘડિયાળનાં કાંટા તરફ ફેરવો +page_rotate_ccw.title=ઘડિયાળનાં કાંટાની ઉલટી દિશામાં ફેરવો +page_rotate_ccw_label=ઘડિયાળનાં કાંટાની વિરà«àª¦à«àª¦ ફેરવો + +cursor_text_select_tool.title=ટેકà«àª¸à«àªŸ પસંદગી ટૂલ સકà«àª·àª® કરો +cursor_text_select_tool_label=ટેકà«àª¸à«àªŸ પસંદગી ટૂલ +cursor_hand_tool.title=હાથનાં સાધનને સકà«àª°àª¿àª¯ કરો +cursor_hand_tool_label=હેનà«àª¡ ટૂલ + +scroll_vertical.title=ઊભી સà«àª•à«àª°à«‹àª²àª¿àª‚ગનો ઉપયોગ કરો +scroll_vertical_label=ઊભી સà«àª•à«àª°à«‹àª²àª¿àª‚ગ +scroll_horizontal.title=આડી સà«àª•à«àª°à«‹àª²àª¿àª‚ગનો ઉપયોગ કરો +scroll_horizontal_label=આડી સà«àª•à«àª°à«‹àª²àª¿àª‚ગ +scroll_wrapped.title=આવરિત સà«àª•à«àª°à«‹àª²àª¿àª‚ગનો ઉપયોગ કરો +scroll_wrapped_label=આવરિત સà«àª•à«àª°à«‹àª²àª¿àª‚ગ + +spread_none.title=પૃષà«àª  સà«àªªà«àª°à«‡àª¡àª®àª¾àª‚ જોડાવશો નહીં +spread_none_label=કોઈ સà«àªªà«àª°à«‡àª¡ નથી +spread_odd.title=àªàª•à«€-કà«àª°àª®àª¾àª‚કિત પૃષà«àª à«‹ સાથે પà«àª°àª¾àª°àª‚ભ થતાં પૃષà«àª  સà«àªªà«àª°à«‡àª¡àª®àª¾àª‚ જોડાઓ +spread_odd_label=àªàª•à«€ સà«àªªà«àª°à«‡àª¡à«àª¸ +spread_even.title=નંબર-કà«àª°àª®àª¾àª‚કિત પૃષà«àª à«‹àª¥à«€ શરૂ થતાં પૃષà«àª  સà«àªªà«àª°à«‡àª¡àª®àª¾àª‚ જોડાઓ +spread_even_label=સરખà«àª‚ ફેલાવવà«àª‚ + +# Document properties dialog box +document_properties.title=દસà«àª¤àª¾àªµà«‡àªœ ગà«àª£àª§àª°à«àª®à«‹â€¦ +document_properties_label=દસà«àª¤àª¾àªµà«‡àªœ ગà«àª£àª§àª°à«àª®à«‹â€¦ +document_properties_file_name=ફાઇલ નામ: +document_properties_file_size=ફાઇલ માપ: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} બાઇટ) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} બાઇટ) +document_properties_title=શીરà«àª·àª•: +document_properties_author=લેખક: +document_properties_subject=વિષય: +document_properties_keywords=કિવરà«àª¡: +document_properties_creation_date=નિરà«àª®àª¾àª£ તારીખ: +document_properties_modification_date=ફેરફાર તારીખ: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=નિરà«àª®àª¾àª¤àª¾: +document_properties_producer=PDF નિરà«àª®àª¾àª¤àª¾: +document_properties_version=PDF આવૃતà«àª¤àª¿: +document_properties_page_count=પાનાં ગણતરી: +document_properties_page_size=પૃષà«àª àª¨à«àª‚ કદ: +document_properties_page_size_unit_inches=ઇંચ +document_properties_page_size_unit_millimeters=મીમી +document_properties_page_size_orientation_portrait=ઉભà«àª‚ +document_properties_page_size_orientation_landscape=આડૠ+document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=પતà«àª° +document_properties_page_size_name_legal=કાયદાકીય +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=àªàª¡àªªà«€ વૅબ દૃશà«àª¯: +document_properties_linearized_yes=હા +document_properties_linearized_no=ના +document_properties_close=બંધ કરો + +print_progress_message=છાપકામ માટે દસà«àª¤àª¾àªµà«‡àªœ તૈયાર કરી રહà«àª¯àª¾ છે… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=રદ કરો + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=ટૉગલ બાજà«àªªàªŸà«àªŸà«€ +toggle_sidebar_label=ટૉગલ બાજà«àªªàªŸà«àªŸà«€ +document_outline.title=દસà«àª¤àª¾àªµà«‡àªœàª¨à«€ રૂપરેખા બતાવો(બધી આઇટમà«àª¸àª¨à«‡ વિસà«àª¤à«ƒàª¤/સંકà«àªšàª¿àª¤ કરવા માટે ડબલ-કà«àª²àª¿àª• કરો) +document_outline_label=દસà«àª¤àª¾àªµà«‡àªœ રૂપરેખા +attachments.title=જોડાણોને બતાવો +attachments_label=જોડાણો +thumbs.title=થંબનેલà«àª¸ બતાવો +thumbs_label=થંબનેલà«àª¸ +findbar.title=દસà«àª¤àª¾àªµà«‡àªœàª®àª¾àª‚ શોધો +findbar_label=શોધો + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=પાનà«àª‚ {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=પાનાં {{page}} નà«àª‚ થંબનેલà«àª¸ + +# Find panel button title and messages +find_input.title=શોધો +find_input.placeholder=દસà«àª¤àª¾àªµà«‡àªœàª®àª¾àª‚ શોધો… +find_previous.title=શબà«àª¦àª¸àª®à«‚હની પાછલી ઘટનાને શોધો +find_previous_label=પહેલાંનૠ+find_next.title=શબà«àª¦àª¸àª®à«‚હની આગળની ઘટનાને શોધો +find_next_label=આગળનà«àª‚ +find_highlight=બધૠપà«àª°àª•àª¾àª¶àª¿àª¤ કરો +find_match_case_label=કેસ બંધબેસાડો +find_entire_word_label=સંપૂરà«àª£ શબà«àª¦à«‹ +find_reached_top=દસà«àª¤àª¾àªµà«‡àªœàª¨àª¾àª‚ ટોચે પહોંચી ગયા, તળિયેથી ચાલૠકરેલ હતૠ+find_reached_bottom=દસà«àª¤àª¾àªµà«‡àªœàª¨àª¾àª‚ અંતે પહોંચી ગયા, ઉપરથી ચાલૠકરેલ હતૠ+# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{total}} માંથી {{current}} સરખà«àª‚ મળà«àª¯à«àª‚ +find_match_count[two]={{total}} માંથી {{current}} સરખા મળà«àª¯àª¾àª‚ +find_match_count[few]={{total}} માંથી {{current}} સરખા મળà«àª¯àª¾àª‚ +find_match_count[many]={{total}} માંથી {{current}} સરખા મળà«àª¯àª¾àª‚ +find_match_count[other]={{total}} માંથી {{current}} સરખા મળà«àª¯àª¾àª‚ +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]={{limit}} કરતાં વધૠસરખા મળà«àª¯àª¾àª‚ +find_match_count_limit[one]={{limit}} કરતાં વધૠસરખà«àª‚ મળà«àª¯à«àª‚ +find_match_count_limit[two]={{limit}} કરતાં વધૠસરખા મળà«àª¯àª¾àª‚ +find_match_count_limit[few]={{limit}} કરતાં વધૠસરખા મળà«àª¯àª¾àª‚ +find_match_count_limit[many]={{limit}} કરતાં વધૠસરખા મળà«àª¯àª¾àª‚ +find_match_count_limit[other]={{limit}} કરતાં વધૠસરખા મળà«àª¯àª¾àª‚ +find_not_found=શબà«àª¦àª¸àª®à«‚હ મળà«àª¯à« નથી + +# Error panel labels +error_more_info=વધારે જાણકારી +error_less_info=ઓછી જાણકારી +error_close=બંધ કરો +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=સંદેશો: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=સà«àªŸà«‡àª•: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=ફાઇલ: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=વાકà«àª¯: {{line}} +rendering_error=ભૂલ ઉદà«àª­àªµà«€ જà«àª¯àª¾àª°à«‡ પાનાંનૠરેનà«àª¡ કરી રહà«àª¯àª¾ હોય. + +# Predefined zoom values +page_scale_width=પાનાની પહોળાઇ +page_scale_fit=પાનà«àª‚ બંધબેસતૠ+page_scale_auto=આપમેળે નાનà«àª‚મોટૠકરો +page_scale_actual=ચોકà«àª•àª¸ માપ +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=ભૂલ ઉદà«àª­àªµà«€ જà«àª¯àª¾àª°à«‡ PDF ને લાવી રહà«àª¯àª¾ હોય. +invalid_file_error=અયોગà«àª¯ અથવા ભાંગેલ PDF ફાઇલ. +missing_file_error=ગà«àª® થયેલ PDF ફાઇલ. +unexpected_response_error=અનપેકà«àª·àª¿àª¤ સરà«àªµàª° પà«àª°àª¤àª¿àª¸àª¾àª¦. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=આ PDF ફાઇલને ખોલવા પાસવરà«àª¡àª¨à«‡ દાખલ કરો. +password_invalid=અયોગà«àª¯ પાસવરà«àª¡. મહેરબાની કરીને ફરી પà«àª°àª¯àª¤à«àª¨ કરો. +password_ok=બરાબર +password_cancel=રદ કરો + +printing_not_supported=ચેતવણી: છાપવાનà«àª‚ આ બà«àª°àª¾àª‰àªàª° દà«àª¦àª¾àª°àª¾ સંપૂરà«àª£àªªàª£à«‡ આધારભૂત નથી. +printing_not_ready=Warning: PDF ઠછાપવા માટે સંપૂરà«àª£àªªàª£à«‡ લાવેલ છે. +web_fonts_disabled=વેબ ફોનà«àªŸ નિષà«àª•à«àª°àª¿àª¯ થયેલ છે: àªàª®à«àª¬à«‡àª¡ થયેલ PDF ફોનà«àªŸàª¨à«‡ વાપરવાનà«àª‚ અસમરà«àª¥. + diff --git a/page/static/js/web/locale/he/viewer.properties b/page/static/js/web/locale/he/viewer.properties new file mode 100644 index 0000000..b5cf229 --- /dev/null +++ b/page/static/js/web/locale/he/viewer.properties @@ -0,0 +1,276 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=דף ×§×•×“× +previous_label=×§×•×“× +next.title=דף ×”×‘× +next_label=×”×‘× + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=דף +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=מתוך {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} מתוך {{pagesCount}}) + +zoom_out.title=התרחקות +zoom_out_label=התרחקות +zoom_in.title=התקרבות +zoom_in_label=התקרבות +zoom.title=מרחק מתצוגה +presentation_mode.title=מעבר למצב מצגת +presentation_mode_label=מצב מצגת +open_file.title=פתיחת קובץ +open_file_label=פתיחה +print.title=הדפסה +print_label=הדפסה +download.title=הורדה +download_label=הורדה +save.title=שמירה +save_label=שמירה +bookmark.title=תצוגה נוכחית (העתקה ×ו פתיחה בחלון חדש) +bookmark_label=תצוגה נוכחית + +bookmark1_label=עמוד נוכחי + +# Secondary toolbar and context menu +tools.title=×›×œ×™× +tools_label=×›×œ×™× +first_page.title=מעבר לעמוד הר×שון +first_page_label=מעבר לעמוד הר×שון +last_page.title=מעבר לעמוד ×”×חרון +last_page_label=מעבר לעמוד ×”×חרון +page_rotate_cw.title=הטיה ×¢× ×›×™×•×•×Ÿ השעון +page_rotate_cw_label=הטיה ×¢× ×›×™×•×•×Ÿ השעון +page_rotate_ccw.title=הטיה כנגד כיוון השעון +page_rotate_ccw_label=הטיה כנגד כיוון השעון + +cursor_text_select_tool.title=הפעלת כלי בחירת טקסט +cursor_text_select_tool_label=כלי בחירת טקסט +cursor_hand_tool.title=הפעלת כלי היד +cursor_hand_tool_label=כלי יד + +scroll_page.title=שימוש בגלילת עמוד +scroll_page_label=גלילת עמוד +scroll_vertical.title=שימוש בגלילה ×נכית +scroll_vertical_label=גלילה ×נכית +scroll_horizontal.title=שימוש בגלילה ×ופקית +scroll_horizontal_label=גלילה ×ופקית +scroll_wrapped.title=שימוש בגלילה רציפה +scroll_wrapped_label=גלילה רציפה + +spread_none.title=×œ× ×œ×¦×¨×£ מפתחי ×¢×ž×•×“×™× +spread_none_label=×œ×œ× ×ž×¤×ª×—×™× +spread_odd.title=צירוף מפתחי ×¢×ž×•×“×™× ×©×ž×ª×—×™×œ×™× ×‘×“×¤×™× ×¢× ×ž×¡×¤×¨×™× ××™Ö¾×–×•×’×™×™× +spread_odd_label=×ž×¤×ª×—×™× ××™Ö¾×–×•×’×™×™× +spread_even.title=צירוף מפתחי ×¢×ž×•×“×™× ×©×ž×ª×—×™×œ×™× ×‘×“×¤×™× ×¢× ×ž×¡×¤×¨×™× ×–×•×’×™×™× +spread_even_label=×ž×¤×ª×—×™× ×–×•×’×™×™× + +# Document properties dialog box +document_properties.title=מ×פייני מסמך… +document_properties_label=מ×פייני מסמך… +document_properties_file_name=×©× ×§×•×‘×¥: +document_properties_file_size=גודל הקובץ: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} ק״ב ({{size_b}} בתי×) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} מ״ב ({{size_b}} בתי×) +document_properties_title=כותרת: +document_properties_author=מחבר: +document_properties_subject=נוש×: +document_properties_keywords=מילות מפתח: +document_properties_creation_date=ת×ריך יצירה: +document_properties_modification_date=ת×ריך שינוי: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=יוצר: +document_properties_producer=יצרן PDF: +document_properties_version=גרסת PDF: +document_properties_page_count=מספר דפי×: +document_properties_page_size=גודל העמוד: +document_properties_page_size_unit_inches=×ינ׳ +document_properties_page_size_unit_millimeters=מ״מ +document_properties_page_size_orientation_portrait=ל×ורך +document_properties_page_size_orientation_landscape=לרוחב +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=מכתב +document_properties_page_size_name_legal=דף משפטי +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=תצוגת דף מהירה: +document_properties_linearized_yes=כן +document_properties_linearized_no=×œ× +document_properties_close=סגירה + +print_progress_message=מסמך בהכנה להדפסה… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=ביטול + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=הצגה/הסתרה של סרגל הצד +toggle_sidebar_notification2.title=החלפת תצוגת סרגל צד (מסמך שמכיל תוכן ×¢× ×™×™× ×™×/×§×‘×¦×™× ×ž×¦×•×¨×¤×™×/שכבות) +toggle_sidebar_label=הצגה/הסתרה של סרגל הצד +document_outline.title=הצגת תוכן ×”×¢× ×™×™× ×™× ×©×œ המסמך (לחיצה כפולה כדי להרחיב ×ו ×œ×¦×ž×¦× ×ת כל הפריטי×) +document_outline_label=תוכן ×”×¢× ×™×™× ×™× ×©×œ המסמך +attachments.title=הצגת צרופות +attachments_label=צרופות +layers.title=הצגת שכבות (יש ללחוץ לחיצה כפולה כדי ל×פס ×ת כל השכבות למצב ברירת המחדל) +layers_label=שכבות +thumbs.title=הצגת תצוגה מקדימה +thumbs_label=תצוגה מקדימה +current_outline_item.title=מצי×ת פריט תוכן ×”×¢× ×™×™× ×™× ×”× ×•×›×—×™ +current_outline_item_label=פריט תוכן ×”×¢× ×™×™× ×™× ×”× ×•×›×—×™ +findbar.title=חיפוש במסמך +findbar_label=חיפוש + +additional_layers=שכבות נוספות +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=עמוד {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=עמוד {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=תצוגה מקדימה של עמוד {{page}} + +# Find panel button title and messages +find_input.title=חיפוש +find_input.placeholder=חיפוש במסמך… +find_previous.title=מצי×ת המופע ×”×§×•×“× ×©×œ הביטוי +find_previous_label=×§×•×“× +find_next.title=מצי×ת המופע ×”×‘× ×©×œ הביטוי +find_next_label=×”×‘× +find_highlight=הדגשת הכול +find_match_case_label=הת×מת ×ותיות +find_match_diacritics_label=הת×מה די×קריטית +find_entire_word_label=×ž×™×œ×™× ×©×œ×ž×•×ª +find_reached_top=×”×’×™×¢ לר×ש הדף, ממשיך מלמטה +find_reached_bottom=×”×’×™×¢ לסוף הדף, ממשיך מלמעלה +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]=תוצ××” {{current}} מתוך {{total}} +find_match_count[two]={{current}} מתוך {{total}} תוצ×ות +find_match_count[few]={{current}} מתוך {{total}} תוצ×ות +find_match_count[many]={{current}} מתוך {{total}} תוצ×ות +find_match_count[other]={{current}} מתוך {{total}} תוצ×ות +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=יותר מ־{{limit}} תוצ×ות +find_match_count_limit[one]=יותר מתוצ××” ×חת +find_match_count_limit[two]=יותר מ־{{limit}} תוצ×ות +find_match_count_limit[few]=יותר מ־{{limit}} תוצ×ות +find_match_count_limit[many]=יותר מ־{{limit}} תוצ×ות +find_match_count_limit[other]=יותר מ־{{limit}} תוצ×ות +find_not_found=הביטוי ×œ× × ×ž×¦× + +# Error panel labels +error_more_info=מידע נוסף +error_less_info=פחות מידע +error_close=סגירה +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js גרסה {{version}} (בנייה: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=הודעה: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=תוכן מחסנית: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=קובץ: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=שורה: {{line}} + +# Predefined zoom values +page_scale_width=רוחב העמוד +page_scale_fit=הת×מה לעמוד +page_scale_auto=מרחק מתצוגה ×וטומטי +page_scale_actual=גודל ×מיתי +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=בטעינה… +loading_error=×ירעה שגי××” בעת טעינת ×”Ö¾PDF. +invalid_file_error=קובץ PDF ×¤×’×•× ×ו ×œ× ×ª×§×™×Ÿ. +missing_file_error=קובץ PDF חסר. +unexpected_response_error=תגובת שרת ×œ× ×¦×¤×•×™×”. + +rendering_error=×ירעה שגי××” בעת עיבוד הדף. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[הערת {{type}}] +password_label=× × ×œ×”×›× ×™×¡ ×ת הססמה לפתיחת קובץ PDF ×–×”. +password_invalid=ססמה שגויה. × × ×œ× ×¡×•×ª שנית. +password_ok=×ישור +password_cancel=ביטול + +printing_not_supported=×זהרה: הדפסה ××™× ×” נתמכת במלו××” בדפדפן ×–×”. +printing_not_ready=×זהרה: מסמך ×”Ö¾PDF ×œ× × ×˜×¢×Ÿ לחלוטין עד מצב שמ×פשר הדפסה. +web_fonts_disabled=גופני רשת מנוטרלי×: ×œ× × ×™×ª×Ÿ להשתמש בגופני PDF מוטבעי×. + +# Editor +editor_free_text2.title=טקסט +editor_free_text2_label=טקסט +editor_ink2.title=ציור +editor_ink2_label=ציור + +free_text2_default_content=להתחיל להקליד… + +# Editor Parameters +editor_free_text_color=צבע +editor_free_text_size=גודל +editor_ink_color=צבע +editor_ink_thickness=עובי +editor_ink_opacity=×טימות + +# Editor aria +editor_free_text2_aria_label=עורך טקסט +editor_ink2_aria_label=עורך ציור +editor_ink_canvas_aria_label=תמונה שנוצרה על־ידי משתמש diff --git a/page/static/js/web/locale/hi-IN/viewer.properties b/page/static/js/web/locale/hi-IN/viewer.properties new file mode 100644 index 0000000..e296f0a --- /dev/null +++ b/page/static/js/web/locale/hi-IN/viewer.properties @@ -0,0 +1,235 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=पिछला पृषà¥à¤  +previous_label=पिछला +next.title=अगला पृषà¥à¤  +next_label=आगे + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=पृषà¥à¤ : +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} का +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} of {{pagesCount}}) + +zoom_out.title=\u0020छोटा करें +zoom_out_label=\u0020छोटा करें +zoom_in.title=बड़ा करें +zoom_in_label=बड़ा करें +zoom.title=बड़ा-छोटा करें +presentation_mode.title=पà¥à¤°à¤¸à¥à¤¤à¥à¤¤à¤¿ अवसà¥à¤¥à¤¾ में जाà¤à¤ +presentation_mode_label=\u0020पà¥à¤°à¤¸à¥à¤¤à¥à¤¤à¤¿ अवसà¥à¤¥à¤¾ +open_file.title=फ़ाइल खोलें +open_file_label=\u0020खोलें +print.title=छापें +print_label=\u0020छापें +download.title=डाउनलोड +download_label=डाउनलोड +bookmark.title=मौजूदा दृशà¥à¤¯ (नठविंडो में नक़ल लें या खोलें) +bookmark_label=\u0020मौजूदा दृशà¥à¤¯ + +# Secondary toolbar and context menu +tools.title=औज़ार +tools_label=औज़ार +first_page.title=पà¥à¤°à¤¥à¤® पृषà¥à¤  पर जाà¤à¤ +first_page_label=पà¥à¤°à¤¥à¤® पृषà¥à¤  पर जाà¤à¤ +last_page.title=अंतिम पृषà¥à¤  पर जाà¤à¤ +last_page_label=\u0020अंतिम पृषà¥à¤  पर जाà¤à¤ +page_rotate_cw.title=घड़ी की दिशा में घà¥à¤®à¤¾à¤à¤ +page_rotate_cw_label=घड़ी की दिशा में घà¥à¤®à¤¾à¤à¤ +page_rotate_ccw.title=घड़ी की दिशा से उलà¥à¤Ÿà¤¾ घà¥à¤®à¤¾à¤à¤ +page_rotate_ccw_label=\u0020घड़ी की दिशा से उलà¥à¤Ÿà¤¾ घà¥à¤®à¤¾à¤à¤ + +cursor_text_select_tool.title=पाठ चयन उपकरण सकà¥à¤·à¤® करें +cursor_text_select_tool_label=पाठ चयन उपकरण +cursor_hand_tool.title=हसà¥à¤¤ उपकरण सकà¥à¤·à¤® करें +cursor_hand_tool_label=हसà¥à¤¤ उपकरण + +scroll_vertical.title=लंबवत सà¥à¤•à¥à¤°à¥‰à¤²à¤¿à¤‚ग का उपयोग करें +scroll_vertical_label=लंबवत सà¥à¤•à¥à¤°à¥‰à¤²à¤¿à¤‚ग +scroll_horizontal.title=कà¥à¤·à¤¿à¤¤à¤¿à¤œà¤¿à¤¯ सà¥à¤•à¥à¤°à¥‰à¤²à¤¿à¤‚ग का उपयोग करें +scroll_horizontal_label=कà¥à¤·à¤¿à¤¤à¤¿à¤œà¤¿à¤¯ सà¥à¤•à¥à¤°à¥‰à¤²à¤¿à¤‚ग +scroll_wrapped.title=वà¥à¤°à¤¾à¤ªà¥à¤ªà¥‡à¤¡ सà¥à¤•à¥à¤°à¥‰à¤²à¤¿à¤‚ग का उपयोग करें + +spread_none_label=कोई सà¥à¤ªà¥à¤°à¥‡à¤¡ उपलबà¥à¤§ नहीं +spread_odd.title=विषम-कà¥à¤°à¤®à¤¾à¤‚कित पृषà¥à¤ à¥‹à¤‚ से पà¥à¤°à¤¾à¤°à¤‚भ होने वाले पृषà¥à¤  सà¥à¤ªà¥à¤°à¥‡à¤¡ में शामिल हों +spread_odd_label=विषम फैलाव + +# Document properties dialog box +document_properties.title=दसà¥à¤¤à¤¾à¤µà¥‡à¤œà¤¼ विशेषता... +document_properties_label=दसà¥à¤¤à¤¾à¤µà¥‡à¤œà¤¼ विशेषता... +document_properties_file_name=फ़ाइल नाम: +document_properties_file_size=फाइल आकारः +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=शीरà¥à¤·à¤•: +document_properties_author=लेखकः +document_properties_subject=विषय: +document_properties_keywords=कà¥à¤‚जी-शबà¥à¤¦: +document_properties_creation_date=निरà¥à¤®à¤¾à¤£ दिनांक: +document_properties_modification_date=संशोधन दिनांक: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=निरà¥à¤®à¤¾à¤¤à¤¾: +document_properties_producer=PDF उतà¥à¤ªà¤¾à¤¦à¤•: +document_properties_version=PDF संसà¥à¤•à¤°à¤£: +document_properties_page_count=पृषà¥à¤  गिनती: +document_properties_page_size=पृषà¥à¤  आकार: +document_properties_page_size_unit_inches=इंच +document_properties_page_size_unit_millimeters=मिमी +document_properties_page_size_orientation_portrait=पोरà¥à¤Ÿà¥à¤°à¥‡à¤Ÿ +document_properties_page_size_orientation_landscape=लैंडसà¥à¤•à¥‡à¤ª +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=पतà¥à¤° +document_properties_page_size_name_legal=क़ानूनी +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=तीवà¥à¤° वेब वà¥à¤¯à¥‚: +document_properties_linearized_yes=हाठ+document_properties_linearized_no=नहीं +document_properties_close=बंद करें + +print_progress_message=छपाई के लिठदसà¥à¤¤à¤¾à¤µà¥‡à¤œà¤¼ को तैयार किया जा रहा है... +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=रदà¥à¤¦ करें + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=\u0020सà¥à¤²à¤¾à¤‡à¤¡à¤° टॉगल करें +toggle_sidebar_label=सà¥à¤²à¤¾à¤‡à¤¡à¤° टॉगल करें +document_outline.title=दसà¥à¤¤à¤¾à¤µà¥‡à¤œà¤¼ की रूपरेखा दिखाइठ(सारी वसà¥à¤¤à¥à¤“ं को फलने अथवा समेटने के लिठदो बार कà¥à¤²à¤¿à¤• करें) +document_outline_label=दसà¥à¤¤à¤¾à¤µà¥‡à¤œà¤¼ आउटलाइन +attachments.title=संलगà¥à¤¨à¤• दिखायें +attachments_label=संलगà¥à¤¨à¤• +thumbs.title=लघà¥à¤›à¤µà¤¿à¤¯à¤¾à¤ दिखाà¤à¤ +thumbs_label=लघॠछवि +findbar.title=\u0020दसà¥à¤¤à¤¾à¤µà¥‡à¤œà¤¼ में ढूà¤à¤¢à¤¼à¥‡à¤‚ +findbar_label=ढूà¤à¤¢à¥‡à¤‚ + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=पृषà¥à¤  {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=पृषà¥à¤  {{page}} की लघà¥-छवि + +# Find panel button title and messages +find_input.title=ढूà¤à¤¢à¥‡à¤‚ +find_input.placeholder=दसà¥à¤¤à¤¾à¤µà¥‡à¤œà¤¼ में खोजें... +find_previous.title=वाकà¥à¤¯à¤¾à¤‚श की पिछली उपसà¥à¤¥à¤¿à¤¤à¤¿ ढूà¤à¤¢à¤¼à¥‡à¤‚ +find_previous_label=पिछला +find_next.title=वाकà¥à¤¯à¤¾à¤‚श की अगली उपसà¥à¤¥à¤¿à¤¤à¤¿ ढूà¤à¤¢à¤¼à¥‡à¤‚ +find_next_label=अगला +find_highlight=\u0020सभी आलोकित करें +find_match_case_label=मिलान सà¥à¤¥à¤¿à¤¤à¤¿ +find_entire_word_label=संपूरà¥à¤£ शबà¥à¤¦ +find_reached_top=पृषà¥à¤  के ऊपर पहà¥à¤‚च गया, नीचे से जारी रखें +find_reached_bottom=पृषà¥à¤  के नीचे में जा पहà¥à¤à¤šà¤¾, ऊपर से जारी +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{total}} में {{current}} मेल +find_match_count[two]={{total}} में {{current}} मेल +find_match_count[few]={{total}} में {{current}} मेल +find_match_count[many]={{total}} में {{current}} मेल +find_match_count[other]={{total}} में {{current}} मेल +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]={{limit}} से अधिक मेल +find_match_count_limit[one]={{limit}} से अधिक मेल +find_match_count_limit[two]={{limit}} से अधिक मेल +find_match_count_limit[few]={{limit}} से अधिक मेल +find_match_count_limit[many]={{limit}} से अधिक मेल +find_match_count_limit[other]={{limit}} से अधिक मेल +find_not_found=वाकà¥à¤¯à¤¾à¤‚श नहीं मिला + +# Error panel labels +error_more_info=अधिक सूचना +error_less_info=कम सूचना +error_close=बंद करें +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=\u0020संदेश: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=सà¥à¤Ÿà¥ˆà¤•: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=फ़ाइल: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=पंकà¥à¤¤à¤¿: {{line}} +rendering_error=पृषà¥à¤  रेंडरिंग के दौरान तà¥à¤°à¥à¤Ÿà¤¿ आई. + +# Predefined zoom values +page_scale_width=\u0020पृषà¥à¤  चौड़ाई +page_scale_fit=पृषà¥à¤  फिट +page_scale_auto=सà¥à¤µà¤šà¤¾à¤²à¤¿à¤¤ जूम +page_scale_actual=वासà¥à¤¤à¤µà¤¿à¤• आकार +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=PDF लोड करते समय à¤à¤• तà¥à¤°à¥à¤Ÿà¤¿ हà¥à¤ˆ. +invalid_file_error=अमानà¥à¤¯ या भà¥à¤°à¤·à¥à¤Ÿ PDF फ़ाइल. +missing_file_error=\u0020अनà¥à¤ªà¤¸à¥à¤¥à¤¿à¤¤ PDF फ़ाइल. +unexpected_response_error=अपà¥à¤°à¤¤à¥à¤¯à¤¾à¤¶à¤¿à¤¤ सरà¥à¤µà¤° पà¥à¤°à¤¤à¤¿à¤•à¥à¤°à¤¿à¤¯à¤¾. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=\u0020[{{type}} Annotation] +password_label=इस PDF फ़ाइल को खोलने के लिठकृपया कूटशबà¥à¤¦ भरें. +password_invalid=अवैध कूटशबà¥à¤¦, कृपया फिर कोशिश करें. +password_ok=OK +password_cancel=रदà¥à¤¦ करें + +printing_not_supported=चेतावनी: इस बà¥à¤°à¤¾à¤‰à¤œà¤¼à¤° पर छपाई पूरी तरह से समरà¥à¤¥à¤¿à¤¤ नहीं है. +printing_not_ready=चेतावनी: PDF छपाई के लिठपूरी तरह से लोड नहीं है. +web_fonts_disabled=वेब फॉनà¥à¤Ÿà¥à¤¸ निषà¥à¤•à¥à¤°à¤¿à¤¯ हैं: अंतःसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ PDF फॉनà¥à¤Ÿà¤¸ के उपयोग में असमरà¥à¤¥. + diff --git a/page/static/js/web/locale/hr/viewer.properties b/page/static/js/web/locale/hr/viewer.properties new file mode 100644 index 0000000..251eb61 --- /dev/null +++ b/page/static/js/web/locale/hr/viewer.properties @@ -0,0 +1,267 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Prethodna stranica +previous_label=Prethodna +next.title=Sljedeća stranica +next_label=Sljedeća + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Stranica +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=od {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} od {{pagesCount}}) + +zoom_out.title=Umanji +zoom_out_label=Umanji +zoom_in.title=Uvećaj +zoom_in_label=Uvećaj +zoom.title=Zumiranje +presentation_mode.title=Prebaci u prezentacijski naÄin rada +presentation_mode_label=Prezentacijski naÄin rada +open_file.title=Otvori datoteku +open_file_label=Otvori +print.title=IspiÅ¡i +print_label=IspiÅ¡i +download.title=Preuzmi +download_label=Preuzmi +save.title=Spremi +save_label=Spremi +bookmark.title=TrenutaÄni prikaz (kopiraj ili otvori u novom prozoru) +bookmark_label=TrenutaÄni prikaz + +# Secondary toolbar and context menu +tools.title=Alati +tools_label=Alati +first_page.title=Idi na prvu stranicu +first_page_label=Idi na prvu stranicu +last_page.title=Idi na posljednju stranicu +last_page_label=Idi na posljednju stranicu +page_rotate_cw.title=Rotiraj u smjeru kazaljke na satu +page_rotate_cw_label=Rotiraj u smjeru kazaljke na satu +page_rotate_ccw.title=Rotiraj obrnutno od smjera kazaljke na satu +page_rotate_ccw_label=Rotiraj obrnutno od smjera kazaljke na satu + +cursor_text_select_tool.title=Omogući alat za oznaÄavanje teksta +cursor_text_select_tool_label=Alat za oznaÄavanje teksta +cursor_hand_tool.title=Omogući ruÄni alat +cursor_hand_tool_label=RuÄni alat + +scroll_vertical.title=Koristi okomito pomicanje +scroll_vertical_label=Okomito pomicanje +scroll_horizontal.title=Koristi vodoravno pomicanje +scroll_horizontal_label=Vodoravno pomicanje +scroll_wrapped.title=Koristi kontinuirani raspored stranica +scroll_wrapped_label=Kontinuirani raspored stranica + +spread_none.title=Ne izraÄ‘uj duplerice +spread_none_label=PojedinaÄne stranice +spread_odd.title=Izradi duplerice koje poÄinju s neparnim stranicama +spread_odd_label=Neparne duplerice +spread_even.title=Izradi duplerice koje poÄinju s parnim stranicama +spread_even_label=Parne duplerice + +# Document properties dialog box +document_properties.title=Svojstva dokumenta … +document_properties_label=Svojstva dokumenta … +document_properties_file_name=Naziv datoteke: +document_properties_file_size=VeliÄina datoteke: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bajtova) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bajtova) +document_properties_title=Naslov: +document_properties_author=Autor: +document_properties_subject=Predmet: +document_properties_keywords=KljuÄne rijeÄi: +document_properties_creation_date=Datum stvaranja: +document_properties_modification_date=Datum promjene: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Stvaratelj: +document_properties_producer=PDF stvaratelj: +document_properties_version=PDF verzija: +document_properties_page_count=Broj stranica: +document_properties_page_size=Dimenzije stranice: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=uspravno +document_properties_page_size_orientation_landscape=položeno +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Brzi web pregled: +document_properties_linearized_yes=Da +document_properties_linearized_no=Ne +document_properties_close=Zatvori + +print_progress_message=Pripremanje dokumenta za ispis… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Odustani + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Prikaži/sakrij boÄnu traku +toggle_sidebar_notification2.title=Prikazivanje i sklanjanje boÄne trake (dokument sadrži strukturu/privitke/slojeve) +toggle_sidebar_label=Prikaži/sakrij boÄnu traku +document_outline.title=Prikaži strukturu dokumenta (dvostruki klik za rasklapanje/sklapanje svih stavki) +document_outline_label=Struktura dokumenta +attachments.title=Prikaži privitke +attachments_label=Privitci +layers.title=Prikaži slojeve (dvoklik za vraćanje svih slojeva u zadano stanje) +layers_label=Slojevi +thumbs.title=Prikaži minijature +thumbs_label=Minijature +current_outline_item.title=PronaÄ‘i trenutaÄni element strukture +current_outline_item_label=TrenutaÄni element strukture +findbar.title=PronaÄ‘i u dokumentu +findbar_label=PronaÄ‘i + +additional_layers=Dodatni slojevi +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Stranica {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Stranica {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Minijatura stranice {{page}} + +# Find panel button title and messages +find_input.title=PronaÄ‘i +find_input.placeholder=PronaÄ‘i u dokumentu … +find_previous.title=PronaÄ‘i prethodno pojavljivanje ovog izraza +find_previous_label=Prethodno +find_next.title=PronaÄ‘i sljedeće pojavljivanje ovog izraza +find_next_label=Sljedeće +find_highlight=Istankni sve +find_match_case_label=Razlikovanje velikih i malih slova +find_entire_word_label=Cijele rijeÄi +find_reached_top=Dosegnut poÄetak dokumenta, nastavak s kraja +find_reached_bottom=Dosegnut kraj dokumenta, nastavak s poÄetka +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} od {{total}} se podudara +find_match_count[two]={{current}} od {{total}} se podudara +find_match_count[few]={{current}} od {{total}} se podudara +find_match_count[many]={{current}} od {{total}} se podudara +find_match_count[other]={{current}} od {{total}} se podudara +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=ViÅ¡e od {{limit}} podudaranja +find_match_count_limit[one]=ViÅ¡e od {{limit}} podudaranja +find_match_count_limit[two]=ViÅ¡e od {{limit}} podudaranja +find_match_count_limit[few]=ViÅ¡e od {{limit}} podudaranja +find_match_count_limit[many]=ViÅ¡e od {{limit}} podudaranja +find_match_count_limit[other]=ViÅ¡e od {{limit}} podudaranja +find_not_found=Izraz nije pronaÄ‘en + +# Error panel labels +error_more_info=ViÅ¡e informacija +error_less_info=Manje informacija +error_close=Zatvori +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Poruka: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stog: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Datoteka: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Redak: {{line}} + +# Predefined zoom values +page_scale_width=Prilagodi Å¡irini prozora +page_scale_fit=Prilagodi veliÄini prozora +page_scale_auto=Automatsko zumiranje +page_scale_actual=Stvarna veliÄina +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}} % + +# Loading indicator messages +loading=UÄitavanje… +loading_error=DoÅ¡lo je do greÅ¡ke pri uÄitavanju PDF-a. +invalid_file_error=Neispravna ili oÅ¡tećena PDF datoteka. +missing_file_error=Nedostaje PDF datoteka. +unexpected_response_error=NeoÄekivani odgovor poslužitelja. + +rendering_error=DoÅ¡lo je do greÅ¡ke prilikom iscrtavanja stranice. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} BiljeÅ¡ka] +password_label=Za otvoranje ove PDF datoteku upiÅ¡i lozinku. +password_invalid=Neispravna lozinka. PokuÅ¡aj ponovo. +password_ok=U redu +password_cancel=Odustani + +printing_not_supported=Upozorenje: Ovaj preglednik ne podržava u potpunosti ispisivanje. +printing_not_ready=Upozorenje: PDF nije u potpunosti uÄitan za ispis. +web_fonts_disabled=Web fontovi su deaktivirani: nije moguće koristiti ugraÄ‘ene PDF fontove. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst + +free_text2_default_content=PoÄni tipkati … + +# Editor Parameters +editor_free_text_color=Boja +editor_free_text_size=VeliÄina +editor_ink_color=Boja +editor_ink_thickness=Debljina +editor_ink_opacity=Neprozirnost + +# Editor aria +editor_free_text2_aria_label=UreÄ‘ivaÄ teksta diff --git a/page/static/js/web/locale/hsb/viewer.properties b/page/static/js/web/locale/hsb/viewer.properties new file mode 100644 index 0000000..db9c924 --- /dev/null +++ b/page/static/js/web/locale/hsb/viewer.properties @@ -0,0 +1,279 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=PÅ™edchadna strona +previous_label=Wróćo +next.title=PÅ™ichodna strona +next_label=Dale + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Strona +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=z {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} z {{pagesCount}}) + +zoom_out.title=PomjeÅ„Å¡ić +zoom_out_label=PomjeÅ„Å¡ić +zoom_in.title=PowjetÅ¡ić +zoom_in_label=PowjetÅ¡ić +zoom.title=Skalowanje +presentation_mode.title=Do prezentaciskeho modusa pÅ™eńć +presentation_mode_label=Prezentaciski modus +open_file.title=Dataju woÄinić +open_file_label=WoÄinić +print.title=Ćišćeć +print_label=Ćišćeć +download.title=Sćahnyć +download_label=Sćahnyć +save.title=SkÅ‚adować +save_label=SkÅ‚adować +bookmark.title=Aktualny napohlad (kopÄ›rować abo w nowym woknje woÄinić) +bookmark_label=Aktualny napohlad + +bookmark1.title=Aktualna strona (URL z aktualneje strony pokazać) +bookmark1_label=Aktualna strona + +# Secondary toolbar and context menu +tools.title=Nastroje +tools_label=Nastroje +first_page.title=K prÄ›njej stronje +first_page_label=K prÄ›njej stronje +last_page.title=K poslednjej stronje +last_page_label=K poslednjej stronje +page_rotate_cw.title=K smÄ›rej Äasnika wjerćeć +page_rotate_cw_label=K smÄ›rej Äasnika wjerćeć +page_rotate_ccw.title=PÅ™ećiwo smÄ›rej Äasnika wjerćeć +page_rotate_ccw_label=PÅ™ećiwo smÄ›rej Äasnika wjerćeć + +cursor_text_select_tool.title=Nastroj za wubÄ›ranje teksta zmóžnić +cursor_text_select_tool_label=Nastroj za wubÄ›ranje teksta +cursor_hand_tool.title=RuÄny nastroj zmóžnić +cursor_hand_tool_label=RuÄny nastroj + +scroll_page.title=Kulenje strony wužiwać +scroll_page_label=Kulenje strony +scroll_vertical.title=Wertikalne suwanje wužiwać +scroll_vertical_label=Wertikalne suwanje +scroll_horizontal.title=Horicontalne suwanje wužiwać +scroll_horizontal_label=Horicontalne suwanje +scroll_wrapped.title=Postupne suwanje wužiwać +scroll_wrapped_label=Postupne suwanje + +spread_none.title=Strony njezwjazać +spread_none_label=Žana dwójna strona +spread_odd.title=Strony zapoÄinajo z njerunymi stronami zwjazać +spread_odd_label=Njerune strony +spread_even.title=Strony zapoÄinajo z runymi stronami zwjazać +spread_even_label=Rune strony + +# Document properties dialog box +document_properties.title=Dokumentowe kajkosće… +document_properties_label=Dokumentowe kajkosće… +document_properties_file_name=Mjeno dataje: +document_properties_file_size=Wulkosć dataje: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bajtow) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bajtow) +document_properties_title=Titul: +document_properties_author=Awtor: +document_properties_subject=PÅ™edmjet: +document_properties_keywords=KluÄowe sÅ‚owa: +document_properties_creation_date=Datum wutworjenja: +document_properties_modification_date=Datum zmÄ›ny: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Awtor: +document_properties_producer=PDF-zhotowjer: +document_properties_version=PDF-wersija: +document_properties_page_count=LiÄba stronow: +document_properties_page_size=Wulkosć strony: +document_properties_page_size_unit_inches=cól +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=wysoki format +document_properties_page_size_orientation_landscape=prÄ›Äny format +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Web View: +document_properties_linearized_yes=Haj +document_properties_linearized_no=NÄ› +document_properties_close=ZaÄinić + +print_progress_message=Dokument so za ćišćenje pÅ™ihotuje… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=PÅ™etorhnyć + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=BóÄnicu pokazać/schować +toggle_sidebar_notification2.title=BóÄnicu pÅ™epinać (dokument rozrjad/pÅ™iwěški/worÅ¡ty wobsahuje) +toggle_sidebar_label=BóÄnicu pokazać/schować +document_outline.title=Dokumentowy naćisk pokazać (dwójne kliknjenje, zo bychu so wÅ¡Ä› zapiski pokazali/schowali) +document_outline_label=Dokumentowa struktura +attachments.title=PÅ™iwěški pokazać +attachments_label=PÅ™iwěški +layers.title=WorÅ¡ty pokazać (klikńće dwójce, zo byšće wÅ¡Ä› worÅ¡ty na standardny staw wróćo stajiÅ‚) +layers_label=WorÅ¡ty +thumbs.title=Miniatury pokazać +thumbs_label=Miniatury +current_outline_item.title=Aktualny rozrjadowy zapisk pytać +current_outline_item_label=Aktualny rozrjadowy zapisk +findbar.title=W dokumenće pytać +findbar_label=Pytać + +additional_layers=DalÅ¡e worÅ¡ty +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Strona {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Strona {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura strony {{page}} + +# Find panel button title and messages +find_input.title=Pytać +find_input.placeholder=W dokumenće pytać… +find_previous.title=PÅ™edchadne wustupowanje pytanskeho wuraza pytać +find_previous_label=Wróćo +find_next.title=PÅ™ichodne wustupowanje pytanskeho wuraza pytać +find_next_label=Dale +find_highlight=WÅ¡Ä› wuzbÄ›hnyć +find_match_case_label=Wulkopisanje wobkedźbować +find_match_diacritics_label=Diakritiske znamjeÅ¡ka wužiwać +find_entire_word_label=CyÅ‚e sÅ‚owa +find_reached_top=SpoÄatk dokumenta docpÄ›ty, pokroÄuje so z kóncom +find_reached_bottom=Kónc dokument docpÄ›ty, pokroÄuje so ze spoÄatkom +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} z {{total}} wotpowÄ›dnika +find_match_count[two]={{current}} z {{total}} wotpowÄ›dnikow +find_match_count[few]={{current}} z {{total}} wotpowÄ›dnikow +find_match_count[many]={{current}} z {{total}} wotpowÄ›dnikow +find_match_count[other]={{current}} z {{total}} wotpowÄ›dnikow +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Wjace haÄ {{limit}} wotpowÄ›dnikow +find_match_count_limit[one]=Wjace haÄ {{limit}} wotpowÄ›dnik +find_match_count_limit[two]=Wjace haÄ {{limit}} wotpowÄ›dnikaj +find_match_count_limit[few]=Wjace haÄ {{limit}} wotpowÄ›dniki +find_match_count_limit[many]=Wjace haÄ {{limit}} wotpowÄ›dnikow +find_match_count_limit[other]=Wjace haÄ {{limit}} wotpowÄ›dnikow +find_not_found=Pytanski wuraz njeje so namakaÅ‚ + +# Error panel labels +error_more_info=Wjace informacijow +error_less_info=Mjenje informacijow +error_close=ZaÄinić +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Zdźělenka: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Lisćina zawoÅ‚anjow: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Dataja: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linka: {{line}} + +# Predefined zoom values +page_scale_width=Å Ä›rokosć strony +page_scale_fit=Wulkosć strony +page_scale_auto=Awtomatiske skalowanje +page_scale_actual=Aktualna wulkosć +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=ZaÄituje so… + +# Loading indicator messages +loading_error=PÅ™i zaÄitowanju PDF je zmylk wustupiÅ‚. +invalid_file_error=NjepÅ‚aćiwa abo wobÅ¡kodźena PDF-dataja. +missing_file_error=Falowaca PDF-dataja. +unexpected_response_error=NjewoÄakowana serwerowa wotmoÅ‚wa. + +rendering_error=PÅ™i zwobraznjenju strony je zmylk wustupiÅ‚. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Typ pÅ™ispomnjenki: {{type}}] +password_label=Zapodajće hesÅ‚o, zo byšće PDF-dataju woÄiniÅ‚. +password_invalid=NjepÅ‚aćiwe hesÅ‚o. ProÅ¡u spytajće hišće raz. +password_ok=W porjadku +password_cancel=PÅ™etorhnyć + +printing_not_supported=Warnowanje: Ćišćenje so pÅ™ez tutón wobhladowak poÅ‚nje njepodpÄ›ruje. +printing_not_ready=Warnowanje: PDF njeje so za ćišćenje dospoÅ‚nje zaÄitaÅ‚. +web_fonts_disabled=Webpisma su znjemóžnjene: njeje móžno, zasadźene PDF-pisma wužiwać. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=Rysować +editor_ink2_label=Rysować + +free_text2_default_content=ZapoÄńće pisać… + +# Editor Parameters +editor_free_text_color=Barba +editor_free_text_size=Wulkosć +editor_ink_color=Barba +editor_ink_thickness=ToÅ‚stosć +editor_ink_opacity=Opacita + +# Editor aria +editor_free_text2_aria_label=Tekstowy editor +editor_ink2_aria_label=Rysowanski editor +editor_ink_canvas_aria_label=Wobraz wutworjeny wot wužiwarja diff --git a/page/static/js/web/locale/hu/viewer.properties b/page/static/js/web/locale/hu/viewer.properties new file mode 100644 index 0000000..93e5cbd --- /dev/null +++ b/page/static/js/web/locale/hu/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=ElÅ‘zÅ‘ oldal +previous_label=ElÅ‘zÅ‘ +next.title=KövetkezÅ‘ oldal +next_label=Tovább + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Oldal +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=összesen: {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} / {{pagesCount}}) + +zoom_out.title=Kicsinyítés +zoom_out_label=Kicsinyítés +zoom_in.title=Nagyítás +zoom_in_label=Nagyítás +zoom.title=Nagyítás +presentation_mode.title=Váltás bemutató módba +presentation_mode_label=Bemutató mód +open_file.title=Fájl megnyitása +open_file_label=Megnyitás +print.title=Nyomtatás +print_label=Nyomtatás +download.title=Letöltés +download_label=Letöltés +save.title=Mentés +save_label=Mentés +bookmark.title=Jelenlegi nézet (másolás vagy megnyitás új ablakban) +bookmark_label=Aktuális nézet + +bookmark1.title=Jelenlegi oldal (webcím megtekintése a jelenlegi oldalról) +bookmark1_label=Jelenlegi oldal + +# Secondary toolbar and context menu +tools.title=Eszközök +tools_label=Eszközök +first_page.title=Ugrás az elsÅ‘ oldalra +first_page_label=Ugrás az elsÅ‘ oldalra +last_page.title=Ugrás az utolsó oldalra +last_page_label=Ugrás az utolsó oldalra +page_rotate_cw.title=Forgatás az óramutató járásával egyezÅ‘en +page_rotate_cw_label=Forgatás az óramutató járásával egyezÅ‘en +page_rotate_ccw.title=Forgatás az óramutató járásával ellentétesen +page_rotate_ccw_label=Forgatás az óramutató járásával ellentétesen + +cursor_text_select_tool.title=SzövegkijelölÅ‘ eszköz bekapcsolása +cursor_text_select_tool_label=SzövegkijelölÅ‘ eszköz +cursor_hand_tool.title=Kéz eszköz bekapcsolása +cursor_hand_tool_label=Kéz eszköz + +scroll_page.title=Oldalgörgetés használata +scroll_page_label=Oldalgörgetés +scroll_vertical.title=FüggÅ‘leges görgetés használata +scroll_vertical_label=FüggÅ‘leges görgetés +scroll_horizontal.title=Vízszintes görgetés használata +scroll_horizontal_label=Vízszintes görgetés +scroll_wrapped.title=Rácsos elrendezés használata +scroll_wrapped_label=Rácsos elrendezés + +spread_none.title=Ne tapassza össze az oldalakat +spread_none_label=Nincs összetapasztás +spread_odd.title=Lapok összetapasztása, a páratlan számú oldalakkal kezdve +spread_odd_label=Összetapasztás: páratlan +spread_even.title=Lapok összetapasztása, a páros számú oldalakkal kezdve +spread_even_label=Összetapasztás: páros + +# Document properties dialog box +document_properties.title=Dokumentum tulajdonságai… +document_properties_label=Dokumentum tulajdonságai… +document_properties_file_name=Fájlnév: +document_properties_file_size=Fájlméret: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bájt) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bájt) +document_properties_title=Cím: +document_properties_author=SzerzÅ‘: +document_properties_subject=Tárgy: +document_properties_keywords=Kulcsszavak: +document_properties_creation_date=Létrehozás dátuma: +document_properties_modification_date=Módosítás dátuma: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Létrehozta: +document_properties_producer=PDF előállító: +document_properties_version=PDF verzió: +document_properties_page_count=Oldalszám: +document_properties_page_size=Lapméret: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=álló +document_properties_page_size_orientation_landscape=fekvÅ‘ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Jogi információk +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Gyors webes nézet: +document_properties_linearized_yes=Igen +document_properties_linearized_no=Nem +document_properties_close=Bezárás + +print_progress_message=Dokumentum elÅ‘készítése nyomtatáshoz… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Mégse + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Oldalsáv be/ki +toggle_sidebar_notification2.title=Oldalsáv be/ki (a dokumentum vázlatot/mellékleteket/rétegeket tartalmaz) +toggle_sidebar_label=Oldalsáv be/ki +document_outline.title=Dokumentum megjelenítése online (dupla kattintás minden elem kinyitásához/összecsukásához) +document_outline_label=Dokumentumvázlat +attachments.title=Mellékletek megjelenítése +attachments_label=Van melléklet +layers.title=Rétegek megjelenítése (dupla kattintás az összes réteg alapértelmezett állapotra visszaállításához) +layers_label=Rétegek +thumbs.title=Bélyegképek megjelenítése +thumbs_label=Bélyegképek +current_outline_item.title=Jelenlegi vázlatelem megkeresése +current_outline_item_label=Jelenlegi vázlatelem +findbar.title=Keresés a dokumentumban +findbar_label=Keresés + +additional_layers=További rétegek +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark={{page}}. oldal +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title={{page}}. oldal +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}}. oldal bélyegképe + +# Find panel button title and messages +find_input.title=Keresés +find_input.placeholder=Keresés a dokumentumban… +find_previous.title=A kifejezés elÅ‘zÅ‘ elÅ‘fordulásának keresése +find_previous_label=ElÅ‘zÅ‘ +find_next.title=A kifejezés következÅ‘ elÅ‘fordulásának keresése +find_next_label=Tovább +find_highlight=Összes kiemelése +find_match_case_label=Kis- és nagybetűk megkülönböztetése +find_match_diacritics_label=Diakritikus jelek +find_entire_word_label=Teljes szavak +find_reached_top=A dokumentum eleje elérve, folytatás a végétÅ‘l +find_reached_bottom=A dokumentum vége elérve, folytatás az elejétÅ‘l +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} / {{total}} találat +find_match_count[two]={{current}} / {{total}} találat +find_match_count[few]={{current}} / {{total}} találat +find_match_count[many]={{current}} / {{total}} találat +find_match_count[other]={{current}} / {{total}} találat +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Több mint {{limit}} találat +find_match_count_limit[one]=Több mint {{limit}} találat +find_match_count_limit[two]=Több mint {{limit}} találat +find_match_count_limit[few]=Több mint {{limit}} találat +find_match_count_limit[many]=Több mint {{limit}} találat +find_match_count_limit[other]=Több mint {{limit}} találat +find_not_found=A kifejezés nem található + +# Error panel labels +error_more_info=További tudnivalók +error_less_info=Kevesebb információ +error_close=Bezárás +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Ãœzenet: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Verem: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fájl: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Sor: {{line}} + +# Predefined zoom values +page_scale_width=Oldalszélesség +page_scale_fit=Teljes oldal +page_scale_auto=Automatikus nagyítás +page_scale_actual=Valódi méret +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Betöltés… +loading_error=Hiba történt a PDF betöltésekor. +invalid_file_error=Érvénytelen vagy sérült PDF fájl. +missing_file_error=Hiányzó PDF fájl. +unexpected_response_error=Váratlan kiszolgálóválasz. + +rendering_error=Hiba történt az oldal feldolgozása közben. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} megjegyzés] +password_label=Adja meg a jelszót a PDF fájl megnyitásához. +password_invalid=Helytelen jelszó. Próbálja újra. +password_ok=OK +password_cancel=Mégse + +printing_not_supported=Figyelmeztetés: Ez a böngészÅ‘ nem teljesen támogatja a nyomtatást. +printing_not_ready=Figyelmeztetés: A PDF nincs teljesen betöltve a nyomtatáshoz. +web_fonts_disabled=Webes betűkészletek letiltva: nem használhatók a beágyazott PDF betűkészletek. + +# Editor +editor_free_text2.title=Szöveg +editor_free_text2_label=Szöveg +editor_ink2.title=Rajzolás +editor_ink2_label=Rajzolás + +free_text2_default_content=Kezdjen el gépelni… + +# Editor Parameters +editor_free_text_color=Szín +editor_free_text_size=Méret +editor_ink_color=Szín +editor_ink_thickness=Vastagság +editor_ink_opacity=Ãtlátszatlanság + +# Editor aria +editor_free_text2_aria_label=SzövegszerkesztÅ‘ +editor_ink2_aria_label=RajzszerkesztÅ‘ +editor_ink_canvas_aria_label=Felhasználó által készített kép diff --git a/page/static/js/web/locale/hy-AM/viewer.properties b/page/static/js/web/locale/hy-AM/viewer.properties new file mode 100644 index 0000000..a868897 --- /dev/null +++ b/page/static/js/web/locale/hy-AM/viewer.properties @@ -0,0 +1,239 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Õ†Õ¡Õ­Õ¸Ö€Õ¤ Õ§Õ»Õ¨ +previous_label=Õ†Õ¡Õ­Õ¸Ö€Õ¤Õ¨ +next.title=Õ€Õ¡Õ»Õ¸Ö€Õ¤ Õ§Õ»Õ¨ +next_label=Õ€Õ¡Õ»Õ¸Ö€Õ¤Õ¨ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Ô·Õ». +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}}-Õ«Ö\u0020 +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}}-Õ¨ {{pagesCount}})-Õ«Ö + +zoom_out.title=Õ“Õ¸Ö„Ö€Õ¡ÖÕ¶Õ¥Õ¬ +zoom_out_label=Õ“Õ¸Ö„Ö€Õ¡ÖÕ¶Õ¥Õ¬ +zoom_in.title=Ô½Õ¸Õ·Õ¸Ö€Õ¡ÖÕ¶Õ¥Õ¬ +zoom_in_label=Ô½Õ¸Õ·Õ¸Ö€Õ¡ÖÕ¶Õ¥Õ¬ +zoom.title=Õ„Õ¡Õ½Õ·Õ¿Õ¡Õ¢Õ¨\u0020 +presentation_mode.title=Ô±Õ¶ÖÕ¶Õ¥Õ¬ Õ†Õ¥Ö€Õ¯Õ¡ÕµÕ¡ÖÕ´Õ¡Õ¶ Õ¥Õ²Õ¡Õ¶Õ¡Õ¯Õ«Õ¶ +presentation_mode_label=Õ†Õ¥Ö€Õ¯Õ¡ÕµÕ¡ÖÕ´Õ¡Õ¶ Õ¥Õ²Õ¡Õ¶Õ¡Õ¯ +open_file.title=Ô²Õ¡ÖÕ¥Õ¬ Õ¶Õ«Õ·Ö„ +open_file_label=Ô²Õ¡ÖÕ¥Õ¬ +print.title=ÕÕºÕ¥Õ¬ +print_label=ÕÕºÕ¥Õ¬ +download.title=Ô²Õ¥Õ¼Õ¶Õ¥Õ¬ +download_label=Ô²Õ¥Õ¼Õ¶Õ¥Õ¬ +bookmark.title=Ô¸Õ¶Õ©Õ¡ÖÕ«Õ¯ Õ¿Õ¥Õ½Ö„Õ¸Õ¾ (ÕºÕ¡Õ¿Õ³Õ¥Õ¶Õ¥Õ¬ Õ¯Õ¡Õ´ Õ¢Õ¡ÖÕ¥Õ¬ Õ¶Õ¸Ö€ ÕºÕ¡Õ¿Õ¸Ö‚Õ°Õ¡Õ¶Õ¸Ö‚Õ´) +bookmark_label=Ô¸Õ¶Õ©Õ¡ÖÕ«Õ¯ Õ¿Õ¥Õ½Ö„Õ¨ + +# Secondary toolbar and context menu +tools.title=Ô³Õ¸Ö€Õ®Õ«Ö„Õ¶Õ¥Ö€ +tools_label=Ô³Õ¸Ö€Õ®Õ«Ö„Õ¶Õ¥Ö€ +first_page.title=Ô±Õ¶ÖÕ¶Õ¥Õ¬ Õ¡Õ¼Õ¡Õ»Õ«Õ¶ Õ§Õ»Õ«Õ¶ +first_page_label=Ô±Õ¶ÖÕ¶Õ¥Õ¬ Õ¡Õ¼Õ¡Õ»Õ«Õ¶ Õ§Õ»Õ«Õ¶ +last_page.title=Ô±Õ¶ÖÕ¶Õ¥Õ¬ Õ¾Õ¥Ö€Õ»Õ«Õ¶ Õ§Õ»Õ«Õ¶ +last_page_label=Ô±Õ¶ÖÕ¶Õ¥Õ¬ Õ¾Õ¥Ö€Õ»Õ«Õ¶ Õ§Õ»Õ«Õ¶ +page_rotate_cw.title=ÕŠÕ¿Õ¿Õ¥Õ¬ Õ¨Õ½Õ¿ ÕªÕ¡Õ´Õ¡ÖÕ¸Ö‚ÕµÖÕ« Õ½Õ¬Õ¡Ö„Õ« +page_rotate_cw_label=ÕŠÕ¿Õ¿Õ¥Õ¬ Õ¨Õ½Õ¿ ÕªÕ¡Õ´Õ¡ÖÕ¸Ö‚ÕµÖÕ« Õ½Õ¬Õ¡Ö„Õ« +page_rotate_ccw.title=ÕŠÕ¿Õ¿Õ¥Õ¬ Õ°Õ¡Õ¯Õ¡Õ¼Õ¡Õ¯ ÕªÕ¡Õ´Õ¡ÖÕ¸Ö‚ÕµÖÕ« Õ½Õ¬Õ¡Ö„Õ« +page_rotate_ccw_label=ÕŠÕ¿Õ¿Õ¥Õ¬ Õ°Õ¡Õ¯Õ¡Õ¼Õ¡Õ¯ ÕªÕ¡Õ´Õ¡ÖÕ¸Ö‚ÕµÖÕ« Õ½Õ¬Õ¡Ö„Õ« + +cursor_text_select_tool.title=Õ„Õ«Õ¡ÖÕ¶Õ¥Õ¬ Õ£Ö€Õ¸Ö‚ÕµÕ© Õ¨Õ¶Õ¿Ö€Õ¥Õ¬Õ¸Ö‚ Õ£Õ¸Ö€Õ®Õ«Ö„Õ¨ +cursor_text_select_tool_label=Ô³Ö€Õ¸Ö‚ÕµÕ©Õ¨ Õ¨Õ¶Õ¿Ö€Õ¥Õ¬Õ¸Ö‚ Õ£Õ¸Ö€Õ®Õ«Ö„ +cursor_hand_tool.title=Õ„Õ«Õ¡ÖÕ¶Õ¥Õ¬ ÕÕ¥Õ¼Ö„Õ« Õ£Õ¸Ö€Õ®Õ«Ö„Õ¨ +cursor_hand_tool_label=ÕÕ¥Õ¼Ö„Õ« Õ£Õ¸Ö€Õ®Õ«Ö„ + +scroll_vertical.title=Õ•Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Õ¬ Õ¸Ö‚Õ²Õ²Õ¡Õ°Õ¡ÕµÕ¡Ö Õ¸Õ¬Õ¸Ö€Õ¸Ö‚Õ´ +scroll_vertical_label=ÕˆÖ‚Õ²Õ²Õ¡Õ°Õ¡ÕµÕ¡Ö Õ¸Õ¬Õ¸Ö€Õ¸Ö‚Õ´ +scroll_horizontal.title=Õ•Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Õ¬ Õ°Õ¸Ö€Õ«Õ¦Õ¸Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¸Õ¬Õ¸Ö€Õ¸Ö‚Õ´ +scroll_horizontal_label=Õ€Õ¸Ö€Õ«Õ¦Õ¸Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¸Õ¬Õ¸Ö€Õ¸Ö‚Õ´ +scroll_wrapped.title=Õ•Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Õ¬ ÖƒÕ¡Õ©Õ¡Õ©Õ¾Õ¡Õ® Õ¸Õ¬Õ¸Ö€Õ¸Ö‚Õ´ +scroll_wrapped_label=Õ“Õ¡Õ©Õ¡Õ©Õ¾Õ¡Õ® Õ¸Õ¬Õ¸Ö€Õ¸Ö‚Õ´ + +spread_none.title=Õ„Õ« Õ´Õ«Õ¡ÖÕ¥Ö„ Õ§Õ»Õ« Õ¾Õ¥Ö€Õ¡Õ®Õ¡Õ®Õ¯Õ¥Ö€Õ«Õ¶ +spread_none_label=Õ‰Õ¯Õ¡ Õ¾Õ¥Ö€Õ¡Õ®Õ¡Õ®Õ¯Õ¥Ö€ +spread_odd.title=Õ„Õ«Õ¡ÖÕ¥Ö„ Õ§Õ»Õ« Õ¾Õ¥Ö€Õ¡Õ®Õ¡Õ®Õ¯Õ¥Ö€Õ«Õ¶ Õ½Õ¯Õ½Õ¥Õ¬Õ¸Õ¾Õ Õ¯Õ¥Õ¶Õ¿ Õ°Õ¡Õ´Õ¡Ö€Õ¡Õ¯Õ¡Õ¬Õ¾Õ¡Õ® Õ§Õ»Õ¥Ö€Õ¸Õ¾ +spread_odd_label=Ô¿Õ¥Õ¶Õ¿ Õ¾Õ¥Ö€Õ¡Õ®Õ¡Õ®Õ¯Õ¥Ö€ +spread_even.title=Õ„Õ«Õ¡ÖÕ¥Ö„ Õ§Õ»Õ« Õ¾Õ¥Ö€Õ¡Õ®Õ¡Õ®Õ¯Õ¥Ö€Õ«Õ¶ Õ½Õ¯Õ½Õ¥Õ¬Õ¸Õ¾Õ Õ¦Õ¸Ö‚ÕµÕ£ Õ°Õ¡Õ´Õ¡Ö€Õ¡Õ¯Õ¡Õ¬Õ¾Õ¡Õ® Õ§Õ»Õ¥Ö€Õ¸Õ¾ +spread_even_label=Ô¶Õ¸Ö‚ÕµÕ£ Õ¾Õ¥Ö€Õ¡Õ®Õ¡Õ®Õ¯Õ¥Ö€ + +# Document properties dialog box +document_properties.title=Õ“Õ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ« հատկությունները… +document_properties_label=Õ“Õ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ« հատկությունները… +document_properties_file_name=Õ†Õ«Õ·Ö„Õ« Õ¡Õ¶Õ¸Ö‚Õ¶Õ¨. +document_properties_file_size=Õ†Õ«Õ·Ö„ Õ¹Õ¡ÖƒÕ¨. +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} Ô¿Ô² ({{size_b}} Õ¢Õ¡ÕµÕ©) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} Õ„Ô² ({{size_b}} Õ¢Õ¡ÕµÕ©) +document_properties_title=ÕŽÕ¥Ö€Õ¶Õ¡Õ£Õ«Ö€. +document_properties_author=Հեղինակ․ +document_properties_subject=ÕŽÕ¥Ö€Õ¶Õ¡Õ£Õ«Ö€. +document_properties_keywords=Õ€Õ«Õ´Õ¶Õ¡Õ¢Õ¡Õ¼. +document_properties_creation_date=ÕÕ¿Õ¥Õ²Õ®Õ¥Õ¬Õ¸Ö‚ Õ¡Õ´Õ½Õ¡Õ©Õ«Õ¾Õ¨. +document_properties_modification_date=Õ“Õ¸ÖƒÕ¸Õ­Õ¥Õ¬Õ¸Ö‚ Õ¡Õ´Õ½Õ¡Õ©Õ«Õ¾Õ¨. +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=ÕÕ¿Õ¥Õ²Õ®Õ¸Õ². +document_properties_producer=PDF-Õ« Õ°Õ¥Õ²Õ«Õ¶Õ¡Õ¯Õ¨. +document_properties_version=PDF-Õ« Õ¿Õ¡Ö€Õ¢Õ¥Ö€Õ¡Õ¯Õ¨. +document_properties_page_count=Ô·Õ»Õ¥Ö€Õ« Ö„Õ¡Õ¶Õ¡Õ¯Õ¨. +document_properties_page_size=Ô·Õ»Õ« Õ¹Õ¡ÖƒÕ¨. +document_properties_page_size_unit_inches=Õ¸Ö‚Õ´ +document_properties_page_size_unit_millimeters=Õ´Õ´ +document_properties_page_size_orientation_portrait=Õ¸Ö‚Õ²Õ²Õ¡Õ±Õ«Õ£ +document_properties_page_size_orientation_landscape=Õ°Õ¸Ö€Õ«Õ¦Õ¸Õ¶Õ¡Õ¯Õ¡Õ¶ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Õ†Õ¡Õ´Õ¡Õ¯ +document_properties_page_size_name_legal=Õ•Ö€Õ«Õ¶Õ¡Õ¯Õ¡Õ¶ +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Ô±Ö€Õ¡Õ£ Õ¾Õ¥Õ¢ դիտում․ +document_properties_linearized_yes=Ô±ÕµÕ¸ +document_properties_linearized_no=ÕˆÕ¹ +document_properties_close=Õ“Õ¡Õ¯Õ¥Õ¬ + +print_progress_message=Õ†Õ¡Õ­Õ¡ÕºÕ¡Õ¿Ö€Õ¡Õ½Õ¿Õ¸Ö‚Õ´ Õ§ ÖƒÕ¡Õ½Õ¿Õ¡Õ©Õ¸Ö‚Õ²Õ©Õ¨ Õ¿ÕºÕ¥Õ¬Õ¸Ö‚Õ¶... +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Õ‰Õ¥Õ²Õ¡Ö€Õ¯Õ¥Õ¬ + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Ô²Õ¡ÖÕ¥Õ¬/Õ“Õ¡Õ¯Õ¥Õ¬ Ô¿Õ¸Õ²Õ¡ÕµÕ«Õ¶ Õ¾Õ¡Õ°Õ¡Õ¶Õ¡Õ¯Õ¨ +toggle_sidebar_label=Ô²Õ¡ÖÕ¥Õ¬/Õ“Õ¡Õ¯Õ¥Õ¬ Ô¿Õ¸Õ²Õ¡ÕµÕ«Õ¶ Õ¾Õ¡Õ°Õ¡Õ¶Õ¡Õ¯Õ¨ +document_outline.title=Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ ÖƒÕ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ« Õ¸Ö‚Ö€Õ¾Õ¡Õ£Õ«Õ®Õ¨ (Õ¯Ö€Õ¯Õ¶Õ¡Õ¯Õ« Õ½Õ¥Õ²Õ´Õ¥Ö„Õ Õ´Õ«Õ¡Õ¾Õ¸Ö€Õ¶Õ¥Ö€Õ¨ Õ¨Õ¶Õ¤Õ¡Ö€Õ±Õ¡Õ¯Õ¥Õ¬Õ¸Ö‚/Õ¯Õ¸Õ®Õ¯Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€) +document_outline_label=Õ“Õ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ« Õ¢Õ¸Õ¾Õ¡Õ¶Õ¤Õ¡Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ +attachments.title=Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¯ÖÕ¸Ö€Õ¤Õ¶Õ¥Ö€Õ¨ +attachments_label=Ô¿ÖÕ¸Ö€Õ¤Õ¶Õ¥Ö€ +thumbs.title=Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ„Õ¡Õ¶Ö€Õ¡ÕºÕ¡Õ¿Õ¯Õ¥Ö€Õ¨ +thumbs_label=Õ„Õ¡Õ¶Ö€Õ¡ÕºÕ¡Õ¿Õ¯Õ¥Ö€Õ¨ +findbar.title=Ô³Õ¿Õ¶Õ¥Õ¬ ÖƒÕ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ¸Ö‚Õ´ +findbar_label=ÕˆÖ€Õ¸Õ¶Õ¸Ö‚Õ´ + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Ô·Õ»Õ¨ {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Ô·Õ»Õ« Õ´Õ¡Õ¶Ö€Õ¡ÕºÕ¡Õ¿Õ¯Õ¥Ö€Õ¨ {{page}} + +# Find panel button title and messages +find_input.title=ÕˆÖ€Õ¸Õ¶Õ¸Ö‚Õ´ +find_input.placeholder=Ô³Õ¿Õ¶Õ¥Õ¬ ÖƒÕ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ¸Ö‚Õ´... +find_previous.title=Ô³Õ¿Õ¶Õ¥Õ¬ Õ¡Õ¶Ö€Õ¡Õ°Õ¡ÕµÕ¿Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¶Õ¡Õ­Õ¸Ö€Õ¤ Õ°Õ¡Õ¶Õ¤Õ«ÕºÕ¸Ö‚Õ´Õ¨ +find_previous_label=Õ†Õ¡Õ­Õ¸Ö€Õ¤Õ¨ +find_next.title=Ô³Õ¿Õ«Ö€ Õ¡Ö€Õ¿Õ¡Õ°Õ¡ÕµÕ¿Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ¡Õ»Õ¸Ö€Õ¤ Õ°Õ¡Õ¶Õ¤Õ«ÕºÕ¸Ö‚Õ´Õ¨ +find_next_label=Õ€Õ¡Õ»Õ¸Ö€Õ¤Õ¨ +find_highlight=Ô³Õ¸Ö‚Õ¶Õ¡Õ¶Õ·Õ¥Õ¬ Õ¢Õ¸Õ¬Õ¸Ö€Õ¨ +find_match_case_label=Õ„Õ¥Õ®(ÖƒÕ¸Ö„Ö€)Õ¡Õ¿Õ¡Õ¼ Õ°Õ¡Õ·Õ¾Õ« Õ¡Õ¼Õ¶Õ¥Õ¬ +find_entire_word_label=Ô±Õ´Õ¢Õ¸Õ²Õ» Õ¢Õ¡Õ¼Õ¥Ö€Õ¨ +find_reached_top=Õ€Õ¡Õ½Õ¥Õ¬ Õ¥Ö„ ÖƒÕ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ« Õ¾Õ¥Ö€Ö‡Õ«Õ¶, Õ¯Õ·Õ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¾Õ« Õ¶Õ¥Ö€Ö„Ö‡Õ«Ö +find_reached_bottom=Õ€Õ¡Õ½Õ¥Õ¬ Õ¥Ö„ ÖƒÕ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ« Õ¾Õ¥Ö€Õ»Õ«Õ¶, Õ¯Õ·Õ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¾Õ« Õ¾Õ¥Ö€Ö‡Õ«Ö +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ«(Õ¨Õ¶Õ¤Õ°Õ¡Õ¶Õ¸Ö‚Ö€) ]} +find_match_count[one]={{current}} {{total}}-Õ« Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ«Ö +find_match_count[two]={{current}} {{total}}-Õ« Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ«Ö +find_match_count[few]={{current}} {{total}}-Õ« Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ«Ö +find_match_count[many]={{current}} {{total}}-Õ« Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ«Ö +find_match_count[other]={{current}} {{total}}-Õ« Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ«Ö +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ« (Õ½Õ¡Õ°Õ´Õ¡Õ¶Õ¨) ]} +find_match_count_limit[zero]=Ô±Õ¾Õ¥Õ¬Õ«Õ¶ Ö„Õ¡Õ¶ {{limit}} Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ +find_match_count_limit[one]=Ô±Õ¾Õ¥Õ¬Õ«Õ¶ Ö„Õ¡Õ¶ {{limit}} Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¨ +find_match_count_limit[two]=Ô±Õ¾Õ¥Õ¬Õ«Õ¶ Ö„Õ¡Õ¶ {{limit}} Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¶Õ¥Ö€ +find_match_count_limit[few]=Ô±Õ¾Õ¥Õ¬Õ«Õ¶ Ö„Õ¡Õ¶ {{limit}} Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¶Õ¥Ö€ +find_match_count_limit[many]=Ô±Õ¾Õ¥Õ¬Õ«Õ¶ Ö„Õ¡Õ¶ {{limit}} Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¶Õ¥Ö€ +find_match_count_limit[other]=Ô±Õ¾Õ¥Õ¬Õ«Õ¶ Ö„Õ¡Õ¶ {{limit}} Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¶Õ¥Ö€ +find_not_found=Ô±Ö€Õ¿Õ¡Õ°Õ¡ÕµÕ¿Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¹Õ£Õ¿Õ¶Õ¾Õ¥Ö + +# Error panel labels +error_more_info=Ô±Õ¾Õ¥Õ¬Õ« Õ·Õ¡Õ¿ Õ¿Õ¥Õ²Õ¥Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ +error_less_info=Õ”Õ«Õ¹ Õ¿Õ¥Õ²Õ¥Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ +error_close=Õ“Õ¡Õ¯Õ¥Õ¬ +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (Õ¯Õ¡Õ¼Õ¸Ö‚ÖÕ¸Ö‚Õ´Õ¨. {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Ô³Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨. {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Õ‡Õ¥Õ²Õ». {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Õ–Õ¡ÕµÕ¬. {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=ÕÕ¸Õ²Õ¨. {{line}} +rendering_error=ÕÕ­Õ¡Õ¬Õ Õ§Õ»Õ¨ Õ½Õ¿Õ¥Õ²Õ®Õ¥Õ¬Õ«Õ½: + +# Predefined zoom values +page_scale_width=Ô·Õ»Õ« Õ¬Õ¡ÕµÕ¶Ö„Õ¨ +page_scale_fit=ÕÕ£Õ¥Õ¬ Õ§Õ»Õ¨ +page_scale_auto=Ô»Õ¶Ö„Õ¶Õ¡Õ·Õ­Õ¡Õ¿ +page_scale_actual=Ô»Ö€Õ¡Õ¯Õ¡Õ¶ Õ¹Õ¡ÖƒÕ¨ +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=ÕÕ­Õ¡Õ¬Õ PDF Ö†Õ¡ÕµÕ¬Õ¨ Õ¢Õ¡ÖÕ¥Õ¬Õ«Õ½Ö‰ +invalid_file_error=ÕÕ­Õ¡Õ¬ Õ¯Õ¡Õ´ Õ¾Õ¶Õ¡Õ½Õ¾Õ¡Õ® PDF Ö†Õ¡ÕµÕ¬: +missing_file_error=PDF Ö†Õ¡ÕµÕ¬Õ¨ Õ¢Õ¡ÖÕ¡Õ¯Õ¡ÕµÕ¸Ö‚Õ´ Õ§: +unexpected_response_error=ÕÕºÕ¡Õ½Õ¡Ö€Õ¯Õ«Õ¹Õ« Õ¡Õ¶Õ½ÕºÕ¡Õ½Õ¥Õ¬Õ« ÕºÕ¡Õ¿Õ¡Õ½Õ­Õ¡Õ¶: + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Ô¾Õ¡Õ¶Õ¸Õ©Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶] +password_label=Õ„Õ¸Ö‚Õ¿Ö„Õ¡Õ£Ö€Õ¥Ö„ PDF-Õ« Õ£Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Õ¼Õ¨: +password_invalid=Ô³Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Õ¼Õ¨ Õ½Õ­Õ¡Õ¬ Õ§: Ô¿Ö€Õ¯Õ«Õ¶ ÖƒÕ¸Ö€Õ±Õ¥Ö„: +password_ok=Ô¼Õ¡Õ¾ +password_cancel=Õ‰Õ¥Õ²Õ¡Ö€Õ¯Õ¥Õ¬ + +printing_not_supported=Ô¶Õ£Õ¸Ö‚Õ·Õ¡ÖÕ¸Ö‚Õ´. ÕÕºÕ¥Õ¬Õ¨ Õ¡Õ´Õ¢Õ¸Õ²Õ»Õ¸Ö‚Õ©ÕµÕ¡Õ´Õ¢ Õ¹Õ« Õ¡Õ»Õ¡Õ¯ÖÕ¾Õ¸Ö‚Õ´ Õ¤Õ«Õ¿Õ¡Ö€Õ¯Õ«Õ¹Õ« Õ¯Õ¸Õ²Õ´Õ«ÖÖ‰ +printing_not_ready=Ô¶Õ£Õ¸Ö‚Õ·Õ¡ÖÕ¸Ö‚Õ´. PDF-Õ¨ Õ¡Õ´Õ¢Õ¸Õ²Õ»Õ¸Ö‚Õ©ÕµÕ¡Õ´Õ¢ Õ¹Õ« Õ¢Õ¥Õ¼Õ¶Õ¡Õ¾Õ¸Ö€Õ¾Õ¥Õ¬ Õ¿ÕºÕ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€: +web_fonts_disabled=ÕŽÕ¥Õ¢-Õ¿Õ¡Õ¼Õ¡Õ¿Õ¥Õ½Õ¡Õ¯Õ¶Õ¥Ö€Õ¨ Õ¡Õ¶Õ»Õ¡Õ¿Õ¾Õ¡Õ® Õ¥Õ¶. Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ§ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Õ¬ Õ¶Õ¥Ö€Õ¯Õ¡Õ¼Õ¸Ö‚ÖÕ¾Õ¡Õ® PDF Õ¿Õ¡Õ¼Õ¡Õ¿Õ¥Õ½Õ¡Õ¯Õ¶Õ¥Ö€Õ¨: + diff --git a/page/static/js/web/locale/hye/viewer.properties b/page/static/js/web/locale/hye/viewer.properties new file mode 100644 index 0000000..40194da --- /dev/null +++ b/page/static/js/web/locale/hye/viewer.properties @@ -0,0 +1,252 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Õ†Õ¡Õ­Õ¸Ö€Õ¤ Õ§Õ» +previous_label=Õ†Õ¡Õ­Õ¸Ö€Õ¤Õ¨ +next.title=Õ…Õ¡Õ»Õ¸Ö€Õ¤ Õ§Õ» +next_label=Õ…Õ¡Õ»Õ¸Ö€Õ¤Õ¨ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Õ§Õ» +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}}-Õ«Ö\u0020 +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}}-Õ¨ {{pagesCount}})-Õ«Ö + +zoom_out.title=Õ“Õ¸Ö„Ö€Õ¡ÖÕ¶Õ¥Õ¬ +zoom_out_label=Õ“Õ¸Ö„Ö€Õ¡ÖÕ¶Õ¥Õ¬ +zoom_in.title=Ô½Õ¸Õ·Õ¸Ö€Õ¡ÖÕ¶Õ¥Õ¬ +zoom_in_label=Ô½Õ¸Õ·Õ¸Ö€Õ¡ÖÕ¶Õ¥Õ¬ +zoom.title=Ô½Õ¸Õ·Õ¸Ö€Õ¡ÖÕ¸Ö‚Õ´ +presentation_mode.title=Ô±Õ¶ÖÕ¶Õ¥Õ¬ Õ¶Õ¥Ö€Õ¯Õ¡ÕµÕ¡ÖÕ´Õ¡Õ¶ Õ¥Õ²Õ¡Õ¶Õ¡Õ¯Õ«Õ¶ +presentation_mode_label=Õ†Õ¥Ö€Õ¯Õ¡ÕµÕ¡ÖÕ´Õ¡Õ¶ Õ¥Õ²Õ¡Õ¶Õ¡Õ¯ +open_file.title=Ô²Õ¡ÖÕ¥Õ¬ Õ¶Õ«Õ·Ö„Õ¨ +open_file_label=Ô²Õ¡ÖÕ¥Õ¬ +print.title=ÕÕºÕ¥Õ¬ +print_label=ÕÕºÕ¥Õ¬ +download.title=Ô²Õ¥Õ¼Õ¶Õ¥Õ¬ +download_label=Ô²Õ¥Õ¼Õ¶Õ¥Õ¬ +bookmark.title=Ô¸Õ¶Õ©Õ¡ÖÕ«Õ¯ Õ¿Õ¥Õ½Ö„Õ¸Õ¾ (ÕºÕ¡Õ¿Õ³Õ§Õ¶Õ¥Õ¬ Õ¯Õ¡Õ´ Õ¢Õ¡ÖÕ¥Õ¬ Õ¶Õ¸Ö€ ÕºÕ¡Õ¿Õ¸Ö‚Õ°Õ¡Õ¶Õ¸Ö‚Õ´) +bookmark_label=Ô¸Õ¶Õ©Õ¡ÖÕ«Õ¯ Õ¿Õ¥Õ½Ö„ + +# Secondary toolbar and context menu +tools.title=Ô³Õ¸Ö€Õ®Õ«Ö„Õ¶Õ¥Ö€ +tools_label=Ô³Õ¸Ö€Õ®Õ«Ö„Õ¶Õ¥Ö€ +first_page.title=Ô³Õ¶Õ¡Õ¬ Õ¤Õ§ÕºÕ« Õ¡Õ¼Õ¡Õ»Õ«Õ¶ Õ§Õ» +first_page_label=Ô³Õ¶Õ¡Õ¬ Õ¤Õ§ÕºÕ« Õ¡Õ¼Õ¡Õ»Õ«Õ¶ Õ§Õ» +last_page.title=Ô³Õ¶Õ¡Õ¬ Õ¤Õ§ÕºÕ« Õ¾Õ¥Ö€Õ»Õ«Õ¶ Õ§Õ» +last_page_label=Ô³Õ¶Õ¡Õ¬ Õ¤Õ§ÕºÕ« Õ¾Õ¥Ö€Õ»Õ«Õ¶ Õ§Õ» +page_rotate_cw.title=ÕŠÕ¿Õ¿Õ¥Õ¬ ÕªÕ¡Õ´Õ¡ÖÕ¸ÕµÖÕ« Õ½Õ¬Õ¡Ö„Õ« Õ¸Ö‚Õ²Õ²Õ¸Ö‚Õ©Õ¥Õ¡Õ´Õ¢ +page_rotate_cw_label=ÕŠÕ¿Õ¿Õ¥Õ¬ ÕªÕ¡Õ´Õ¡ÖÕ¸ÕµÖÕ« Õ½Õ¬Õ¡Ö„Õ« Õ¸Ö‚Õ²Õ²Õ¸Ö‚Õ©Õ¥Õ¡Õ´Õ¢ +page_rotate_ccw.title=ÕŠÕ¿Õ¿Õ¥Õ¬ ÕªÕ¡Õ´Õ¡ÖÕ¸ÕµÖÕ« Õ½Õ¬Õ¡Ö„Õ« Õ°Õ¡Õ¯Õ¡Õ¼Õ¡Õ¯ Õ¸Ö‚Õ²Õ²Õ¸Ö‚Õ©Õ¥Õ¡Õ´Õ¢ +page_rotate_ccw_label=ÕŠÕ¿Õ¿Õ¥Õ¬ ÕªÕ¡Õ´Õ¡ÖÕ¸ÕµÖÕ« Õ½Õ¬Õ¡Ö„Õ« Õ°Õ¡Õ¯Õ¡Õ¼Õ¡Õ¯ Õ¸Ö‚Õ²Õ²Õ¸Ö‚Õ©Õ¥Õ¡Õ´Õ¢ + +cursor_text_select_tool.title=Õ„Õ«Õ¡ÖÕ¶Õ¥Õ¬ Õ£Ö€Õ¸ÕµÕ© Õ¨Õ¶Õ¿Ö€Õ¥Õ¬Õ¸Ö‚ Õ£Õ¸Ö€Õ®Õ«Ö„Õ¨ +cursor_text_select_tool_label=Ô³Ö€Õ¸Ö‚Õ¡Õ®Ö„ Õ¨Õ¶Õ¿Ö€Õ¥Õ¬Õ¸Ö‚ Õ£Õ¸Ö€Õ®Õ«Ö„ +cursor_hand_tool.title=Õ„Õ«Õ¡ÖÕ¶Õ¥Õ¬ Õ±Õ¥Õ¼Ö„Õ« Õ£Õ¸Ö€Õ®Õ«Ö„Õ¨ +cursor_hand_tool_label=ÕÕ¥Õ¼Ö„Õ« Õ£Õ¸Ö€Õ®Õ«Ö„ + +scroll_page.title=Ô±Ö‚Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Õ¬ Õ§Õ»Õ« Õ¸Õ¬Õ¸Ö€Õ¸Ö‚Õ´ +scroll_page_label=Ô·Õ»Õ« Õ¸Õ¬Õ¸Ö€Õ¸Ö‚Õ´ +scroll_vertical.title=Ô±Ö‚Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Õ¬ Õ¸Ö‚Õ²Õ²Õ¡Õ°Õ¡ÕµÕ¥Õ¡Ö Õ¸Õ¬Õ¸Ö€Õ¸Ö‚Õ´ +scroll_vertical_label=ÕˆÖ‚Õ²Õ²Õ¡Õ°Õ¡ÕµÕ¥Õ¡Ö Õ¸Õ¬Õ¸Ö€Õ¸Ö‚Õ´ +scroll_horizontal.title=Ô±Ö‚Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Õ¬ Õ°Õ¸Ö€Õ«Õ¦Õ¸Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¸Õ¬Õ¸Ö€Õ¸Ö‚Õ´ +scroll_horizontal_label=Õ€Õ¸Ö€Õ«Õ¦Õ¸Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¸Õ¬Õ¸Ö€Õ¸Ö‚Õ´ +scroll_wrapped.title=Ô±Ö‚Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Õ¬ ÖƒÕ¡Õ©Õ¡Õ©Õ¸Ö‚Õ¡Õ® Õ¸Õ¬Õ¸Ö€Õ¸Ö‚Õ´ +scroll_wrapped_label=Õ“Õ¡Õ©Õ¡Õ©Õ¸Ö‚Õ¡Õ® Õ¸Õ¬Õ¸Ö€Õ¸Ö‚Õ´ + +spread_none.title=Õ„Õ« Õ´Õ«Õ¡ÖÕ§Ö„ Õ§Õ»Õ« Õ¯Õ¸Õ¶Õ¿Õ¥Ö„Õ½Õ¿Õ¸Ö‚Õ´ +spread_none_label=Õ‰Õ¯Õ¡Õµ Õ¯Õ¸Õ¶Õ¿Õ¥Ö„Õ½Õ¿ +spread_odd.title=Õ„Õ«Õ¡ÖÕ§Ö„ Õ§Õ»Õ« Õ¯Õ¸Õ¶Õ¿Õ¥Ö„Õ½Õ¿Õ«Õ¶ Õ½Õ¯Õ½Õ¥Õ¬Õ¸Õ¾Õ Õ¯Õ¥Õ¶Õ¿ Õ°Õ¡Õ´Õ¡Ö€Õ¡Õ¯Õ¡Õ¬Õ¸Ö‚Õ¡Õ® Õ§Õ»Õ¥Ö€Õ¸Õ¾ +spread_odd_label=ÕÕ¡Ö€Õ¡Ö‚Ö€Õ«Õ¶Õ¡Õ¯ Õ¯Õ¸Õ¶Õ¿Õ¥Ö„Õ½Õ¿ +spread_even.title=Õ„Õ«Õ¡ÖÕ§Ö„ Õ§Õ»Õ« Õ¯Õ¸Õ¶Õ¿Õ¥Ö„Õ½Õ¿Õ«Õ¶ Õ½Õ¯Õ½Õ¥Õ¬Õ¸Õ¾Õ Õ¦Õ¸ÕµÕ£ Õ°Õ¡Õ´Õ¡Ö€Õ¡Õ¯Õ¡Õ¬Õ¸Ö‚Õ¡Õ® Õ§Õ»Õ¥Ö€Õ¸Õ¾ +spread_even_label=Õ€Õ¡Ö‚Õ¡Õ½Õ¡Ö€ Õ¾Õ¥Ö€Õ¡Õ®Õ¡Õ®Õ¯Õ¥Ö€ + +# Document properties dialog box +document_properties.title=Õ“Õ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ« հատկութիւնները… +document_properties_label=Õ“Õ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ« յատկութիւնները… +document_properties_file_name=Õ†Õ«Õ·Ö„Õ« անունը․ +document_properties_file_size=Õ†Õ«Õ·Ö„ Õ¹Õ¡ÖƒÕ¨. +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} Ô¿Ô² ({{size_b}} Õ¢Õ¡ÕµÕ©) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} Õ„Ô² ({{size_b}} Õ¢Õ¡ÕµÕ©) +document_properties_title=ÕŽÕ¥Ö€Õ¶Õ¡Õ£Õ«Ö€ +document_properties_author=Հեղինակ․ +document_properties_subject=Õ¡Õ¼Õ¡Ö€Õ¯Õ¡Õµ +document_properties_keywords=Õ€Õ«Õ´Õ¶Õ¡Õ¢Õ¡Õ¼Õ¥Ö€ +document_properties_creation_date=ÕÕ¿Õ¥Õ²Õ®Õ´Õ¡Õ¶ Õ¡Õ´Õ½Õ¡Õ©Õ«Ö‚ +document_properties_modification_date=Õ“Õ¸ÖƒÕ¸Õ­Õ¸Ö‚Õ©Õ¥Õ¡Õ¶ Õ¡Õ´Õ½Õ¡Õ©Õ«Ö‚. +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=ÕÕ¿Õ¥Õ²Õ®Õ¸Õ² +document_properties_producer=PDF-Õ« Ô±Ö€Õ¿Õ¡Õ¤Ö€Õ¸Õ²Õ¨. +document_properties_version=PDF-Õ« Õ¿Õ¡Ö€Õ¢Õ¥Ö€Õ¡Õ¯Õ¨. +document_properties_page_count=Ô·Õ»Õ¥Ö€Õ« Ö„Õ¡Õ¶Õ¡Õ¯Õ¨. +document_properties_page_size=Ô·Õ»Õ« Õ¹Õ¡ÖƒÕ¨. +document_properties_page_size_unit_inches=Õ¸Ö‚Õ´ +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=Õ¸Ö‚Õ²Õ²Õ¡Õ±Õ«Õ£ +document_properties_page_size_orientation_landscape=Õ°Õ¸Ö€Õ«Õ¦Õ¸Õ¶Õ¡Õ¯Õ¡Õ¶ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Õ†Õ¡Õ´Õ¡Õ¯ +document_properties_page_size_name_legal=Ô±Ö‚Ö€Õ«Õ¶Õ¡Õ¯Õ¡Õ¶ +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Ô±Ö€Õ¡Õ£ Õ¾Õ¥Õ¢ դիտում․ +document_properties_linearized_yes=Ô±ÕµÕ¸ +document_properties_linearized_no=ÕˆÕ¹ +document_properties_close=Õ“Õ¡Õ¯Õ¥Õ¬ + +print_progress_message=Õ†Õ¡Õ­Õ¡ÕºÕ¡Õ¿Ö€Õ¡Õ½Õ¿Õ¸Ö‚Õ´ Õ§ ÖƒÕ¡Õ½Õ¿Õ¡Õ©Õ¸Ö‚Õ²Õ©Õ¨ տպելուն… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Õ‰Õ¥Õ²Õ¡Ö€Õ¯Õ¥Õ¬ + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Õ“Õ¸Õ­Õ¡Ö€Õ¯Õ¥Õ¬ Õ¯Õ¸Õ²Õ¡ÕµÕ«Õ¶ Õ¾Õ¡Õ°Õ¡Õ¶Õ¡Õ¯Õ¨ +toggle_sidebar_notification2.title=Õ“Õ¸Õ­Õ¡Õ¶Õ»Õ¡Õ¿Õ¥Õ¬ Õ¯Õ¸Õ²Õ´Õ¶Õ¡Õ½Õ«Ö‚Õ¶Õ¨ (ÖƒÕ¡Õ½Õ¿Õ¡Õ©Õ¸Ö‚Õ²Õ©Õ¨ ÕºÕ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¸Ö‚Õ´ Õ§ Õ¸Ö‚Ö€Õ¸Ö‚Õ¡Õ£Õ«Õ®/Õ¯ÖÕ¸Ö€Õ¤Õ¶Õ¥Ö€/Õ·Õ¥Ö€Õ¿Õ¥Ö€) +toggle_sidebar_label=Õ“Õ¸Õ­Õ¡Ö€Õ¯Õ¥Õ¬ Õ¯Õ¸Õ²Õ¡ÕµÕ«Õ¶ Õ¾Õ¡Õ°Õ¡Õ¶Õ¡Õ¯Õ¨ +document_outline.title=Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ ÖƒÕ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ« Õ¸Ö‚Ö€Õ¸Ö‚Õ¡Õ£Õ«Õ®Õ¨ (Õ¯Ö€Õ¯Õ¶Õ¡Õ¯Õ« Õ½Õ¥Õ²Õ´Õ§Ö„Õ Õ´Õ«Õ¡Ö‚Õ¸Ö€Õ¶Õ¥Ö€Õ¨ Õ¨Õ¶Õ¤Õ¡Ö€Õ±Õ¡Õ¯Õ¥Õ¬Õ¸Ö‚/Õ¯Õ¸Õ®Õ¯Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€) +document_outline_label=Õ“Õ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ« Õ¸Ö‚Ö€Õ¸Ö‚Õ¡Õ£Õ«Õ® +attachments.title=Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¯ÖÕ¸Ö€Õ¤Õ¶Õ¥Ö€Õ¨ +attachments_label=Ô¿ÖÕ¸Ö€Õ¤Õ¶Õ¥Ö€ +layers.title=Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ·Õ¥Ö€Õ¿Õ¥Ö€Õ¨ (Õ¯Ö€Õ¯Õ¶Õ¡Õ°ÕºÕ¥Õ¬ Õ¾Õ¥Ö€Õ¡Õ¯Õ¡ÕµÕ¥Õ¬Õ¸Ö‚ Õ¢Õ¸Õ¬Õ¸Ö€ Õ·Õ¥Ö€Õ¿Õ¥Ö€Õ¨ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¤Õ«Ö€ Õ¾Õ«Õ³Õ¡Õ¯Õ«) +layers_label=Õ‡Õ¥Ö€Õ¿Õ¥Ö€ +thumbs.title=Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ´Õ¡Õ¶Ö€Õ¡ÕºÕ¡Õ¿Õ¯Õ¥Ö€Õ¨ +thumbs_label=Õ„Õ¡Õ¶Ö€Õ¡ÕºÕ¡Õ¿Õ¯Õ¥Ö€ +current_outline_item.title=Ô³Õ¿Õ§Ö„ Õ¨Õ¶Õ©Õ¡ÖÕ«Õ¯ Õ£Õ®Õ¡Õ£Ö€Õ´Õ¡Õ¶ Õ¿Õ¡Ö€Ö€Õ¨ +current_outline_item_label=Ô¸Õ¶Õ©Õ¡ÖÕ«Õ¯ Õ£Õ®Õ¡Õ£Ö€Õ´Õ¡Õ¶ Õ¿Õ¡Ö€Ö€ +findbar.title=Ô³Õ¿Õ¶Õ¥Õ¬ ÖƒÕ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ¸Ö‚Õ´ +findbar_label=ÕˆÖ€Õ¸Õ¶Õ¸Ö‚Õ´ + +additional_layers=Ô¼Ö€Õ¡ÖÕ¸Ö‚ÖÕ«Õ¹ Õ·Õ¥Ö€Õ¿Õ¥Ö€ +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Ô·Õ» {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Ô·Õ»Õ¨ {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Ô·Õ»Õ« Õ´Õ¡Õ¶Ö€Õ¡ÕºÕ¡Õ¿Õ¯Õ¥Ö€Õ¨ {{page}} + +# Find panel button title and messages +find_input.title=ÕˆÖ€Õ¸Õ¶Õ¸Ö‚Õ´ +find_input.placeholder=Ô³Õ¿Õ¶Õ¥Õ¬ փաստաթղթում… +find_previous.title=Ô³Õ¿Õ¶Õ¥Õ¬ Õ¡Ö€Õ¿Õ¡ÕµÕ¡ÕµÕ¿Õ¸Ö‚Õ©Õ¥Õ¡Õ¶ Õ¶Õ¡Õ­Õ¸Ö€Õ¤ Õ¡Ö€Õ¿Õ¡ÕµÕ¡ÕµÕ¿Õ¸Ö‚Õ©Õ«Ö‚Õ¶Õ¨ +find_previous_label=Õ†Õ¡Õ­Õ¸Ö€Õ¤Õ¨ +find_next.title=Ô³Õ¿Õ«Ö€ Õ¡Ö€Õ¿Õ¡ÕµÕ¡ÕµÕ¿Õ¸Ö‚Õ©Õ¥Õ¡Õ¶ ÕµÕ¡Õ»Õ¸Ö€Õ¤ Õ¡Ö€Õ¿Õ¡ÕµÕ¡ÕµÕ¿Õ¸Ö‚Õ©Õ«Ö‚Õ¶Õ¨ +find_next_label=Õ€Õ¡Õ»Õ¸Ö€Õ¤Õ¨ +find_highlight=Ô³Õ¸Ö‚Õ¶Õ¡Õ¶Õ·Õ¥Õ¬ Õ¢Õ¸Õ¬Õ¸Ö€Õ¨ +find_match_case_label=Õ€Õ¡Õ·Õ¸Ö‚Õ« Õ¡Õ¼Õ¶Õ¥Õ¬ Õ°Õ¡Õ¶Õ£Õ¡Õ´Õ¡Õ¶Ö„Õ¨ +find_match_diacritics_label=Õ€Õ¶Õ¹Õ«Ö‚Õ¶Õ¡Õ¿Õ¡Ö€Õ¢Õ¥Ö€Õ«Õ¹ Õ¶Õ·Õ¡Õ¶Õ¶Õ¥Ö€Õ« Õ°Õ¡Õ´Õ¡ÕºÕ¡Õ¿Õ¡Õ½Õ­Õ¡Õ¶Õ¥ÖÕ¸Ö‚Õ´ +find_entire_word_label=Ô±Õ´Õ¢Õ¸Õ²Õ» Õ¢Õ¡Õ¼Õ¥Ö€Õ¨ +find_reached_top=Õ€Õ¡Õ½Õ¥Õ¬ Õ¥Ö„ ÖƒÕ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ« Õ¾Õ¥Ö€Õ¥Ö‚Õ«Õ¶,Õ·Õ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¥Õ¬ Õ¶Õ¥Ö€Ö„Õ¥Ö‚Õ«Ö +find_reached_bottom=Õ€Õ¡Õ½Õ¥Õ¬ Õ§Ö„ ÖƒÕ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ« Õ¾Õ¥Ö€Õ»Õ«Õ¶, Õ·Õ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¥Õ¬ Õ¾Õ¥Ö€Õ¥Ö‚Õ«Ö +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} {{total}}-Õ« Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ«Ö +find_match_count[two]={{current}} {{total}}-Õ« Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ«Ö +find_match_count[few]={{current}} {{total}}-Õ« Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ«Ö +find_match_count[many]={{current}} {{total}}-Õ« Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ«Ö +find_match_count[other]={{current}} {{total}}-Õ« Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ«Ö +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Ô±Ö‚Õ¥Õ¬Õ«Õ¶ Ö„Õ¡Õ¶ {{limit}} Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ +find_match_count_limit[one]=Ô±Ö‚Õ¥Õ¬Õ«Õ¶ Ö„Õ¡Õ¶ {{limit}} Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¨ +find_match_count_limit[two]=Ô±Ö‚Õ¥Õ¬Õ«Õ¶ Ö„Õ¡Õ¶ {{limit}} Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ +find_match_count_limit[few]=Ô±Ö‚Õ¥Õ¬Õ«Õ¶ Ö„Õ¡Õ¶ {{limit}} Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ +find_match_count_limit[many]=Ô±Ö‚Õ¥Õ¬Õ«Õ¶ Ö„Õ¡Õ¶ {{limit}} Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ +find_match_count_limit[other]=Ô±Ö‚Õ¥Õ¬Õ«Õ¶ Ö„Õ¡Õ¶ {{limit}} Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ +find_not_found=Ô±Ö€Õ¿Õ¡ÕµÕ¡ÕµÕ¿Õ¸Ö‚Õ©Õ«Ö‚Õ¶Õ¨ Õ¹Õ£Õ¿Õ¶Õ¸Ö‚Õ¥Ö + +# Error panel labels +error_more_info=Ô±Ö‚Õ¥Õ¬Õ« Õ·Õ¡Õ¿ Õ¿Õ¥Õ²Õ¥Õ¯Õ¸Ö‚Õ©Õ«Ö‚Õ¶ +error_less_info=Õ”Õ«Õ¹ Õ¿Õ¥Õ²Õ¥Õ¯Õ¸Ö‚Õ©Õ«Ö‚Õ¶ +error_close=Õ“Õ¡Õ¯Õ¥Õ¬ +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (Õ¯Õ¡Õ¼Õ¸Ö‚ÖÕ¸Ö‚Õ´Õ¨. {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Ô³Ö€Õ¸Ö‚Õ©Õ«Ö‚Õ¶Õ¨. {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Õ‡Õ¥Õ²Õ». {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=նիշք․ {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=ÕÕ¸Õ²Õ¨. {{line}} +rendering_error=ÕÕ­Õ¡Õ¬ Õ§ Õ¿Õ¥Õ²Õ« Õ¸Ö‚Õ¶Õ¥ÖÕ¥Õ¬ Õ§Õ»Õ« Õ´Õ¥Õ¯Õ¶Õ¡Õ¢Õ¡Õ¶Õ´Õ¡Õ¶ ÕªÕ¡Õ´Õ¡Õ¶Õ¡Õ¯ + +# Predefined zoom values +page_scale_width=Ô·Õ»Õ« Õ¬Õ¡ÕµÕ¶Õ¸Ö‚Õ©Õ«Ö‚Õ¶ +page_scale_fit=Õ€Õ¡Ö€Õ´Õ¡Ö€Õ¥ÖÕ¶Õ¥Õ¬ Õ§Õ»Õ¨ +page_scale_auto=Ô»Õ¶Ö„Õ¶Õ¡Õ·Õ­Õ¡Õ¿ Õ­Õ¸Õ·Õ¸Ö€Õ¡ÖÕ¸Ö‚Õ´ +page_scale_actual=Ô»Ö€Õ¡Õ¯Õ¡Õ¶ Õ¹Õ¡ÖƒÕ¨ +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Բեռնում… +loading_error=PDF Õ¶Õ«Õ·Ö„Õ¨ Õ¢Õ¡ÖÕ¥Õ¬Õ«Õ½ Õ½Õ­Õ¡Õ¬ Õ§ Õ¿Õ¥Õ²Õ« Õ¸Ö‚Õ¶Õ¥ÖÕ¥Õ¬Ö‰ +invalid_file_error=ÕÕ­Õ¡Õ¬ Õ¯Õ¡Õ´ Õ¾Õ¶Õ¡Õ½Õ¸Ö‚Õ¡Õ® PDF Õ¶Õ«Õ·Ö„Ö‰ +missing_file_error=PDF Õ¶Õ«Õ·Ö„Õ¨ Õ¢Õ¡ÖÕ¡Õ¯Õ¡Õ«Ö‚Õ´ Õ§Ö‰ +unexpected_response_error=ÕÕºÕ¡Õ½Õ¡Ö€Õ¯Õ«Õ¹Õ« Õ¡Õ¶Õ½ÕºÕ¡Õ½Õ¥Õ¬Õ« ÕºÕ¡Õ¿Õ¡Õ½Õ­Õ¡Õ¶Ö‰ + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Ô¾Õ¡Õ¶Õ¸Õ©Õ¸Ö‚Õ©Õ«Ö‚Õ¶] +password_label=Õ„Õ¸Ö‚Õ¿Ö„Õ¡Õ£Ö€Õ§Ö„ Õ£Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Õ¼Õ¨ Õ¡ÕµÕ½ PDF Õ¶Õ«Õ·Ö„Õ¨ Õ¢Õ¡ÖÕ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€ +password_invalid=Ô³Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Õ¼Õ¨ Õ½Õ­Õ¡Õ¬ Õ§: Ô¿Ö€Õ¯Õ«Õ¶ ÖƒÕ¸Ö€Õ±Õ§Ö„: +password_ok=Ô¼Õ¡Ö‚ +password_cancel=Õ‰Õ¥Õ²Õ¡Ö€Õ¯Õ¥Õ¬ + +printing_not_supported=Ô¶Õ£Õ¸Ö‚Õ·Õ¡ÖÕ¸Ö‚Õ´. ÕÕºÕ¥Õ¬Õ¨ Õ¡Õ´Õ¢Õ¸Õ²Õ»Õ¸Ö‚Õ©Õ¥Õ¡Õ´Õ¢ Õ¹Õ« Õ¡Õ»Õ¡Õ¯ÖÕ¸Ö‚Õ¸Ö‚Õ´ Õ¦Õ¶Õ¶Õ¡Ö€Õ¯Õ«Õ¹Õ« Õ¯Õ¸Õ²Õ´Õ«ÖÖ‰ +printing_not_ready=Ô¶Õ£Õ¸Ö‚Õ·Õ¡ÖÕ¸Ö‚Õ´. PDFÖŠÕ¨ Õ¡Õ´Õ¢Õ¸Õ²Õ»Õ¸Ö‚Õ©Õ¥Õ¡Õ´Õ¢ Õ¹Õ« Õ¢Õ¥Õ¼Õ¶Õ¡Ö‚Õ¸Ö€Õ¸Ö‚Õ¥Õ¬ Õ¿ÕºÕ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€Ö‰ +web_fonts_disabled=ÕŽÕ¥Õ¢-Õ¿Õ¡Õ¼Õ¡Õ¿Õ¥Õ½Õ¡Õ¯Õ¶Õ¥Ö€Õ¨ Õ¡Õ¶Õ»Õ¡Õ¿Õ¸Ö‚Õ¡Õ® Õ¥Õ¶. Õ°Õ¶Õ¡Ö€Õ¡Ö‚Õ¸Ö€ Õ¹Õ§ Õ¡Ö‚Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Õ¬ Õ¶Õ¥Ö€Õ¯Õ¡Õ¼Õ¸Ö‚ÖÕ¸Ö‚Õ¡Õ® PDF Õ¿Õ¡Õ¼Õ¡Õ¿Õ¥Õ½Õ¡Õ¯Õ¶Õ¥Ö€Õ¨Ö‰ + diff --git a/page/static/js/web/locale/ia/viewer.properties b/page/static/js/web/locale/ia/viewer.properties new file mode 100644 index 0000000..5ce89fe --- /dev/null +++ b/page/static/js/web/locale/ia/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pagina previe +previous_label=Previe +next.title=Pagina sequente +next_label=Sequente + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pagina +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Distantiar +zoom_out_label=Distantiar +zoom_in.title=Approximar +zoom_in_label=Approximar +zoom.title=Zoom +presentation_mode.title=Excambiar a modo presentation +presentation_mode_label=Modo presentation +open_file.title=Aperir le file +open_file_label=Aperir +print.title=Imprimer +print_label=Imprimer +download.title=Discargar +download_label=Discargar +save.title=Salvar +save_label=Salvar +bookmark.title=Vista actual (copiar o aperir in un nove fenestra) +bookmark_label=Vista actual + +bookmark1.title=Pagina actual (vide le URL del pagina actual) +bookmark1_label=Pagina actual + +# Secondary toolbar and context menu +tools.title=Instrumentos +tools_label=Instrumentos +first_page.title=Ir al prime pagina +first_page_label=Ir al prime pagina +last_page.title=Ir al prime pagina +last_page_label=Ir al prime pagina +page_rotate_cw.title=Rotar in senso horari +page_rotate_cw_label=Rotar in senso horari +page_rotate_ccw.title=Rotar in senso antihorari +page_rotate_ccw_label=Rotar in senso antihorari + +cursor_text_select_tool.title=Activar le instrumento de selection de texto +cursor_text_select_tool_label=Instrumento de selection de texto +cursor_hand_tool.title=Activar le instrumento mano +cursor_hand_tool_label=Instrumento mano + +scroll_page.title=Usar rolamento de pagina +scroll_page_label=Rolamento de pagina +scroll_vertical.title=Usar rolamento vertical +scroll_vertical_label=Rolamento vertical +scroll_horizontal.title=Usar rolamento horizontal +scroll_horizontal_label=Rolamento horizontal +scroll_wrapped.title=Usar rolamento incapsulate +scroll_wrapped_label=Rolamento incapsulate + +spread_none.title=Non junger paginas dual +spread_none_label=Sin paginas dual +spread_odd.title=Junger paginas dual a partir de paginas con numeros impar +spread_odd_label=Paginas dual impar +spread_even.title=Junger paginas dual a partir de paginas con numeros par +spread_even_label=Paginas dual par + +# Document properties dialog box +document_properties.title=Proprietates del documento… +document_properties_label=Proprietates del documento… +document_properties_file_name=Nomine del file: +document_properties_file_size=Dimension de file: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Titulo: +document_properties_author=Autor: +document_properties_subject=Subjecto: +document_properties_keywords=Parolas clave: +document_properties_creation_date=Data de creation: +document_properties_modification_date=Data de modification: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creator: +document_properties_producer=Productor PDF: +document_properties_version=Version PDF: +document_properties_page_count=Numero de paginas: +document_properties_page_size=Dimension del pagina: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=vertical +document_properties_page_size_orientation_landscape=horizontal +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Littera +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista web rapide: +document_properties_linearized_yes=Si +document_properties_linearized_no=No +document_properties_close=Clauder + +print_progress_message=Preparation del documento pro le impression… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancellar + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Monstrar/celar le barra lateral +toggle_sidebar_notification2.title=Monstrar/celar le barra lateral (le documento contine structura/attachamentos/stratos) +toggle_sidebar_label=Monstrar/celar le barra lateral +document_outline.title=Monstrar le schema del documento (clic duple pro expander/contraher tote le elementos) +document_outline_label=Schema del documento +attachments.title=Monstrar le annexos +attachments_label=Annexos +layers.title=Monstrar stratos (clicca duple pro remontar tote le stratos al stato predefinite) +layers_label=Stratos +thumbs.title=Monstrar le vignettes +thumbs_label=Vignettes +current_outline_item.title=Trovar le elemento de structura actual +current_outline_item_label=Elemento de structura actual +findbar.title=Cercar in le documento +findbar_label=Cercar + +additional_layers=Altere stratos +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Pagina {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pagina {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Vignette del pagina {{page}} + +# Find panel button title and messages +find_input.title=Cercar +find_input.placeholder=Cercar in le documento… +find_previous.title=Trovar le previe occurrentia del phrase +find_previous_label=Previe +find_next.title=Trovar le successive occurrentia del phrase +find_next_label=Sequente +find_highlight=Evidentiar toto +find_match_case_label=Distinguer majusculas/minusculas +find_match_diacritics_label=Differentiar diacriticos +find_entire_word_label=Parolas integre +find_reached_top=Initio del documento attingite, continuation ab fin +find_reached_bottom=Fin del documento attingite, continuation ab initio +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} de {{total}} concordantia +find_match_count[two]={{current}} de {{total}} concordantias +find_match_count[few]={{current}} de {{total}} concordantias +find_match_count[many]={{current}} de {{total}} concordantias +find_match_count[other]={{current}} de {{total}} concordantias +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Plus de {{limit}} concordantias +find_match_count_limit[one]=Plus de {{limit}} concordantia +find_match_count_limit[two]=Plus de {{limit}} concordantias +find_match_count_limit[few]=Plus de {{limit}} concordantias +find_match_count_limit[many]=Plus de {{limit}} correspondentias +find_match_count_limit[other]=Plus de {{limit}} concordantias +find_not_found=Phrase non trovate + +# Error panel labels +error_more_info=Plus de informationes +error_less_info=Minus de informationes +error_close=Clauder +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Message: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pila: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=File: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linea: {{line}} + +# Predefined zoom values +page_scale_width=Plen largor del pagina +page_scale_fit=Pagina integre +page_scale_auto=Zoom automatic +page_scale_actual=Dimension real +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Cargante… +loading_error=Un error occurreva durante que on cargava le file PDF. +invalid_file_error=File PDF corrumpite o non valide. +missing_file_error=File PDF mancante. +unexpected_response_error=Responsa del servitor inexpectate. + +rendering_error=Un error occurreva durante que on processava le pagina. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=Insere le contrasigno pro aperir iste file PDF. +password_invalid=Contrasigno invalide. Per favor retenta. +password_ok=OK +password_cancel=Cancellar + +printing_not_supported=Attention : le impression non es totalmente supportate per ce navigator. +printing_not_ready=Attention: le file PDF non es integremente cargate pro lo poter imprimer. +web_fonts_disabled=Le typos de litteras web es disactivate: impossibile usar le typos de litteras PDF incorporate. + +# Editor +editor_free_text2.title=Texto +editor_free_text2_label=Texto +editor_ink2.title=Designar +editor_ink2_label=Designar + +free_text2_default_content=Comenciar a scriber… + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Dimension +editor_ink_color=Color +editor_ink_thickness=Spissor +editor_ink_opacity=Opacitate + +# Editor aria +editor_free_text2_aria_label=Editor de texto +editor_ink2_aria_label=Editor de designos +editor_ink_canvas_aria_label=Imagine create per le usator diff --git a/page/static/js/web/locale/id/viewer.properties b/page/static/js/web/locale/id/viewer.properties new file mode 100644 index 0000000..84f84a8 --- /dev/null +++ b/page/static/js/web/locale/id/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Laman Sebelumnya +previous_label=Sebelumnya +next.title=Laman Selanjutnya +next_label=Selanjutnya + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Halaman +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=dari {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} dari {{pagesCount}}) + +zoom_out.title=Perkecil +zoom_out_label=Perkecil +zoom_in.title=Perbesar +zoom_in_label=Perbesar +zoom.title=Perbesaran +presentation_mode.title=Ganti ke Mode Presentasi +presentation_mode_label=Mode Presentasi +open_file.title=Buka Berkas +open_file_label=Buka +print.title=Cetak +print_label=Cetak +download.title=Unduh +download_label=Unduh +save.title=Simpan +save_label=Simpan +bookmark.title=Tampilan Sekarang (salin atau buka di jendela baru) +bookmark_label=Tampilan Sekarang + +bookmark1.title=Laman Saat Ini (Lihat URL dari Laman Sekarang) +bookmark1_label=Laman Saat Ini + +# Secondary toolbar and context menu +tools.title=Alat +tools_label=Alat +first_page.title=Buka Halaman Pertama +first_page_label=Buka Halaman Pertama +last_page.title=Buka Halaman Terakhir +last_page_label=Buka Halaman Terakhir +page_rotate_cw.title=Putar Searah Jarum Jam +page_rotate_cw_label=Putar Searah Jarum Jam +page_rotate_ccw.title=Putar Berlawanan Arah Jarum Jam +page_rotate_ccw_label=Putar Berlawanan Arah Jarum Jam + +cursor_text_select_tool.title=Aktifkan Alat Seleksi Teks +cursor_text_select_tool_label=Alat Seleksi Teks +cursor_hand_tool.title=Aktifkan Alat Tangan +cursor_hand_tool_label=Alat Tangan + +scroll_page.title=Gunakan Pengguliran Laman +scroll_page_label=Pengguliran Laman +scroll_vertical.title=Gunakan Penggeseran Vertikal +scroll_vertical_label=Penggeseran Vertikal +scroll_horizontal.title=Gunakan Penggeseran Horizontal +scroll_horizontal_label=Penggeseran Horizontal +scroll_wrapped.title=Gunakan Penggeseran Terapit +scroll_wrapped_label=Penggeseran Terapit + +spread_none.title=Jangan gabungkan lembar halaman +spread_none_label=Tidak Ada Lembaran +spread_odd.title=Gabungkan lembar lamanan mulai dengan halaman ganjil +spread_odd_label=Lembaran Ganjil +spread_even.title=Gabungkan lembar halaman dimulai dengan halaman genap +spread_even_label=Lembaran Genap + +# Document properties dialog box +document_properties.title=Properti Dokumen… +document_properties_label=Properti Dokumen… +document_properties_file_name=Nama berkas: +document_properties_file_size=Ukuran berkas: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} byte) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} byte) +document_properties_title=Judul: +document_properties_author=Penyusun: +document_properties_subject=Subjek: +document_properties_keywords=Kata Kunci: +document_properties_creation_date=Tanggal Dibuat: +document_properties_modification_date=Tanggal Dimodifikasi: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Pembuat: +document_properties_producer=Pemroduksi PDF: +document_properties_version=Versi PDF: +document_properties_page_count=Jumlah Halaman: +document_properties_page_size=Ukuran Laman: +document_properties_page_size_unit_inches=inci +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=tegak +document_properties_page_size_orientation_landscape=mendatar +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Tampilan Web Kilat: +document_properties_linearized_yes=Ya +document_properties_linearized_no=Tidak +document_properties_close=Tutup + +print_progress_message=Menyiapkan dokumen untuk pencetakan… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Batalkan + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Aktif/Nonaktifkan Bilah Samping +toggle_sidebar_notification2.title=Aktif/Nonaktifkan Bilah Samping (dokumen berisi kerangka/lampiran/lapisan) +toggle_sidebar_label=Aktif/Nonaktifkan Bilah Samping +document_outline.title=Tampilkan Kerangka Dokumen (klik ganda untuk membentangkan/menciutkan semua item) +document_outline_label=Kerangka Dokumen +attachments.title=Tampilkan Lampiran +attachments_label=Lampiran +layers.title=Tampilkan Lapisan (klik ganda untuk mengatur ulang semua lapisan ke keadaan baku) +layers_label=Lapisan +thumbs.title=Tampilkan Miniatur +thumbs_label=Miniatur +current_outline_item.title=Cari Butir Ikhtisar Saat Ini +current_outline_item_label=Butir Ikhtisar Saat Ini +findbar.title=Temukan di Dokumen +findbar_label=Temukan + +additional_layers=Lapisan Tambahan +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Halaman {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Laman {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatur Laman {{page}} + +# Find panel button title and messages +find_input.title=Temukan +find_input.placeholder=Temukan di dokumen… +find_previous.title=Temukan kata sebelumnya +find_previous_label=Sebelumnya +find_next.title=Temukan lebih lanjut +find_next_label=Selanjutnya +find_highlight=Sorot semuanya +find_match_case_label=Cocokkan BESAR/kecil +find_match_diacritics_label=Pencocokan Diakritik +find_entire_word_label=Seluruh teks +find_reached_top=Sampai di awal dokumen, dilanjutkan dari bawah +find_reached_bottom=Sampai di akhir dokumen, dilanjutkan dari atas +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} dari {{total}} hasil +find_match_count[two]={{current}} dari {{total}} hasil +find_match_count[few]={{current}} dari {{total}} hasil +find_match_count[many]={{current}} dari {{total}} hasil +find_match_count[other]={{current}} dari {{total}} hasil +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Ditemukan lebih dari {{limit}} +find_match_count_limit[one]=Ditemukan lebih dari {{limit}} +find_match_count_limit[two]=Ditemukan lebih dari {{limit}} +find_match_count_limit[few]=Ditemukan lebih dari {{limit}} +find_match_count_limit[many]=Ditemukan lebih dari {{limit}} +find_match_count_limit[other]=Ditemukan lebih dari {{limit}} +find_not_found=Frasa tidak ditemukan + +# Error panel labels +error_more_info=Lebih Banyak Informasi +error_less_info=Lebih Sedikit Informasi +error_close=Tutup +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Pesan: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Berkas: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Baris: {{line}} + +# Predefined zoom values +page_scale_width=Lebar Laman +page_scale_fit=Muat Laman +page_scale_auto=Perbesaran Otomatis +page_scale_actual=Ukuran Asli +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Memuat… +loading_error=Galat terjadi saat memuat PDF. +invalid_file_error=Berkas PDF tidak valid atau rusak. +missing_file_error=Berkas PDF tidak ada. +unexpected_response_error=Balasan server yang tidak diharapkan. + +rendering_error=Galat terjadi saat merender laman. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotasi {{type}}] +password_label=Masukkan sandi untuk membuka berkas PDF ini. +password_invalid=Sandi tidak valid. Silakan coba lagi. +password_ok=Oke +password_cancel=Batal + +printing_not_supported=Peringatan: Pencetakan tidak didukung secara lengkap pada peramban ini. +printing_not_ready=Peringatan: Berkas PDF masih belum dimuat secara lengkap untuk dapat dicetak. +web_fonts_disabled=Font web dinonaktifkan: tidak dapat menggunakan font PDF yang tersemat. + +# Editor +editor_free_text2.title=Teks +editor_free_text2_label=Teks +editor_ink2.title=Gambar +editor_ink2_label=Gambar + +free_text2_default_content=Mulai mengetik… + +# Editor Parameters +editor_free_text_color=Warna +editor_free_text_size=Ukuran +editor_ink_color=Warna +editor_ink_thickness=Ketebalan +editor_ink_opacity=Opasitas + +# Editor aria +editor_free_text2_aria_label=Editor Teks +editor_ink2_aria_label=Editor Gambar +editor_ink_canvas_aria_label=Gambar yang dibuat pengguna diff --git a/page/static/js/web/locale/is/viewer.properties b/page/static/js/web/locale/is/viewer.properties new file mode 100644 index 0000000..ca21798 --- /dev/null +++ b/page/static/js/web/locale/is/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Fyrri síða +previous_label=Fyrri +next.title=Næsta síða +next_label=Næsti + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Síða +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=af {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} af {{pagesCount}}) + +zoom_out.title=Minnka aðdrátt +zoom_out_label=Minnka aðdrátt +zoom_in.title=Auka aðdrátt +zoom_in_label=Auka aðdrátt +zoom.title=Aðdráttur +presentation_mode.title=Skipta yfir á kynningarham +presentation_mode_label=Kynningarhamur +open_file.title=Opna skrá +open_file_label=Opna +print.title=Prenta +print_label=Prenta +download.title=Hala niður +download_label=Hala niður +save.title=Vista +save_label=Vista +bookmark.title=Núverandi sýn (afritaðu eða opnaðu í nýjum glugga) +bookmark_label=Núverandi sýn + +bookmark1.title=Núverandi síða (Skoða vefslóð frá núverandi síðu) +bookmark1_label=Núverandi síða + +# Secondary toolbar and context menu +tools.title=Verkfæri +tools_label=Verkfæri +first_page.title=Fara á fyrstu síðu +first_page_label=Fara á fyrstu síðu +last_page.title=Fara á síðustu síðu +last_page_label=Fara á síðustu síðu +page_rotate_cw.title=Snúa réttsælis +page_rotate_cw_label=Snúa réttsælis +page_rotate_ccw.title=Snúa rangsælis +page_rotate_ccw_label=Snúa rangsælis + +cursor_text_select_tool.title=Virkja textavalsáhald +cursor_text_select_tool_label=Textavalsáhald +cursor_hand_tool.title=Virkja handarverkfæri +cursor_hand_tool_label=Handarverkfæri + +scroll_page.title=Nota síðuskrun +scroll_page_label=Síðuskrun +scroll_vertical.title=Nota lóðrétt skrun +scroll_vertical_label=Lóðrétt skrun +scroll_horizontal.title=Nota lárétt skrun +scroll_horizontal_label=Lárétt skrun +scroll_wrapped.title=Nota línuskipt síðuskrun +scroll_wrapped_label=Línuskipt síðuskrun + +spread_none.title=Ekki taka þátt í dreifingu síðna +spread_none_label=Engin dreifing +spread_odd.title=Taka þátt í dreifingu síðna með oddatölum +spread_odd_label=Oddatöludreifing +spread_even.title=Taktu þátt í dreifingu síðna með jöfnuntölum +spread_even_label=Jafnatöludreifing + +# Document properties dialog box +document_properties.title=Eiginleikar skjals… +document_properties_label=Eiginleikar skjals… +document_properties_file_name=Skráarnafn: +document_properties_file_size=Skrárstærð: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Titill: +document_properties_author=Hönnuður: +document_properties_subject=Efni: +document_properties_keywords=Stikkorð: +document_properties_creation_date=Búið til: +document_properties_modification_date=Dags breytingar: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Höfundur: +document_properties_producer=PDF framleiðandi: +document_properties_version=PDF útgáfa: +document_properties_page_count=Blaðsíðufjöldi: +document_properties_page_size=Stærð síðu: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=skammsnið +document_properties_page_size_orientation_landscape=langsnið +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fljótleg vefskoðun: +document_properties_linearized_yes=Já +document_properties_linearized_no=Nei +document_properties_close=Loka + +print_progress_message=Undirbý skjal fyrir prentun… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Hætta við + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Víxla hliðarspjaldi af/á +toggle_sidebar_notification2.title=Víxla hliðarslá (skjal inniheldur yfirlit/viðhengi/lög) +toggle_sidebar_label=Víxla hliðarspjaldi af/á +document_outline.title=Sýna yfirlit skjals (tvísmelltu til að opna/loka öllum hlutum) +document_outline_label=Efnisskipan skjals +attachments.title=Sýna viðhengi +attachments_label=Viðhengi +layers.title=Birta lög (tvísmelltu til að endurstilla öll lög í sjálfgefna stöðu) +layers_label=Lög +thumbs.title=Sýna smámyndir +thumbs_label=Smámyndir +current_outline_item.title=Finna núverandi atriði efnisskipunar +current_outline_item_label=Núverandi atriði efnisskipunar +findbar.title=Leita í skjali +findbar_label=Leita + +additional_layers=Viðbótarlög +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Síða {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Síða {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Smámynd af síðu {{page}} + +# Find panel button title and messages +find_input.title=Leita +find_input.placeholder=Leita í skjali… +find_previous.title=Leita að fyrra tilfelli þessara orða +find_previous_label=Fyrri +find_next.title=Leita að næsta tilfelli þessara orða +find_next_label=Næsti +find_highlight=Lita allt +find_match_case_label=Passa við stafstöðu +find_match_diacritics_label=Passa við broddstafi +find_entire_word_label=Heil orð +find_reached_top=Náði efst í skjal, held áfram neðst +find_reached_bottom=Náði enda skjals, held áfram efst +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} af {{total}} niðurstöðu +find_match_count[two]={{current}} af {{total}} niðurstöðum +find_match_count[few]={{current}} af {{total}} niðurstöðum +find_match_count[many]={{current}} af {{total}} niðurstöðum +find_match_count[other]={{current}} af {{total}} niðurstöðum +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Fleiri en {{limit}} niðurstöður +find_match_count_limit[one]=Fleiri en {{limit}} niðurstaða +find_match_count_limit[two]=Fleiri en {{limit}} niðurstöður +find_match_count_limit[few]=Fleiri en {{limit}} niðurstöður +find_match_count_limit[many]=Fleiri en {{limit}} niðurstöður +find_match_count_limit[other]=Fleiri en {{limit}} niðurstöður +find_not_found=Fann ekki orðið + +# Error panel labels +error_more_info=Meiri upplýsingar +error_less_info=Minni upplýsingar +error_close=Loka +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Skilaboð: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stafli: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Skrá: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Lína: {{line}} + +# Predefined zoom values +page_scale_width=Síðubreidd +page_scale_fit=Passa á síðu +page_scale_auto=Sjálfvirkur aðdráttur +page_scale_actual=Raunstærð +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Hleður… +loading_error=Villa kom upp við að hlaða inn PDF. +invalid_file_error=Ógild eða skemmd PDF skrá. +missing_file_error=Vantar PDF skrá. +unexpected_response_error=Óvænt svar frá netþjóni. + +rendering_error=Upp kom villa við að birta síðuna. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Skýring] +password_label=Sláðu inn lykilorð til að opna þessa PDF skrá. +password_invalid=Ógilt lykilorð. Reyndu aftur. +password_ok=à lagi +password_cancel=Hætta við + +printing_not_supported=Aðvörun: Prentun er ekki með fyllilegan stuðning á þessum vafra. +printing_not_ready=Aðvörun: Ekki er búið að hlaða inn allri PDF skránni fyrir prentun. +web_fonts_disabled=Vef leturgerðir eru óvirkar: get ekki notað innbyggðar PDF leturgerðir. + +# Editor +editor_free_text2.title=Texti +editor_free_text2_label=Texti +editor_ink2.title=Teikna +editor_ink2_label=Teikna + +free_text2_default_content=Byrjaðu að skrifa… + +# Editor Parameters +editor_free_text_color=Litur +editor_free_text_size=Stærð +editor_ink_color=Litur +editor_ink_thickness=Þykkt +editor_ink_opacity=Ógegnsæi + +# Editor aria +editor_free_text2_aria_label=Textaritill +editor_ink2_aria_label=Teikniritill +editor_ink_canvas_aria_label=Mynd gerð af notanda diff --git a/page/static/js/web/locale/it/viewer.properties b/page/static/js/web/locale/it/viewer.properties new file mode 100644 index 0000000..c7ae231 --- /dev/null +++ b/page/static/js/web/locale/it/viewer.properties @@ -0,0 +1,217 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +previous.title = Pagina precedente +previous_label = Precedente +next.title = Pagina successiva +next_label = Successiva + +page.title = Pagina +of_pages = di {{pagesCount}} +page_of_pages = ({{pageNumber}} di {{pagesCount}}) + +zoom_out.title = Riduci zoom +zoom_out_label = Riduci zoom +zoom_in.title = Aumenta zoom +zoom_in_label = Aumenta zoom +zoom.title = Zoom +presentation_mode.title = Passa alla modalità presentazione +presentation_mode_label = Modalità presentazione +open_file.title = Apri file +open_file_label = Apri +print.title = Stampa +print_label = Stampa +download.title = Scarica questo documento +download_label = Download +save.title = Salva +save_label = Salva +bookmark.title = Visualizzazione corrente (copia o apri in una nuova finestra) +bookmark_label = Visualizzazione corrente +bookmark1.title = Pagina corrente (mostra URL della pagina corrente) +bookmark1_label = Pagina corrente + +tools.title = Strumenti +tools_label = Strumenti +first_page.title = Vai alla prima pagina +first_page_label = Vai alla prima pagina +last_page.title = Vai all’ultima pagina +last_page_label = Vai all’ultima pagina +page_rotate_cw.title = Ruota in senso orario +page_rotate_cw_label = Ruota in senso orario +page_rotate_ccw.title = Ruota in senso antiorario +page_rotate_ccw_label = Ruota in senso antiorario + +cursor_text_select_tool.title = Attiva strumento di selezione testo +cursor_text_select_tool_label = Strumento di selezione testo +cursor_hand_tool.title = Attiva strumento mano +cursor_hand_tool_label = Strumento mano + +scroll_page.title = Utilizza scorrimento pagine +scroll_page_label = Scorrimento pagine +scroll_vertical.title = Scorri le pagine in verticale +scroll_vertical_label = Scorrimento verticale +scroll_horizontal.title = Scorri le pagine in orizzontale +scroll_horizontal_label = Scorrimento orizzontale +scroll_wrapped.title = Scorri le pagine in verticale, disponendole da sinistra a destra e andando a capo automaticamente +scroll_wrapped_label = Scorrimento con a capo automatico + +spread_none.title = Non raggruppare pagine +spread_none_label = Nessun raggruppamento +spread_odd.title = Crea gruppi di pagine che iniziano con numeri di pagina dispari +spread_odd_label = Raggruppamento dispari +spread_even.title = Crea gruppi di pagine che iniziano con numeri di pagina pari +spread_even_label = Raggruppamento pari + +document_properties.title = Proprietà del documento… +document_properties_label = Proprietà del documento… +document_properties_file_name = Nome file: +document_properties_file_size = Dimensione file: +document_properties_kb = {{size_kb}} kB ({{size_b}} byte) +document_properties_mb = {{size_mb}} MB ({{size_b}} byte) +document_properties_title = Titolo: +document_properties_author = Autore: +document_properties_subject = Oggetto: +document_properties_keywords = Parole chiave: +document_properties_creation_date = Data creazione: +document_properties_modification_date = Data modifica: +document_properties_date_string = {{date}}, {{time}} +document_properties_creator = Autore originale: +document_properties_producer = Produttore PDF: +document_properties_version = Versione PDF: +document_properties_page_count = Conteggio pagine: +document_properties_page_size = Dimensioni pagina: +document_properties_page_size_unit_inches = in +document_properties_page_size_unit_millimeters = mm +document_properties_page_size_orientation_portrait = verticale +document_properties_page_size_orientation_landscape = orizzontale +document_properties_page_size_name_a3 = A3 +document_properties_page_size_name_a4 = A4 +document_properties_page_size_name_letter = Lettera +document_properties_page_size_name_legal = Legale +document_properties_page_size_dimension_string = {{width}} × {{height}} {{unit}} ({{orientation}}) +document_properties_page_size_dimension_name_string = {{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +document_properties_linearized = Visualizzazione web veloce: +document_properties_linearized_yes = Sì +document_properties_linearized_no = No +document_properties_close = Chiudi + +print_progress_message = Preparazione documento per la stampa… +print_progress_percent = {{progress}}% +print_progress_close = Annulla + +toggle_sidebar.title = Attiva/disattiva barra laterale +toggle_sidebar_notification2.title = Attiva/disattiva barra laterale (il documento contiene struttura/allegati/livelli) +toggle_sidebar_label = Attiva/disattiva barra laterale +document_outline.title = Visualizza la struttura del documento (doppio clic per visualizzare/comprimere tutti gli elementi) +document_outline_label = Struttura documento +attachments.title = Visualizza allegati +attachments_label = Allegati +layers.title = Visualizza livelli (doppio clic per ripristinare tutti i livelli allo stato predefinito) +layers_label = Livelli +thumbs.title = Mostra le miniature +thumbs_label = Miniature +current_outline_item.title = Trova elemento struttura corrente +current_outline_item_label = Elemento struttura corrente +findbar.title = Trova nel documento +findbar_label = Trova + +additional_layers = Livelli aggiuntivi +page_landmark = Pagina {{page}} +thumb_page_title = Pagina {{page}} +thumb_page_canvas = Miniatura della pagina {{page}} + +find_input.title = Trova +find_input.placeholder = Trova nel documento… +find_previous.title = Trova l’occorrenza precedente del testo da cercare +find_previous_label = Precedente +find_next.title = Trova l’occorrenza successiva del testo da cercare +find_next_label = Successivo +find_highlight = Evidenzia +find_match_case_label = Maiuscole/minuscole +find_match_diacritics_label = Segni diacritici +find_entire_word_label = Parole intere +find_reached_top = Raggiunto l’inizio della pagina, continua dalla fine +find_reached_bottom = Raggiunta la fine della pagina, continua dall’inizio +find_match_count = {[ plural(total) ]} +find_match_count[one] = {{current}} di {{total}} corrispondenza +find_match_count[two] = {{current}} di {{total}} corrispondenze +find_match_count[few] = {{current}} di {{total}} corrispondenze +find_match_count[many] = {{current}} di {{total}} corrispondenze +find_match_count[other] = {{current}} di {{total}} corrispondenze +find_match_count_limit = {[ plural(limit) ]} +find_match_count_limit[zero] = Più di {{limit}} corrispondenze +find_match_count_limit[one] = Più di {{limit}} corrispondenza +find_match_count_limit[two] = Più di {{limit}} corrispondenze +find_match_count_limit[few] = Più di {{limit}} corrispondenze +find_match_count_limit[many] = Più di {{limit}} corrispondenze +find_match_count_limit[other] = Più di {{limit}} corrispondenze +find_not_found = Testo non trovato + +error_more_info = Ulteriori informazioni +error_less_info = Nascondi dettagli +error_close = Chiudi +error_version_info = PDF.js v{{version}} (build: {{build}}) +error_message = Messaggio: {{message}} +error_stack = Stack: {{stack}} +error_file = File: {{file}} +error_line = Riga: {{line}} +rendering_error = Si è verificato un errore durante il rendering della pagina. + +page_scale_width = Larghezza pagina +page_scale_fit = Adatta a una pagina +page_scale_auto = Zoom automatico +page_scale_actual = Dimensioni effettive +page_scale_percent = {{scale}}% + +loading = Caricamento in corso… +loading_error = Si è verificato un errore durante il caricamento del PDF. +invalid_file_error = File PDF non valido o danneggiato. +missing_file_error = File PDF non disponibile. +unexpected_response_error = Risposta imprevista del server + +annotation_date_string = {{date}}, {{time}} + +text_annotation_type.alt = [Annotazione: {{type}}] +password_label = Inserire la password per aprire questo file PDF. +password_invalid = Password non corretta. Riprovare. +password_ok = OK +password_cancel = Annulla + +printing_not_supported = Attenzione: la stampa non è completamente supportata da questo browser. +printing_not_ready = Attenzione: il PDF non è ancora stato caricato completamente per la stampa. +web_fonts_disabled = I web font risultano disattivati: impossibile utilizzare i caratteri incorporati nel PDF. + +# Editor +editor_free_text2.title = Testo +editor_free_text2_label = Testo +editor_ink2.title = Disegno +editor_ink2_label = Disegno + +free_text2_default_content = Inizia a digitare… + +# Editor Parameters +editor_free_text_color = Colore +editor_free_text_size = Dimensione +editor_ink_color = Colore +editor_ink_thickness = Spessore +editor_ink_opacity = Opacità + +# Editor aria +editor_free_text2_aria_label = Editor di testo +editor_ink2_aria_label = Editor disegni +editor_ink_canvas_aria_label = Immagine creata dall’utente diff --git a/page/static/js/web/locale/ja/viewer.properties b/page/static/js/web/locale/ja/viewer.properties new file mode 100644 index 0000000..31da490 --- /dev/null +++ b/page/static/js/web/locale/ja/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=å‰ã®ãƒšãƒ¼ã‚¸ã¸æˆ»ã‚Šã¾ã™ +previous_label=å‰ã¸ +next.title=次ã®ãƒšãƒ¼ã‚¸ã¸é€²ã¿ã¾ã™ +next_label=次㸠+ +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=ページ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=/ {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} / {{pagesCount}}) + +zoom_out.title=表示を縮å°ã—ã¾ã™ +zoom_out_label=ç¸®å° +zoom_in.title=表示を拡大ã—ã¾ã™ +zoom_in_label=拡大 +zoom.title=拡大/ç¸®å° +presentation_mode.title=プレゼンテーションモードã«åˆ‡ã‚Šæ›¿ãˆã¾ã™ +presentation_mode_label=プレゼンテーションモード +open_file.title=ファイルを開ãã¾ã™ +open_file_label=é–‹ã +print.title=å°åˆ·ã—ã¾ã™ +print_label=å°åˆ· +download.title=ダウンロードã—ã¾ã™ +download_label=ダウンロード +save.title=ä¿å­˜ã—ã¾ã™ +save_label=ä¿å­˜ +bookmark.title=ç¾åœ¨ã®ãƒ“ュー㮠URL ã§ã™ (コピーã¾ãŸã¯æ–°ã—ã„ウィンドウã«é–‹ã) +bookmark_label=ç¾åœ¨ã®ãƒ“ュー + +bookmark1.title=ç¾åœ¨ã®ãƒšãƒ¼ã‚¸ã® URL ã§ã™ (ç¾åœ¨ã®ãƒšãƒ¼ã‚¸ã‚’表示ã™ã‚‹ URL) +bookmark1_label=ç¾åœ¨ã®ãƒšãƒ¼ã‚¸ + +# Secondary toolbar and context menu +tools.title=ツール +tools_label=ツール +first_page.title=最åˆã®ãƒšãƒ¼ã‚¸ã¸ç§»å‹•ã—ã¾ã™ +first_page_label=最åˆã®ãƒšãƒ¼ã‚¸ã¸ç§»å‹• +last_page.title=最後ã®ãƒšãƒ¼ã‚¸ã¸ç§»å‹•ã—ã¾ã™ +last_page_label=最後ã®ãƒšãƒ¼ã‚¸ã¸ç§»å‹• +page_rotate_cw.title=ページをå³ã¸å›žè»¢ã—ã¾ã™ +page_rotate_cw_label=å³å›žè»¢ +page_rotate_ccw.title=ページを左ã¸å›žè»¢ã—ã¾ã™ +page_rotate_ccw_label=左回転 + +cursor_text_select_tool.title=テキストé¸æŠžãƒ„ールを有効ã«ã—ã¾ã™ +cursor_text_select_tool_label=テキストé¸æŠžãƒ„ール +cursor_hand_tool.title=手ã®ã²ã‚‰ãƒ„ールを有効ã«ã—ã¾ã™ +cursor_hand_tool_label=手ã®ã²ã‚‰ãƒ„ール + +scroll_page.title=ページå˜ä½ã§ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«ã—ã¾ã™ +scroll_page_label=ページå˜ä½ã§ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ« +scroll_vertical.title=縦スクロールã«ã—ã¾ã™ +scroll_vertical_label=縦スクロール +scroll_horizontal.title=横スクロールã«ã—ã¾ã™ +scroll_horizontal_label=横スクロール +scroll_wrapped.title=折り返ã—スクロールã«ã—ã¾ã™ +scroll_wrapped_label=折り返ã—スクロール + +spread_none.title=見開ãã«ã—ã¾ã›ã‚“ +spread_none_label=見開ãã«ã—ãªã„ +spread_odd.title=奇数ページ開始ã§è¦‹é–‹ãã«ã—ã¾ã™ +spread_odd_label=奇数ページ見開ã +spread_even.title=å¶æ•°ãƒšãƒ¼ã‚¸é–‹å§‹ã§è¦‹é–‹ãã«ã—ã¾ã™ +spread_even_label=å¶æ•°ãƒšãƒ¼ã‚¸è¦‹é–‹ã + +# Document properties dialog box +document_properties.title=文書ã®ãƒ—ロパティ... +document_properties_label=文書ã®ãƒ—ロパティ... +document_properties_file_name=ファイルå: +document_properties_file_size=ファイルサイズ: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} ãƒã‚¤ãƒˆ) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} ãƒã‚¤ãƒˆ) +document_properties_title=タイトル: +document_properties_author=作æˆè€…: +document_properties_subject=件å: +document_properties_keywords=キーワード: +document_properties_creation_date=作æˆæ—¥: +document_properties_modification_date=æ›´æ–°æ—¥: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=アプリケーション: +document_properties_producer=PDF 作æˆ: +document_properties_version=PDF ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³: +document_properties_page_count=ページ数: +document_properties_page_size=ページサイズ: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=縦 +document_properties_page_size_orientation_landscape=横 +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=レター +document_properties_page_size_name_legal=リーガル +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=ウェブ表示用ã«æœ€é©åŒ–: +document_properties_linearized_yes=ã¯ã„ +document_properties_linearized_no=ã„ã„㈠+document_properties_close=é–‰ã˜ã‚‹ + +print_progress_message=文書ã®å°åˆ·ã‚’準備ã—ã¦ã„ã¾ã™... +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=キャンセル + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=サイドãƒãƒ¼è¡¨ç¤ºã‚’切り替ãˆã¾ã™ +toggle_sidebar_notification2.title=サイドãƒãƒ¼è¡¨ç¤ºã‚’切り替ãˆã¾ã™ (文書ã«å«ã¾ã‚Œã‚‹ã‚¢ã‚¦ãƒˆãƒ©ã‚¤ãƒ³ / 添付 / レイヤー) +toggle_sidebar_label=サイドãƒãƒ¼ã®åˆ‡ã‚Šæ›¿ãˆ +document_outline.title=文書ã®ç›®æ¬¡ã‚’表示ã—ã¾ã™ (ダブルクリックã§é …目を開閉ã—ã¾ã™) +document_outline_label=文書ã®ç›®æ¬¡ +attachments.title=添付ファイルを表示ã—ã¾ã™ +attachments_label=添付ファイル +layers.title=レイヤーを表示ã—ã¾ã™ (ダブルクリックã§ã™ã¹ã¦ã®ãƒ¬ã‚¤ãƒ¤ãƒ¼ãŒåˆæœŸçŠ¶æ…‹ã«æˆ»ã‚Šã¾ã™) +layers_label=レイヤー +thumbs.title=縮å°ç‰ˆã‚’表示ã—ã¾ã™ +thumbs_label=縮å°ç‰ˆ +current_outline_item.title=ç¾åœ¨ã®ã‚¢ã‚¦ãƒˆãƒ©ã‚¤ãƒ³é …目を検索 +current_outline_item_label=ç¾åœ¨ã®ã‚¢ã‚¦ãƒˆãƒ©ã‚¤ãƒ³é …ç›® +findbar.title=文書内を検索ã—ã¾ã™ +findbar_label=検索 + +additional_layers=追加レイヤー +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark={{page}} ページ +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title={{page}} ページ +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}} ページã®ç¸®å°ç‰ˆ + +# Find panel button title and messages +find_input.title=検索 +find_input.placeholder=文書内を検索... +find_previous.title=ç¾åœ¨ã‚ˆã‚Šå‰ã®ä½ç½®ã§æŒ‡å®šæ–‡å­—列ãŒç¾ã‚Œã‚‹éƒ¨åˆ†ã‚’検索ã—ã¾ã™ +find_previous_label=å‰ã¸ +find_next.title=ç¾åœ¨ã‚ˆã‚Šå¾Œã®ä½ç½®ã§æŒ‡å®šæ–‡å­—列ãŒç¾ã‚Œã‚‹éƒ¨åˆ†ã‚’検索ã—ã¾ã™ +find_next_label=次㸠+find_highlight=ã™ã¹ã¦å¼·èª¿è¡¨ç¤º +find_match_case_label=大文字/å°æ–‡å­—を区別 +find_match_diacritics_label=発音区別符å·ã‚’区別 +find_entire_word_label=å˜èªžä¸€è‡´ +find_reached_top=文書先頭ã«åˆ°é”ã—ãŸã®ã§æœ«å°¾ã‹ã‚‰ç¶šã‘ã¦æ¤œç´¢ã—ã¾ã™ +find_reached_bottom=文書末尾ã«åˆ°é”ã—ãŸã®ã§å…ˆé ­ã‹ã‚‰ç¶šã‘ã¦æ¤œç´¢ã—ã¾ã™ +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{total}} 件中 {{current}} 件目 +find_match_count[two]={{total}} 件中 {{current}} 件目 +find_match_count[few]={{total}} 件中 {{current}} 件目 +find_match_count[many]={{total}} 件中 {{current}} 件目 +find_match_count[other]={{total}} 件中 {{current}} 件目 +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]={{limit}} 件以上一致 +find_match_count_limit[one]={{limit}} 件以上一致 +find_match_count_limit[two]={{limit}} 件以上一致 +find_match_count_limit[few]={{limit}} 件以上一致 +find_match_count_limit[many]={{limit}} 件以上一致 +find_match_count_limit[other]={{limit}} 件以上一致 +find_not_found=見ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—㟠+ +# Error panel labels +error_more_info=詳細情報 +error_less_info=詳細情報を隠㙠+error_close=é–‰ã˜ã‚‹ +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (ビルド: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=メッセージ: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=スタック: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=ファイル: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=è¡Œ: {{line}} + +# Predefined zoom values +page_scale_width=å¹…ã«åˆã‚ã›ã‚‹ +page_scale_fit=ページã®ã‚µã‚¤ã‚ºã«åˆã‚ã›ã‚‹ +page_scale_auto=自動ズーム +page_scale_actual=実際ã®ã‚µã‚¤ã‚º +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=読ã¿è¾¼ã¿ä¸­... +loading_error=PDF ã®èª­ã¿è¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ +invalid_file_error=無効ã¾ãŸã¯ç ´æã—㟠PDF ファイル。 +missing_file_error=PDF ファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 +unexpected_response_error=サーãƒãƒ¼ã‹ã‚‰äºˆæœŸã›ã¬å¿œç­”ãŒã‚ã‚Šã¾ã—ãŸã€‚ + +rendering_error=ページã®ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} 注釈] +password_label=ã“ã® PDF ファイルを開ããŸã‚ã®ãƒ‘スワードを入力ã—ã¦ãã ã•ã„。 +password_invalid=無効ãªãƒ‘スワードã§ã™ã€‚ã‚‚ã†ä¸€åº¦ã‚„ã‚Šç›´ã—ã¦ãã ã•ã„。 +password_ok=OK +password_cancel=キャンセル + +printing_not_supported=警告: ã“ã®ãƒ–ラウザーã§ã¯å°åˆ·ãŒå®Œå…¨ã«ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。 +printing_not_ready=警告: PDF ã‚’å°åˆ·ã™ã‚‹ãŸã‚ã®èª­ã¿è¾¼ã¿ãŒçµ‚了ã—ã¦ã„ã¾ã›ã‚“。 +web_fonts_disabled=ウェブフォントãŒç„¡åŠ¹ã«ãªã£ã¦ã„ã¾ã™: 埋ã‚è¾¼ã¾ã‚ŒãŸ PDF ã®ãƒ•ã‚©ãƒ³ãƒˆã‚’使用ã§ãã¾ã›ã‚“。 + +# Editor +editor_free_text2.title=フリーテキスト注釈 +editor_free_text2_label=フリーテキスト注釈 +editor_ink2.title=インク注釈 +editor_ink2_label=インク注釈 + +free_text2_default_content=テキストを入力ã—ã¦ãã ã•ã„... + +# Editor Parameters +editor_free_text_color=色 +editor_free_text_size=サイズ +editor_ink_color=色 +editor_ink_thickness=太㕠+editor_ink_opacity=ä¸é€æ˜Žåº¦ + +# Editor aria +editor_free_text2_aria_label=フリーテキスト注釈エディター +editor_ink2_aria_label=インク注釈エディター +editor_ink_canvas_aria_label=ユーザー作æˆç”»åƒ diff --git a/page/static/js/web/locale/ka/viewer.properties b/page/static/js/web/locale/ka/viewer.properties new file mode 100644 index 0000000..c90514d --- /dev/null +++ b/page/static/js/web/locale/ka/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=წინრგვერდი +previous_label=წინრ+next.title=შემდეგი გვერდი +next_label=შემდეგი + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=გვერდი +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}}-დáƒáƒœ +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} {{pagesCount}}-დáƒáƒœ) + +zoom_out.title=ზáƒáƒ›áƒ˜áƒ¡ შემცირებრ+zoom_out_label=დáƒáƒ¨áƒáƒ áƒ”ბრ+zoom_in.title=ზáƒáƒ›áƒ˜áƒ¡ გáƒáƒ–რდრ+zoom_in_label=მáƒáƒáƒ®áƒšáƒáƒ”ბრ+zoom.title=ზáƒáƒ›áƒ +presentation_mode.title=ჩვენების რეჟიმზე გáƒáƒ“áƒáƒ áƒ—ვრ+presentation_mode_label=ჩვენების რეჟიმი +open_file.title=ფáƒáƒ˜áƒšáƒ˜áƒ¡ გáƒáƒ®áƒ¡áƒœáƒ +open_file_label=გáƒáƒ®áƒ¡áƒœáƒ +print.title=áƒáƒ›áƒáƒ‘ეჭდვრ+print_label=áƒáƒ›áƒáƒ‘ეჭდვრ+download.title=ჩáƒáƒ›áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვრ+download_label=ჩáƒáƒ›áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვრ+save.title=შენáƒáƒ®áƒ•áƒ +save_label=შენáƒáƒ®áƒ•áƒ +bookmark.title=მიმდინáƒáƒ áƒ” ხედი (áƒáƒ¡áƒšáƒ˜áƒ¡ áƒáƒ¦áƒ”ბრáƒáƒœ გáƒáƒ®áƒ¡áƒœáƒ áƒáƒ®áƒáƒš ფáƒáƒœáƒ¯áƒáƒ áƒáƒ¨áƒ˜) +bookmark_label=მიმდინáƒáƒ áƒ” ხედი + +bookmark1.title=მიმდინáƒáƒ áƒ” გვერდი (ბმული áƒáƒ› გვერდისთვის) +bookmark1_label=მიმდინáƒáƒ áƒ” გვერდი + +# Secondary toolbar and context menu +tools.title=ხელსáƒáƒ¬áƒ§áƒáƒ”ბი +tools_label=ხელსáƒáƒ¬áƒ§áƒáƒ”ბი +first_page.title=პირველ გვერდზე გáƒáƒ“áƒáƒ¡áƒ•áƒšáƒ +first_page_label=პირველ გვერდზე გáƒáƒ“áƒáƒ¡áƒ•áƒšáƒ +last_page.title=ბáƒáƒšáƒ გვერდზე გáƒáƒ“áƒáƒ¡áƒ•áƒšáƒ +last_page_label=ბáƒáƒšáƒ გვერდზე გáƒáƒ“áƒáƒ¡áƒ•áƒšáƒ +page_rotate_cw.title=სáƒáƒáƒ—ის ისრის მიმáƒáƒ áƒ—ულებით შებრუნებრ+page_rotate_cw_label=მáƒáƒ áƒ¯áƒ•áƒœáƒ˜áƒ• გáƒáƒ“áƒáƒ‘რუნებრ+page_rotate_ccw.title=სáƒáƒáƒ—ის ისრის სáƒáƒžáƒ˜áƒ áƒ˜áƒ¡áƒžáƒ˜áƒ áƒáƒ“ შებრუნებრ+page_rotate_ccw_label=მáƒáƒ áƒªáƒ®áƒœáƒ˜áƒ• გáƒáƒ“áƒáƒ‘რუნებრ+ +cursor_text_select_tool.title=მáƒáƒ¡áƒáƒœáƒ˜áƒ¨áƒœáƒ˜ მáƒáƒ©áƒ•áƒ”ნებლის გáƒáƒ›áƒáƒ§áƒ”ნებრ+cursor_text_select_tool_label=მáƒáƒ¡áƒáƒœáƒ˜áƒ¨áƒœáƒ˜ მáƒáƒ©áƒ•áƒ”ნებელი +cursor_hand_tool.title=გáƒáƒ“áƒáƒ¡áƒáƒáƒ“გილებელი მáƒáƒ©áƒ•áƒ”ნებლის გáƒáƒ›áƒáƒ§áƒ”ნებრ+cursor_hand_tool_label=გáƒáƒ“áƒáƒ¡áƒáƒáƒ“გილებელი + +scroll_page.title=გვერდზე გáƒáƒ“áƒáƒáƒ“გილების გáƒáƒ›áƒáƒ§áƒ”ნებრ+scroll_page_label=გვერდზე გáƒáƒ“áƒáƒáƒ“გილებრ+scroll_vertical.title=გვერდების შვეულáƒáƒ“ ჩვენებრ+scroll_vertical_label=შვეული გáƒáƒ“áƒáƒáƒ“გილებრ+scroll_horizontal.title=გვერდების თáƒáƒ áƒáƒ–ულáƒáƒ“ ჩვენებრ+scroll_horizontal_label=გáƒáƒœáƒ˜áƒ•áƒ˜ გáƒáƒ“áƒáƒáƒ“გილებრ+scroll_wrapped.title=გვერდების ცხრილურáƒáƒ“ ჩვენებრ+scroll_wrapped_label=ცხრილური გáƒáƒ“áƒáƒáƒ“გილებრ+ +spread_none.title=áƒáƒ  გვერდზე გáƒáƒ¨áƒšáƒ˜áƒ¡ გáƒáƒ áƒ”შე +spread_none_label=ცáƒáƒšáƒ’ვერდიáƒáƒœáƒ˜ ჩვენებრ+spread_odd.title=áƒáƒ  გვერდზე გáƒáƒ¨áƒšáƒ, კენტი გვერდიდáƒáƒœ დáƒáƒ¬áƒ§áƒ”ბული +spread_odd_label=áƒáƒ  გვერდზე კენტიდáƒáƒœ +spread_even.title=áƒáƒ  გვერდზე გáƒáƒ¨áƒšáƒ, ლუწი გვერდიდáƒáƒœ დáƒáƒ¬áƒ§áƒ”ბული +spread_even_label=áƒáƒ  გვერდზე ლუწიდáƒáƒœ + +# Document properties dialog box +document_properties.title=დáƒáƒ™áƒ£áƒ›áƒ”ნტის შესáƒáƒ®áƒ”ბ… +document_properties_label=დáƒáƒ™áƒ£áƒ›áƒ”ნტის შესáƒáƒ®áƒ”ბ… +document_properties_file_name=ფáƒáƒ˜áƒšáƒ˜áƒ¡ სáƒáƒ®áƒ”ლი: +document_properties_file_size=ფáƒáƒ˜áƒšáƒ˜áƒ¡ მáƒáƒªáƒ£áƒšáƒáƒ‘áƒ: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} კბ ({{size_b}} ბáƒáƒ˜áƒ¢áƒ˜) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} მბ ({{size_b}} ბáƒáƒ˜áƒ¢áƒ˜) +document_properties_title=სáƒáƒ—áƒáƒ£áƒ áƒ˜: +document_properties_author=შემქმნელი: +document_properties_subject=თემáƒ: +document_properties_keywords=სáƒáƒ™áƒ•áƒáƒœáƒ«áƒ სიტყვები: +document_properties_creation_date=შექმნის დრáƒ: +document_properties_modification_date=ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბის დრáƒ: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=გáƒáƒ›áƒáƒ›áƒªáƒ”მი: +document_properties_producer=PDF-შემდგენელი: +document_properties_version=PDF-ვერსიáƒ: +document_properties_page_count=გვერდები: +document_properties_page_size=გვერდის ზáƒáƒ›áƒ: +document_properties_page_size_unit_inches=დუიმი +document_properties_page_size_unit_millimeters=მმ +document_properties_page_size_orientation_portrait=შვეულáƒáƒ“ +document_properties_page_size_orientation_landscape=თáƒáƒ áƒáƒ–ულáƒáƒ“ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=მსუბუქი ვებჩვენებáƒ: +document_properties_linearized_yes=დიáƒáƒ® +document_properties_linearized_no=áƒáƒ áƒ +document_properties_close=დáƒáƒ®áƒ£áƒ áƒ•áƒ + +print_progress_message=დáƒáƒ™áƒ£áƒ›áƒ”ნტი მზáƒáƒ“დებრáƒáƒ›áƒáƒ¡áƒáƒ‘ეჭდáƒáƒ“… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=გáƒáƒ£áƒ¥áƒ›áƒ”ბრ+ +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=გვერდითრზáƒáƒšáƒ˜áƒ¡ გáƒáƒ›áƒáƒ©áƒ”ნáƒ/დáƒáƒ›áƒáƒšáƒ•áƒ +toggle_sidebar_notification2.title=გვერდითი ზáƒáƒšáƒ˜áƒ¡ გáƒáƒ›áƒáƒ©áƒ”ნრ(შეიცáƒáƒ•áƒ¡ სáƒáƒ áƒ©áƒ”ვს/დáƒáƒœáƒáƒ áƒ—ს/ფენებს) +toggle_sidebar_label=გვერდითრზáƒáƒšáƒ˜áƒ¡ გáƒáƒ›áƒáƒ©áƒ”ნáƒ/დáƒáƒ›áƒáƒšáƒ•áƒ +document_outline.title=დáƒáƒ™áƒ£áƒ›áƒ”ნტის სáƒáƒ áƒ©áƒ”ვის ჩვენებრ(áƒáƒ áƒ›áƒáƒ’ი წკáƒáƒžáƒ˜áƒ— თითáƒáƒ”ულის ჩáƒáƒ›áƒáƒ¨áƒšáƒ/áƒáƒ™áƒ”ცვáƒ) +document_outline_label=დáƒáƒ™áƒ£áƒ›áƒ”ნტის სáƒáƒ áƒ©áƒ”ვი +attachments.title=დáƒáƒœáƒáƒ áƒ—ების ჩვენებრ+attachments_label=დáƒáƒœáƒáƒ áƒ—ები +layers.title=ფენების გáƒáƒ›áƒáƒ©áƒ”ნრ(áƒáƒ áƒ›áƒáƒ’ი წკáƒáƒžáƒ˜áƒ— ყველრფენის ნáƒáƒ’ულისხმევზე დáƒáƒ‘რუნებáƒ) +layers_label=ფენები +thumbs.title=შეთვáƒáƒšáƒ˜áƒ”რებრ+thumbs_label=ესკიზები +current_outline_item.title=მიმდინáƒáƒ áƒ” გვერდის მáƒáƒœáƒáƒ®áƒ•áƒ სáƒáƒ áƒ©áƒ”ვში +current_outline_item_label=მიმდინáƒáƒ áƒ” გვერდი სáƒáƒ áƒ©áƒ”ვში +findbar.title=პáƒáƒ•áƒœáƒ დáƒáƒ™áƒ£áƒ›áƒ”ნტში +findbar_label=ძიებრ+ +additional_layers=დáƒáƒ›áƒáƒ¢áƒ”ბითი ფენები +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=გვერდი {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=გვერდი {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=გვერდის შეთვáƒáƒšáƒ˜áƒ”რებრ{{page}} + +# Find panel button title and messages +find_input.title=ძიებრ+find_input.placeholder=პáƒáƒ•áƒœáƒ დáƒáƒ™áƒ£áƒ›áƒ”ნტში… +find_previous.title=ფრáƒáƒ–ის წინრკáƒáƒœáƒ¢áƒ”ქსტის პáƒáƒ•áƒœáƒ +find_previous_label=წინრ+find_next.title=ფრáƒáƒ–ის შემდეგი კáƒáƒœáƒ¢áƒ”ქსტის პáƒáƒ•áƒœáƒ +find_next_label=შემდეგი +find_highlight=ყველáƒáƒ¡ მáƒáƒœáƒ˜áƒ¨áƒ•áƒœáƒ +find_match_case_label=მთáƒáƒ•áƒ áƒ£áƒšáƒ˜áƒ— +find_match_diacritics_label=ნიშნებით +find_entire_word_label=მთლიáƒáƒœáƒ˜ სიტყვები +find_reached_top=მიღწეულირდáƒáƒ™áƒ£áƒ›áƒ”ნტის დáƒáƒ¡áƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜, გრძელდებრბáƒáƒšáƒáƒ“áƒáƒœ +find_reached_bottom=მიღწეულირდáƒáƒ™áƒ£áƒ›áƒ”ნტის ბáƒáƒšáƒ, გრძელდებრდáƒáƒ¡áƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜áƒ“áƒáƒœ +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} / {{total}} თáƒáƒœáƒ®áƒ•áƒ”დრიდáƒáƒœ +find_match_count[two]={{current}} / {{total}} თáƒáƒœáƒ®áƒ•áƒ”დრიდáƒáƒœ +find_match_count[few]={{current}} / {{total}} თáƒáƒœáƒ®áƒ•áƒ”დრიდáƒáƒœ +find_match_count[many]={{current}} / {{total}} თáƒáƒœáƒ®áƒ•áƒ”დრიდáƒáƒœ +find_match_count[other]={{current}} / {{total}} თáƒáƒœáƒ®áƒ•áƒ”დრიდáƒáƒœ +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=áƒáƒ áƒáƒœáƒáƒ™áƒšáƒ”ბ {{limit}} თáƒáƒœáƒ®áƒ•áƒ”დრრ+find_match_count_limit[one]=áƒáƒ áƒáƒœáƒáƒ™áƒšáƒ”ბ {{limit}} თáƒáƒœáƒ®áƒ•áƒ”დრრ+find_match_count_limit[two]=áƒáƒ áƒáƒœáƒáƒ™áƒšáƒ”ბ {{limit}} თáƒáƒœáƒ®áƒ•áƒ”დრრ+find_match_count_limit[few]=áƒáƒ áƒáƒœáƒáƒ™áƒšáƒ”ბ {{limit}} თáƒáƒœáƒ®áƒ•áƒ”დრრ+find_match_count_limit[many]=áƒáƒ áƒáƒœáƒáƒ™áƒšáƒ”ბ {{limit}} თáƒáƒœáƒ®áƒ•áƒ”დრრ+find_match_count_limit[other]=áƒáƒ áƒáƒœáƒáƒ™áƒšáƒ”ბ {{limit}} თáƒáƒœáƒ®áƒ•áƒ”დრრ+find_not_found=ფრáƒáƒ–რვერ მáƒáƒ˜áƒ«áƒ”ბნრ+ +# Error panel labels +error_more_info=ვრცლáƒáƒ“ +error_less_info=შემáƒáƒ™áƒšáƒ”ბულáƒáƒ“ +error_close=დáƒáƒ®áƒ£áƒ áƒ•áƒ +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=შეტყáƒáƒ‘ინებáƒ: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=სტეკი: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=ფáƒáƒ˜áƒšáƒ˜: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=ხáƒáƒ–ი: {{line}} + +# Predefined zoom values +page_scale_width=გვერდის სიგáƒáƒœáƒ”ზე +page_scale_fit=მთლიáƒáƒœáƒ˜ გვერდი +page_scale_auto=áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒ˜ +page_scale_actual=სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ ზáƒáƒ›áƒ +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=ჩáƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒâ€¦ +loading_error=შეცდáƒáƒ›áƒ, PDF-ფáƒáƒ˜áƒšáƒ˜áƒ¡ ჩáƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვისáƒáƒ¡. +invalid_file_error=áƒáƒ áƒáƒ›áƒáƒ áƒ—ებული áƒáƒœ დáƒáƒ–იáƒáƒœáƒ”ბული PDF-ფáƒáƒ˜áƒšáƒ˜. +missing_file_error=ნáƒáƒ™áƒšáƒ£áƒšáƒ˜ PDF-ფáƒáƒ˜áƒšáƒ˜. +unexpected_response_error=სერვერის მáƒáƒ£áƒšáƒáƒ“ნელი პáƒáƒ¡áƒ£áƒ®áƒ˜. + +rendering_error=შეცდáƒáƒ›áƒ, გვერდის ჩვენებისáƒáƒ¡. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} შენიშვნáƒ] +password_label=შეიყვáƒáƒœáƒ”თ პáƒáƒ áƒáƒšáƒ˜ PDF-ფáƒáƒ˜áƒšáƒ˜áƒ¡ გáƒáƒ¡áƒáƒ®áƒ¡áƒœáƒ”ლáƒáƒ“. +password_invalid=áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ პáƒáƒ áƒáƒšáƒ˜. გთხáƒáƒ•áƒ—, სცáƒáƒ“áƒáƒ— ხელáƒáƒ®áƒšáƒ. +password_ok=კáƒáƒ áƒ’ი +password_cancel=გáƒáƒ£áƒ¥áƒ›áƒ”ბრ+ +printing_not_supported=გáƒáƒ¤áƒ áƒ—ხილებáƒ: áƒáƒ›áƒáƒ‘ეჭდვრáƒáƒ› ბრáƒáƒ£áƒ–ერში áƒáƒ áƒáƒ სრულáƒáƒ“ მხáƒáƒ áƒ“áƒáƒ­áƒ”რილი. +printing_not_ready=გáƒáƒ¤áƒ áƒ—ხილებáƒ: PDF სრულáƒáƒ“ ჩáƒáƒ¢áƒ•áƒ˜áƒ áƒ—ული áƒáƒ áƒáƒ, áƒáƒ›áƒáƒ‘ეჭდვის დáƒáƒ¡áƒáƒ¬áƒ§áƒ”ბáƒáƒ“. +web_fonts_disabled=ვებშრიფტები გáƒáƒ›áƒáƒ áƒ—ულიáƒ: ჩáƒáƒ¨áƒ”ნებული PDF-შრიფტების გáƒáƒ›áƒáƒ§áƒ”ნებრვერ ხერხდებáƒ. + +# Editor +editor_free_text2.title=წáƒáƒ áƒ¬áƒ”რრ+editor_free_text2_label=ტექსტი +editor_ink2.title=დáƒáƒ®áƒáƒ¢áƒ•áƒ +editor_ink2_label=დáƒáƒ®áƒáƒ¢áƒ•áƒ + +free_text2_default_content=áƒáƒ™áƒ áƒ˜áƒ¤áƒ”თ… + +# Editor Parameters +editor_free_text_color=ფერი +editor_free_text_size=ზáƒáƒ›áƒ +editor_ink_color=ფერი +editor_ink_thickness=სისქე +editor_ink_opacity=გáƒáƒ£áƒ›áƒ­áƒ•áƒ˜áƒ áƒ•áƒáƒšáƒáƒ‘რ+ +# Editor aria +editor_free_text2_aria_label=ნáƒáƒ¬áƒ”რის ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბრ+editor_ink2_aria_label=ნáƒáƒ®áƒáƒ¢áƒ˜áƒ¡ ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბრ+editor_ink_canvas_aria_label=მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის შექმნილი სურáƒáƒ—ი diff --git a/page/static/js/web/locale/kab/viewer.properties b/page/static/js/web/locale/kab/viewer.properties new file mode 100644 index 0000000..917e7a7 --- /dev/null +++ b/page/static/js/web/locale/kab/viewer.properties @@ -0,0 +1,274 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Asebter azewwar +previous_label=Azewwar +next.title=Asebter d-iteddun +next_label=Ddu É£er zdat + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Asebter +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=É£ef {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} n {{pagesCount}}) + +zoom_out.title=Semẓi +zoom_out_label=Semẓi +zoom_in.title=SemÉ£eá¹› +zoom_in_label=SemÉ£eá¹› +zoom.title=SemÉ£eá¹›/Semẓi +presentation_mode.title=UÉ£al É£er Uskar Tihawt +presentation_mode_label=Askar Tihawt +open_file.title=Ldi Afaylu +open_file_label=Ldi +print.title=Siggez +print_label=Siggez +download.title=Sader +download_label=Azdam +save.title=Sekles +save_label=Sekles +bookmark.title=Timeẓri tamirant (nÉ£el neÉ£ ldi É£ef usfaylu amaynut) +bookmark_label=Askan amiran + +# Secondary toolbar and context menu +tools.title=Ifecka +tools_label=Ifecka +first_page.title=Ddu É£er usebter amezwaru +first_page_label=Ddu É£er usebter amezwaru +last_page.title=Ddu É£er usebter aneggaru +last_page_label=Ddu É£er usebter aneggaru +page_rotate_cw.title=Tuzzya tusrigt +page_rotate_cw_label=Tuzzya tusrigt +page_rotate_ccw.title=Tuzzya amgal-usrig +page_rotate_ccw_label=Tuzzya amgal-usrig + +cursor_text_select_tool.title=Rmed afecku n tefrant n uá¸ris +cursor_text_select_tool_label=Afecku n tefrant n uá¸ris +cursor_hand_tool.title=Rmed afecku afus +cursor_hand_tool_label=Afecku afus + +scroll_page.title=Seqdec adrurem n usebter +scroll_page_label=Adrurem n usebter +scroll_vertical.title=Seqdec adrurem ubdid +scroll_vertical_label=Adrurem ubdid +scroll_horizontal.title=Seqdec adrurem aglawan +scroll_horizontal_label=Adrurem aglawan +scroll_wrapped.title=Seqdec adrurem yuẓen +scroll_wrapped_label=Adrurem yuẓen + +spread_none.title=Ur sedday ara isiÉ£zaf n usebter +spread_none_label=Ulac isiÉ£zaf +spread_odd.title=Seddu isiÉ£zaf n usebter ibeddun s yisebtar irayuganen +spread_odd_label=IsiÉ£zaf irayuganen +spread_even.title=Seddu isiÉ£zaf n usebter ibeddun s yisebtar iyuganen +spread_even_label=IsiÉ£zaf iyuganen + +# Document properties dialog box +document_properties.title=TaÉ£aá¹›a n isemli… +document_properties_label=TaÉ£aá¹›a n isemli… +document_properties_file_name=Isem n ufaylu: +document_properties_file_size=TeÉ£zi n ufaylu: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KAṬ ({{size_b}} ibiten) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MAṬ ({{size_b}} iá¹­amá¸anen) +document_properties_title=Azwel: +document_properties_author=Ameskar: +document_properties_subject=Amgay: +document_properties_keywords=Awalen n tsaruÅ£ +document_properties_creation_date=Azemz n tmerna: +document_properties_modification_date=Azemz n usnifel: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Yerna-t: +document_properties_producer=Afecku n uselket PDF: +document_properties_version=Lqem PDF: +document_properties_page_count=Amá¸an n yisebtar: +document_properties_page_size=Tuγzi n usebter: +document_properties_page_size_unit_inches=deg +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=s teÉ£zi +document_properties_page_size_orientation_landscape=s tehri +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Asekkil +document_properties_page_size_name_legal=Usá¸if +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Taskant Web taruradt: +document_properties_linearized_yes=Ih +document_properties_linearized_no=Ala +document_properties_close=Mdel + +print_progress_message=Aheggi i usiggez n isemli… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Sefsex + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Sken/Fer agalis adisan +toggle_sidebar_notification2.title=Ffer/Sekn agalis adisan (isemli yegber aÉ£awas/ticeqqufin yeddan/tissiwin) +toggle_sidebar_label=Sken/Fer agalis adisan +document_outline.title=Sken isemli (Senned snat tikal i wesemÉ£er/Afneẓ n iferdisen meṛṛa) +document_outline_label=IsÉ£alen n isebtar +attachments.title=Sken ticeqqufin yeddan +attachments_label=Ticeqqufin yeddan +layers.title=Skeen tissiwin (sit sin yiberdan i uwennez n meṛṛa tissiwin É£er waddad amezwer) +layers_label=Tissiwin +thumbs.title=Sken tanfult. +thumbs_label=Tinfulin +current_outline_item.title=Af-d aferdis n uÉ£awas amiran +current_outline_item_label=Aferdis n uÉ£awas amiran +findbar.title=Nadi deg isemli +findbar_label=Nadi + +additional_layers=Tissiwin-nniá¸en +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Asebter {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Asebter {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Tanfult n usebter {{page}} + +# Find panel button title and messages +find_input.title=Nadi +find_input.placeholder=Nadi deg isemli… +find_previous.title=Aff-d tamseá¸riwt n twinest n deffir +find_previous_label=Azewwar +find_next.title=Aff-d timseá¸riwt n twinest d-iteddun +find_next_label=Ddu É£er zdat +find_highlight=Err izirig imaṛṛa +find_match_case_label=Qadeá¹› amasal n isekkilen +find_match_diacritics_label=Qadeá¹› ifeskilen +find_entire_word_label=Awalen iÄÄuranen +find_reached_top=YabbeḠs afella n usebter, tuÉ£alin s wadda +find_reached_bottom=Tebá¸eḠs adda n usebter, tuÉ£alin s afella +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} seg {{total}} n tmeɣṛuá¸in +find_match_count[two]={{current}} seg {{total}} n tmeɣṛuá¸in +find_match_count[few]={{current}} seg {{total}} n tmeɣṛuá¸in +find_match_count[many]={{current}} seg {{total}} n tmeɣṛuá¸in +find_match_count[other]={{current}} seg {{total}} n tmeɣṛuá¸in +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Ugar n {{limit}} n tmeɣṛuá¸in +find_match_count_limit[one]=Ugar n {{limit}} n tmeɣṛuá¸in +find_match_count_limit[two]=Ugar n {{limit}} n tmeɣṛuá¸in +find_match_count_limit[few]=Ugar n {{limit}} n tmeɣṛuá¸in +find_match_count_limit[many]=Ugar n {{limit}} n tmeɣṛuá¸in +find_match_count_limit[other]=Ugar n {{limit}} n tmeɣṛuá¸in +find_not_found=Ulac tawinest + +# Error panel labels +error_more_info=Ugar n telÉ£ut +error_less_info=Drus n isalen +error_close=Mdel +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Izen: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Tanebdant: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Afaylu: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Izirig: {{line}} + +# Predefined zoom values +page_scale_width=Tehri n usebter +page_scale_fit=Asebter imaṛṛa +page_scale_auto=AsemÉ£eá¹›/Asemẓi awurman +page_scale_actual=TeÉ£zi tilawt +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Asali… +loading_error=Teá¸ra-d tuccá¸a deg alluy n PDF: +invalid_file_error=Afaylu PDF arameÉ£tu neÉ£ yexá¹£eá¹›. +missing_file_error=Ulac afaylu PDF. +unexpected_response_error=Aqeddac yerra-d yir tiririt ur nettwaṛǧi ara. + +rendering_error=Teá¸ra-d tuccá¸a deg uskan n usebter. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Tabzimt {{type}}] +password_label=Sekcem awal uffir akken ad ldiḠafaylu-yagi PDF +password_invalid=Awal uffir maÄÄi d ameÉ£tu, ÆreḠtikelt-nniá¸en. +password_ok=IH +password_cancel=Sefsex + +printing_not_supported=Æ”uá¹›-k: Asiggez ur ittusefrak ara yakan imaṛṛa deg iminig-a. +printing_not_ready=Æ”uá¹›-k: Afaylu PDF ur d-yuli ara imeṛṛa akken ad ittusiggez. +web_fonts_disabled=Tisefsiyin web ttwassensent; D awezÉ£i useqdec n tsefsiyin yettwarnan É£er PDF. + +# Editor +editor_free_text2.title=Aá¸ris +editor_free_text2_label=Aá¸ris +editor_ink2.title=SuneÉ£ +editor_ink2_label=SuneÉ£ + +free_text2_default_content=Bdu tira... + +# Editor Parameters +editor_free_text_color=Initen +editor_free_text_size=TeÉ£zi +editor_ink_color=Ini +editor_ink_thickness=Tuzert +editor_ink_opacity=Tebrek + +# Editor aria +editor_free_text2_aria_label=Amaẓrag n uá¸ris +editor_ink2_aria_label=Amaẓrag n usuneÉ£ +editor_ink_canvas_aria_label=Tugna yettwarnan sÉ£ur useqdac diff --git a/page/static/js/web/locale/kk/viewer.properties b/page/static/js/web/locale/kk/viewer.properties new file mode 100644 index 0000000..ac1fa65 --- /dev/null +++ b/page/static/js/web/locale/kk/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Ðлдыңғы парақ +previous_label=ÐлдыңғыÑÑ‹ +next.title=КелеÑÑ– парақ +next_label=КелеÑÑ– + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Парақ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} ішінен +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=(парақ {{pageNumber}}, {{pagesCount}} ішінен) + +zoom_out.title=Кішірейту +zoom_out_label=Кішірейту +zoom_in.title=Үлкейту +zoom_in_label=Үлкейту +zoom.title=МаÑштаб +presentation_mode.title=ÐŸÑ€ÐµÐ·ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñ–Ð½Ðµ ауыÑу +presentation_mode_label=ÐŸÑ€ÐµÐ·ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñ– +open_file.title=Файлды ашу +open_file_label=Ðшу +print.title=БаÑпаға шығару +print_label=БаÑпаға шығару +download.title=Жүктеп алу +download_label=Жүктеп алу +save.title=Сақтау +save_label=Сақтау +bookmark.title=Ðғымдағы ÐºÓ©Ñ€Ñ–Ð½Ñ–Ñ (көшіру не жаңа терезеде ашу) +bookmark_label=Ðғымдағы ÐºÓ©Ñ€Ñ–Ð½Ñ–Ñ + +bookmark1.title=Ðғымдағы бет (Ðғымдағы беттен URL адреÑін көру) +bookmark1_label=Ðғымдағы бет + +# Secondary toolbar and context menu +tools.title=Құралдар +tools_label=Құралдар +first_page.title=Ðлғашқы параққа өту +first_page_label=Ðлғашқы параққа өту +last_page.title=Соңғы параққа өту +last_page_label=Соңғы параққа өту +page_rotate_cw.title=Сағат тілі бағытымен айналдыру +page_rotate_cw_label=Сағат тілі бағытымен бұру +page_rotate_ccw.title=Сағат тілі бағытына қарÑÑ‹ бұру +page_rotate_ccw_label=Сағат тілі бағытына қарÑÑ‹ бұру + +cursor_text_select_tool.title=Мәтінді таңдау құралын Ñ–Ñке қоÑу +cursor_text_select_tool_label=Мәтінді таңдау құралы +cursor_hand_tool.title=Қол құралын Ñ–Ñке қоÑу +cursor_hand_tool_label=Қол құралы + +scroll_page.title=Беттерді айналдыруды пайдалану +scroll_page_label=Беттерді айналдыру +scroll_vertical.title=Вертикалды айналдыруды қолдану +scroll_vertical_label=Вертикалды айналдыру +scroll_horizontal.title=Горизонталды айналдыруды қолдану +scroll_horizontal_label=Горизонталды айналдыру +scroll_wrapped.title=МаÑштабталатын айналдыруды қолдану +scroll_wrapped_label=МаÑштабталатын айналдыру + +spread_none.title=Жазық беттер режимін қолданбау +spread_none_label=Жазық беттер режимÑіз +spread_odd.title=Жазық беттер тақ нөмірлі беттерден баÑталады +spread_odd_label=Тақ нөмірлі беттер Ñол жақтан +spread_even.title=Жазық беттер жұп нөмірлі беттерден баÑталады +spread_even_label=Жұп нөмірлі беттер Ñол жақтан + +# Document properties dialog box +document_properties.title=Құжат қаÑиеттері… +document_properties_label=Құжат қаÑиеттері… +document_properties_file_name=Файл аты: +document_properties_file_size=Файл өлшемі: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} КБ ({{size_b}} байт) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} МБ ({{size_b}} байт) +document_properties_title=Тақырыбы: +document_properties_author=Ðвторы: +document_properties_subject=Тақырыбы: +document_properties_keywords=Кілт Ñөздер: +document_properties_creation_date=ЖаÑалған күні: +document_properties_modification_date=Түзету күні: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=ЖаÑаған: +document_properties_producer=PDF өндірген: +document_properties_version=PDF нұÑқаÑÑ‹: +document_properties_page_count=Беттер Ñаны: +document_properties_page_size=Бет өлшемі: +document_properties_page_size_unit_inches=дюйм +document_properties_page_size_unit_millimeters=мм +document_properties_page_size_orientation_portrait=тік +document_properties_page_size_orientation_landscape=жатық +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Жылдам Web көрініÑÑ–: +document_properties_linearized_yes=Иә +document_properties_linearized_no=Жоқ +document_properties_close=Жабу + +print_progress_message=Құжатты баÑпаға шығару үшін дайындау… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Ð‘Ð°Ñ Ñ‚Ð°Ñ€Ñ‚Ñƒ + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Бүйір панелін көрÑету/жаÑыру +toggle_sidebar_notification2.title=Бүйір панелін көрÑету/жаÑыру (құжатта құрылымы/Ñалынымдар/қабаттар бар) +toggle_sidebar_label=Бүйір панелін көрÑету/жаÑыру +document_outline.title=Құжат құрылымын көрÑету (барлық нәрÑелерді жазық қылу/жинау үшін Ò›Ð¾Ñ ÑˆÐµÑ€Ñ‚Ñƒ керек) +document_outline_label=Құжат құрамаÑÑ‹ +attachments.title=Салынымдарды көрÑету +attachments_label=Салынымдар +layers.title=Қабаттарды көрÑету (барлық қабаттарды баÑтапқы күйге келтіру үшін екі рет шертіңіз) +layers_label=Қабаттар +thumbs.title=Кіші көрініÑтерді көрÑету +thumbs_label=Кіші көрініÑтер +current_outline_item.title=Құрылымның ағымдағы Ñлементін табу +current_outline_item_label=Құрылымның ағымдағы Ñлементі +findbar.title=Құжаттан табу +findbar_label=Табу + +additional_layers=ҚоÑымша қабаттар +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Бет {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title={{page}} парағы +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}} парағы үшін кіші көрініÑÑ– + +# Find panel button title and messages +find_input.title=Табу +find_input.placeholder=Құжаттан табу… +find_previous.title=ОÑÑ‹ Ñөздердің мәтіннен алдыңғы кездеÑуін табу +find_previous_label=ÐлдыңғыÑÑ‹ +find_next.title=ОÑÑ‹ Ñөздердің мәтіннен келеÑÑ– кездеÑуін табу +find_next_label=КелеÑÑ– +find_highlight=Барлығын Ñ‚Ò¯Ñпен ерекшелеу +find_match_case_label=РегиÑтрді еÑкеру +find_match_diacritics_label=Диакритиканы еÑкеру +find_entire_word_label=Сөздер толығымен +find_reached_top=Құжаттың баÑына жеттік, Ñоңынан баÑтап жалғаÑтырамыз +find_reached_bottom=Құжаттың Ñоңына жеттік, баÑынан баÑтап жалғаÑтырамыз +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} / {{total}} ÑәйкеÑтік +find_match_count[two]={{current}} / {{total}} ÑәйкеÑтік +find_match_count[few]={{current}} / {{total}} ÑәйкеÑтік +find_match_count[many]={{current}} / {{total}} ÑәйкеÑтік +find_match_count[other]={{current}} / {{total}} ÑәйкеÑтік +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]={{limit}} ÑәйкеÑтіктен көп +find_match_count_limit[one]={{limit}} ÑәйкеÑтіктен көп +find_match_count_limit[two]={{limit}} ÑәйкеÑтіктен көп +find_match_count_limit[few]={{limit}} ÑәйкеÑтіктен көп +find_match_count_limit[many]={{limit}} ÑәйкеÑтіктен көп +find_match_count_limit[other]={{limit}} ÑәйкеÑтіктен көп +find_not_found=Сөз(дер) табылмады + +# Error panel labels +error_more_info=Көбірек ақпарат +error_less_info=Ðзырақ ақпарат +error_close=Жабу +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (жинақ: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Хабарлама: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Стек: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Файл: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Жол: {{line}} + +# Predefined zoom values +page_scale_width=Парақ ені +page_scale_fit=Парақты Ñыйдыру +page_scale_auto=ÐвтомаÑштабтау +page_scale_actual=Ðақты өлшемі +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Жүктелуде… +loading_error=PDF жүктеу кезінде қате кетті. +invalid_file_error=Зақымдалған немеÑе қате PDF файл. +missing_file_error=PDF файлы жоқ. +unexpected_response_error=Сервердің күтпеген жауабы. + +rendering_error=Парақты өңдеу кезінде қате кетті. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} аңдатпаÑÑ‹] +password_label=Бұл PDF файлын ашу үшін парольді енгізіңіз. +password_invalid=Пароль Ð´Ò±Ñ€Ñ‹Ñ ÐµÐ¼ÐµÑ. Қайталап көріңіз. +password_ok=ОК +password_cancel=Ð‘Ð°Ñ Ñ‚Ð°Ñ€Ñ‚Ñƒ + +printing_not_supported=ЕÑкерту: БаÑпаға шығаруды бұл браузер толығымен қолдамайды. +printing_not_ready=ЕÑкерту: БаÑпаға шығару үшін, бұл PDF толығымен жүктеліп алынбады. +web_fonts_disabled=Веб қаріптері Ñөндірілген: құрамына енгізілген PDF қаріптерін қолдану мүмкін емеÑ. + +# Editor +editor_free_text2.title=Мәтін +editor_free_text2_label=Мәтін +editor_ink2.title=Сурет Ñалу +editor_ink2_label=Сурет Ñалу + +free_text2_default_content=Теруді баÑтау… + +# Editor Parameters +editor_free_text_color=Ð¢Ò¯Ñ +editor_free_text_size=Өлшемі +editor_ink_color=Ð¢Ò¯Ñ +editor_ink_thickness=Қалыңдығы +editor_ink_opacity=МөлдірÑіздігі + +# Editor aria +editor_free_text2_aria_label=Мәтін түзеткіші +editor_ink2_aria_label=Сурет түзеткіші +editor_ink_canvas_aria_label=Пайдаланушы жаÑаған Ñурет diff --git a/page/static/js/web/locale/km/viewer.properties b/page/static/js/web/locale/km/viewer.properties new file mode 100644 index 0000000..9b5fb73 --- /dev/null +++ b/page/static/js/web/locale/km/viewer.properties @@ -0,0 +1,210 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=ទំពáŸážšâ€‹áž˜áž»áž“ +previous_label=មុន +next.title=ទំពáŸážšâ€‹áž”ន្ទាប់ +next_label=បន្ទាប់ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=ទំពáŸážš +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=នៃ {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} នៃ {{pagesCount}}) + +zoom_out.title=​បង្រួម +zoom_out_label=​បង្រួម +zoom_in.title=​ពង្រីក +zoom_in_label=​ពង្រីក +zoom.title=ពង្រីក +presentation_mode.title=ប្ដូរ​ទៅ​របៀប​បទ​បង្ហាញ +presentation_mode_label=របៀប​បទ​បង្ហាញ +open_file.title=បើក​ឯកសារ +open_file_label=បើក +print.title=បោះពុម្ព +print_label=បោះពុម្ព +download.title=ទាញ​យក +download_label=ទាញ​យក +bookmark.title=ទិដ្ឋភាព​បច្ចុប្បន្ន (ចម្លង ឬ​បើក​នៅ​ក្នុង​បង្អួច​ážáŸ’មី) +bookmark_label=ទិដ្ឋភាព​បច្ចុប្បន្ន + +# Secondary toolbar and context menu +tools.title=ឧបករណ០+tools_label=ឧបករណ០+first_page.title=ទៅកាន់​ទំពáŸážšâ€‹ážŠáŸ†áž”ូង​ +first_page_label=ទៅកាន់​ទំពáŸážšâ€‹ážŠáŸ†áž”ូង​ +last_page.title=ទៅកាន់​ទំពáŸážšâ€‹áž…ុងក្រោយ​ +last_page_label=ទៅកាន់​ទំពáŸážšâ€‹áž…ុងក្រោយ +page_rotate_cw.title=បង្វិល​ស្រប​ទ្រនិច​នាឡិកា +page_rotate_cw_label=បង្វិល​ស្រប​ទ្រនិច​នាឡិកា +page_rotate_ccw.title=បង្វិល​ច្រាស​ទ្រនិច​នាឡិកា​​ +page_rotate_ccw_label=បង្វិល​ច្រាស​ទ្រនិច​នាឡិកា​​ + +cursor_text_select_tool.title=បើក​ឧបករណáŸâ€‹áž‡áŸ’រើស​អážáŸ’ážáž”áž‘ +cursor_text_select_tool_label=ឧបករណáŸâ€‹áž‡áŸ’រើស​អážáŸ’ážáž”áž‘ +cursor_hand_tool.title=បើក​ឧបករណáŸâ€‹ážŠáŸƒ +cursor_hand_tool_label=ឧបករណáŸâ€‹ážŠáŸƒ + + + +# Document properties dialog box +document_properties.title=លក្ážážŽâ€‹ážŸáž˜áŸ’áž”ážáŸ’ážáž·â€‹áž¯áž€ážŸáž¶ážšâ€¦ +document_properties_label=លក្ážážŽâ€‹ážŸáž˜áŸ’áž”ážáŸ’ážáž·â€‹áž¯áž€ážŸáž¶ážšâ€¦ +document_properties_file_name=ឈ្មោះ​ឯកសារ៖ +document_properties_file_size=ទំហំ​ឯកសារ៖ +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} បៃ) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} បៃ) +document_properties_title=ចំណងជើង៖ +document_properties_author=អ្នក​និពន្ធ៖ +document_properties_subject=ប្រធានបទ៖ +document_properties_keywords=ពាក្យ​គន្លឹះ៖ +document_properties_creation_date=កាលបរិច្ឆáŸáž‘​បង្កើážáŸ– +document_properties_modification_date=កាលបរិច្ឆáŸáž‘​កែប្រែ៖ +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=អ្នក​បង្កើážáŸ– +document_properties_producer=កម្មវិធី​បង្កើហPDF ៖ +document_properties_version=កំណែ PDF ៖ +document_properties_page_count=ចំនួន​ទំពáŸážšáŸ– +document_properties_page_size_unit_inches=អ៊ីញ +document_properties_page_size_unit_millimeters=មម +document_properties_page_size_orientation_portrait=បញ្ឈរ +document_properties_page_size_orientation_landscape=ផ្ážáŸáž€ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=សំបុážáŸ’ážš +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized_yes=បាទ/ចាស +document_properties_linearized_no=ទ០+document_properties_close=បិទ + +print_progress_message=កំពុង​រៀបចំ​ឯកសារ​សម្រាប់​បោះពុម្ព… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=បោះបង់ + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=បិទ/បើក​គ្រាប់​រំកិល +toggle_sidebar_label=បិទ/បើក​គ្រាប់​រំកិល +document_outline.title=បង្ហាញ​គ្រោង​ឯកសារ (ចុច​ទ្វáŸâ€‹ážŠáž„​ដើម្បី​ពង្រីក/បង្រួម​ធាážáž»â€‹áž‘ាំងអស់) +document_outline_label=គ្រោង​ឯកសារ +attachments.title=បង្ហាញ​ឯកសារ​ភ្ជាប់ +attachments_label=ឯកសារ​ភ្ជាប់ +thumbs.title=បង្ហាញ​រូបភាព​ážáž¼áž…ៗ +thumbs_label=រួបភាព​ážáž¼áž…ៗ +findbar.title=រក​នៅ​ក្នុង​ឯកសារ +findbar_label=រក + +# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=ទំពáŸážš {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=រូបភាព​ážáž¼áž…​របស់​ទំពáŸážš {{page}} + +# Find panel button title and messages +find_input.title=រក +find_input.placeholder=រក​នៅ​ក្នុង​ឯកសារ... +find_previous.title=រក​ពាក្យ ឬ​ឃ្លា​ដែល​បាន​ជួប​មុន +find_previous_label=មុន +find_next.title=រក​ពាក្យ ឬ​ឃ្លា​ដែល​បាន​ជួប​បន្ទាប់ +find_next_label=បន្ទាប់ +find_highlight=បន្លិច​ទាំងអស់ +find_match_case_label=ករណី​ដំណូច +find_reached_top=បាន​បន្ážâ€‹áž–ី​ážáž¶áž„​ក្រោម ទៅ​ដល់​ážáž¶áž„​​លើ​នៃ​ឯកសារ +find_reached_bottom=បាន​បន្ážâ€‹áž–ី​ážáž¶áž„លើ ទៅដល់​ចុង​​នៃ​ឯកសារ +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_not_found=រក​មិន​ឃើញ​ពាក្យ ឬ​ឃ្លា + +# Error panel labels +error_more_info=áž–áŸážáŸŒáž˜áž¶áž“​បន្ážáŸ‚ម +error_less_info=áž–áŸážáŸŒáž˜áž¶áž“​ážáž·áž…ážáž½áž… +error_close=បិទ +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=សារ ៖ {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=ជង់ ៖ {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=ឯកសារ ៖ {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=ជួរ ៖ {{line}} +rendering_error=មាន​កំហុស​បាន​កើážáž¡áž¾áž„​ពáŸáž›â€‹áž”ង្ហាញ​ទំពáŸážšÂ áŸ” + +# Predefined zoom values +page_scale_width=ទទឹង​ទំពáŸážš +page_scale_fit=សម​ទំពáŸážš +page_scale_auto=ពង្រីក​ស្វáŸáž™áž”្រវážáŸ’ážáž· +page_scale_actual=ទំហំ​ជាក់ស្ដែង +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=មាន​កំហុស​បាន​កើážáž¡áž¾áž„​ពáŸáž›â€‹áž€áŸ†áž–ុង​ផ្ទុក PDF ។ +invalid_file_error=ឯកសារ PDF ážáž¼áž… ឬ​មិន​ážáŸ’រឹមážáŸ’រូវ ។ +missing_file_error=បាážáŸ‹â€‹áž¯áž€ážŸáž¶ážš PDF +unexpected_response_error=ការ​ឆ្លើយ​ážáž˜â€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​មáŸâ€‹ážŠáŸ‚ល​មិន​បាន​រំពឹង។ + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} ចំណារ​ពន្យល់] +password_label=បញ្ចូល​ពាក្យសម្ងាážáŸ‹â€‹ážŠáž¾áž˜áŸ’បី​បើក​ឯកសារ PDF áž“áŸáŸ‡áŸ” +password_invalid=ពាក្យសម្ងាážáŸ‹â€‹áž˜áž·áž“​ážáŸ’រឹមážáŸ’រូវ។ សូម​ព្យាយាម​ម្ដងទៀážáŸ” +password_ok=យល់​ព្រម +password_cancel=បោះបង់ + +printing_not_supported=ការ​ព្រមាន ៖ កា​រ​បោះពុម្ព​មិន​ážáŸ’រូវ​បាន​គាំទ្រ​ពáŸáž‰áž›áŸáž‰â€‹ážŠáŸ„យ​កម្មវិធី​រុករក​នáŸáŸ‡â€‹áž‘áŸÂ áŸ” +printing_not_ready=ព្រមាន៖ PDF មិន​ážáŸ’រូវ​បាន​ផ្ទុក​ទាំងស្រុង​ដើម្បី​បោះពុម្ព​ទáŸáŸ” +web_fonts_disabled=បាន​បិទ​ពុម្ពអក្សរ​បណ្ដាញ ៖ មិន​អាច​ប្រើ​ពុម្ពអក្សរ PDF ដែល​បាន​បង្កប់​បាន​ទáŸÂ áŸ” + diff --git a/page/static/js/web/locale/kn/viewer.properties b/page/static/js/web/locale/kn/viewer.properties new file mode 100644 index 0000000..1a62056 --- /dev/null +++ b/page/static/js/web/locale/kn/viewer.properties @@ -0,0 +1,187 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=ಹಿಂದಿನ ಪà³à²Ÿ +previous_label=ಹಿಂದಿನ +next.title=ಮà³à²‚ದಿನ ಪà³à²Ÿ +next_label=ಮà³à²‚ದಿನ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=ಪà³à²Ÿ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} ರಲà³à²²à²¿ +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pagesCount}} ರಲà³à²²à²¿ {{pageNumber}}) + +zoom_out.title=ಕಿರಿದಾಗಿಸೠ+zoom_out_label=ಕಿರಿದಾಗಿಸಿ +zoom_in.title=ಹಿರಿದಾಗಿಸೠ+zoom_in_label=ಹಿರಿದಾಗಿಸಿ +zoom.title=ಗಾತà³à²°à²¬à²¦à²²à²¿à²¸à³ +presentation_mode.title=ಪà³à²°à²¸à³à²¤à³à²¤à²¿ (ಪà³à²°à²¸à³†à²‚ಟೇಶನà³) ಕà³à²°à²®à²•à³à²•à³† ಬದಲಾಯಿಸೠ+presentation_mode_label=ಪà³à²°à²¸à³à²¤à³à²¤à²¿ (ಪà³à²°à²¸à³†à²‚ಟೇಶನà³) ಕà³à²°à²® +open_file.title=ಕಡತವನà³à²¨à³ ತೆರೆ +open_file_label=ತೆರೆಯಿರಿ +print.title=ಮà³à²¦à³à²°à²¿à²¸à³ +print_label=ಮà³à²¦à³à²°à²¿à²¸à²¿ +download.title=ಇಳಿಸೠ+download_label=ಇಳಿಸಿಕೊಳà³à²³à²¿ +bookmark.title=ಪà³à²°à²¸à²•à³à²¤ ನೋಟ (ಪà³à²°à²¤à²¿ ಮಾಡೠಅಥವ ಹೊಸ ಕಿಟಕಿಯಲà³à²²à²¿ ತೆರೆ) +bookmark_label=ಪà³à²°à²¸à²•à³à²¤ ನೋಟ + +# Secondary toolbar and context menu +tools.title=ಉಪಕರಣಗಳೠ+tools_label=ಉಪಕರಣಗಳೠ+first_page.title=ಮೊದಲ ಪà³à²Ÿà²•à³à²•à³† ತೆರಳೠ+first_page_label=ಮೊದಲ ಪà³à²Ÿà²•à³à²•à³† ತೆರಳೠ+last_page.title=ಕೊನೆಯ ಪà³à²Ÿà²•à³à²•à³† ತೆರಳೠ+last_page_label=ಕೊನೆಯ ಪà³à²Ÿà²•à³à²•à³† ತೆರಳೠ+page_rotate_cw.title=ಪà³à²°à²¦à²•à³à²·à²¿à²£à³†à²¯à²²à³à²²à²¿ ತಿರà³à²—ಿಸೠ+page_rotate_cw_label=ಪà³à²°à²¦à²•à³à²·à²¿à²£à³†à²¯à²²à³à²²à²¿ ತಿರà³à²—ಿಸೠ+page_rotate_ccw.title=ಅಪà³à²°à²¦à²•à³à²·à²¿à²£à³†à²¯à²²à³à²²à²¿ ತಿರà³à²—ಿಸೠ+page_rotate_ccw_label=ಅಪà³à²°à²¦à²•à³à²·à²¿à²£à³†à²¯à²²à³à²²à²¿ ತಿರà³à²—ಿಸೠ+ +cursor_text_select_tool.title=ಪಠà³à²¯ ಆಯà³à²•à³† ಉಪಕರಣವನà³à²¨à³ ಸಕà³à²°à²¿à²¯à²—ೊಳಿಸಿ +cursor_text_select_tool_label=ಪಠà³à²¯ ಆಯà³à²•à³†à²¯ ಉಪಕರಣ +cursor_hand_tool.title=ಕೈ ಉಪಕರಣವನà³à²¨à³ ಸಕà³à²°à²¿à²¯à²—ೊಳಿಸಿ +cursor_hand_tool_label=ಕೈ ಉಪಕರಣ + + + +# Document properties dialog box +document_properties.title=ಡಾಕà³à²¯à³à²®à³†à²‚ಟà³â€Œ ಗà³à²£à²—ಳà³... +document_properties_label=ಡಾಕà³à²¯à³à²®à³†à²‚ಟà³â€Œ ಗà³à²£à²—ಳà³... +document_properties_file_name=ಕಡತದ ಹೆಸರà³: +document_properties_file_size=ಕಡತದ ಗಾತà³à²°: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} ಬೈಟà³â€à²—ಳà³) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} ಬೈಟà³â€à²—ಳà³) +document_properties_title=ಶೀರà³à²·à²¿à²•à³†: +document_properties_author=ಕರà³à²¤à³ƒ: +document_properties_subject=ವಿಷಯ: +document_properties_keywords=ಮà³à²–à³à²¯à²ªà²¦à²—ಳà³: +document_properties_creation_date=ರಚಿಸಿದ ದಿನಾಂಕ: +document_properties_modification_date=ಮಾರà³à²ªà²¡à²¿à²¸à²²à²¾à²¦ ದಿನಾಂಕ: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=ರಚಿಸಿದವರà³: +document_properties_producer=PDF ಉತà³à²ªà²¾à²¦à²•: +document_properties_version=PDF ಆವೃತà³à²¤à²¿: +document_properties_page_count=ಪà³à²Ÿà²¦ ಎಣಿಕೆ: +document_properties_page_size_unit_inches=ಇದರಲà³à²²à²¿ +document_properties_page_size_orientation_portrait=ಭಾವಚಿತà³à²° +document_properties_page_size_orientation_landscape=ಪà³à²°à²•à³ƒà²¤à²¿ ಚಿತà³à²° +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_close=ಮà³à²šà³à²šà³ + +print_progress_message=ಮà³à²¦à³à²°à²¿à²¸à³à²µà³à²¦à²•à³à²•à²¾à²—ಿ ದಸà³à²¤à²¾à²µà³‡à²œà²¨à³à²¨à³ ಸಿದà³à²§à²—ೊಳಿಸಲಾಗà³à²¤à³à²¤à²¿à²¦à³†â€¦ +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=ರದà³à²¦à³ ಮಾಡೠ+ +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=ಬದಿಪಟà³à²Ÿà²¿à²¯à²¨à³à²¨à³ ಹೊರಳಿಸೠ+toggle_sidebar_label=ಬದಿಪಟà³à²Ÿà²¿à²¯à²¨à³à²¨à³ ಹೊರಳಿಸೠ+document_outline_label=ದಸà³à²¤à²¾à²µà³‡à²œà²¿à²¨ ಹೊರರೇಖೆ +attachments.title=ಲಗತà³à²¤à³à²—ಳನà³à²¨à³ ತೋರಿಸೠ+attachments_label=ಲಗತà³à²¤à³à²—ಳೠ+thumbs.title=ಚಿಕà³à²•à²šà²¿à²¤à³à²°à²¦à²‚ತೆ ತೋರಿಸೠ+thumbs_label=ಚಿಕà³à²•à²šà²¿à²¤à³à²°à²—ಳೠ+findbar.title=ದಸà³à²¤à²¾à²µà³‡à²œà²¿à²¨à²²à³à²²à²¿ ಹà³à²¡à³à²•à³ +findbar_label=ಹà³à²¡à³à²•à³ + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=ಪà³à²Ÿ {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=ಪà³à²Ÿà²µà²¨à³à²¨à³ ಚಿಕà³à²•à²šà²¿à²¤à³à²°à²¦à²‚ತೆ ತೋರಿಸೠ{{page}} + +# Find panel button title and messages +find_input.title=ಹà³à²¡à³à²•à³ +find_input.placeholder=ದಸà³à²¤à²¾à²µà³‡à²œà²¿à²¨à²²à³à²²à²¿ ಹà³à²¡à³à²•à³â€¦ +find_previous.title=ವಾಕà³à²¯à²¦ ಹಿಂದಿನ ಇರà³à²µà²¿à²•à³†à²¯à²¨à³à²¨à³ ಹà³à²¡à³à²•à³ +find_previous_label=ಹಿಂದಿನ +find_next.title=ವಾಕà³à²¯à²¦ ಮà³à²‚ದಿನ ಇರà³à²µà²¿à²•à³†à²¯à²¨à³à²¨à³ ಹà³à²¡à³à²•à³ +find_next_label=ಮà³à²‚ದಿನ +find_highlight=ಎಲà³à²²à²µà²¨à³à²¨à³ ಹೈಲೈಟೠಮಾಡೠ+find_match_case_label=ಕೇಸನà³à²¨à³ ಹೊಂದಿಸೠ+find_reached_top=ದಸà³à²¤à²¾à²µà³‡à²œà²¿à²¨ ಮೇಲà³à²­à²¾à²—ವನà³à²¨à³ ತಲà³à²ªà²¿à²¦à³†, ಕೆಳಗಿನಿಂದ ಆರಂಭಿಸೠ+find_reached_bottom=ದಸà³à²¤à²¾à²µà³‡à²œà²¿à²¨ ಕೊನೆಯನà³à²¨à³ ತಲà³à²ªà²¿à²¦à³†, ಮೇಲಿನಿಂದ ಆರಂಭಿಸೠ+find_not_found=ವಾಕà³à²¯à²µà³ ಕಂಡೠಬಂದಿಲà³à²² + +# Error panel labels +error_more_info=ಹೆಚà³à²šà²¿à²¨ ಮಾಹಿತಿ +error_less_info=ಕಡಿಮೆ ಮಾಹಿತಿ +error_close=ಮà³à²šà³à²šà³ +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=ಸಂದೇಶ: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=ರಾಶಿ: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=ಕಡತ: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=ಸಾಲà³: {{line}} +rendering_error=ಪà³à²Ÿà²µà²¨à³à²¨à³ ನಿರೂಪಿಸà³à²µà²¾à²— ಒಂದೠದೋಷ ಎದà³à²°à²¾à²—ಿದೆ. + +# Predefined zoom values +page_scale_width=ಪà³à²Ÿà²¦ ಅಗಲ +page_scale_fit=ಪà³à²Ÿà²¦ ಸರಿಹೊಂದಿಕೆ +page_scale_auto=ಸà³à²µà²¯à²‚ಚಾಲಿತ ಗಾತà³à²°à²¬à²¦à²²à²¾à²µà²£à³† +page_scale_actual=ನಿಜವಾದ ಗಾತà³à²° +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=PDF ಅನà³à²¨à³ ಲೋಡೠಮಾಡà³à²µà²¾à²— ಒಂದೠದೋಷ ಎದà³à²°à²¾à²—ಿದೆ. +invalid_file_error=ಅಮಾನà³à²¯à²µà²¾à²¦ ಅಥವ ಹಾಳಾದ PDF ಕಡತ. +missing_file_error=PDF ಕಡತ ಇಲà³à²². +unexpected_response_error=ಅನಿರೀಕà³à²·à²¿à²¤à²µà²¾à²¦ ಪೂರೈಕೆಗಣಕದ ಪà³à²°à²¤à²¿à²•à³à²°à²¿à²¯à³†. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} ಟಿಪà³à²ªà²£à²¿] +password_label=PDF ಅನà³à²¨à³ ತೆರೆಯಲೠಗà³à²ªà³à²¤à²ªà²¦à²µà²¨à³à²¨à³ ನಮೂದಿಸಿ. +password_invalid=ಅಮಾನà³à²¯à²µà²¾à²¦ ಗà³à²ªà³à²¤à²ªà²¦, ದಯವಿಟà³à²Ÿà³ ಇನà³à²¨à³Šà²®à³à²®à³† ಪà³à²°à²¯à²¤à³à²¨à²¿à²¸à²¿. +password_ok=OK +password_cancel=ರದà³à²¦à³ ಮಾಡೠ+ +printing_not_supported=ಎಚà³à²šà²°à²¿à²•à³†: ಈ ಜಾಲವೀಕà³à²·à²•à²¦à²²à³à²²à²¿ ಮà³à²¦à³à²°à²£à²•à³à²•à³† ಸಂಪೂರà³à²£ ಬೆಂಬಲವಿಲà³à²². +printing_not_ready=ಎಚà³à²šà²°à²¿à²•à³†: PDF ಕಡತವೠಮà³à²¦à³à²°à²¿à²¸à²²à³ ಸಂಪೂರà³à²£à²µà²¾à²—ಿ ಲೋಡೠಆಗಿಲà³à²². +web_fonts_disabled=ಜಾಲ ಅಕà³à²·à²°à²¶à³ˆà²²à²¿à²¯à²¨à³à²¨à³ ನಿಷà³à²•à³à²°à²¿à²¯à²—ೊಳಿಸಲಾಗಿದೆ: ಅಡಕಗೊಳಿಸಿದ PDF ಅಕà³à²·à²°à²¶à³ˆà²²à²¿à²—ಳನà³à²¨à³ ಬಳಸಲೠಸಾಧà³à²¯à²µà²¾à²—ಿಲà³à²². + diff --git a/page/static/js/web/locale/ko/viewer.properties b/page/static/js/web/locale/ko/viewer.properties new file mode 100644 index 0000000..3940fda --- /dev/null +++ b/page/static/js/web/locale/ko/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=ì´ì „ 페ì´ì§€ +previous_label=ì´ì „ +next.title=ë‹¤ìŒ íŽ˜ì´ì§€ +next_label=ë‹¤ìŒ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=페ì´ì§€ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=/ {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} / {{pagesCount}}) + +zoom_out.title=축소 +zoom_out_label=축소 +zoom_in.title=확대 +zoom_in_label=확대 +zoom.title=확대/축소 +presentation_mode.title=프레젠테ì´ì…˜ 모드로 전환 +presentation_mode_label=프레젠테ì´ì…˜ 모드 +open_file.title=íŒŒì¼ ì—´ê¸° +open_file_label=열기 +print.title=ì¸ì‡„ +print_label=ì¸ì‡„ +download.title=다운로드 +download_label=다운로드 +save.title=저장 +save_label=저장 +bookmark.title=현재 보기 (복사 ë˜ëŠ” 새 ì°½ì—ì„œ 열기) +bookmark_label=현재 보기 + +bookmark1.title=현재 페ì´ì§€ (현재 페ì´ì§€ì—ì„œ URL 보기) +bookmark1_label=현재 페ì´ì§€ + +# Secondary toolbar and context menu +tools.title=ë„구 +tools_label=ë„구 +first_page.title=첫 페ì´ì§€ë¡œ ì´ë™ +first_page_label=첫 페ì´ì§€ë¡œ ì´ë™ +last_page.title=마지막 페ì´ì§€ë¡œ ì´ë™ +last_page_label=마지막 페ì´ì§€ë¡œ ì´ë™ +page_rotate_cw.title=시계방향으로 회전 +page_rotate_cw_label=시계방향으로 회전 +page_rotate_ccw.title=시계 반대방향으로 회전 +page_rotate_ccw_label=시계 반대방향으로 회전 + +cursor_text_select_tool.title=í…스트 ì„ íƒ ë„구 활성화 +cursor_text_select_tool_label=í…스트 ì„ íƒ ë„구 +cursor_hand_tool.title=ì† ë„구 활성화 +cursor_hand_tool_label=ì† ë„구 + +scroll_page.title=페ì´ì§€ 스í¬ë¡¤ 사용 +scroll_page_label=페ì´ì§€ 스í¬ë¡¤ +scroll_vertical.title=세로 스í¬ë¡¤ 사용 +scroll_vertical_label=세로 스í¬ë¡¤ +scroll_horizontal.title=가로 스í¬ë¡¤ 사용 +scroll_horizontal_label=가로 스í¬ë¡¤ +scroll_wrapped.title=래핑(ìžë™ 줄 바꿈) 스í¬ë¡¤ 사용 +scroll_wrapped_label=래핑 스í¬ë¡¤ + +spread_none.title=í•œ 페ì´ì§€ 보기 +spread_none_label=펼ì³ì§ ì—†ìŒ +spread_odd.title=홀수 페ì´ì§€ë¡œ 시작하는 ë‘ íŽ˜ì´ì§€ 보기 +spread_odd_label=홀수 펼ì³ì§ +spread_even.title=ì§ìˆ˜ 페ì´ì§€ë¡œ 시작하는 ë‘ íŽ˜ì´ì§€ 보기 +spread_even_label=ì§ìˆ˜ 펼ì³ì§ + +# Document properties dialog box +document_properties.title=문서 ì†ì„±â€¦ +document_properties_label=문서 ì†ì„±â€¦ +document_properties_file_name=íŒŒì¼ ì´ë¦„: +document_properties_file_size=íŒŒì¼ í¬ê¸°: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}}ë°”ì´íŠ¸) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}}ë°”ì´íŠ¸) +document_properties_title=제목: +document_properties_author=작성ìž: +document_properties_subject=주제: +document_properties_keywords=키워드: +document_properties_creation_date=작성 날짜: +document_properties_modification_date=수정 날짜: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=작성 프로그램: +document_properties_producer=PDF 변환 소프트웨어: +document_properties_version=PDF 버전: +document_properties_page_count=페ì´ì§€ 수: +document_properties_page_size=페ì´ì§€ í¬ê¸°: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=세로 ë°©í–¥ +document_properties_page_size_orientation_landscape=가로 ë°©í–¥ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=레터 +document_properties_page_size_name_legal=리걸 +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=빠른 웹 보기: +document_properties_linearized_yes=예 +document_properties_linearized_no=아니요 +document_properties_close=닫기 + +print_progress_message=ì¸ì‡„ 문서 준비 중… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=취소 + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=íƒìƒ‰ì°½ 표시/숨기기 +toggle_sidebar_notification2.title=íƒìƒ‰ì°½ 표시/숨기기 (ë¬¸ì„œì— ì•„ì›ƒë¼ì¸/첨부파ì¼/ë ˆì´ì–´ í¬í•¨ë¨) +toggle_sidebar_label=íƒìƒ‰ì°½ 표시/숨기기 +document_outline.title=문서 아웃ë¼ì¸ 보기 (ë”블 í´ë¦­í•´ì„œ 모든 항목 펼치기/접기) +document_outline_label=문서 아웃ë¼ì¸ +attachments.title=ì²¨ë¶€íŒŒì¼ ë³´ê¸° +attachments_label=ì²¨ë¶€íŒŒì¼ +layers.title=ë ˆì´ì–´ 보기 (ë”블 í´ë¦­í•´ì„œ 모든 ë ˆì´ì–´ë¥¼ 기본 ìƒíƒœë¡œ 재설정) +layers_label=ë ˆì´ì–´ +thumbs.title=미리보기 +thumbs_label=미리보기 +current_outline_item.title=현재 아웃ë¼ì¸ 항목 찾기 +current_outline_item_label=현재 아웃ë¼ì¸ 항목 +findbar.title=검색 +findbar_label=검색 + +additional_layers=추가 ë ˆì´ì–´ +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark={{page}} 페ì´ì§€ +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title={{page}} 페ì´ì§€ +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}} 페ì´ì§€ 미리보기 + +# Find panel button title and messages +find_input.title=찾기 +find_input.placeholder=문서ì—ì„œ 찾기… +find_previous.title=지정 문ìžì—´ì— ì¼ì¹˜í•˜ëŠ” 1ê°œ ë¶€ë¶„ì„ ê²€ìƒ‰ +find_previous_label=ì´ì „ +find_next.title=지정 문ìžì—´ì— ì¼ì¹˜í•˜ëŠ” ë‹¤ìŒ ë¶€ë¶„ì„ ê²€ìƒ‰ +find_next_label=ë‹¤ìŒ +find_highlight=ëª¨ë‘ ê°•ì¡° 표시 +find_match_case_label=대/ì†Œë¬¸ìž êµ¬ë¶„ +find_match_diacritics_label=ë¶„ìŒ ë¶€í˜¸ ì¼ì¹˜ +find_entire_word_label=단어 단위로 +find_reached_top=문서 처ìŒê¹Œì§€ 검색하고 ë으로 ëŒì•„와 검색했습니다. +find_reached_bottom=문서 ë까지 검색하고 앞으로 ëŒì•„와 검색했습니다. +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{total}} 중 {{current}} ì¼ì¹˜ +find_match_count[two]={{total}} 중 {{current}} ì¼ì¹˜ +find_match_count[few]={{total}} 중 {{current}} ì¼ì¹˜ +find_match_count[many]={{total}} 중 {{current}} ì¼ì¹˜ +find_match_count[other]={{total}} 중 {{current}} ì¼ì¹˜ +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]={{limit}} ì´ìƒ ì¼ì¹˜ +find_match_count_limit[one]={{limit}} ì´ìƒ ì¼ì¹˜ +find_match_count_limit[two]={{limit}} ì´ìƒ ì¼ì¹˜ +find_match_count_limit[few]={{limit}} ì´ìƒ ì¼ì¹˜ +find_match_count_limit[many]={{limit}} ì´ìƒ ì¼ì¹˜ +find_match_count_limit[other]={{limit}} ì´ìƒ ì¼ì¹˜ +find_not_found=검색 ê²°ê³¼ ì—†ìŒ + +# Error panel labels +error_more_info=ìžì„¸í•œ ì •ë³´ +error_less_info=ì •ë³´ 간단히 보기 +error_close=닫기 +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (빌드: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=메시지: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=스íƒ: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=파ì¼: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=줄 번호: {{line}} + +# Predefined zoom values +page_scale_width=페ì´ì§€ ë„ˆë¹„ì— ë§žì¶”ê¸° +page_scale_fit=페ì´ì§€ì— 맞추기 +page_scale_auto=ìžë™ +page_scale_actual=실제 í¬ê¸° +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=로드 중… +loading_error=PDF를 로드하는 ë™ì•ˆ 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤. +invalid_file_error=잘못ë˜ì—ˆê±°ë‚˜ ì†ìƒëœ PDF 파ì¼. +missing_file_error=PDF íŒŒì¼ ì—†ìŒ. +unexpected_response_error=예기치 ì•Šì€ ì„œë²„ ì‘답입니다. + +rendering_error=페ì´ì§€ë¥¼ ë Œë”ë§í•˜ëŠ” ë™ì•ˆ 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}} {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} 주ì„] +password_label=ì´ PDF 파ì¼ì„ ì—´ 수 있는 비밀번호를 입력하세요. +password_invalid=ìž˜ëª»ëœ ë¹„ë°€ë²ˆí˜¸ìž…ë‹ˆë‹¤. 다시 ì‹œë„하세요. +password_ok=í™•ì¸ +password_cancel=취소 + +printing_not_supported=경고: ì´ ë¸Œë¼ìš°ì €ëŠ” ì¸ì‡„를 완전히 지ì›í•˜ì§€ 않습니다. +printing_not_ready=경고: ì´ PDF를 ì¸ì‡„를 í•  수 ìžˆì„ ì •ë„ë¡œ ì½ì–´ë“¤ì´ì§€ 못했습니다. +web_fonts_disabled=웹 í°íŠ¸ê°€ 비활성화ë¨: ë‚´ìž¥ëœ PDF ê¸€ê¼´ì„ ì‚¬ìš©í•  수 없습니다. + +# Editor +editor_free_text2.title=í…스트 +editor_free_text2_label=í…스트 +editor_ink2.title=그리기 +editor_ink2_label=그리기 + +free_text2_default_content=입력하세요… + +# Editor Parameters +editor_free_text_color=ìƒ‰ìƒ +editor_free_text_size=í¬ê¸° +editor_ink_color=ìƒ‰ìƒ +editor_ink_thickness=ë‘께 +editor_ink_opacity=ë¶ˆíˆ¬ëª…ë„ + +# Editor aria +editor_free_text2_aria_label=í…스트 편집기 +editor_ink2_aria_label=그리기 편집기 +editor_ink_canvas_aria_label=ì‚¬ìš©ìž ìƒì„± ì´ë¯¸ì§€ diff --git a/page/static/js/web/locale/lij/viewer.properties b/page/static/js/web/locale/lij/viewer.properties new file mode 100644 index 0000000..a7854d1 --- /dev/null +++ b/page/static/js/web/locale/lij/viewer.properties @@ -0,0 +1,235 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pagina primma +previous_label=Precedente +next.title=Pagina dòppo +next_label=Pròscima + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pagina +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Diminoisci zoom +zoom_out_label=Diminoisci zoom +zoom_in.title=Aomenta zoom +zoom_in_label=Aomenta zoom +zoom.title=Zoom +presentation_mode.title=Vanni into mòddo de prezentaçion +presentation_mode_label=Mòddo de prezentaçion +open_file.title=Arvi file +open_file_label=Arvi +print.title=Stanpa +print_label=Stanpa +download.title=Descaregamento +download_label=Descaregamento +bookmark.title=Vixon corente (còpia ò arvi inte 'n neuvo barcon) +bookmark_label=Vixon corente + +# Secondary toolbar and context menu +tools.title=Atressi +tools_label=Atressi +first_page.title=Vanni a-a primma pagina +first_page_label=Vanni a-a primma pagina +last_page.title=Vanni a l'urtima pagina +last_page_label=Vanni a l'urtima pagina +page_rotate_cw.title=Gia into verso oraio +page_rotate_cw_label=Gia into verso oraio +page_rotate_ccw.title=Gia into verso antioraio +page_rotate_ccw_label=Gia into verso antioraio + +cursor_text_select_tool.title=Abilita strumento de seleçion do testo +cursor_text_select_tool_label=Strumento de seleçion do testo +cursor_hand_tool.title=Abilita strumento man +cursor_hand_tool_label=Strumento man + +scroll_vertical.title=Deuvia rebelamento verticale +scroll_vertical_label=Rebelamento verticale +scroll_horizontal.title=Deuvia rebelamento orizontâ +scroll_horizontal_label=Rebelamento orizontâ +scroll_wrapped.title=Deuvia rebelamento incapsolou +scroll_wrapped_label=Rebelamento incapsolou + +spread_none.title=No unite a-a difuxon de pagina +spread_none_label=No difuxon +spread_odd.title=Uniscite a-a difuxon de pagina co-o numero dèspa +spread_odd_label=Difuxon dèspa +spread_even.title=Uniscite a-a difuxon de pagina co-o numero pari +spread_even_label=Difuxon pari + +# Document properties dialog box +document_properties.title=Propietæ do documento… +document_properties_label=Propietæ do documento… +document_properties_file_name=Nomme schedaio: +document_properties_file_size=Dimenscion schedaio: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} kB ({{size_b}} byte) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} byte) +document_properties_title=Titolo: +document_properties_author=Aoto: +document_properties_subject=Ogetto: +document_properties_keywords=Paròlle ciave: +document_properties_creation_date=Dæta creaçion: +document_properties_modification_date=Dæta cangiamento: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Aotô originale: +document_properties_producer=Produtô PDF: +document_properties_version=Verscion PDF: +document_properties_page_count=Contezzo pagine: +document_properties_page_size=Dimenscion da pagina: +document_properties_page_size_unit_inches=dii gròsci +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=drito +document_properties_page_size_orientation_landscape=desteizo +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letia +document_properties_page_size_name_legal=Lezze +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista veloce do Web: +document_properties_linearized_yes=Sci +document_properties_linearized_no=No +document_properties_close=Særa + +print_progress_message=Praparo o documento pe-a stanpa… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Anulla + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Ativa/dizativa bara de scianco +toggle_sidebar_label=Ativa/dizativa bara de scianco +document_outline.title=Fanni vedde o contorno do documento (scicca doggio pe espande/ridue tutti i elementi) +document_outline_label=Contorno do documento +attachments.title=Fanni vedde alegæ +attachments_label=Alegæ +thumbs.title=Mostra miniatue +thumbs_label=Miniatue +findbar.title=Treuva into documento +findbar_label=Treuva + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pagina {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatua da pagina {{page}} + +# Find panel button title and messages +find_input.title=Treuva +find_input.placeholder=Treuva into documento… +find_previous.title=Treuva a ripetiçion precedente do testo da çercâ +find_previous_label=Precedente +find_next.title=Treuva a ripetiçion dòppo do testo da çercâ +find_next_label=Segoente +find_highlight=Evidençia +find_match_case_label=Maioscole/minoscole +find_entire_word_label=Poula intrega +find_reached_top=Razonto a fin da pagina, continoa da l'iniçio +find_reached_bottom=Razonto l'iniçio da pagina, continoa da-a fin +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} de {{total}} corispondensa +find_match_count[two]={{current}} de {{total}} corispondense +find_match_count[few]={{current}} de {{total}} corispondense +find_match_count[many]={{current}} de {{total}} corispondense +find_match_count[other]={{current}} de {{total}} corispondense +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Ciù de {{limit}} corispondense +find_match_count_limit[one]=Ciù de {{limit}} corispondensa +find_match_count_limit[two]=Ciù de {{limit}} corispondense +find_match_count_limit[few]=Ciù de {{limit}} corispondense +find_match_count_limit[many]=Ciù de {{limit}} corispondense +find_match_count_limit[other]=Ciù de {{limit}} corispondense +find_not_found=Testo no trovou + +# Error panel labels +error_more_info=Ciù informaçioin +error_less_info=Meno informaçioin +error_close=Særa +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mesaggio: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Schedaio: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linia: {{line}} +rendering_error=Gh'é stæto 'n'erô itno rendering da pagina. + +# Predefined zoom values +page_scale_width=Larghessa pagina +page_scale_fit=Adatta a una pagina +page_scale_auto=Zoom aotomatico +page_scale_actual=Dimenscioin efetive +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=S'é verificou 'n'erô itno caregamento do PDF. +invalid_file_error=O schedaio PDF o l'é no valido ò aroinou. +missing_file_error=O schedaio PDF o no gh'é. +unexpected_response_error=Risposta inprevista do-u server + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotaçion: {{type}}] +password_label=Dimme a paròlla segreta pe arvî sto schedaio PDF. +password_invalid=Paròlla segreta sbalia. Preuva torna. +password_ok=Va ben +password_cancel=Anulla + +printing_not_supported=Atençion: a stanpa a no l'é conpletamente soportâ da sto navegatô. +printing_not_ready=Atençion: o PDF o no l'é ancon caregou conpletamente pe-a stanpa. +web_fonts_disabled=I font do web en dizativæ: inposcibile adeuviâ i carateri do PDF. + diff --git a/page/static/js/web/locale/lo/viewer.properties b/page/static/js/web/locale/lo/viewer.properties new file mode 100644 index 0000000..8b877d0 --- /dev/null +++ b/page/static/js/web/locale/lo/viewer.properties @@ -0,0 +1,145 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=ຫນ້າàºà»ˆàº­àº™àº«àº™à»‰àº² +previous_label=àºà»ˆàº­àº™àº«àº™à»‰àº² +next.title=ຫນ້າຖັດໄປ +next_label=ຖັດໄປ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=ຫນ້າ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=ຈາຠ{{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} ຈາຠ{{pagesCount}}) + +zoom_out.title=ຂະຫàºàº²àºàº­àº­àº +zoom_out_label=ຂະຫàºàº²àºàº­àº­àº +zoom_in.title=ຂະຫàºàº²àºà»€àº‚ົ້າ +zoom_in_label=ຂະຫàºàº²àºà»€àº‚ົ້າ +zoom.title=ຂະຫàºàº²àº +presentation_mode.title=ສັບປ່ຽນເປັນໂຫມດàºàº²àº™àº™àº³àºªàº°à»€àº«àº™àºµ +presentation_mode_label=ໂຫມດàºàº²àº™àº™àº³àºªàº°à»€àº«àº™àºµ +open_file.title=ເປີດໄຟລ໌ +open_file_label=ເປີດ +print.title=ພິມ +print_label=ພິມ +download.title=ດາວໂຫລດ +download_label=ດາວໂຫລດ +bookmark.title=ມຸມມອງປະຈຸບັນ (ສຳເນົາ ຫລື ເປີດໃນວິນໂດໃຫມ່) +bookmark_label=ມຸມມອງປະຈຸບັນ + +# Secondary toolbar and context menu +tools.title=ເຄື່ອງມື +tools_label=ເຄື່ອງມື +first_page.title=ໄປທີ່ຫນ້າທຳອິດ +first_page_label=ໄປທີ່ຫນ້າທຳອິດ +last_page.title=ໄປທີ່ຫນ້າສຸດທ້າຠ+last_page_label=ໄປທີ່ຫນ້າສຸດທ້າຠ+page_rotate_cw.title=ຫມູນຕາມເຂັມໂມງ +page_rotate_cw_label=ຫມູນຕາມເຂັມໂມງ +page_rotate_ccw.title=ຫມູນທວນເຂັມໂມງ +page_rotate_ccw_label=ຫມູນທວນເຂັມໂມງ + + + + +# Document properties dialog box +document_properties_file_name=ຊື່ໄຟລ໌: +document_properties_file_size=ຂະຫນາດໄຟລ໌: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=ລວງຕັ້ງ +document_properties_page_size_orientation_landscape=ລວງນອນ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=ຈົດà»àº²àº +document_properties_page_size_name_legal=ຂà»à»‰àºàº»àº”ຫມາຠ+# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_close=ປິດ + +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_close=àºàº»àºà»€àº¥àºµàº + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=ເປີດ/ປິດà»àº–ບຂ້າງ +toggle_sidebar_label=ເປີດ/ປິດà»àº–ບຂ້າງ +document_outline_label=ເຄົ້າຮ່າງເອàºàº°àºªàº²àº™ +findbar_label=ຄົ້ນຫາ + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. + +# Find panel button title and messages +find_input.title=ຄົ້ນຫາ +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. + +# Error panel labels +error_more_info=ຂà»à»‰àº¡àº¹àº™à»€àºžàºµà»ˆàº¡à»€àº•àºµàº¡ +error_less_info=ຂà»à»‰àº¡àº¹àº™àº™à»‰àº­àºàº¥àº»àº‡ +error_close=ປິດ +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +rendering_error=ມີຂà»à»‰àºœàº´àº”ພາດເàºàºµàº”ຂື້ນຂະນະທີ່àºàº³àº¥àº±àº‡à»€àº£àº±àº™à»€àº”ີຫນ້າ. + +# Predefined zoom values +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. + +loading_error=ມີຂà»à»‰àºœàº´àº”ພາດເàºàºµàº”ຂື້ນຂະນະທີ່àºàº³àº¥àº±àº‡à»‚ຫລດ PDF. +invalid_file_error=ໄຟລ໌ PDF ບà»à»ˆàº–ືàºàº•à»‰àº­àº‡àº«àº¥àº·à»€àºªàºàº«àº²àº. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +password_ok=ຕົàºàº¥àº»àº‡ +password_cancel=àºàº»àºà»€àº¥àºµàº + diff --git a/page/static/js/web/locale/locale.properties b/page/static/js/web/locale/locale.properties new file mode 100644 index 0000000..3868015 --- /dev/null +++ b/page/static/js/web/locale/locale.properties @@ -0,0 +1,333 @@ +[ach] +@import url(ach/viewer.properties) + +[af] +@import url(af/viewer.properties) + +[an] +@import url(an/viewer.properties) + +[ar] +@import url(ar/viewer.properties) + +[ast] +@import url(ast/viewer.properties) + +[az] +@import url(az/viewer.properties) + +[be] +@import url(be/viewer.properties) + +[bg] +@import url(bg/viewer.properties) + +[bn] +@import url(bn/viewer.properties) + +[bo] +@import url(bo/viewer.properties) + +[br] +@import url(br/viewer.properties) + +[brx] +@import url(brx/viewer.properties) + +[bs] +@import url(bs/viewer.properties) + +[ca] +@import url(ca/viewer.properties) + +[cak] +@import url(cak/viewer.properties) + +[ckb] +@import url(ckb/viewer.properties) + +[cs] +@import url(cs/viewer.properties) + +[cy] +@import url(cy/viewer.properties) + +[da] +@import url(da/viewer.properties) + +[de] +@import url(de/viewer.properties) + +[dsb] +@import url(dsb/viewer.properties) + +[el] +@import url(el/viewer.properties) + +[en-CA] +@import url(en-CA/viewer.properties) + +[en-GB] +@import url(en-GB/viewer.properties) + +[en-US] +@import url(en-US/viewer.properties) + +[eo] +@import url(eo/viewer.properties) + +[es-AR] +@import url(es-AR/viewer.properties) + +[es-CL] +@import url(es-CL/viewer.properties) + +[es-ES] +@import url(es-ES/viewer.properties) + +[es-MX] +@import url(es-MX/viewer.properties) + +[et] +@import url(et/viewer.properties) + +[eu] +@import url(eu/viewer.properties) + +[fa] +@import url(fa/viewer.properties) + +[ff] +@import url(ff/viewer.properties) + +[fi] +@import url(fi/viewer.properties) + +[fr] +@import url(fr/viewer.properties) + +[fur] +@import url(fur/viewer.properties) + +[fy-NL] +@import url(fy-NL/viewer.properties) + +[ga-IE] +@import url(ga-IE/viewer.properties) + +[gd] +@import url(gd/viewer.properties) + +[gl] +@import url(gl/viewer.properties) + +[gn] +@import url(gn/viewer.properties) + +[gu-IN] +@import url(gu-IN/viewer.properties) + +[he] +@import url(he/viewer.properties) + +[hi-IN] +@import url(hi-IN/viewer.properties) + +[hr] +@import url(hr/viewer.properties) + +[hsb] +@import url(hsb/viewer.properties) + +[hu] +@import url(hu/viewer.properties) + +[hy-AM] +@import url(hy-AM/viewer.properties) + +[hye] +@import url(hye/viewer.properties) + +[ia] +@import url(ia/viewer.properties) + +[id] +@import url(id/viewer.properties) + +[is] +@import url(is/viewer.properties) + +[it] +@import url(it/viewer.properties) + +[ja] +@import url(ja/viewer.properties) + +[ka] +@import url(ka/viewer.properties) + +[kab] +@import url(kab/viewer.properties) + +[kk] +@import url(kk/viewer.properties) + +[km] +@import url(km/viewer.properties) + +[kn] +@import url(kn/viewer.properties) + +[ko] +@import url(ko/viewer.properties) + +[lij] +@import url(lij/viewer.properties) + +[lo] +@import url(lo/viewer.properties) + +[lt] +@import url(lt/viewer.properties) + +[ltg] +@import url(ltg/viewer.properties) + +[lv] +@import url(lv/viewer.properties) + +[meh] +@import url(meh/viewer.properties) + +[mk] +@import url(mk/viewer.properties) + +[mr] +@import url(mr/viewer.properties) + +[ms] +@import url(ms/viewer.properties) + +[my] +@import url(my/viewer.properties) + +[nb-NO] +@import url(nb-NO/viewer.properties) + +[ne-NP] +@import url(ne-NP/viewer.properties) + +[nl] +@import url(nl/viewer.properties) + +[nn-NO] +@import url(nn-NO/viewer.properties) + +[oc] +@import url(oc/viewer.properties) + +[pa-IN] +@import url(pa-IN/viewer.properties) + +[pl] +@import url(pl/viewer.properties) + +[pt-BR] +@import url(pt-BR/viewer.properties) + +[pt-PT] +@import url(pt-PT/viewer.properties) + +[rm] +@import url(rm/viewer.properties) + +[ro] +@import url(ro/viewer.properties) + +[ru] +@import url(ru/viewer.properties) + +[sat] +@import url(sat/viewer.properties) + +[sc] +@import url(sc/viewer.properties) + +[scn] +@import url(scn/viewer.properties) + +[sco] +@import url(sco/viewer.properties) + +[si] +@import url(si/viewer.properties) + +[sk] +@import url(sk/viewer.properties) + +[skr] +@import url(skr/viewer.properties) + +[sl] +@import url(sl/viewer.properties) + +[son] +@import url(son/viewer.properties) + +[sq] +@import url(sq/viewer.properties) + +[sr] +@import url(sr/viewer.properties) + +[sv-SE] +@import url(sv-SE/viewer.properties) + +[szl] +@import url(szl/viewer.properties) + +[ta] +@import url(ta/viewer.properties) + +[te] +@import url(te/viewer.properties) + +[tg] +@import url(tg/viewer.properties) + +[th] +@import url(th/viewer.properties) + +[tl] +@import url(tl/viewer.properties) + +[tr] +@import url(tr/viewer.properties) + +[trs] +@import url(trs/viewer.properties) + +[uk] +@import url(uk/viewer.properties) + +[ur] +@import url(ur/viewer.properties) + +[uz] +@import url(uz/viewer.properties) + +[vi] +@import url(vi/viewer.properties) + +[wo] +@import url(wo/viewer.properties) + +[xh] +@import url(xh/viewer.properties) + +[zh-CN] +@import url(zh-CN/viewer.properties) + +[zh-TW] +@import url(zh-TW/viewer.properties) + diff --git a/page/static/js/web/locale/lt/viewer.properties b/page/static/js/web/locale/lt/viewer.properties new file mode 100644 index 0000000..2c4fb8a --- /dev/null +++ b/page/static/js/web/locale/lt/viewer.properties @@ -0,0 +1,260 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Ankstesnis puslapis +previous_label=Ankstesnis +next.title=Kitas puslapis +next_label=Kitas + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Puslapis +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=iÅ¡ {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} iÅ¡ {{pagesCount}}) + +zoom_out.title=Sumažinti +zoom_out_label=Sumažinti +zoom_in.title=Padidinti +zoom_in_label=Padidinti +zoom.title=Mastelis +presentation_mode.title=Pereiti į pateikties veiksenÄ… +presentation_mode_label=Pateikties veiksena +open_file.title=Atverti failÄ… +open_file_label=Atverti +print.title=Spausdinti +print_label=Spausdinti +download.title=Parsiųsti +download_label=Parsiųsti +bookmark.title=Esamojo rodinio saitas (kopijavimui ar atvÄ—rimui kitame lange) +bookmark_label=Esamasis rodinys + +# Secondary toolbar and context menu +tools.title=PriemonÄ—s +tools_label=PriemonÄ—s +first_page.title=Eiti į pirmÄ… puslapį +first_page_label=Eiti į pirmÄ… puslapį +last_page.title=Eiti į paskutinį puslapį +last_page_label=Eiti į paskutinį puslapį +page_rotate_cw.title=Pasukti pagal laikrodžio rodyklÄ™ +page_rotate_cw_label=Pasukti pagal laikrodžio rodyklÄ™ +page_rotate_ccw.title=Pasukti prieÅ¡ laikrodžio rodyklÄ™ +page_rotate_ccw_label=Pasukti prieÅ¡ laikrodžio rodyklÄ™ + +cursor_text_select_tool.title=Ä®jungti teksto žymÄ—jimo įrankį +cursor_text_select_tool_label=Teksto žymÄ—jimo įrankis +cursor_hand_tool.title=Ä®jungti vilkimo įrankį +cursor_hand_tool_label=Vilkimo įrankis + +scroll_page.title=Naudoti puslapio slinkimÄ… +scroll_page_label=Puslapio slinkimas +scroll_vertical.title=Naudoti vertikalų slinkimÄ… +scroll_vertical_label=Vertikalus slinkimas +scroll_horizontal.title=Naudoti horizontalų slinkimÄ… +scroll_horizontal_label=Horizontalus slinkimas +scroll_wrapped.title=Naudoti iÅ¡klotÄ… slinkimÄ… +scroll_wrapped_label=IÅ¡klotas slinkimas + +spread_none.title=Nejungti puslapių į dvilapius +spread_none_label=Be dvilapių +spread_odd.title=Sujungti į dvilapius pradedant nelyginiais puslapiais +spread_odd_label=Nelyginiai dvilapiai +spread_even.title=Sujungti į dvilapius pradedant lyginiais puslapiais +spread_even_label=Lyginiai dvilapiai + +# Document properties dialog box +document_properties.title=Dokumento savybÄ—s… +document_properties_label=Dokumento savybÄ—s… +document_properties_file_name=Failo vardas: +document_properties_file_size=Failo dydis: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} B) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} B) +document_properties_title=AntraÅ¡tÄ—: +document_properties_author=Autorius: +document_properties_subject=Tema: +document_properties_keywords=ReikÅ¡miniai žodžiai: +document_properties_creation_date=SukÅ«rimo data: +document_properties_modification_date=Modifikavimo data: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=KÅ«rÄ—jas: +document_properties_producer=PDF generatorius: +document_properties_version=PDF versija: +document_properties_page_count=Puslapių skaiÄius: +document_properties_page_size=Puslapio dydis: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=staÄias +document_properties_page_size_orientation_landscape=gulsÄias +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=LaiÅ¡kas +document_properties_page_size_name_legal=Dokumentas +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Spartus žiniatinklio rodinys: +document_properties_linearized_yes=Taip +document_properties_linearized_no=Ne +document_properties_close=Užverti + +print_progress_message=Dokumentas ruoÅ¡iamas spausdinimui… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Atsisakyti + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Rodyti / slÄ—pti Å¡oninį polangį +toggle_sidebar_notification2.title=ParankinÄ— (dokumentas turi struktÅ«rÄ… / priedų / sluoksnių) +toggle_sidebar_label=Å oninis polangis +document_outline.title=Rodyti dokumento struktÅ«rÄ… (spustelÄ—kite dukart norÄ—dami iÅ¡plÄ—sti/suskleisti visus elementus) +document_outline_label=Dokumento struktÅ«ra +attachments.title=Rodyti priedus +attachments_label=Priedai +layers.title=Rodyti sluoksnius (spustelÄ—kite dukart, norÄ—dami atstatyti visus sluoksnius į numatytÄ…jÄ… bÅ«senÄ…) +layers_label=Sluoksniai +thumbs.title=Rodyti puslapių miniatiÅ«ras +thumbs_label=MiniatiÅ«ros +current_outline_item.title=Rasti dabartinį struktÅ«ros elementÄ… +current_outline_item_label=Dabartinis struktÅ«ros elementas +findbar.title=IeÅ¡koti dokumente +findbar_label=Rasti + +additional_layers=Papildomi sluoksniai +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark={{page}} puslapis +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title={{page}} puslapis +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}} puslapio miniatiÅ«ra + +# Find panel button title and messages +find_input.title=Rasti +find_input.placeholder=Rasti dokumente… +find_previous.title=IeÅ¡koti ankstesnio frazÄ—s egzemplioriaus +find_previous_label=Ankstesnis +find_next.title=IeÅ¡koti tolesnio frazÄ—s egzemplioriaus +find_next_label=Tolesnis +find_highlight=ViskÄ… paryÅ¡kinti +find_match_case_label=Skirti didžiÄ…sias ir mažąsias raides +find_match_diacritics_label=Skirti diakritinius ženklus +find_entire_word_label=IÅ¡tisi žodžiai +find_reached_top=Pasiekus dokumento pradžiÄ…, paieÅ¡ka pratÄ™sta nuo pabaigos +find_reached_bottom=Pasiekus dokumento pabaigÄ…, paieÅ¡ka pratÄ™sta nuo pradžios +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} iÅ¡ {{total}} atitikmens +find_match_count[two]={{current}} iÅ¡ {{total}} atitikmenų +find_match_count[few]={{current}} iÅ¡ {{total}} atitikmenų +find_match_count[many]={{current}} iÅ¡ {{total}} atitikmenų +find_match_count[other]={{current}} iÅ¡ {{total}} atitikmens +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Daugiau nei {{limit}} atitikmenų +find_match_count_limit[one]=Daugiau nei {{limit}} atitikmuo +find_match_count_limit[two]=Daugiau nei {{limit}} atitikmenys +find_match_count_limit[few]=Daugiau nei {{limit}} atitikmenys +find_match_count_limit[many]=Daugiau nei {{limit}} atitikmenų +find_match_count_limit[other]=Daugiau nei {{limit}} atitikmuo +find_not_found=IeÅ¡koma frazÄ— nerasta + +# Error panel labels +error_more_info=IÅ¡samiau +error_less_info=GlausÄiau +error_close=Užverti +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v. {{version}} (darinys: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=PraneÅ¡imas: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=DÄ—klas: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Failas: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=EilutÄ—: {{line}} +rendering_error=Atvaizduojant puslapį įvyko klaida. + +# Predefined zoom values +page_scale_width=Priderinti prie lapo ploÄio +page_scale_fit=Pritaikyti prie lapo dydžio +page_scale_auto=Automatinis mastelis +page_scale_actual=Tikras dydis +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Ä®keliama… +loading_error=Ä®keliant PDF failÄ… įvyko klaida. +invalid_file_error=Tai nÄ—ra PDF failas arba jis yra sugadintas. +missing_file_error=PDF failas nerastas. +unexpected_response_error=NetikÄ—tas serverio atsakas. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[„{{type}}“ tipo anotacija] +password_label=Ä®veskite slaptažodį Å¡iam PDF failui atverti. +password_invalid=Slaptažodis neteisingas. Bandykite dar kartÄ…. +password_ok=Gerai +password_cancel=Atsisakyti + +printing_not_supported=DÄ—mesio! Spausdinimas Å¡ioje narÅ¡yklÄ—je nÄ—ra pilnai realizuotas. +printing_not_ready=DÄ—mesio! PDF failas dar nÄ—ra pilnai įkeltas spausdinimui. +web_fonts_disabled=Saityno Å¡riftai iÅ¡jungti – PDF faile esanÄių Å¡riftų naudoti negalima. + +# Editor +editor_none.title=IÅ¡jungti komentarų redagavimÄ… +editor_none_label=IÅ¡jungti redagavimÄ… +editor_free_text.title=PridÄ—ti „FreeText“ komentarÄ… +editor_free_text_label=„FreeText“ komentaras +editor_ink.title=PridÄ—ti laisvo stiliaus komentarÄ… +editor_ink_label=Laisvo stiliaus komentaras + diff --git a/page/static/js/web/locale/ltg/viewer.properties b/page/static/js/web/locale/ltg/viewer.properties new file mode 100644 index 0000000..b117a0e --- /dev/null +++ b/page/static/js/web/locale/ltg/viewer.properties @@ -0,0 +1,213 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=ĪprÄ«kÅ¡ejÄ lopa +previous_label=ĪprÄ«kÅ¡ejÄ +next.title=Nuokomuo lopa +next_label=Nuokomuo + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Lopa +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=nu {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} nu {{pagesCount}}) + +zoom_out.title=Attuolynuot +zoom_out_label=Attuolynuot +zoom_in.title=PÄ«tuvynuot +zoom_in_label=PÄ«tuvynuot +zoom.title=Palelynuojums +presentation_mode.title=PuorslÄ“gtÄ«s iz Prezentacejis režymu +presentation_mode_label=Prezentacejis režyms +open_file.title=Attaiseit failu +open_file_label=Attaiseit +print.title=DrukuoÅ¡ona +print_label=DrukÅt +download.title=LejupÄ«luode +download_label=LejupÄ«luodeit +bookmark.title=PoÅ¡reizejais skots (kopÄ“t voi attaiseit jaunÄ lÅ«gÄ) +bookmark_label=PoÅ¡reizejais skots + +# Secondary toolbar and context menu +tools.title=Reiki +tools_label=Reiki +first_page.title=Īt iz pyrmÅ« lopu +first_page_label=Īt iz pyrmÅ« lopu +last_page.title=Īt iz piedejÅ« lopu +last_page_label=Īt iz piedejÅ« lopu +page_rotate_cw.title=PagrÄ«zt pa pulksteni +page_rotate_cw_label=PagrÄ«zt pa pulksteni +page_rotate_ccw.title=PagrÄ«zt pret pulksteni +page_rotate_ccw_label=PagrÄ«zt pret pulksteni + +cursor_text_select_tool.title=AktivizÄ“t teksta izvieles reiku +cursor_text_select_tool_label=Teksta izvieles reiks +cursor_hand_tool.title=AktivÄ“t rÅ«kys reiku +cursor_hand_tool_label=RÅ«kys reiks + +scroll_vertical.title=IzmontÅt vertikalÅ« ritinÅÅ¡onu +scroll_vertical_label=VertikalÅ ritinÅÅ¡ona +scroll_horizontal.title=IzmontÅt horizontalÅ« ritinÅÅ¡onu +scroll_horizontal_label=HorizontalÅ ritinÅÅ¡ona +scroll_wrapped.title=IzmontÅt mÄrÅ«gojamÅ« ritinÅÅ¡onu +scroll_wrapped_label=MÄrÅ«gojamÅ ritinÅÅ¡ona + +spread_none.title=NaizmontÅt lopu atvÄruma režimu +spread_none_label=Bez atvÄrumim +spread_odd.title=IzmontÅt lopu atvÄrumus sÅkut nu napÅra numeru lopom +spread_odd_label=NapÅra lopys pa kreisi +spread_even.title=IzmontÅt lopu atvÄrumus sÅkut nu pÅra numeru lopom +spread_even_label=PÅra lopys pa kreisi + +# Document properties dialog box +document_properties.title=Dokumenta Ä«statiejumi… +document_properties_label=Dokumenta Ä«statiejumi… +document_properties_file_name=Faila nÅ«saukums: +document_properties_file_size=Faila izmÄrs: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} biti) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} biti) +document_properties_title=NÅ«saukums: +document_properties_author=Autors: +document_properties_subject=Tema: +document_properties_keywords=AtslÄgi vuordi: +document_properties_creation_date=Izveides datums: +document_properties_modification_date=lobuoÅ¡onys datums: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Radeituojs: +document_properties_producer=PDF producents: +document_properties_version=PDF verseja: +document_properties_page_count=Lopu skaits: +document_properties_page_size=Lopas izmÄrs: +document_properties_page_size_unit_inches=collas +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=portreta orientaceja +document_properties_page_size_orientation_landscape=ainovys orientaceja +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Web View: +document_properties_linearized_yes=JÄ +document_properties_linearized_no=NÄ +document_properties_close=Aiztaiseit + +print_progress_message=Preparing document for printing… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Atceļt + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=PuorslÄ“gt suonu jÅ«slu +toggle_sidebar_label=PuorslÄ“gt suonu jÅ«slu +document_outline.title=Show Document Outline (double-click to expand/collapse all items) +document_outline_label=Dokumenta saturs +attachments.title=Show Attachments +attachments_label=Attachments +thumbs.title=Paruodeit seiktÄlus +thumbs_label=SeiktÄli +findbar.title=Mekleit dokumentÄ +findbar_label=Mekleit + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Lopa {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Lopys {{page}} seiktÄls + +# Find panel button title and messages +find_input.title=Mekleit +find_input.placeholder=Mekleit dokumentÄ… +find_previous.title=Atrast Ä«prÄ«kÅ¡ejÅ« +find_previous_label=ĪprÄ«kÅ¡ejÄ +find_next.title=Atrast nuokamÅ« +find_next_label=Nuokomuo +find_highlight=Īkruosuot vysys +find_match_case_label=LelÅ«, mozÅ« burtu jiuteigs +find_reached_top=SasnÄ«gts dokumenta suokums, turpynojom nu beigom +find_reached_bottom=SasnÄ«gtys dokumenta beigys, turpynojom nu suokuma +find_not_found=FrÄze nav atrosta + +# Error panel labels +error_more_info=Vairuok informacejis +error_less_info=mozuok informacejis +error_close=Close +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Ziņuojums: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Steks: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=File: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Ryndeņa: {{line}} +rendering_error=AttÄlojÅ«t lopu rodÄs klaida + +# Predefined zoom values +page_scale_width=Lopys plotumÄ +page_scale_fit=ĪtylpynÅ«t lopu +page_scale_auto=Automatiskais izmÄrs +page_scale_actual=PatÄ«sais izmÄrs +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=ĪluodejÅ«t PDF nÅ«tyka klaida. +invalid_file_error=Nadereigs voi bÅ«juots PDF fails. +missing_file_error=PDF fails nav atrosts. +unexpected_response_error=Unexpected server response. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=Īvodit paroli, kab attaiseitu PDF failu. +password_invalid=Napareiza parole, raugit vēļreiz. +password_ok=Labi +password_cancel=Atceļt + +printing_not_supported=Uzmaneibu: DrukuoÅ¡ona nu itei puorlÅ«ka dorbojÄs tikai daleji. +printing_not_ready=Uzmaneibu: PDF nav pilneibÄ Ä«luodeits drukuoÅ¡onai. +web_fonts_disabled=Å Ä·Ärsteikla fonti nav aktivizÄti: Navar Ä«gult PDF fontus. + diff --git a/page/static/js/web/locale/lv/viewer.properties b/page/static/js/web/locale/lv/viewer.properties new file mode 100644 index 0000000..851728f --- /dev/null +++ b/page/static/js/web/locale/lv/viewer.properties @@ -0,0 +1,235 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=IepriekÅ¡Ä“jÄ lapa +previous_label=IepriekÅ¡Ä“jÄ +next.title=NÄkamÄ lapa +next_label=NÄkamÄ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Lapa +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=no {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} no {{pagesCount}}) + +zoom_out.title=AttÄlinÄt\u0020 +zoom_out_label=AttÄlinÄt +zoom_in.title=PietuvinÄt +zoom_in_label=PietuvinÄt +zoom.title=PalielinÄjums +presentation_mode.title=PÄrslÄ“gties uz PrezentÄcijas režīmu +presentation_mode_label=PrezentÄcijas režīms +open_file.title=AtvÄ“rt failu +open_file_label=AtvÄ“rt +print.title=DrukÄÅ¡ana +print_label=DrukÄt +download.title=LejupielÄde +download_label=LejupielÄdÄ“t +bookmark.title=PaÅ¡reizÄ“jais skats (kopÄ“t vai atvÄ“rt jaunÄ logÄ) +bookmark_label=PaÅ¡reizÄ“jais skats + +# Secondary toolbar and context menu +tools.title=RÄ«ki +tools_label=RÄ«ki +first_page.title=Iet uz pirmo lapu +first_page_label=Iet uz pirmo lapu +last_page.title=Iet uz pÄ“dÄ“jo lapu +last_page_label=Iet uz pÄ“dÄ“jo lapu +page_rotate_cw.title=Pagriezt pa pulksteni +page_rotate_cw_label=Pagriezt pa pulksteni +page_rotate_ccw.title=Pagriezt pret pulksteni +page_rotate_ccw_label=Pagriezt pret pulksteni + +cursor_text_select_tool.title=AktivizÄ“t teksta izvÄ“les rÄ«ku +cursor_text_select_tool_label=Teksta izvÄ“les rÄ«ks +cursor_hand_tool.title=AktivÄ“t rokas rÄ«ku +cursor_hand_tool_label=Rokas rÄ«ks + +scroll_vertical.title=Izmantot vertikÄlo ritinÄÅ¡anu +scroll_vertical_label=VertikÄlÄ ritinÄÅ¡ana +scroll_horizontal.title=Izmantot horizontÄlo ritinÄÅ¡anu +scroll_horizontal_label=HorizontÄlÄ ritinÄÅ¡ana +scroll_wrapped.title=Izmantot apkļauto ritinÄÅ¡anu +scroll_wrapped_label=ApkļautÄ ritinÄÅ¡ana + +spread_none.title=Nepievienoties lapu izpletumiem +spread_none_label=Neizmantot izpletumus +spread_odd.title=Izmantot lapu izpletumus sÄkot ar nepÄra numuru lapÄm +spread_odd_label=NepÄra izpletumi +spread_even.title=Izmantot lapu izpletumus sÄkot ar pÄra numuru lapÄm +spread_even_label=PÄra izpletumi + +# Document properties dialog box +document_properties.title=Dokumenta iestatÄ«jumi… +document_properties_label=Dokumenta iestatÄ«jumi… +document_properties_file_name=Faila nosaukums: +document_properties_file_size=Faila izmÄ“rs: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} biti) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} biti) +document_properties_title=Nosaukums: +document_properties_author=Autors: +document_properties_subject=TÄ“ma: +document_properties_keywords=AtslÄ“gas vÄrdi: +document_properties_creation_date=Izveides datums: +document_properties_modification_date=LAboÅ¡anas datums: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=RadÄ«tÄjs: +document_properties_producer=PDF producents: +document_properties_version=PDF versija: +document_properties_page_count=Lapu skaits: +document_properties_page_size=PapÄ«ra izmÄ“rs: +document_properties_page_size_unit_inches=collas +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=portretorientÄcija +document_properties_page_size_orientation_landscape=ainavorientÄcija +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=VÄ“stule +document_properties_page_size_name_legal=Juridiskie teksti +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Ä€trÄ tÄ«mekļa skats: +document_properties_linearized_yes=JÄ +document_properties_linearized_no=NÄ“ +document_properties_close=AizvÄ“rt + +print_progress_message=Gatavo dokumentu drukÄÅ¡anai... +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Atcelt + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=PÄrslÄ“gt sÄnu joslu +toggle_sidebar_label=PÄrslÄ“gt sÄnu joslu +document_outline.title=RÄdÄ«t dokumenta struktÅ«ru (veiciet dubultklikÅ¡Ä·i lai izvÄ“rstu/sakļautu visus vienumus) +document_outline_label=Dokumenta saturs +attachments.title=RÄdÄ«t pielikumus +attachments_label=Pielikumi +thumbs.title=ParÄdÄ«t sÄ«ktÄ“lus +thumbs_label=SÄ«ktÄ“li +findbar.title=MeklÄ“t dokumentÄ +findbar_label=MeklÄ“t + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Lapa {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Lapas {{page}} sÄ«ktÄ“ls + +# Find panel button title and messages +find_input.title=MeklÄ“t +find_input.placeholder=MeklÄ“t dokumentÄ… +find_previous.title=Atrast iepriekÅ¡Ä“jo +find_previous_label=IepriekÅ¡Ä“jÄ +find_next.title=Atrast nÄkamo +find_next_label=NÄkamÄ +find_highlight=IekrÄsot visas +find_match_case_label=Lielo, mazo burtu jutÄ«gs +find_entire_word_label=Veselus vÄrdus +find_reached_top=Sasniegts dokumenta sÄkums, turpinÄm no beigÄm +find_reached_bottom=Sasniegtas dokumenta beigas, turpinÄm no sÄkuma +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} no {{total}} rezultÄta +find_match_count[two]={{current}} no {{total}} rezultÄtiem +find_match_count[few]={{current}} no {{total}} rezultÄtiem +find_match_count[many]={{current}} no {{total}} rezultÄtiem +find_match_count[other]={{current}} no {{total}} rezultÄtiem +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=VairÄk nekÄ {{limit}} rezultÄti +find_match_count_limit[one]=VairÄk nekÄ {{limit}} rezultÄti +find_match_count_limit[two]=VairÄk nekÄ {{limit}} rezultÄti +find_match_count_limit[few]=VairÄk nekÄ {{limit}} rezultÄti +find_match_count_limit[many]=VairÄk nekÄ {{limit}} rezultÄti +find_match_count_limit[other]=VairÄk nekÄ {{limit}} rezultÄti +find_not_found=FrÄze nav atrasta + +# Error panel labels +error_more_info=VairÄk informÄcijas +error_less_info=MAzÄk informÄcijas +error_close=Close +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Ziņojums: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Steks: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=File: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Rindiņa: {{line}} +rendering_error=AttÄ“lojot lapu radÄs kļūda + +# Predefined zoom values +page_scale_width=Lapas platumÄ +page_scale_fit=Ietilpinot lapu +page_scale_auto=AutomÄtiskais izmÄ“rs +page_scale_actual=Patiesais izmÄ“rs +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=IelÄdÄ“jot PDF notika kļūda. +invalid_file_error=NederÄ«gs vai bojÄts PDF fails. +missing_file_error=PDF fails nav atrasts. +unexpected_response_error=NegaidÄ«a servera atbilde. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} anotÄcija] +password_label=Ievadiet paroli, lai atvÄ“rtu PDF failu. +password_invalid=Nepareiza parole, mÄ“Ä£iniet vÄ“lreiz. +password_ok=Labi +password_cancel=Atcelt + +printing_not_supported=UzmanÄ«bu: DrukÄÅ¡ana no Å¡Ä« pÄrlÅ«ka darbojas tikai daļēji. +printing_not_ready=UzmanÄ«bu: PDF nav pilnÄ«bÄ ielÄdÄ“ts drukÄÅ¡anai. +web_fonts_disabled=TÄ«mekļa fonti nav aktivizÄ“ti: Nevar iegult PDF fontus. + diff --git a/page/static/js/web/locale/meh/viewer.properties b/page/static/js/web/locale/meh/viewer.properties new file mode 100644 index 0000000..7a1bf04 --- /dev/null +++ b/page/static/js/web/locale/meh/viewer.properties @@ -0,0 +1,111 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Página yata + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. + +zoom.title=Nasa´a ka´nu/Nasa´a luli +open_file_label=Síne + +# Secondary toolbar and context menu + + + + +# Document properties dialog box +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized_yes=Kuvi +document_properties_close=Nakasɨ + +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Nkuvi-ka + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +findbar_label=Nánuku + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. + +# Find panel button title and messages +find_input.title=Nánuku +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} + +# Error panel labels +error_close=Nakasɨ +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number + +# Predefined zoom values +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +password_cancel=Nkuvi-ka + diff --git a/page/static/js/web/locale/mk/viewer.properties b/page/static/js/web/locale/mk/viewer.properties new file mode 100644 index 0000000..6d59400 --- /dev/null +++ b/page/static/js/web/locale/mk/viewer.properties @@ -0,0 +1,139 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Претходна Ñтраница +previous_label=Претходна +next.title=Следна Ñтраница +next_label=Следна + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. + +zoom_out.title=Ðамалување +zoom_out_label=Ðамали +zoom_in.title=Зголемување +zoom_in_label=Зголеми +zoom.title=Променување на големина +presentation_mode.title=Премини во презентациÑки режим +presentation_mode_label=ПрезентациÑки режим +open_file.title=Отворање датотека +open_file_label=Отвори +print.title=Печатење +print_label=Печати +download.title=Преземање +download_label=Преземи +bookmark.title=Овој преглед (копирај или отвори во нов прозорец) +bookmark_label=Овој преглед + +# Secondary toolbar and context menu +tools.title=Ðлатки + + + + +# Document properties dialog box +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. + +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_close=Откажи + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Вклучи Ñтранична лента +toggle_sidebar_label=Вклучи Ñтранична лента +thumbs.title=Прикажување на икони +thumbs_label=Икони +findbar.title=Ðајди во документот +findbar_label=Ðајди + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Страница {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Икона од Ñтраница {{page}} + +# Find panel button title and messages +find_previous.title=Ðајди ја предходната појава на фразата +find_previous_label=Претходно +find_next.title=Ðајди ја Ñледната појава на фразата +find_next_label=Следно +find_highlight=Означи ÑÑ +find_match_case_label=Токму така +find_reached_top=Барањето Ñтигна до почетокот на документот и почнува од крајот +find_reached_bottom=Барањето Ñтигна до крајот на документот и почнува од почеток +find_not_found=Фразата не е пронајдена + +# Error panel labels +error_more_info=Повеќе информации +error_less_info=Помалку информации +error_close=Затвори +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Порака: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Датотека: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Линија: {{line}} +rendering_error=ÐаÑтана грешка при прикажувањето на Ñтраницата. + +# Predefined zoom values +page_scale_width=Ширина на Ñтраница +page_scale_fit=Цела Ñтраница +page_scale_auto=ÐвтоматÑка големина +page_scale_actual=ВиÑтинÑка големина +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. + +loading_error=ÐаÑтана грешка при вчитувањето на PDF-от. +invalid_file_error=Ðевалидна или корумпирана PDF датотека. +missing_file_error=ÐедоÑтаÑува PDF документ. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +password_cancel=Откажи + +printing_not_supported=Предупредување: Печатењето не е целоÑно поддржано во овој прелиÑтувач. +printing_not_ready=Предупредување: PDF документот не е целоÑно вчитан за печатење. +web_fonts_disabled=Интернет фонтовите Ñе оневозможени: не може да Ñе кориÑтат вградените PDF фонтови. + diff --git a/page/static/js/web/locale/mr/viewer.properties b/page/static/js/web/locale/mr/viewer.properties new file mode 100644 index 0000000..40080f9 --- /dev/null +++ b/page/static/js/web/locale/mr/viewer.properties @@ -0,0 +1,231 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=मागील पृषà¥à¤  +previous_label=मागील +next.title=पà¥à¤¢à¥€à¤² पृषà¥à¤  +next_label=पà¥à¤¢à¥€à¤² + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=पृषà¥à¤  +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}}पैकी +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pagesCount}} पैकी {{pageNumber}}) + +zoom_out.title=छोटे करा +zoom_out_label=छोटे करा +zoom_in.title=मोठे करा +zoom_in_label=मोठे करा +zoom.title=लहान किंवा मोठे करा +presentation_mode.title=पà¥à¤°à¤¸à¥à¤¤à¥à¤¤à¤¿à¤•à¤°à¤£ मोडचा वापर करा +presentation_mode_label=पà¥à¤°à¤¸à¥à¤¤à¥à¤¤à¤¿à¤•à¤°à¤£ मोड +open_file.title=फाइल उघडा +open_file_label=उघडा +print.title=छपाई करा +print_label=छपाई करा +download.title=डाउनलोड करा +download_label=डाउनलोड करा +bookmark.title=सधà¥à¤¯à¤¾à¤šà¥‡ अवलोकन (नवीन पटलात पà¥à¤°à¤¤ बनवा किंवा उघडा) +bookmark_label=सधà¥à¤¯à¤¾à¤šà¥‡ अवलोकन + +# Secondary toolbar and context menu +tools.title=साधने +tools_label=साधने +first_page.title=पहिलà¥à¤¯à¤¾ पृषà¥à¤ à¤¾à¤µà¤° जा +first_page_label=पहिलà¥à¤¯à¤¾ पृषà¥à¤ à¤¾à¤µà¤° जा +last_page.title=शेवटचà¥à¤¯à¤¾ पृषà¥à¤ à¤¾à¤µà¤° जा +last_page_label=शेवटचà¥à¤¯à¤¾ पृषà¥à¤ à¤¾à¤µà¤° जा +page_rotate_cw.title=घडà¥à¤¯à¤¾à¤³à¤¾à¤šà¥à¤¯à¤¾ काटà¥à¤¯à¤¾à¤šà¥à¤¯à¤¾ दिशेने फिरवा +page_rotate_cw_label=घडà¥à¤¯à¤¾à¤³à¤¾à¤šà¥à¤¯à¤¾ काटà¥à¤¯à¤¾à¤šà¥à¤¯à¤¾ दिशेने फिरवा +page_rotate_ccw.title=घडà¥à¤¯à¤¾à¤³à¤¾à¤šà¥à¤¯à¤¾ काटà¥à¤¯à¤¾à¤šà¥à¤¯à¤¾ उलट दिशेने फिरवा +page_rotate_ccw_label=घडà¥à¤¯à¤¾à¤³à¤¾à¤šà¥à¤¯à¤¾ काटà¥à¤¯à¤¾à¤šà¥à¤¯à¤¾ उलट दिशेने फिरवा + +cursor_text_select_tool.title=मजकूर निवड साधन कारà¥à¤¯à¤¾à¤¨à¥à¤µà¤¯à¥€à¤¤ करा +cursor_text_select_tool_label=मजकूर निवड साधन +cursor_hand_tool.title=हात साधन कारà¥à¤¯à¤¾à¤¨à¥à¤µà¤¿à¤¤ करा +cursor_hand_tool_label=हसà¥à¤¤ साधन + +scroll_vertical.title=अनà¥à¤²à¤‚ब सà¥à¤•à¥à¤°à¥‹à¤²à¤¿à¤‚ग वापरा +scroll_vertical_label=अनà¥à¤²à¤‚ब सà¥à¤•à¥à¤°à¥‹à¤²à¤¿à¤‚ग +scroll_horizontal.title=कà¥à¤·à¥ˆà¤¤à¤¿à¤œ सà¥à¤•à¥à¤°à¥‹à¤²à¤¿à¤‚ग वापरा +scroll_horizontal_label=कà¥à¤·à¥ˆà¤¤à¤¿à¤œ सà¥à¤•à¥à¤°à¥‹à¤²à¤¿à¤‚ग + + +# Document properties dialog box +document_properties.title=दसà¥à¤¤à¤à¤µà¤œ गà¥à¤£à¤§à¤°à¥à¤®â€¦ +document_properties_label=दसà¥à¤¤à¤à¤µà¤œ गà¥à¤£à¤§à¤°à¥à¤®â€¦ +document_properties_file_name=फाइलचे नाव: +document_properties_file_size=फाइल आकार: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} बाइटà¥à¤¸) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} बाइटà¥à¤¸) +document_properties_title=शिरà¥à¤·à¤•: +document_properties_author=लेखक: +document_properties_subject=विषय: +document_properties_keywords=मà¥à¤–à¥à¤¯à¤¶à¤¬à¥à¤¦: +document_properties_creation_date=निरà¥à¤®à¤¾à¤£ दिनांक: +document_properties_modification_date=दà¥à¤°à¥‚सà¥à¤¤à¥€ दिनांक: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=निरà¥à¤®à¤¾à¤¤à¤¾: +document_properties_producer=PDF निरà¥à¤®à¤¾à¤¤à¤¾: +document_properties_version=PDF आवृतà¥à¤¤à¥€: +document_properties_page_count=पृषà¥à¤  संखà¥à¤¯à¤¾: +document_properties_page_size=पृषà¥à¤  आकार: +document_properties_page_size_unit_inches=इंच +document_properties_page_size_unit_millimeters=मीमी +document_properties_page_size_orientation_portrait=उभी मांडणी +document_properties_page_size_orientation_landscape=आडवे +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=जलद वेब दृषà¥à¤¯: +document_properties_linearized_yes=हो +document_properties_linearized_no=नाही +document_properties_close=बंद करा + +print_progress_message=छपाई करीता पृषà¥à¤  तयार करीत आहे… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=रदà¥à¤¦ करा + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=बाजूचीपटà¥à¤Ÿà¥€ टॉगल करा +toggle_sidebar_label=बाजूचीपटà¥à¤Ÿà¥€ टॉगल करा +document_outline.title=दसà¥à¤¤à¤à¤µà¤œ बाहà¥à¤¯à¤°à¥‡à¤–ा दरà¥à¤¶à¤µà¤¾ (विसà¥à¤¤à¥ƒà¤¤ करणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ दोनवेळा कà¥à¤²à¤¿à¤• करा /सरà¥à¤µ घटक दाखवा) +document_outline_label=दसà¥à¤¤à¤à¤µà¤œ रूपरेषा +attachments.title=जोडपतà¥à¤° दाखवा +attachments_label=जोडपतà¥à¤° +thumbs.title=थंबनेलà¥à¤¸à¥ दाखवा +thumbs_label=थंबनेलà¥à¤¸à¥ +findbar.title=दसà¥à¤¤à¤à¤µà¤œà¤¾à¤¤ शोधा +findbar_label=शोधा + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=पृषà¥à¤  {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=पृषà¥à¤ à¤¾à¤šà¥‡ थंबनेल {{page}} + +# Find panel button title and messages +find_input.title=शोधा +find_input.placeholder=दसà¥à¤¤à¤à¤µà¤œà¤¾à¤¤ शोधा… +find_previous.title=वाकपà¥à¤°à¤¯à¥‹à¤—ची मागील घटना शोधा +find_previous_label=मागील +find_next.title=वाकपà¥à¤°à¤¯à¥‹à¤—ची पà¥à¤¢à¥€à¤² घटना शोधा +find_next_label=पà¥à¤¢à¥€à¤² +find_highlight=सरà¥à¤µ ठळक करा +find_match_case_label=आकार जà¥à¤³à¤µà¤¾ +find_entire_word_label=संपूरà¥à¤£ शबà¥à¤¦ +find_reached_top=दसà¥à¤¤à¤à¤µà¤œà¤¾à¤šà¥à¤¯à¤¾ शीरà¥à¤·à¤•à¤¾à¤¸ पोहचले, तळपासून पà¥à¤¢à¥‡ +find_reached_bottom=दसà¥à¤¤à¤à¤µà¤œà¤¾à¤šà¥à¤¯à¤¾ तळाला पोहचले, शीरà¥à¤·à¤•à¤¾à¤ªà¤¾à¤¸à¥‚न पà¥à¤¢à¥‡ +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{total}} पैकी {{current}} सà¥à¤¸à¤‚गत +find_match_count[two]={{total}} पैकी {{current}} सà¥à¤¸à¤‚गत +find_match_count[few]={{total}} पैकी {{current}} सà¥à¤¸à¤‚गत +find_match_count[many]={{total}} पैकी {{current}} सà¥à¤¸à¤‚गत +find_match_count[other]={{total}} पैकी {{current}} सà¥à¤¸à¤‚गत +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]={{limit}} पेकà¥à¤·à¤¾ अधिक जà¥à¤³à¤£à¥à¤¯à¤¾ +find_match_count_limit[one]={{limit}} पेकà¥à¤·à¤¾ अधिक जà¥à¤³à¤£à¥à¤¯à¤¾ +find_match_count_limit[two]={{limit}} पेकà¥à¤·à¤¾ अधिक जà¥à¤³à¤£à¥à¤¯à¤¾ +find_match_count_limit[few]={{limit}} पेकà¥à¤·à¤¾ अधिक जà¥à¤³à¤£à¥à¤¯à¤¾ +find_match_count_limit[many]={{limit}} पेकà¥à¤·à¤¾ अधिक जà¥à¤³à¤£à¥à¤¯à¤¾ +find_match_count_limit[other]={{limit}} पेकà¥à¤·à¤¾ अधिक जà¥à¤³à¤£à¥à¤¯à¤¾ +find_not_found=वाकपà¥à¤°à¤¯à¥‹à¤— आढळले नाही + +# Error panel labels +error_more_info=आणखी माहिती +error_less_info=कमी माहिती +error_close=बंद करा +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=संदेश: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=सà¥à¤Ÿà¥…क: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=फाइल: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=रेष: {{line}} +rendering_error=पृषà¥à¤  दाखवतेवेळी तà¥à¤°à¥à¤Ÿà¥€ आढळली. + +# Predefined zoom values +page_scale_width=पृषà¥à¤ à¤¾à¤šà¥€ रूंदी +page_scale_fit=पृषà¥à¤  बसवा +page_scale_auto=सà¥à¤µà¤¯à¤‚ लाहन किंवा मोठे करणे +page_scale_actual=पà¥à¤°à¤¤à¥à¤¯à¤•à¥à¤· आकार +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=PDF लोड करतेवेळी तà¥à¤°à¥à¤Ÿà¥€ आढळली. +invalid_file_error=अवैध किंवा दोषीत PDF फाइल. +missing_file_error=न आढळणारी PDF फाइल. +unexpected_response_error=अनपेकà¥à¤·à¤¿à¤¤ सरà¥à¤µà¥à¤¹à¤° पà¥à¤°à¤¤à¤¿à¤¸à¤¾à¤¦. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} टिपणà¥à¤£à¥€] +password_label=ही PDF फाइल उघडणà¥à¤¯à¤¾à¤•à¤°à¤¿à¤¤à¤¾ पासवरà¥à¤¡ दà¥à¤¯à¤¾. +password_invalid=अवैध पासवरà¥à¤¡. कृपया पà¥à¤¨à¥à¤¹à¤¾ पà¥à¤°à¤¯à¤¤à¥à¤¨ करा. +password_ok=ठीक आहे +password_cancel=रदà¥à¤¦ करा + +printing_not_supported=सावधानता: या बà¥à¤°à¤¾à¤‰à¤à¤°à¤¤à¤°à¥à¤«à¥‡ छपाइ पूरà¥à¤£à¤ªà¤£à¥‡ समरà¥à¤¥à¥€à¤¤ नाही. +printing_not_ready=सावधानता: छपाईकरिता PDF पूरà¥à¤£à¤¤à¤¯à¤¾ लोड à¤à¤¾à¤²à¥‡ नाही. +web_fonts_disabled=वेब टंक असमरà¥à¤¥à¥€à¤¤ आहेत: à¤à¤®à¥à¤¬à¥‡à¤¡à¥‡à¤¡ PDF टंक वापर अशकà¥à¤¯. + diff --git a/page/static/js/web/locale/ms/viewer.properties b/page/static/js/web/locale/ms/viewer.properties new file mode 100644 index 0000000..21542e2 --- /dev/null +++ b/page/static/js/web/locale/ms/viewer.properties @@ -0,0 +1,235 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Halaman Dahulu +previous_label=Dahulu +next.title=Halaman Berikut +next_label=Berikut + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Halaman +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=daripada {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} daripada {{pagesCount}}) + +zoom_out.title=Zum Keluar +zoom_out_label=Zum Keluar +zoom_in.title=Zum Masuk +zoom_in_label=Zum Masuk +zoom.title=Zum +presentation_mode.title=Tukar ke Mod Persembahan +presentation_mode_label=Mod Persembahan +open_file.title=Buka Fail +open_file_label=Buka +print.title=Cetak +print_label=Cetak +download.title=Muat turun +download_label=Muat turun +bookmark.title=Paparan semasa (salin atau buka dalam tetingkap baru) +bookmark_label=Paparan Semasa + +# Secondary toolbar and context menu +tools.title=Alatan +tools_label=Alatan +first_page.title=Pergi ke Halaman Pertama +first_page_label=Pergi ke Halaman Pertama +last_page.title=Pergi ke Halaman Terakhir +last_page_label=Pergi ke Halaman Terakhir +page_rotate_cw.title=Berputar ikut arah Jam +page_rotate_cw_label=Berputar ikut arah Jam +page_rotate_ccw.title=Pusing berlawan arah jam +page_rotate_ccw_label=Pusing berlawan arah jam + +cursor_text_select_tool.title=Dayakan Alatan Pilihan Teks +cursor_text_select_tool_label=Alatan Pilihan Teks +cursor_hand_tool.title=Dayakan Alatan Tangan +cursor_hand_tool_label=Alatan Tangan + +scroll_vertical.title=Guna Skrol Menegak +scroll_vertical_label=Skrol Menegak +scroll_horizontal.title=Guna Skrol Mengufuk +scroll_horizontal_label=Skrol Mengufuk +scroll_wrapped.title=Guna Skrol Berbalut +scroll_wrapped_label=Skrol Berbalut + +spread_none.title=Jangan hubungkan hamparan halaman +spread_none_label=Tanpa Hamparan +spread_odd.title=Hubungkan hamparan halaman dengan halaman nombor ganjil +spread_odd_label=Hamparan Ganjil +spread_even.title=Hubungkan hamparan halaman dengan halaman nombor genap +spread_even_label=Hamparan Seimbang + +# Document properties dialog box +document_properties.title=Sifat Dokumen… +document_properties_label=Sifat Dokumen… +document_properties_file_name=Nama fail: +document_properties_file_size=Saiz fail: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bait) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bait) +document_properties_title=Tajuk: +document_properties_author=Pengarang: +document_properties_subject=Subjek: +document_properties_keywords=Kata kunci: +document_properties_creation_date=Masa Dicipta: +document_properties_modification_date=Tarikh Ubahsuai: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Pencipta: +document_properties_producer=Pengeluar PDF: +document_properties_version=Versi PDF: +document_properties_page_count=Kiraan Laman: +document_properties_page_size=Saiz Halaman: +document_properties_page_size_unit_inches=dalam +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=potret +document_properties_page_size_orientation_landscape=landskap +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Paparan Web Pantas: +document_properties_linearized_yes=Ya +document_properties_linearized_no=Tidak +document_properties_close=Tutup + +print_progress_message=Menyediakan dokumen untuk dicetak… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Batal + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Togol Bar Sisi +toggle_sidebar_label=Togol Bar Sisi +document_outline.title=Papar Rangka Dokumen (klik-dua-kali untuk kembangkan/kolaps semua item) +document_outline_label=Rangka Dokumen +attachments.title=Papar Lampiran +attachments_label=Lampiran +thumbs.title=Papar Thumbnails +thumbs_label=Imej kecil +findbar.title=Cari didalam Dokumen +findbar_label=Cari + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Halaman {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Halaman Imej kecil {{page}} + +# Find panel button title and messages +find_input.title=Cari +find_input.placeholder=Cari dalam dokumen… +find_previous.title=Cari teks frasa berkenaan yang terdahulu +find_previous_label=Dahulu +find_next.title=Cari teks frasa berkenaan yang berikut +find_next_label=Berikut +find_highlight=Serlahkan semua +find_match_case_label=Huruf sepadan +find_entire_word_label=Seluruh perkataan +find_reached_top=Mencapai teratas daripada dokumen, sambungan daripada bawah +find_reached_bottom=Mencapai terakhir daripada dokumen, sambungan daripada atas +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} daripada {{total}} padanan +find_match_count[two]={{current}} daripada {{total}} padanan +find_match_count[few]={{current}} daripada {{total}} padanan +find_match_count[many]={{current}} daripada {{total}} padanan +find_match_count[other]={{current}} daripada {{total}} padanan +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Lebih daripada {{limit}} padanan +find_match_count_limit[one]=Lebih daripada {{limit}} padanan +find_match_count_limit[two]=Lebih daripada {{limit}} padanan +find_match_count_limit[few]=Lebih daripada {{limit}} padanan +find_match_count_limit[many]=Lebih daripada {{limit}} padanan +find_match_count_limit[other]=Lebih daripada {{limit}} padanan +find_not_found=Frasa tidak ditemui + +# Error panel labels +error_more_info=Maklumat Lanjut +error_less_info=Kurang Informasi +error_close=Tutup +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mesej: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Timbun: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fail: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Garis: {{line}} +rendering_error=Ralat berlaku ketika memberikan halaman. + +# Predefined zoom values +page_scale_width=Lebar Halaman +page_scale_fit=Muat Halaman +page_scale_auto=Zoom Automatik +page_scale_actual=Saiz Sebenar +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=Masalah berlaku semasa menuatkan sebuah PDF. +invalid_file_error=Tidak sah atau fail PDF rosak. +missing_file_error=Fail PDF Hilang. +unexpected_response_error=Respon pelayan yang tidak dijangka. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Anotasi] +password_label=Masukan kata kunci untuk membuka fail PDF ini. +password_invalid=Kata laluan salah. Cuba lagi. +password_ok=OK +password_cancel=Batal + +printing_not_supported=Amaran: Cetakan ini tidak sepenuhnya disokong oleh pelayar ini. +printing_not_ready=Amaran: PDF tidak sepenuhnya dimuatkan untuk dicetak. +web_fonts_disabled=Fon web dinyahdayakan: tidak dapat menggunakan fon terbenam PDF. + diff --git a/page/static/js/web/locale/my/viewer.properties b/page/static/js/web/locale/my/viewer.properties new file mode 100644 index 0000000..0c97432 --- /dev/null +++ b/page/static/js/web/locale/my/viewer.properties @@ -0,0 +1,191 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=အရင် စာမျက်နှာ +previous_label=အရင်နေရာ +next.title=ရှေ့ စာမျက်နှာ +next_label=နောက်á€á€á€¯ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=စာမျက်နှာ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} á +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pagesCount}} á {{pageNumber}}) + +zoom_out.title=á€á€»á€¯á€¶á€·á€•á€« +zoom_out_label=á€á€»á€¯á€¶á€·á€•á€« +zoom_in.title=á€á€»á€²á€·á€•á€« +zoom_in_label=á€á€»á€²á€·á€•á€« +zoom.title=á€á€»á€¯á€¶á€·/á€á€»á€²á€·á€•á€« +presentation_mode.title=ဆွေးနွေးá€á€„်ပြစနစ်သို့ ကူးပြောင်းပါ +presentation_mode_label=ဆွေးနွေးá€á€„်ပြစနစ် +open_file.title=ဖိုင်အားဖွင့်ပါዠ+open_file_label=ဖွင့်ပါ +print.title=ပုံနှိုပ်ပါ +print_label=ပုံနှိုပ်ပါ +download.title=ကူးဆွဲ +download_label=ကူးဆွဲ +bookmark.title=လက်ရှိ မြင်ကွင်း (á€á€„်းဒိုးအသစ်မှာ ကူးပါ သို့မဟုá€á€º ဖွင့်ပါ) +bookmark_label=လက်ရှိ မြင်ကွင်း + +# Secondary toolbar and context menu +tools.title=ကိရိယာများ +tools_label=ကိရိယာများ +first_page.title=ပထမ စာမျက်နှာသို့ +first_page_label=ပထမ စာမျက်နှာသို့ +last_page.title=နောက်ဆုံး စာမျက်နှာသို့ +last_page_label=နောက်ဆုံး စာမျက်နှာသို့ +page_rotate_cw.title=နာရီလက်á€á€¶ အá€á€­á€¯á€„်း +page_rotate_cw_label=နာရီလက်á€á€¶ အá€á€­á€¯á€„်း +page_rotate_ccw.title=နာရီလက်á€á€¶ ပြောင်းပြန် +page_rotate_ccw_label=နာရီလက်á€á€¶ ပြောင်းပြန် + + + + +# Document properties dialog box +document_properties.title=မှá€á€ºá€á€™á€ºá€¸á€™á€¾á€á€ºá€›á€¬ ဂုá€á€ºá€žá€á€¹á€á€­á€™á€»á€¬á€¸ +document_properties_label=မှá€á€ºá€á€™á€ºá€¸á€™á€¾á€á€ºá€›á€¬ ဂုá€á€ºá€žá€á€¹á€á€­á€™á€»á€¬á€¸ +document_properties_file_name=ဖိုင် : +document_properties_file_size=ဖိုင်ဆိုဒ် : +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} ကီလိုဘိုá€á€º ({{size_b}}ဘိုá€á€º) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=á€á€±á€«á€„်းစဉ်‌ - +document_properties_author=ရေးသားသူ: +document_properties_subject=အကြောင်းအရာ:\u0020 +document_properties_keywords=သော့á€á€»á€€á€º စာလုံး: +document_properties_creation_date=ထုá€á€ºá€œá€¯á€•á€ºá€›á€€á€ºá€…ွဲ: +document_properties_modification_date=ပြင်ဆင်ရက်စွဲ: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=ဖန်á€á€®á€¸á€žá€°: +document_properties_producer=PDF ထုá€á€ºá€œá€¯á€•á€ºá€žá€°: +document_properties_version=PDF ဗားရှင်း: +document_properties_page_count=စာမျက်နှာအရေအá€á€½á€€á€º: +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_close=ပိá€á€º + +print_progress_message=Preparing document for printing… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=ပယ်​ဖျက်ပါ + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=ဘေးá€á€”်းဖွင့်ပိá€á€º +toggle_sidebar_label=ဖွင့်ပိá€á€º ဆလိုက်ဒါ +document_outline.title=စာá€á€™á€ºá€¸á€¡á€€á€»á€‰á€ºá€¸á€á€»á€¯á€•á€ºá€€á€­á€¯ ပြပါ (စာရင်းအားလုံးကို á€á€»á€¯á€¶á€·/á€á€»á€²á€·á€›á€”် ကလစ်နှစ်á€á€»á€€á€ºá€”ှိပ်ပါ) +document_outline_label=စာá€á€™á€ºá€¸á€¡á€€á€»á€‰á€ºá€¸á€á€»á€¯á€•á€º +attachments.title=á€á€½á€²á€á€»á€€á€ºá€™á€»á€¬á€¸ ပြပါ +attachments_label=á€á€½á€²á€‘ားá€á€»á€€á€ºá€™á€»á€¬á€¸ +thumbs.title=ပုံရိပ်ငယ်များကို ပြပါ +thumbs_label=ပုံရိပ်ငယ်များ +findbar.title=Find in Document +findbar_label=ရှာဖွေပါ + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=စာမျက်နှာ {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=စာမျက်နှာရဲ့ ပုံရိပ်ငယ် {{page}} + +# Find panel button title and messages +find_input.title=ရှာဖွေပါ +find_input.placeholder=စာá€á€™á€ºá€¸á€‘ဲá€á€½á€„် ရှာဖွေရန်… +find_previous.title=စကားစုရဲ့ အရင် ​ဖြစ်ပွားမှုကို ရှာဖွေပါ +find_previous_label=နောက်သို့ +find_next.title=စကားစုရဲ့ နောက်ထပ် ​ဖြစ်ပွားမှုကို ရှာဖွေပါ +find_next_label=ရှေ့သို့ +find_highlight=အားလုံးကို မျဉ်းသားပါ +find_match_case_label=စာလုံး á€á€­á€¯á€€á€ºá€†á€­á€¯á€„်ပါ +find_reached_top=စာမျက်နှာထိပ် ရောက်နေပြီአအဆုံးကနေ ပြန်စပါ +find_reached_bottom=စာမျက်နှာအဆုံး ရောက်နေပြီአထိပ်ကနေ ပြန်စပါ +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_not_found=စကားစု မá€á€½á€±á€·á€›á€˜á€°á€¸ + +# Error panel labels +error_more_info=နောက်ထပ်အá€á€»á€€á€ºá€¡á€œá€€á€ºá€™á€»á€¬á€¸ +error_less_info=အနည်းငယ်မျှသော သá€á€„်းအá€á€»á€€á€ºá€¡á€œá€€á€º +error_close=ပိá€á€º +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=မက်ဆေ့ - {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=အထပ် - {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=ဖိုင် {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=လိုင်း - {{line}} +rendering_error=စာမျက်နှာကို ပုံဖော်နေá€á€»á€­á€”်မှာ အမှားá€á€…်á€á€¯á€á€½á€±á€·á€›á€•á€«á€á€šá€ºá‹ + +# Predefined zoom values +page_scale_width=စာမျက်နှာ အကျယ် +page_scale_fit=စာမျက်နှာ ကွက်á€á€­ +page_scale_auto=အလိုအလျောက် á€á€»á€¯á€¶á€·á€á€»á€²á€· +page_scale_actual=အမှန်á€á€€á€šá€ºá€›á€¾á€­á€á€²á€· အရွယ် +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=PDF ဖိုင် ကိုဆွဲá€á€„်နေá€á€»á€­á€”်မှာ အမှားá€á€…်á€á€¯á€á€½á€±á€·á€›á€•á€«á€á€šá€ºá‹ +invalid_file_error=မရသော သို့ ပျက်နေသော PDF ဖိုင် +missing_file_error=PDF ပျောက်ဆုံး +unexpected_response_error=မမျှော်လင့်ထားသော ဆာဗာမှ ပြန်ကြားá€á€»á€€á€º + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} အဓိပ္ပာယ်ဖွင့်ဆိုá€á€»á€€á€º] +password_label=ယá€á€¯ PDF ကို ဖွင့်ရန် စကားá€á€¾á€€á€ºá€€á€­á€¯ ရိုက်ပါዠ+password_invalid=စာá€á€¾á€€á€º မှားသည်ዠထပ်ကြိုးစားကြည့်ပါዠ+password_ok=OK +password_cancel=ပယ်​ဖျက်ပါ + +printing_not_supported=သá€á€­á€•á€±á€¸á€á€»á€€á€ºáŠá€•á€›á€„့်ထုá€á€ºá€á€¼á€„်းကိုဤဘယောက်ဆာသည် ပြည့်á€á€…ွာထောက်ပံ့မထားပါ á‹ +printing_not_ready=သá€á€­á€•á€±á€¸á€á€»á€€á€º: ယá€á€¯ PDF ဖိုင်သည် ပုံနှိပ်ရန် မပြည့်စုံပါ +web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. + diff --git a/page/static/js/web/locale/nb-NO/viewer.properties b/page/static/js/web/locale/nb-NO/viewer.properties new file mode 100644 index 0000000..266683c --- /dev/null +++ b/page/static/js/web/locale/nb-NO/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Forrige side +previous_label=Forrige +next.title=Neste side +next_label=Neste + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Side +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=av {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} av {{pagesCount}}) + +zoom_out.title=Zoom ut +zoom_out_label=Zoom ut +zoom_in.title=Zoom inn +zoom_in_label=Zoom inn +zoom.title=Zoom +presentation_mode.title=Bytt til presentasjonsmodus +presentation_mode_label=Presentasjonsmodus +open_file.title=Ã…pne fil +open_file_label=Ã…pne +print.title=Skriv ut +print_label=Skriv ut +download.title=Last ned +download_label=Last ned +save.title=Lagre +save_label=Lagre +bookmark.title=NÃ¥værende visning (kopier eller Ã¥pne i et nytt vindu) +bookmark_label=NÃ¥værende visning + +bookmark1.title=Gjeldende side (se URL fra gjeldende side) +bookmark1_label=Gjeldende side + +# Secondary toolbar and context menu +tools.title=Verktøy +tools_label=Verktøy +first_page.title=GÃ¥ til første side +first_page_label=GÃ¥ til første side +last_page.title=GÃ¥ til siste side +last_page_label=GÃ¥ til siste side +page_rotate_cw.title=Roter med klokken +page_rotate_cw_label=Roter med klokken +page_rotate_ccw.title=Roter mot klokken +page_rotate_ccw_label=Roter mot klokken + +cursor_text_select_tool.title=Aktiver tekstmarkeringsverktøy +cursor_text_select_tool_label=Tekstmarkeringsverktøy +cursor_hand_tool.title=Aktiver handverktøy +cursor_hand_tool_label=Handverktøy + +scroll_page.title=Bruk siderulling +scroll_page_label=Siderulling +scroll_vertical.title=Bruk vertikal rulling +scroll_vertical_label=Vertikal rulling +scroll_horizontal.title=Bruk horisontal rulling +scroll_horizontal_label=Horisontal rulling +scroll_wrapped.title=Bruk flersiderulling +scroll_wrapped_label=Flersiderulling + +spread_none.title=Vis enkeltsider +spread_none_label=Enkeltsider +spread_odd.title=Vis oppslag med ulike sidenumre til venstre +spread_odd_label=Oppslag med forside +spread_even.title=Vis oppslag med like sidenumre til venstre +spread_even_label=Oppslag uten forside + +# Document properties dialog box +document_properties.title=Dokumentegenskaper … +document_properties_label=Dokumentegenskaper … +document_properties_file_name=Filnavn: +document_properties_file_size=Filstørrelse: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Dokumentegenskaper … +document_properties_author=Forfatter: +document_properties_subject=Emne: +document_properties_keywords=Nøkkelord: +document_properties_creation_date=Opprettet dato: +document_properties_modification_date=Endret dato: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Opprettet av: +document_properties_producer=PDF-verktøy: +document_properties_version=PDF-versjon: +document_properties_page_count=Sideantall: +document_properties_page_size=Sidestørrelse: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=stÃ¥ende +document_properties_page_size_orientation_landscape=liggende +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Hurtig nettvisning: +document_properties_linearized_yes=Ja +document_properties_linearized_no=Nei +document_properties_close=Lukk + +print_progress_message=Forbereder dokument for utskrift … +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Avbryt + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=SlÃ¥ av/pÃ¥ sidestolpe +toggle_sidebar_notification2.title=Vis/gjem sidestolpe (dokumentet inneholder oversikt/vedlegg/lag) +toggle_sidebar_label=SlÃ¥ av/pÃ¥ sidestolpe +document_outline.title=Vis dokumentdisposisjonen (dobbeltklikk for Ã¥ utvide/skjule alle elementer) +document_outline_label=Dokumentdisposisjon +attachments.title=Vis vedlegg +attachments_label=Vedlegg +layers.title=Vis lag (dobbeltklikk for Ã¥ tilbakestille alle lag til standardtilstand) +layers_label=Lag +thumbs.title=Vis miniatyrbilde +thumbs_label=Miniatyrbilde +current_outline_item.title=Finn gjeldende disposisjonselement +current_outline_item_label=Gjeldende disposisjonselement +findbar.title=Finn i dokumentet +findbar_label=Finn + +additional_layers=Ytterligere lag +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Side {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Side {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatyrbilde av side {{page}} + +# Find panel button title and messages +find_input.title=Søk +find_input.placeholder=Søk i dokument… +find_previous.title=Finn forrige forekomst av frasen +find_previous_label=Forrige +find_next.title=Finn neste forekomst av frasen +find_next_label=Neste +find_highlight=Uthev alle +find_match_case_label=Skill store/smÃ¥ bokstaver +find_match_diacritics_label=Samsvar diakritiske tegn +find_entire_word_label=Hele ord +find_reached_top=NÃ¥dde toppen av dokumentet, fortsetter fra bunnen +find_reached_bottom=NÃ¥dde bunnen av dokumentet, fortsetter fra toppen +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} av {{total}} treff +find_match_count[two]={{current}} av {{total}} treff +find_match_count[few]={{current}} av {{total}} treff +find_match_count[many]={{current}} av {{total}} treff +find_match_count[other]={{current}} av {{total}} treff +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Mer enn {{limit}} treff +find_match_count_limit[one]=Mer enn {{limit}} treff +find_match_count_limit[two]=Mer enn {{limit}} treff +find_match_count_limit[few]=Mer enn {{limit}} treff +find_match_count_limit[many]=Mer enn {{limit}} treff +find_match_count_limit[other]=Mer enn {{limit}} treff +find_not_found=Fant ikke teksten + +# Error panel labels +error_more_info=Mer info +error_less_info=Mindre info +error_close=Lukk +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (bygg: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Melding: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stakk: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fil: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linje: {{line}} + +# Predefined zoom values +page_scale_width=Sidebredde +page_scale_fit=Tilpass til siden +page_scale_auto=Automatisk zoom +page_scale_actual=Virkelig størrelse +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}} % + +# Loading indicator messages +loading=Laster… +loading_error=En feil oppstod ved lasting av PDF. +invalid_file_error=Ugyldig eller skadet PDF-fil. +missing_file_error=Manglende PDF-fil. +unexpected_response_error=Uventet serverrespons. + +rendering_error=En feil oppstod ved opptegning av siden. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} annotasjon] +password_label=Skriv inn passordet for Ã¥ Ã¥pne denne PDF-filen. +password_invalid=Ugyldig passord. Prøv igjen. +password_ok=OK +password_cancel=Avbryt + +printing_not_supported=Advarsel: Utskrift er ikke fullstendig støttet av denne nettleseren. +printing_not_ready=Advarsel: PDF er ikke fullstendig innlastet for utskrift. +web_fonts_disabled=Web-fonter er avslÃ¥tt: Kan ikke bruke innbundne PDF-fonter. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=Tegn +editor_ink2_label=Tegn + +free_text2_default_content=Begynn Ã¥ skrive… + +# Editor Parameters +editor_free_text_color=Farge +editor_free_text_size=Størrelse +editor_ink_color=Farge +editor_ink_thickness=Tykkelse +editor_ink_opacity=Ugjennomsiktighet + +# Editor aria +editor_free_text2_aria_label=Tekstredigering +editor_ink2_aria_label=Tegneredigering +editor_ink_canvas_aria_label=Brukerskapt bilde diff --git a/page/static/js/web/locale/ne-NP/viewer.properties b/page/static/js/web/locale/ne-NP/viewer.properties new file mode 100644 index 0000000..cb7e424 --- /dev/null +++ b/page/static/js/web/locale/ne-NP/viewer.properties @@ -0,0 +1,218 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=अघिलà¥à¤²à¥‹ पृषà¥à¤  +previous_label=अघिलà¥à¤²à¥‹ +next.title=पछिलà¥à¤²à¥‹ पृषà¥à¤  +next_label=पछिलà¥à¤²à¥‹ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=पृषà¥à¤  +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} मधà¥à¤¯à¥‡ +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pagesCount}} को {{pageNumber}}) + +zoom_out.title=जà¥à¤® घटाउनà¥à¤¹à¥‹à¤¸à¥ +zoom_out_label=जà¥à¤® घटाउनà¥à¤¹à¥‹à¤¸à¥ +zoom_in.title=जà¥à¤® बढाउनà¥à¤¹à¥‹à¤¸à¥ +zoom_in_label=जà¥à¤® बढाउनà¥à¤¹à¥‹à¤¸à¥ +zoom.title=जà¥à¤® गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ +presentation_mode.title=पà¥à¤°à¤¸à¥à¤¤à¥à¤¤à¤¿ मोडमा जानà¥à¤¹à¥‹à¤¸à¥ +presentation_mode_label=पà¥à¤°à¤¸à¥à¤¤à¥à¤¤à¤¿ मोड +open_file.title=फाइल खोलà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ +open_file_label=खोलà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ +print.title=मà¥à¤¦à¥à¤°à¤£ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ +print_label=मà¥à¤¦à¥à¤°à¤£ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ +download.title=डाउनलोडहरू +download_label=डाउनलोडहरू +bookmark.title=वरà¥à¤¤à¤®à¤¾à¤¨ दृशà¥à¤¯ (पà¥à¤°à¤¤à¤¿à¤²à¤¿à¤ªà¤¿ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ वा नयाठसञà¥à¤à¥à¤¯à¤¾à¤²à¤®à¤¾ खà¥à¤²à¥à¤¨à¥à¤¹à¥‹à¤¸à¥) +bookmark_label=हालको दृशà¥à¤¯ + +# Secondary toolbar and context menu +tools.title=औजारहरू +tools_label=औजारहरू +first_page.title=पहिलो पृषà¥à¤ à¤®à¤¾ जानà¥à¤¹à¥‹à¤¸à¥ +first_page_label=पहिलो पृषà¥à¤ à¤®à¤¾ जानà¥à¤¹à¥‹à¤¸à¥ +last_page.title=पछिलà¥à¤²à¥‹ पृषà¥à¤ à¤®à¤¾ जानà¥à¤¹à¥‹à¤¸à¥ +last_page_label=पछिलà¥à¤²à¥‹ पृषà¥à¤ à¤®à¤¾ जानà¥à¤¹à¥‹à¤¸à¥ +page_rotate_cw.title=घडीको दिशामा घà¥à¤®à¤¾à¤‰à¤¨à¥à¤¹à¥‹à¤¸à¥ +page_rotate_cw_label=घडीको दिशामा घà¥à¤®à¤¾à¤‰à¤¨à¥à¤¹à¥‹à¤¸à¥ +page_rotate_ccw.title=घडीको विपरित दिशामा घà¥à¤®à¤¾à¤‰à¤¨à¥à¤¹à¥‹à¤¸à¥ +page_rotate_ccw_label=घडीको विपरित दिशामा घà¥à¤®à¤¾à¤‰à¤¨à¥à¤¹à¥‹à¤¸à¥ + +cursor_text_select_tool.title=पाठ चयन उपकरण सकà¥à¤·à¤® गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ +cursor_text_select_tool_label=पाठ चयन उपकरण +cursor_hand_tool.title=हाते उपकरण सकà¥à¤·à¤® गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ +cursor_hand_tool_label=हाते उपकरण + +scroll_vertical.title=ठाडो सà¥à¤•à¥à¤°à¥‹à¤²à¤¿à¤™à¥à¤— पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ +scroll_vertical_label=ठाडो सà¥à¤•à¥à¤°à¥à¤°à¥‹à¤²à¤¿à¤™à¥à¤— +scroll_horizontal.title=तेरà¥à¤¸à¥‹ सà¥à¤•à¥à¤°à¥‹à¤²à¤¿à¤™à¥à¤— पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ +scroll_horizontal_label=तेरà¥à¤¸à¥‹ सà¥à¤•à¥à¤°à¥‹à¤²à¤¿à¤™à¥à¤— +scroll_wrapped.title=लिपि सà¥à¤•à¥à¤°à¥‹à¤²à¤¿à¤™à¥à¤— पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ +scroll_wrapped_label=लिपि सà¥à¤•à¥à¤°à¥‹à¤²à¤¿à¤™à¥à¤— + +spread_none.title=पृषà¥à¤  सà¥à¤ªà¥à¤°à¥‡à¤¡à¤®à¤¾ सामेल हà¥à¤¨à¥à¤¹à¥à¤¨à¥à¤¨ +spread_none_label=सà¥à¤ªà¥à¤°à¥‡à¤¡ छैन + +# Document properties dialog box +document_properties.title=कागजात विशेषताहरू... +document_properties_label=कागजात विशेषताहरू... +document_properties_file_name=फाइल नाम: +document_properties_file_size=फाइल आकार: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=शीरà¥à¤·à¤•: +document_properties_author=लेखक: +document_properties_subject=विषयः +document_properties_keywords=शबà¥à¤¦à¤•à¥à¤žà¥à¤œà¥€à¤ƒ +document_properties_creation_date=सिरà¥à¤œà¤¨à¤¾ गरिà¤à¤•à¥‹ मिति: +document_properties_modification_date=परिमारà¥à¤œà¤¿à¤¤ मिति: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=सरà¥à¤œà¤•: +document_properties_producer=PDF निरà¥à¤®à¤¾à¤¤à¤¾: +document_properties_version=PDF संसà¥à¤•à¤°à¤£ +document_properties_page_count=पृषà¥à¤  गणना: +document_properties_page_size=पृषà¥à¤  आकार: +document_properties_page_size_unit_inches=इनà¥à¤š +document_properties_page_size_unit_millimeters=मि.मि. +document_properties_page_size_orientation_portrait=पोटà¥à¤°à¥‡à¤Ÿ +document_properties_page_size_orientation_landscape=परिदृशà¥à¤¯ +document_properties_page_size_name_letter=अकà¥à¤·à¤° +document_properties_page_size_name_legal=कानूनी +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized_yes=हो +document_properties_linearized_no=होइन +document_properties_close=बनà¥à¤¦ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ + +print_progress_message=मà¥à¤¦à¥à¤°à¤£à¤•à¤¾ लागि कागजात तयारी गरिदै… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=रदà¥à¤¦ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=टगल साइडबार +toggle_sidebar_label=टगल साइडबार +document_outline.title=कागजातको रूपरेखा देखाउनà¥à¤¹à¥‹à¤¸à¥ (सबै वसà¥à¤¤à¥à¤¹à¤°à¥‚ विसà¥à¤¤à¤¾à¤°/पतन गरà¥à¤¨ डबल-कà¥à¤²à¤¿à¤• गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥) +document_outline_label=दसà¥à¤¤à¤¾à¤µà¥‡à¤œà¤•à¥‹ रूपरेखा +attachments.title=संलगà¥à¤¨à¤¹à¤°à¥‚ देखाउनà¥à¤¹à¥‹à¤¸à¥ +attachments_label=संलगà¥à¤¨à¤•à¤¹à¤°à¥‚ +thumbs.title=थमà¥à¤¬à¤¨à¥‡à¤²à¤¹à¤°à¥‚ देखाउनà¥à¤¹à¥‹à¤¸à¥ +thumbs_label=थमà¥à¤¬à¤¨à¥‡à¤²à¤¹à¤°à¥‚ +findbar.title=कागजातमा फेला पारà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ +findbar_label=फेला पारà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ + +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=पृषà¥à¤  {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}} पृषà¥à¤ à¤•à¥‹ थमà¥à¤¬à¤¨à¥‡à¤² + +# Find panel button title and messages +find_input.title=फेला पारà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ +find_input.placeholder=कागजातमा फेला पारà¥à¤¨à¥à¤¹à¥‹à¤¸à¥â€¦ +find_previous.title=यस वाकà¥à¤¯à¤¾à¤‚शको अघिलà¥à¤²à¥‹ घटना फेला पारà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ +find_previous_label=अघिलà¥à¤²à¥‹ +find_next.title=यस वाकà¥à¤¯à¤¾à¤‚शको पछिलà¥à¤²à¥‹ घटना फेला पारà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ +find_next_label=अरà¥à¤•à¥‹ +find_highlight=सबै हाइलाइट गरà¥à¤¨à¥‡ +find_match_case_label=केस जोडा मिलाउनà¥à¤¹à¥‹à¤¸à¥ +find_entire_word_label=पà¥à¤°à¤¾ शबà¥à¤¦à¤¹à¤°à¥ +find_reached_top=पृषà¥à¤ à¤•à¥‹ शिरà¥à¤·à¤®à¤¾ पà¥à¤—ीयो, तलबाट जारी गरिà¤à¤•à¥‹ थियो +find_reached_bottom=पृषà¥à¤ à¤•à¥‹ अनà¥à¤¤à¥à¤¯à¤®à¤¾ पà¥à¤—ीयो, शिरà¥à¤·à¤¬à¤¾à¤Ÿ जारी गरिà¤à¤•à¥‹ थियो +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_not_found=वाकà¥à¤¯à¤¾à¤‚श फेला परेन + +# Error panel labels +error_more_info=थप जानकारी +error_less_info=कम जानकारी +error_close=बनà¥à¤¦ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=सनà¥à¤¦à¥‡à¤¶: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=सà¥à¤Ÿà¥à¤¯à¤¾à¤•: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=फाइल: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=लाइन: {{line}} +rendering_error=पृषà¥à¤  पà¥à¤°à¤¤à¤¿à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¦à¤¾ à¤à¤‰à¤Ÿà¤¾ तà¥à¤°à¥à¤Ÿà¤¿ देखापरà¥â€à¤¯à¥‹à¥¤ + +# Predefined zoom values +page_scale_width=पृषà¥à¤  चौडाइ +page_scale_fit=पृषà¥à¤  ठिकà¥à¤• मिलà¥à¤¨à¥‡ +page_scale_auto=सà¥à¤µà¤šà¤¾à¤²à¤¿à¤¤ जà¥à¤® +page_scale_actual=वासà¥à¤¤à¤µà¤¿à¤• आकार +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading_error=यो PDF लोड गरà¥à¤¦à¤¾ à¤à¤‰à¤Ÿà¤¾ तà¥à¤°à¥à¤Ÿà¤¿ देखापरà¥â€à¤¯à¥‹à¥¤ +invalid_file_error=अवैध वा दà¥à¤·à¤¿à¤¤ PDF फाइल। +missing_file_error=हराईरहेको PDF फाइल। +unexpected_response_error=अपà¥à¤°à¤¤à¥à¤¯à¤¾à¤¶à¤¿à¤¤ सरà¥à¤­à¤° पà¥à¤°à¤¤à¤¿à¤•à¥à¤°à¤¿à¤¯à¤¾à¥¤ + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=यस PDF फाइललाई खोलà¥à¤¨ गोपà¥à¤¯à¤¶à¤¬à¥à¤¦ पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥à¥¤ +password_invalid=अवैध गोपà¥à¤¯à¤¶à¤¬à¥à¤¦à¥¤ पà¥à¤¨à¤ƒ पà¥à¤°à¤¯à¤¾à¤¸ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥à¥¤ +password_ok=ठिक छ +password_cancel=रदà¥à¤¦ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ + +printing_not_supported=चेतावनी: यो बà¥à¤°à¤¾à¤‰à¤œà¤°à¤®à¤¾ मà¥à¤¦à¥à¤°à¤£ पूरà¥à¤£à¤¤à¤¯à¤¾ समरà¥à¤¥à¤¿à¤¤ छैन। +printing_not_ready=चेतावनी: PDF मà¥à¤¦à¥à¤°à¤£à¤•à¤¾ लागि पूरà¥à¤£à¤¤à¤¯à¤¾ लोड भà¤à¤•à¥‹ छैन। +web_fonts_disabled=वेब फनà¥à¤Ÿ असकà¥à¤·à¤® छनà¥: à¤à¤®à¥à¤¬à¥‡à¤¡à¥‡à¤¡ PDF फनà¥à¤Ÿ पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨ असमरà¥à¤¥à¥¤ + diff --git a/page/static/js/web/locale/nl/viewer.properties b/page/static/js/web/locale/nl/viewer.properties new file mode 100644 index 0000000..0652576 --- /dev/null +++ b/page/static/js/web/locale/nl/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Vorige pagina +previous_label=Vorige +next.title=Volgende pagina +next_label=Volgende + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pagina +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=van {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} van {{pagesCount}}) + +zoom_out.title=Uitzoomen +zoom_out_label=Uitzoomen +zoom_in.title=Inzoomen +zoom_in_label=Inzoomen +zoom.title=Zoomen +presentation_mode.title=Wisselen naar presentatiemodus +presentation_mode_label=Presentatiemodus +open_file.title=Bestand openen +open_file_label=Openen +print.title=Afdrukken +print_label=Afdrukken +download.title=Downloaden +download_label=Downloaden +save.title=Opslaan +save_label=Opslaan +bookmark.title=Huidige weergave (kopiëren of openen in nieuw venster) +bookmark_label=Huidige weergave + +bookmark1.title=Huidige pagina (URL van huidige pagina bekijken) +bookmark1_label=Huidige pagina + +# Secondary toolbar and context menu +tools.title=Hulpmiddelen +tools_label=Hulpmiddelen +first_page.title=Naar eerste pagina gaan +first_page_label=Naar eerste pagina gaan +last_page.title=Naar laatste pagina gaan +last_page_label=Naar laatste pagina gaan +page_rotate_cw.title=Rechtsom draaien +page_rotate_cw_label=Rechtsom draaien +page_rotate_ccw.title=Linksom draaien +page_rotate_ccw_label=Linksom draaien + +cursor_text_select_tool.title=Tekstselectiehulpmiddel inschakelen +cursor_text_select_tool_label=Tekstselectiehulpmiddel +cursor_hand_tool.title=Handhulpmiddel inschakelen +cursor_hand_tool_label=Handhulpmiddel + +scroll_page.title=Paginascrollen gebruiken +scroll_page_label=Paginascrollen +scroll_vertical.title=Verticaal scrollen gebruiken +scroll_vertical_label=Verticaal scrollen +scroll_horizontal.title=Horizontaal scrollen gebruiken +scroll_horizontal_label=Horizontaal scrollen +scroll_wrapped.title=Scrollen met terugloop gebruiken +scroll_wrapped_label=Scrollen met terugloop + +spread_none.title=Dubbele pagina’s niet samenvoegen +spread_none_label=Geen dubbele pagina’s +spread_odd.title=Dubbele pagina’s samenvoegen vanaf oneven pagina’s +spread_odd_label=Oneven dubbele pagina’s +spread_even.title=Dubbele pagina’s samenvoegen vanaf even pagina’s +spread_even_label=Even dubbele pagina’s + +# Document properties dialog box +document_properties.title=Documenteigenschappen… +document_properties_label=Documenteigenschappen… +document_properties_file_name=Bestandsnaam: +document_properties_file_size=Bestandsgrootte: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Titel: +document_properties_author=Auteur: +document_properties_subject=Onderwerp: +document_properties_keywords=Sleutelwoorden: +document_properties_creation_date=Aanmaakdatum: +document_properties_modification_date=Wijzigingsdatum: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Maker: +document_properties_producer=PDF-producent: +document_properties_version=PDF-versie: +document_properties_page_count=Aantal pagina’s: +document_properties_page_size=Paginagrootte: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=staand +document_properties_page_size_orientation_landscape=liggend +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Snelle webweergave: +document_properties_linearized_yes=Ja +document_properties_linearized_no=Nee +document_properties_close=Sluiten + +print_progress_message=Document voorbereiden voor afdrukken… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Annuleren + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Zijbalk in-/uitschakelen +toggle_sidebar_notification2.title=Zijbalk in-/uitschakelen (document bevat overzicht/bijlagen/lagen) +toggle_sidebar_label=Zijbalk in-/uitschakelen +document_outline.title=Documentoverzicht tonen (dubbelklik om alle items uit/samen te vouwen) +document_outline_label=Documentoverzicht +attachments.title=Bijlagen tonen +attachments_label=Bijlagen +layers.title=Lagen tonen (dubbelklik om alle lagen naar de standaardstatus terug te zetten) +layers_label=Lagen +thumbs.title=Miniaturen tonen +thumbs_label=Miniaturen +current_outline_item.title=Huidig item in inhoudsopgave zoeken +current_outline_item_label=Huidig item in inhoudsopgave +findbar.title=Zoeken in document +findbar_label=Zoeken + +additional_layers=Aanvullende lagen +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Pagina {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pagina {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatuur van pagina {{page}} + +# Find panel button title and messages +find_input.title=Zoeken +find_input.placeholder=Zoeken in document… +find_previous.title=De vorige overeenkomst van de tekst zoeken +find_previous_label=Vorige +find_next.title=De volgende overeenkomst van de tekst zoeken +find_next_label=Volgende +find_highlight=Alles markeren +find_match_case_label=Hoofdlettergevoelig +find_match_diacritics_label=Diakritische tekens gebruiken +find_entire_word_label=Hele woorden +find_reached_top=Bovenkant van document bereikt, doorgegaan vanaf onderkant +find_reached_bottom=Onderkant van document bereikt, doorgegaan vanaf bovenkant +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} van {{total}} overeenkomst +find_match_count[two]={{current}} van {{total}} overeenkomsten +find_match_count[few]={{current}} van {{total}} overeenkomsten +find_match_count[many]={{current}} van {{total}} overeenkomsten +find_match_count[other]={{current}} van {{total}} overeenkomsten +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Meer dan {{limit}} overeenkomsten +find_match_count_limit[one]=Meer dan {{limit}} overeenkomst +find_match_count_limit[two]=Meer dan {{limit}} overeenkomsten +find_match_count_limit[few]=Meer dan {{limit}} overeenkomsten +find_match_count_limit[many]=Meer dan {{limit}} overeenkomsten +find_match_count_limit[other]=Meer dan {{limit}} overeenkomsten +find_not_found=Tekst niet gevonden + +# Error panel labels +error_more_info=Meer informatie +error_less_info=Minder informatie +error_close=Sluiten +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Bericht: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Bestand: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Regel: {{line}} + +# Predefined zoom values +page_scale_width=Paginabreedte +page_scale_fit=Hele pagina +page_scale_auto=Automatisch zoomen +page_scale_actual=Werkelijke grootte +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Laden… +loading_error=Er is een fout opgetreden bij het laden van de PDF. +invalid_file_error=Ongeldig of beschadigd PDF-bestand. +missing_file_error=PDF-bestand ontbreekt. +unexpected_response_error=Onverwacht serverantwoord. + +rendering_error=Er is een fout opgetreden bij het weergeven van de pagina. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}}-aantekening] +password_label=Voer het wachtwoord in om dit PDF-bestand te openen. +password_invalid=Ongeldig wachtwoord. Probeer het opnieuw. +password_ok=OK +password_cancel=Annuleren + +printing_not_supported=Waarschuwing: afdrukken wordt niet volledig ondersteund door deze browser. +printing_not_ready=Waarschuwing: de PDF is niet volledig geladen voor afdrukken. +web_fonts_disabled=Weblettertypen zijn uitgeschakeld: gebruik van ingebedde PDF-lettertypen is niet mogelijk. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=Tekenen +editor_ink2_label=Tekenen + +free_text2_default_content=Begin met typen… + +# Editor Parameters +editor_free_text_color=Kleur +editor_free_text_size=Grootte +editor_ink_color=Kleur +editor_ink_thickness=Dikte +editor_ink_opacity=Opaciteit + +# Editor aria +editor_free_text2_aria_label=Tekstbewerker +editor_ink2_aria_label=Tekeningbewerker +editor_ink_canvas_aria_label=Door gebruiker gemaakte afbeelding diff --git a/page/static/js/web/locale/nn-NO/viewer.properties b/page/static/js/web/locale/nn-NO/viewer.properties new file mode 100644 index 0000000..af70d57 --- /dev/null +++ b/page/static/js/web/locale/nn-NO/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=FøregÃ¥ande side +previous_label=FøregÃ¥ande +next.title=Neste side +next_label=Neste + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Side +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=av {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} av {{pagesCount}}) + +zoom_out.title=Zoom ut +zoom_out_label=Zoom ut +zoom_in.title=Zoom inn +zoom_in_label=Zoom inn +zoom.title=Zoom +presentation_mode.title=Byt til presentasjonsmodus +presentation_mode_label=Presentasjonsmodus +open_file.title=Opne fil +open_file_label=Opne +print.title=Skriv ut +print_label=Skriv ut +download.title=Last ned +download_label=Last ned +save.title=Lagre +save_label=Lagre +bookmark.title=Gjeldande vising (kopier eller opne i nytt vindauge) +bookmark_label=Gjeldande vising + +bookmark1.title=Gjeldande side (sjÃ¥ URL frÃ¥ gjeldande side) +bookmark1_label=Gjeldande side + +# Secondary toolbar and context menu +tools.title=Verktøy +tools_label=Verktøy +first_page.title=GÃ¥ til første side +first_page_label=GÃ¥ til første side +last_page.title=GÃ¥ til siste side +last_page_label=GÃ¥ til siste side +page_rotate_cw.title=Roter med klokka +page_rotate_cw_label=Roter med klokka +page_rotate_ccw.title=Roter mot klokka +page_rotate_ccw_label=Roter mot klokka + +cursor_text_select_tool.title=Aktiver tekstmarkeringsverktøy +cursor_text_select_tool_label=Tekstmarkeringsverktøy +cursor_hand_tool.title=Aktiver handverktøy +cursor_hand_tool_label=Handverktøy + +scroll_page.title=Bruk siderulling +scroll_page_label=Siderulling +scroll_vertical.title=Bruk vertikal rulling +scroll_vertical_label=Vertikal rulling +scroll_horizontal.title=Bruk horisontal rulling +scroll_horizontal_label=Horisontal rulling +scroll_wrapped.title=Bruk fleirsiderulling +scroll_wrapped_label=Fleirsiderulling + +spread_none.title=Vis enkeltsider +spread_none_label=Enkeltside +spread_odd.title=Vis oppslag med ulike sidenummer til venstre +spread_odd_label=Oppslag med framside +spread_even.title=Vis oppslag med like sidenummmer til venstre +spread_even_label=Oppslag utan framside + +# Document properties dialog box +document_properties.title=Dokumenteigenskapar… +document_properties_label=Dokumenteigenskapar… +document_properties_file_name=Filnamn: +document_properties_file_size=Filstorleik: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Tittel: +document_properties_author=Forfattar: +document_properties_subject=Emne: +document_properties_keywords=Stikkord: +document_properties_creation_date=Dato oppretta: +document_properties_modification_date=Dato endra: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Oppretta av: +document_properties_producer=PDF-verktøy: +document_properties_version=PDF-versjon: +document_properties_page_count=Sidetal: +document_properties_page_size=Sidestørrelse: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=stÃ¥ande +document_properties_page_size_orientation_landscape=liggande +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Brev +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Rask nettvising: +document_properties_linearized_yes=Ja +document_properties_linearized_no=Nei +document_properties_close=Lat att + +print_progress_message=Førebur dokumentet for utskrift… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Avbryt + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=SlÃ¥ av/pÃ¥ sidestolpe +toggle_sidebar_notification2.title=Vis/gøym sidestolpe (dokumentet inneheld oversikt/vedlegg/lag) +toggle_sidebar_label=SlÃ¥ av/pÃ¥ sidestolpe +document_outline.title=Vis dokumentdisposisjonen (dobbelklikk for Ã¥ utvide/gøyme alle elementa) +document_outline_label=Dokumentdisposisjon +attachments.title=Vis vedlegg +attachments_label=Vedlegg +layers.title=Vis lag (dobbeltklikk for Ã¥ tilbakestille alle lag til standardtilstand) +layers_label=Lag +thumbs.title=Vis miniatyrbilde +thumbs_label=Miniatyrbilde +current_outline_item.title=Finn gjeldande disposisjonselement +current_outline_item_label=Gjeldande disposisjonselement +findbar.title=Finn i dokumentet +findbar_label=Finn + +additional_layers=Ytterlegare lag +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Side {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Side {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatyrbilde av side {{page}} + +# Find panel button title and messages +find_input.title=Søk +find_input.placeholder=Søk i dokument… +find_previous.title=Finn førre førekomst av frasen +find_previous_label=Førre +find_next.title=Finn neste førekomst av frasen +find_next_label=Neste +find_highlight=Uthev alle +find_match_case_label=Skil store/smÃ¥ bokstavar +find_match_diacritics_label=Samsvar diakritiske teikn +find_entire_word_label=Heile ord +find_reached_top=NÃ¥dde toppen av dokumentet, fortset frÃ¥ botnen +find_reached_bottom=NÃ¥dde botnen av dokumentet, fortset frÃ¥ toppen +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} av {{total}} treff +find_match_count[two]={{current}} av {{total}} treff +find_match_count[few]={{current}} av {{total}} treff +find_match_count[many]={{current}} av {{total}} treff +find_match_count[other]={{current}} av {{total}} treff +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Meir enn {{limit}} treff +find_match_count_limit[one]=Meir enn {{limit}} treff +find_match_count_limit[two]=Meir enn {{limit}} treff +find_match_count_limit[few]=Meir enn {{limit}} treff +find_match_count_limit[many]=Meir enn {{limit}} treff +find_match_count_limit[other]=Meir enn {{limit}} treff +find_not_found=Fann ikkje teksten + +# Error panel labels +error_more_info=Meir info +error_less_info=Mindre info +error_close=Lat att +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (bygg: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Melding: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stakk: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fil: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linje: {{line}} + +# Predefined zoom values +page_scale_width=Sidebreidde +page_scale_fit=Tilpass til sida +page_scale_auto=Automatisk skalering +page_scale_actual=Verkeleg storleik +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Lastar… +loading_error=Ein feil oppstod ved lasting av PDF. +invalid_file_error=Ugyldig eller korrupt PDF-fil. +missing_file_error=Manglande PDF-fil. +unexpected_response_error=Uventa tenarrespons. + +rendering_error=Ein feil oppstod under vising av sida. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}} {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} annotasjon] +password_label=Skriv inn passordet for Ã¥ opne denne PDF-fila. +password_invalid=Ugyldig passord. Prøv igjen. +password_ok=OK +password_cancel=Avbryt + +printing_not_supported=Ã…tvaring: Utskrift er ikkje fullstendig støtta av denne nettlesaren. +printing_not_ready=Ã…tvaring: PDF ikkje fullstendig innlasta for utskrift. +web_fonts_disabled=Web-skrifter er slÃ¥tt av: Kan ikkje bruke innbundne PDF-skrifter. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=Teikne +editor_ink2_label=Teikne + +free_text2_default_content=Byrje Ã¥ skrive… + +# Editor Parameters +editor_free_text_color=Farge +editor_free_text_size=Storleik +editor_ink_color=Farge +editor_ink_thickness=Tjukkleik +editor_ink_opacity=Ugjennomskinleg + +# Editor aria +editor_free_text2_aria_label=Tekstredigering +editor_ink2_aria_label=Teikneredigering +editor_ink_canvas_aria_label=Brukarskapt bilde diff --git a/page/static/js/web/locale/oc/viewer.properties b/page/static/js/web/locale/oc/viewer.properties new file mode 100644 index 0000000..a5b5489 --- /dev/null +++ b/page/static/js/web/locale/oc/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pagina precedenta +previous_label=Precedent +next.title=Pagina seguenta +next_label=Seguent + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pagina +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=sus {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Zoom arrièr +zoom_out_label=Zoom arrièr +zoom_in.title=Zoom avant +zoom_in_label=Zoom avant +zoom.title=Zoom +presentation_mode.title=Bascular en mòde presentacion +presentation_mode_label=Mòde Presentacion +open_file.title=Dobrir lo fichièr +open_file_label=Dobrir +print.title=Imprimir +print_label=Imprimir +download.title=Telecargar +download_label=Telecargar +save.title=Enregistrar +save_label=Enregistrar +bookmark.title=Afichatge corrent (copiar o dobrir dins una fenèstra novèla) +bookmark_label=Afichatge actual + +bookmark1.title=Pagina actuala (mostrar l’adreça de la pagina actuala) +bookmark1_label=Pagina actuala + +# Secondary toolbar and context menu +tools.title=Aisinas +tools_label=Aisinas +first_page.title=Anar a la primièra pagina +first_page_label=Anar a la primièra pagina +last_page.title=Anar a la darrièra pagina +last_page_label=Anar a la darrièra pagina +page_rotate_cw.title=Rotacion orària +page_rotate_cw_label=Rotacion orària +page_rotate_ccw.title=Rotacion antiorària +page_rotate_ccw_label=Rotacion antiorària + +cursor_text_select_tool.title=Activar l'aisina de seleccion de tèxte +cursor_text_select_tool_label=Aisina de seleccion de tèxte +cursor_hand_tool.title=Activar l’aisina man +cursor_hand_tool_label=Aisina man + +scroll_page.title=Activar lo defilament per pagina +scroll_page_label=Defilament per pagina +scroll_vertical.title=Utilizar lo defilament vertical +scroll_vertical_label=Defilament vertical +scroll_horizontal.title=Utilizar lo defilament orizontal +scroll_horizontal_label=Defilament orizontal +scroll_wrapped.title=Activar lo defilament continú +scroll_wrapped_label=Defilament continú + +spread_none.title=Agropar pas las paginas doas a doas +spread_none_label=Una sola pagina +spread_odd.title=Mostrar doas paginas en començant per las paginas imparas a esquèrra +spread_odd_label=Dobla pagina, impara a drecha +spread_even.title=Mostrar doas paginas en començant per las paginas paras a esquèrra +spread_even_label=Dobla pagina, para a drecha + +# Document properties dialog box +document_properties.title=Proprietats del document… +document_properties_label=Proprietats del document… +document_properties_file_name=Nom del fichièr : +document_properties_file_size=Talha del fichièr : +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} Ko ({{size_b}} octets) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} Mo ({{size_b}} octets) +document_properties_title=Títol : +document_properties_author=Autor : +document_properties_subject=Subjècte : +document_properties_keywords=Mots claus : +document_properties_creation_date=Data de creacion : +document_properties_modification_date=Data de modificacion : +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, a {{time}} +document_properties_creator=Creator : +document_properties_producer=Aisina de conversion PDF : +document_properties_version=Version PDF : +document_properties_page_count=Nombre de paginas : +document_properties_page_size=Talha de la pagina : +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=retrach +document_properties_page_size_orientation_landscape=païsatge +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letra +document_properties_page_size_name_legal=Document juridic +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista web rapida : +document_properties_linearized_yes=Ã’c +document_properties_linearized_no=Non +document_properties_close=Tampar + +print_progress_message=Preparacion del document per l’impression… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Anullar + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Afichar/amagar lo panèl lateral +toggle_sidebar_notification2.title=Afichar/amagar lo panèl lateral (lo document conten esquèmas/pèças juntas/calques) +toggle_sidebar_label=Afichar/amagar lo panèl lateral +document_outline.title=Mostrar los esquèmas del document (dobleclicar per espandre/reduire totes los elements) +document_outline_label=Marcapaginas del document +attachments.title=Visualizar las pèças juntas +attachments_label=Pèças juntas +layers.title=Afichar los calques (doble-clicar per reïnicializar totes los calques a l’estat per defaut) +layers_label=Calques +thumbs.title=Afichar las vinhetas +thumbs_label=Vinhetas +current_outline_item.title=Trobar l’element de plan actual +current_outline_item_label=Element de plan actual +findbar.title=Cercar dins lo document +findbar_label=Recercar + +additional_layers=Calques suplementaris +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Pagina {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pagina {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Vinheta de la pagina {{page}} + +# Find panel button title and messages +find_input.title=Recercar +find_input.placeholder=Cercar dins lo document… +find_previous.title=Tròba l'ocurréncia precedenta de la frasa +find_previous_label=Precedent +find_next.title=Tròba l'ocurréncia venenta de la frasa +find_next_label=Seguent +find_highlight=Suslinhar tot +find_match_case_label=Respectar la cassa +find_match_diacritics_label=Respectar los diacritics +find_entire_word_label=Mots entièrs +find_reached_top=Naut de la pagina atenh, perseguida del bas +find_reached_bottom=Bas de la pagina atench, perseguida al començament +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]=Ocuréncia {{current}} sus {{total}} +find_match_count[two]=Ocuréncia {{current}} sus {{total}} +find_match_count[few]=Ocuréncia {{current}} sus {{total}} +find_match_count[many]=Ocuréncia {{current}} sus {{total}} +find_match_count[other]=Ocuréncia {{current}} sus {{total}} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Mai de {{limit}} ocuréncias +find_match_count_limit[one]=Mai de {{limit}} ocuréncia +find_match_count_limit[two]=Mai de {{limit}} ocuréncias +find_match_count_limit[few]=Mai de {{limit}} ocuréncias +find_match_count_limit[many]=Mai de {{limit}} ocuréncias +find_match_count_limit[other]=Mai de {{limit}} ocuréncias +find_not_found=Frasa pas trobada + +# Error panel labels +error_more_info=Mai de detalhs +error_less_info=Mens d'informacions +error_close=Tampar +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (identificant de compilacion : {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Messatge : {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pila : {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fichièr : {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linha : {{line}} + +# Predefined zoom values +page_scale_width=Largor plena +page_scale_fit=Pagina entièra +page_scale_auto=Zoom automatic +page_scale_actual=Talha vertadièra +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Cargament… +loading_error=Una error s'es producha pendent lo cargament del fichièr PDF. +invalid_file_error=Fichièr PDF invalid o corromput. +missing_file_error=Fichièr PDF mancant. +unexpected_response_error=Responsa de servidor imprevista. + +rendering_error=Una error s'es producha pendent l'afichatge de la pagina. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}} a {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotacion {{type}}] +password_label=Picatz lo senhal per dobrir aqueste fichièr PDF. +password_invalid=Senhal incorrècte. Tornatz ensajar. +password_ok=D'acòrdi +password_cancel=Anullar + +printing_not_supported=Atencion : l'impression es pas complètament gerida per aqueste navegador. +printing_not_ready=Atencion : lo PDF es pas entièrament cargat per lo poder imprimir. +web_fonts_disabled=Las polissas web son desactivadas : impossible d'utilizar las polissas integradas al PDF. + +# Editor +editor_free_text2.title=Tèxte +editor_free_text2_label=Tèxte +editor_ink2.title=Dessenhar +editor_ink2_label=Dessenhar + +free_text2_default_content=Començatz d’escriure… + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Talha +editor_ink_color=Color +editor_ink_thickness=Espessor +editor_ink_opacity=Opacitat + +# Editor aria +editor_free_text2_aria_label=Editor de tèxte +editor_ink2_aria_label=Editor de dessenh +editor_ink_canvas_aria_label=Imatge creat per l’utilizaire diff --git a/page/static/js/web/locale/pa-IN/viewer.properties b/page/static/js/web/locale/pa-IN/viewer.properties new file mode 100644 index 0000000..0549261 --- /dev/null +++ b/page/static/js/web/locale/pa-IN/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=ਪਿਛਲਾ ਸਫ਼ਾ +previous_label=ਪਿੱਛੇ +next.title=ਅਗਲਾ ਸਫ਼ਾ +next_label=ਅੱਗੇ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=ਸਫ਼ਾ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} ਵਿੱਚੋਂ +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages={{pagesCount}}) ਵਿੱਚੋਂ ({{pageNumber}} + +zoom_out.title=ਜ਼ੂਮ ਆਉਟ +zoom_out_label=ਜ਼ੂਮ ਆਉਟ +zoom_in.title=ਜ਼ੂਮ ਇਨ +zoom_in_label=ਜ਼ੂਮ ਇਨ +zoom.title=ਜ਼ੂਨ +presentation_mode.title=ਪਰਿਜੈਂਟੇਸ਼ਨ ਮੋਡ ਵਿੱਚ ਜਾਓ +presentation_mode_label=ਪਰਿਜੈਂਟੇਸ਼ਨ ਮੋਡ +open_file.title=ਫਾਈਲ ਨੂੰ ਖੋਲà©à¨¹à©‹ +open_file_label=ਖੋਲà©à¨¹à©‹ +print.title=ਪਰਿੰਟ +print_label=ਪਰਿੰਟ +download.title=ਡਾਊਨਲੋਡ +download_label=ਡਾਊਨਲੋਡ +save.title=ਸੰਭਾਲੋ +save_label=ਸੰਭਾਲੋ +bookmark.title=ਮੌਜੂਦਾ à¨à¨²à¨• (ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਕਾਪੀ ਕਰੋ ਜਾਂ ਖੋਲà©à¨¹à©‹) +bookmark_label=ਮੌਜੂਦਾ à¨à¨²à¨• + +bookmark1.title=ਮੌਜੂਦਾ ਸਫ਼਼ਾ (ਮੌਜੂਦਾ ਸਫ਼ੇ ਤੋਂ URL ਵੇਖੋ) +bookmark1_label=ਮੌਜੂਦਾ ਸਫ਼਼ਾ + +# Secondary toolbar and context menu +tools.title=ਟੂਲ +tools_label=ਟੂਲ +first_page.title=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ +first_page_label=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ +last_page.title=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ +last_page_label=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ +page_rotate_cw.title=ਸੱਜੇ ਦਾਅ ਘà©à©°à¨®à¨¾à¨“ +page_rotate_cw_label=ਸੱਜੇ ਦਾਅ ਘà©à©°à¨®à¨¾à¨“ +page_rotate_ccw.title=ਖੱਬੇ ਦਾਅ ਘà©à©°à¨®à¨¾à¨“ +page_rotate_ccw_label=ਖੱਬੇ ਦਾਅ ਘà©à©°à¨®à¨¾à¨“ + +cursor_text_select_tool.title=ਲਿਖਤ ਚੋਣ ਟੂਲ ਸਮਰੱਥ ਕਰੋ +cursor_text_select_tool_label=ਲਿਖਤ ਚੋਣ ਟੂਲ +cursor_hand_tool.title=ਹੱਥ ਟੂਲ ਸਮਰੱਥ ਕਰੋ +cursor_hand_tool_label=ਹੱਥ ਟੂਲ + +scroll_page.title=ਸਫ਼ਾ ਖਿਸਕਾਉਣ ਨੂੰ ਵਰਤੋਂ +scroll_page_label=ਸਫ਼ਾ ਖਿਸਕਾਉਣਾ +scroll_vertical.title=ਖੜà©à¨¹à¨µà©‡à¨‚ ਸਕਰਾਉਣ ਨੂੰ ਵਰਤੋਂ +scroll_vertical_label=ਖੜà©à¨¹à¨µà¨¾à¨‚ ਸਰਕਾਉਣਾ +scroll_horizontal.title=ਲੇਟਵੇਂ ਸਰਕਾਉਣ ਨੂੰ ਵਰਤੋਂ +scroll_horizontal_label=ਲੇਟਵਾਂ ਸਰਕਾਉਣਾ +scroll_wrapped.title=ਸਮੇਟੇ ਸਰਕਾਉਣ ਨੂੰ ਵਰਤੋਂ +scroll_wrapped_label=ਸਮੇਟਿਆ ਸਰਕਾਉਣਾ + +spread_none.title=ਸਫ਼ਾ ਫੈਲਾਅ ਵਿੱਚ ਸ਼ਾਮਲ ਨਾ ਹੋਵੋ +spread_none_label=ਕੋਈ ਫੈਲਾਅ ਨਹੀਂ +spread_odd.title=ਟਾਂਕ ਅੰਕ ਵਾਲੇ ਸਫ਼ਿਆਂ ਨਾਲ ਸ਼à©à¨°à©‚ ਹੋਣ ਵਾਲੇ ਸਫਿਆਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ +spread_odd_label=ਟਾਂਕ ਫੈਲਾਅ +spread_even.title=ਜਿਸਤ ਅੰਕ ਵਾਲੇ ਸਫ਼ਿਆਂ ਨਾਲ ਸ਼à©à¨°à©‚ ਹੋਣ ਵਾਲੇ ਸਫਿਆਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ +spread_even_label=ਜਿਸਤ ਫੈਲਾਅ + +# Document properties dialog box +document_properties.title=…ਦਸਤਾਵੇਜ਼ ਦੀ ਵਿਸ਼ੇਸ਼ਤਾ +document_properties_label=…ਦਸਤਾਵੇਜ਼ ਦੀ ਵਿਸ਼ੇਸ਼ਤਾ +document_properties_file_name=ਫਾਈਲ ਦਾ ਨਾਂ: +document_properties_file_size=ਫਾਈਲ ਦਾ ਆਕਾਰ: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} ਬਾਈਟ) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} ਬਾਈਟ) +document_properties_title=ਟਾਈਟਲ: +document_properties_author=ਲੇਖਕ: +document_properties_subject=ਵਿਸ਼ਾ: +document_properties_keywords=ਸ਼ਬਦ: +document_properties_creation_date=ਬਣਾਉਣ ਦੀ ਮਿਤੀ: +document_properties_modification_date=ਸੋਧ ਦੀ ਮਿਤੀ: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=ਨਿਰਮਾਤਾ: +document_properties_producer=PDF ਪà©à¨°à©‹à¨¡à¨¿à¨Šà¨¸à¨°: +document_properties_version=PDF ਵਰਜਨ: +document_properties_page_count=ਸਫ਼ੇ ਦੀ ਗਿਣਤੀ: +document_properties_page_size=ਸਫ਼ਾ ਆਕਾਰ: +document_properties_page_size_unit_inches=ਇੰਚ +document_properties_page_size_unit_millimeters=ਮਿਮੀ +document_properties_page_size_orientation_portrait=ਪੋਰਟਰੇਟ +document_properties_page_size_orientation_landscape=ਲੈਂਡਸਕੇਪ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=ਲੈਟਰ +document_properties_page_size_name_legal=ਕਨੂੰਨੀ +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=ਤੇਜ਼ ਵੈੱਬ à¨à¨²à¨•: +document_properties_linearized_yes=ਹਾਂ +document_properties_linearized_no=ਨਹੀਂ +document_properties_close=ਬੰਦ ਕਰੋ + +print_progress_message=…ਪਰਿੰਟ ਕਰਨ ਲਈ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਤਿਆਰ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=ਰੱਦ ਕਰੋ + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=ਬਾਹੀ ਬਦਲੋ +toggle_sidebar_notification2.title=ਬਾਹੀ ਨੂੰ ਬਦਲੋ (ਦਸਤਾਵੇਜ਼ ਖਾਕਾ/ਅਟੈਚਮੈਂਟ/ਪਰਤਾਂ ਰੱਖਦਾ ਹੈ) +toggle_sidebar_label=ਬਾਹੀ ਬਦਲੋ +document_outline.title=ਦਸਤਾਵੇਜ਼ ਖਾਕਾ ਦਿਖਾਓ (ਸਾਰੀਆਂ ਆਈਟਮਾਂ ਨੂੰ ਫੈਲਾਉਣ/ਸਮੇਟਣ ਲਈ ਦੋ ਵਾਰ ਕਲਿੱਕ ਕਰੋ) +document_outline_label=ਦਸਤਾਵੇਜ਼ ਖਾਕਾ +attachments.title=ਅਟੈਚਮੈਂਟ ਵੇਖਾਓ +attachments_label=ਅਟੈਚਮੈਂਟਾਂ +layers.title=ਪਰਤਾਂ ਵੇਖਾਓ (ਸਾਰੀਆਂ ਪਰਤਾਂ ਨੂੰ ਮੂਲ ਹਾਲਤ ਉੱਤੇ ਮà©à©œ-ਸੈੱਟ ਕਰਨ ਲਈ ਦੋ ਵਾਰ ਕਲਿੱਕ ਕਰੋ) +layers_label=ਪਰਤਾਂ +thumbs.title=ਥੰਮਨੇਲ ਨੂੰ ਵੇਖਾਓ +thumbs_label=ਥੰਮਨੇਲ +current_outline_item.title=ਮੌੌਜੂਦਾ ਖਾਕਾ ਚੀਜ਼ ਲੱਭੋ +current_outline_item_label=ਮੌਜੂਦਾ ਖਾਕਾ ਚੀਜ਼ +findbar.title=ਦਸਤਾਵੇਜ਼ ਵਿੱਚ ਲੱਭੋ +findbar_label=ਲੱਭੋ + +additional_layers=ਵਾਧੂ ਪਰਤਾਂ +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=ਸਫ਼ਾ {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=ਸਫ਼ਾ {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}} ਸਫ਼ੇ ਦਾ ਥੰਮਨੇਲ + +# Find panel button title and messages +find_input.title=ਲੱਭੋ +find_input.placeholder=…ਦਸਤਾਵੇਜ਼ 'ਚ ਲੱਭੋ +find_previous.title=ਵਾਕ ਦੀ ਪਿਛਲੀ ਮੌਜੂਦਗੀ ਲੱਭੋ +find_previous_label=ਪਿੱਛੇ +find_next.title=ਵਾਕ ਦੀ ਅਗਲੀ ਮੌਜੂਦਗੀ ਲੱਭੋ +find_next_label=ਅੱਗੇ +find_highlight=ਸਭ ਉਭਾਰੋ +find_match_case_label=ਅੱਖਰ ਆਕਾਰ ਨੂੰ ਮਿਲਾਉ +find_match_diacritics_label=ਭੇਦਸੂਚਕ ਮੇਲ +find_entire_word_label=ਪੂਰੇ ਸ਼ਬਦ +find_reached_top=ਦਸਤਾਵੇਜ਼ ਦੇ ਉੱਤੇ ਆ ਗਠਹਾਂ, ਥੱਲੇ ਤੋਂ ਜਾਰੀ ਰੱਖਿਆ ਹੈ +find_reached_bottom=ਦਸਤਾਵੇਜ਼ ਦੇ ਅੰਤ ਉੱਤੇ ਆ ਗਠਹਾਂ, ਉੱਤੇ ਤੋਂ ਜਾਰੀ ਰੱਖਿਆ ਹੈ +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{total}} ਵਿੱਚੋਂ {{current}} ਮੇਲ +find_match_count[two]={{total}} ਵਿੱਚੋਂ {{current}} ਮੇਲ +find_match_count[few]={{total}} ਵਿੱਚੋਂ {{current}} ਮੇਲ +find_match_count[many]={{total}} ਵਿੱਚੋਂ {{current}} ਮੇਲ +find_match_count[other]={{total}} ਵਿੱਚੋਂ {{current}} ਮੇਲ +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]={{limit}} ਮੇਲਾਂ ਤੋਂ ਵੱਧ +find_match_count_limit[one]={{limit}} ਮੇਲ ਤੋਂ ਵੱਧ +find_match_count_limit[two]={{limit}} ਮੇਲਾਂ ਤੋਂ ਵੱਧ +find_match_count_limit[few]={{limit}} ਮੇਲਾਂ ਤੋਂ ਵੱਧ +find_match_count_limit[many]={{limit}} ਮੇਲਾਂ ਤੋਂ ਵੱਧ +find_match_count_limit[other]={{limit}} ਮੇਲਾਂ ਤੋਂ ਵੱਧ +find_not_found=ਵਾਕ ਨਹੀਂ ਲੱਭਿਆ + +# Error panel labels +error_more_info=ਹੋਰ ਜਾਣਕਾਰੀ +error_less_info=ਘੱਟ ਜਾਣਕਾਰੀ +error_close=ਬੰਦ ਕਰੋ +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (ਬਿਲਡ: {{build}} +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=ਸà©à¨¨à©‡à¨¹à¨¾: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=ਸਟੈਕ: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=ਫਾਈਲ: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=ਲਾਈਨ: {{line}} + +# Predefined zoom values +page_scale_width=ਸਫ਼ੇ ਦੀ ਚੌੜਾਈ +page_scale_fit=ਸਫ਼ਾ ਫਿੱਟ +page_scale_auto=ਆਟੋਮੈਟਿਕ ਜ਼ੂਮ ਕਰੋ +page_scale_actual=ਆਟੋਮੈਟਿਕ ਆਕਾਰ +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=…ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ +loading_error=PDF ਲੋਡ ਕਰਨ ਦੇ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ। +invalid_file_error=ਗਲਤ ਜਾਂ ਨਿਕਾਰਾ PDF ਫਾਈਲ ਹੈ। +missing_file_error=ਨਾ-ਮੌਜੂਦ PDF ਫਾਈਲ। +unexpected_response_error=ਅਣਜਾਣ ਸਰਵਰ ਜਵਾਬ। + +rendering_error=ਸਫ਼ਾ ਰੈਡਰ ਕਰਨ ਦੇ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ। + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} ਵਿਆਖਿਆ] +password_label=ਇਹ PDF ਫਾਈਲ ਨੂੰ ਖੋਲà©à¨¹à¨£ ਲਈ ਪਾਸਵਰਡ ਦਿਉ। +password_invalid=ਗਲਤ ਪਾਸਵਰਡ। ਫੇਰ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ। +password_ok=ਠੀਕ ਹੈ +password_cancel=ਰੱਦ ਕਰੋ + +printing_not_supported=ਸਾਵਧਾਨ: ਇਹ ਬਰਾਊਜ਼ਰ ਪਰਿੰਟ ਕਰਨ ਲਈ ਪੂਰੀ ਤਰà©à¨¹à¨¾à¨‚ ਸਹਾਇਕ ਨਹੀਂ ਹੈ। +printing_not_ready=ਸਾਵਧਾਨ: PDF ਨੂੰ ਪਰਿੰਟ ਕਰਨ ਲਈ ਪੂਰੀ ਤਰà©à¨¹à¨¾à¨‚ ਲੋਡ ਨਹੀਂ ਹੈ। +web_fonts_disabled=ਵੈਬ ਫੋਂਟ ਬੰਦ ਹਨ: ਇੰਬੈਡ PDF ਫੋਂਟ ਨੂੰ ਵਰਤਣ ਲਈ ਅਸਮਰੱਥ ਹੈ। + +# Editor +editor_free_text2.title=ਲਿਖਤ +editor_free_text2_label=ਲਿਖਤ +editor_ink2.title=ਵਾਹੋ +editor_ink2_label=ਵਾਹੋ + +free_text2_default_content=…ਲਿਖਣਾ ਸ਼à©à¨°à©‚ ਕਰੋ + +# Editor Parameters +editor_free_text_color=ਰੰਗ +editor_free_text_size=ਆਕਾਰ +editor_ink_color=ਰੰਗ +editor_ink_thickness=ਮੋਟਾਈ +editor_ink_opacity=ਧà©à©°à¨¦à¨²à¨¾à¨ªà¨¨ + +# Editor aria +editor_free_text2_aria_label=ਲਿਖਤ à¨à¨¡à©€à¨Ÿà¨° +editor_ink2_aria_label=ਵਹਾਉਣ à¨à¨¡à©€à¨Ÿà¨° +editor_ink_canvas_aria_label=ਵਰਤੋਂਕਾਰ ਵਲੋਂ ਬਣਾਇਆ ਚਿੱਤਰ diff --git a/page/static/js/web/locale/pl/viewer.properties b/page/static/js/web/locale/pl/viewer.properties new file mode 100644 index 0000000..dc1531d --- /dev/null +++ b/page/static/js/web/locale/pl/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Poprzednia strona +previous_label=Poprzednia +next.title=NastÄ™pna strona +next_label=NastÄ™pna + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Strona +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=z {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} z {{pagesCount}}) + +zoom_out.title=Pomniejsz +zoom_out_label=Pomniejsz +zoom_in.title=PowiÄ™ksz +zoom_in_label=PowiÄ™ksz +zoom.title=Skala +presentation_mode.title=PrzeÅ‚Ä…cz na tryb prezentacji +presentation_mode_label=Tryb prezentacji +open_file.title=Otwórz plik +open_file_label=Otwórz +print.title=Drukuj +print_label=Drukuj +download.title=Pobierz +download_label=Pobierz +save.title=Zapisz +save_label=Zapisz +bookmark.title=Bieżąca pozycja (skopiuj lub otwórz jako odnoÅ›nik w nowym oknie) +bookmark_label=Bieżąca pozycja + +bookmark1.title=Bieżąca strona (adres do otwarcia na bieżącej stronie) +bookmark1_label=Bieżąca strona + +# Secondary toolbar and context menu +tools.title=NarzÄ™dzia +tools_label=NarzÄ™dzia +first_page.title=Przejdź do pierwszej strony +first_page_label=Przejdź do pierwszej strony +last_page.title=Przejdź do ostatniej strony +last_page_label=Przejdź do ostatniej strony +page_rotate_cw.title=Obróć zgodnie z ruchem wskazówek zegara +page_rotate_cw_label=Obróć zgodnie z ruchem wskazówek zegara +page_rotate_ccw.title=Obróć przeciwnie do ruchu wskazówek zegara +page_rotate_ccw_label=Obróć przeciwnie do ruchu wskazówek zegara + +cursor_text_select_tool.title=WÅ‚Ä…cz narzÄ™dzie zaznaczania tekstu +cursor_text_select_tool_label=NarzÄ™dzie zaznaczania tekstu +cursor_hand_tool.title=WÅ‚Ä…cz narzÄ™dzie rÄ…czka +cursor_hand_tool_label=NarzÄ™dzie rÄ…czka + +scroll_page.title=Przewijaj strony +scroll_page_label=Przewijanie stron +scroll_vertical.title=Przewijaj dokument w pionie +scroll_vertical_label=Przewijanie pionowe +scroll_horizontal.title=Przewijaj dokument w poziomie +scroll_horizontal_label=Przewijanie poziome +scroll_wrapped.title=Strony dokumentu wyÅ›wietlaj i przewijaj w kolumnach +scroll_wrapped_label=Widok dwóch stron + +spread_none.title=Nie ustawiaj stron obok siebie +spread_none_label=Brak kolumn +spread_odd.title=Strony nieparzyste ustawiaj na lewo od parzystych +spread_odd_label=Nieparzyste po lewej +spread_even.title=Strony parzyste ustawiaj na lewo od nieparzystych +spread_even_label=Parzyste po lewej + +# Document properties dialog box +document_properties.title=WÅ‚aÅ›ciwoÅ›ci dokumentu… +document_properties_label=WÅ‚aÅ›ciwoÅ›ci dokumentu… +document_properties_file_name=Nazwa pliku: +document_properties_file_size=Rozmiar pliku: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} B) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} B) +document_properties_title=TytuÅ‚: +document_properties_author=Autor: +document_properties_subject=Temat: +document_properties_keywords=SÅ‚owa kluczowe: +document_properties_creation_date=Data utworzenia: +document_properties_modification_date=Data modyfikacji: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Utworzony przez: +document_properties_producer=PDF wyprodukowany przez: +document_properties_version=Wersja PDF: +document_properties_page_count=Liczba stron: +document_properties_page_size=Wymiary strony: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=pionowa +document_properties_page_size_orientation_landscape=pozioma +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=US Letter +document_properties_page_size_name_legal=US Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}}×{{height}} {{unit}} (orientacja {{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}}×{{height}} {{unit}} ({{name}}, orientacja {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Szybki podglÄ…d w Internecie: +document_properties_linearized_yes=tak +document_properties_linearized_no=nie +document_properties_close=Zamknij + +print_progress_message=Przygotowywanie dokumentu do druku… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Anuluj + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=PrzeÅ‚Ä…cz panel boczny +toggle_sidebar_notification2.title=PrzeÅ‚Ä…cz panel boczny (dokument zawiera konspekt/zaÅ‚Ä…czniki/warstwy) +toggle_sidebar_label=PrzeÅ‚Ä…cz panel boczny +document_outline.title=Konspekt dokumentu (podwójne klikniÄ™cie rozwija lub zwija wszystkie pozycje) +document_outline_label=Konspekt dokumentu +attachments.title=ZaÅ‚Ä…czniki +attachments_label=ZaÅ‚Ä…czniki +layers.title=Warstwy (podwójne klikniÄ™cie przywraca wszystkie warstwy do stanu domyÅ›lnego) +layers_label=Warstwy +thumbs.title=Miniatury +thumbs_label=Miniatury +current_outline_item.title=Znajdź bieżący element konspektu +current_outline_item_label=Bieżący element konspektu +findbar.title=Znajdź w dokumencie +findbar_label=Znajdź + +additional_layers=Dodatkowe warstwy +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark={{page}}. strona +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title={{page}}. strona +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura {{page}}. strony + +# Find panel button title and messages +find_input.title=Znajdź +find_input.placeholder=Znajdź w dokumencie… +find_previous.title=Znajdź poprzednie wystÄ…pienie tekstu +find_previous_label=Poprzednie +find_next.title=Znajdź nastÄ™pne wystÄ…pienie tekstu +find_next_label=NastÄ™pne +find_highlight=Wyróżnianie wszystkich +find_match_case_label=Rozróżnianie wielkoÅ›ci liter +find_match_diacritics_label=Rozróżnianie liter diakrytyzowanych +find_entire_word_label=CaÅ‚e sÅ‚owa +find_reached_top=PoczÄ…tek dokumentu. Wyszukiwanie od koÅ„ca. +find_reached_bottom=Koniec dokumentu. Wyszukiwanie od poczÄ…tku. +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]=Pierwsze z {{total}} trafieÅ„ +find_match_count[two]=Drugie z {{total}} trafieÅ„ +find_match_count[few]={{current}}. z {{total}} trafieÅ„ +find_match_count[many]={{current}}. z {{total}} trafieÅ„ +find_match_count[other]={{current}}. z {{total}} trafieÅ„ +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Brak trafieÅ„. +find_match_count_limit[one]=WiÄ™cej niż jedno trafienie. +find_match_count_limit[two]=WiÄ™cej niż dwa trafienia. +find_match_count_limit[few]=WiÄ™cej niż {{limit}} trafienia. +find_match_count_limit[many]=WiÄ™cej niż {{limit}} trafieÅ„. +find_match_count_limit[other]=WiÄ™cej niż {{limit}} trafieÅ„. +find_not_found=Nie znaleziono tekstu + +# Error panel labels +error_more_info=WiÄ™cej informacji +error_less_info=Mniej informacji +error_close=Zamknij +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (kompilacja: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Komunikat: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stos: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Plik: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Wiersz: {{line}} + +# Predefined zoom values +page_scale_width=Szerokość strony +page_scale_fit=Dopasowanie strony +page_scale_auto=Skala automatyczna +page_scale_actual=Rozmiar oryginalny +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Wczytywanie… +loading_error=Podczas wczytywania dokumentu PDF wystÄ…piÅ‚ bÅ‚Ä…d. +invalid_file_error=NieprawidÅ‚owy lub uszkodzony plik PDF. +missing_file_error=Brak pliku PDF. +unexpected_response_error=Nieoczekiwana odpowiedź serwera. + +rendering_error=Podczas renderowania strony wystÄ…piÅ‚ bÅ‚Ä…d. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Przypis: {{type}}] +password_label=Wprowadź hasÅ‚o, aby otworzyć ten dokument PDF. +password_invalid=NieprawidÅ‚owe hasÅ‚o. ProszÄ™ spróbować ponownie. +password_ok=OK +password_cancel=Anuluj + +printing_not_supported=Ostrzeżenie: drukowanie nie jest w peÅ‚ni obsÅ‚ugiwane przez tÄ™ przeglÄ…darkÄ™. +printing_not_ready=Ostrzeżenie: dokument PDF nie jest caÅ‚kowicie wczytany, wiÄ™c nie można go wydrukować. +web_fonts_disabled=Czcionki sieciowe sÄ… wyÅ‚Ä…czone: nie można użyć osadzonych czcionek PDF. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=Rysunek +editor_ink2_label=Rysunek + +free_text2_default_content=Zacznij pisać… + +# Editor Parameters +editor_free_text_color=Kolor +editor_free_text_size=Rozmiar +editor_ink_color=Kolor +editor_ink_thickness=Grubość +editor_ink_opacity=Nieprzezroczystość + +# Editor aria +editor_free_text2_aria_label=Edytor tekstu +editor_ink2_aria_label=Edytor rysunku +editor_ink_canvas_aria_label=Obraz utworzony przez użytkownika diff --git a/page/static/js/web/locale/pt-BR/viewer.properties b/page/static/js/web/locale/pt-BR/viewer.properties new file mode 100644 index 0000000..35eec5d --- /dev/null +++ b/page/static/js/web/locale/pt-BR/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Página anterior +previous_label=Anterior +next.title=Próxima página +next_label=Próxima + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Página +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Reduzir +zoom_out_label=Reduzir +zoom_in.title=Ampliar +zoom_in_label=Ampliar +zoom.title=Zoom +presentation_mode.title=Mudar para o modo de apresentação +presentation_mode_label=Modo de apresentação +open_file.title=Abrir arquivo +open_file_label=Abrir +print.title=Imprimir +print_label=Imprimir +download.title=Baixar +download_label=Baixar +save.title=Salvar +save_label=Salvar +bookmark.title=Visão atual (copiar ou abrir em nova janela) +bookmark_label=Exibição atual + +bookmark1.title=Página atual (ver URL da página atual) +bookmark1_label=Pagina atual + +# Secondary toolbar and context menu +tools.title=Ferramentas +tools_label=Ferramentas +first_page.title=Ir para a primeira página +first_page_label=Ir para a primeira página +last_page.title=Ir para a última página +last_page_label=Ir para a última página +page_rotate_cw.title=Girar no sentido horário +page_rotate_cw_label=Girar no sentido horário +page_rotate_ccw.title=Girar no sentido anti-horário +page_rotate_ccw_label=Girar no sentido anti-horário + +cursor_text_select_tool.title=Ativar a ferramenta de seleção de texto +cursor_text_select_tool_label=Ferramenta de seleção de texto +cursor_hand_tool.title=Ativar ferramenta de deslocamento +cursor_hand_tool_label=Ferramenta de deslocamento + +scroll_page.title=Usar rolagem de página +scroll_page_label=Rolagem de página +scroll_vertical.title=Usar deslocamento vertical +scroll_vertical_label=Deslocamento vertical +scroll_horizontal.title=Usar deslocamento horizontal +scroll_horizontal_label=Deslocamento horizontal +scroll_wrapped.title=Usar deslocamento contido +scroll_wrapped_label=Deslocamento contido + +spread_none.title=Não reagrupar páginas +spread_none_label=Não estender +spread_odd.title=Agrupar páginas começando em páginas com números ímpares +spread_odd_label=Estender ímpares +spread_even.title=Agrupar páginas começando em páginas com números pares +spread_even_label=Estender pares + +# Document properties dialog box +document_properties.title=Propriedades do documento… +document_properties_label=Propriedades do documento… +document_properties_file_name=Nome do arquivo: +document_properties_file_size=Tamanho do arquivo: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Título: +document_properties_author=Autor: +document_properties_subject=Assunto: +document_properties_keywords=Palavras-chave: +document_properties_creation_date=Data da criação: +document_properties_modification_date=Data da modificação: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Criação: +document_properties_producer=Criador do PDF: +document_properties_version=Versão do PDF: +document_properties_page_count=Número de páginas: +document_properties_page_size=Tamanho da página: +document_properties_page_size_unit_inches=pol. +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=retrato +document_properties_page_size_orientation_landscape=paisagem +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Carta +document_properties_page_size_name_legal=Jurídico +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Exibição web rápida: +document_properties_linearized_yes=Sim +document_properties_linearized_no=Não +document_properties_close=Fechar + +print_progress_message=Preparando documento para impressão… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}} % +print_progress_close=Cancelar + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Exibir/ocultar painel lateral +toggle_sidebar_notification2.title=Exibir/ocultar painel (documento contém estrutura/anexos/camadas) +toggle_sidebar_label=Exibir/ocultar painel +document_outline.title=Mostrar estrutura do documento (duplo-clique expande/recolhe todos os itens) +document_outline_label=Estrutura do documento +attachments.title=Mostrar anexos +attachments_label=Anexos +layers.title=Mostrar camadas (duplo-clique redefine todas as camadas ao estado predefinido) +layers_label=Camadas +thumbs.title=Mostrar miniaturas +thumbs_label=Miniaturas +current_outline_item.title=Encontrar item atual da estrutura +current_outline_item_label=Item atual da estrutura +findbar.title=Procurar no documento +findbar_label=Procurar + +additional_layers=Camadas adicionais +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Página {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Página {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura da página {{page}} + +# Find panel button title and messages +find_input.title=Procurar +find_input.placeholder=Procurar no documento… +find_previous.title=Procurar a ocorrência anterior da frase +find_previous_label=Anterior +find_next.title=Procurar a próxima ocorrência da frase +find_next_label=Próxima +find_highlight=Destacar tudo +find_match_case_label=Diferenciar maiúsculas/minúsculas +find_match_diacritics_label=Considerar acentuação +find_entire_word_label=Palavras completas +find_reached_top=Início do documento alcançado, continuando do fim +find_reached_bottom=Fim do documento alcançado, continuando do início +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} de {{total}} ocorrência +find_match_count[two]={{current}} de {{total}} ocorrências +find_match_count[few]={{current}} de {{total}} ocorrências +find_match_count[many]={{current}} de {{total}} ocorrências +find_match_count[other]={{current}} de {{total}} ocorrências +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Mais de {{limit}} ocorrências +find_match_count_limit[one]=Mais de {{limit}} ocorrência +find_match_count_limit[two]=Mais de {{limit}} ocorrências +find_match_count_limit[few]=Mais de {{limit}} ocorrências +find_match_count_limit[many]=Mais de {{limit}} ocorrências +find_match_count_limit[other]=Mais de {{limit}} ocorrências +find_not_found=Frase não encontrada + +# Error panel labels +error_more_info=Mais informações +error_less_info=Menos informações +error_close=Fechar +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (compilação: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mensagem: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pilha: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Arquivo: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linha: {{line}} + +# Predefined zoom values +page_scale_width=Largura da página +page_scale_fit=Ajustar à janela +page_scale_auto=Zoom automático +page_scale_actual=Tamanho real +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Carregando… +loading_error=Ocorreu um erro ao carregar o PDF. +invalid_file_error=Arquivo PDF corrompido ou inválido. +missing_file_error=Arquivo PDF ausente. +unexpected_response_error=Resposta inesperada do servidor. + +rendering_error=Ocorreu um erro ao renderizar a página. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotação {{type}}] +password_label=Forneça a senha para abrir este arquivo PDF. +password_invalid=Senha inválida. Tente novamente. +password_ok=OK +password_cancel=Cancelar + +printing_not_supported=Aviso: a impressão não é totalmente suportada neste navegador. +printing_not_ready=Aviso: o PDF não está totalmente carregado para impressão. +web_fonts_disabled=As fontes web estão desativadas: não foi possível usar fontes incorporadas do PDF. + +# Editor +editor_free_text2.title=Texto +editor_free_text2_label=Texto +editor_ink2.title=Desenho +editor_ink2_label=Desenho + +free_text2_default_content=Comece digitando… + +# Editor Parameters +editor_free_text_color=Cor +editor_free_text_size=Tamanho +editor_ink_color=Cor +editor_ink_thickness=Espessura +editor_ink_opacity=Opacidade + +# Editor aria +editor_free_text2_aria_label=Editor de texto +editor_ink2_aria_label=Editor de desenho +editor_ink_canvas_aria_label=Imagem criada pelo usuário diff --git a/page/static/js/web/locale/pt-PT/viewer.properties b/page/static/js/web/locale/pt-PT/viewer.properties new file mode 100644 index 0000000..bc68d9b --- /dev/null +++ b/page/static/js/web/locale/pt-PT/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Página anterior +previous_label=Anterior +next.title=Página seguinte +next_label=Seguinte + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Página +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Reduzir +zoom_out_label=Reduzir +zoom_in.title=Ampliar +zoom_in_label=Ampliar +zoom.title=Zoom +presentation_mode.title=Trocar para o modo de apresentação +presentation_mode_label=Modo de apresentação +open_file.title=Abrir ficheiro +open_file_label=Abrir +print.title=Imprimir +print_label=Imprimir +download.title=Transferir +download_label=Transferir +save.title=Guardar +save_label=Guardar +bookmark.title=Vista atual (copiar ou abrir numa nova janela) +bookmark_label=Visão atual + +bookmark1.title=Página atual (ver URL da página atual) +bookmark1_label=Pagina atual + +# Secondary toolbar and context menu +tools.title=Ferramentas +tools_label=Ferramentas +first_page.title=Ir para a primeira página +first_page_label=Ir para a primeira página +last_page.title=Ir para a última página +last_page_label=Ir para a última página +page_rotate_cw.title=Rodar à direita +page_rotate_cw_label=Rodar à direita +page_rotate_ccw.title=Rodar à esquerda +page_rotate_ccw_label=Rodar à esquerda + +cursor_text_select_tool.title=Ativar ferramenta de seleção de texto +cursor_text_select_tool_label=Ferramenta de seleção de texto +cursor_hand_tool.title=Ativar ferramenta de mão +cursor_hand_tool_label=Ferramenta de mão + +scroll_page.title=Utilizar deslocamento da página +scroll_page_label=Deslocamento da página +scroll_vertical.title=Utilizar deslocação vertical +scroll_vertical_label=Deslocação vertical +scroll_horizontal.title=Utilizar deslocação horizontal +scroll_horizontal_label=Deslocação horizontal +scroll_wrapped.title=Utilizar deslocação encapsulada +scroll_wrapped_label=Deslocação encapsulada + +spread_none.title=Não juntar páginas dispersas +spread_none_label=Sem spreads +spread_odd.title=Juntar páginas dispersas a partir de páginas com números ímpares +spread_odd_label=Spreads ímpares +spread_even.title=Juntar páginas dispersas a partir de páginas com números pares +spread_even_label=Spreads pares + +# Document properties dialog box +document_properties.title=Propriedades do documento… +document_properties_label=Propriedades do documento… +document_properties_file_name=Nome do ficheiro: +document_properties_file_size=Tamanho do ficheiro: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Título: +document_properties_author=Autor: +document_properties_subject=Assunto: +document_properties_keywords=Palavras-chave: +document_properties_creation_date=Data de criação: +document_properties_modification_date=Data de modificação: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Criador: +document_properties_producer=Produtor de PDF: +document_properties_version=Versão do PDF: +document_properties_page_count=N.º de páginas: +document_properties_page_size=Tamanho da página: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=retrato +document_properties_page_size_orientation_landscape=paisagem +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Carta +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista rápida web: +document_properties_linearized_yes=Sim +document_properties_linearized_no=Não +document_properties_close=Fechar + +print_progress_message=A preparar o documento para impressão… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancelar + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Alternar barra lateral +toggle_sidebar_notification2.title=Alternar barra lateral (o documento contém contornos/anexos/camadas) +toggle_sidebar_label=Alternar barra lateral +document_outline.title=Mostrar esquema do documento (duplo clique para expandir/colapsar todos os itens) +document_outline_label=Esquema do documento +attachments.title=Mostrar anexos +attachments_label=Anexos +layers.title=Mostrar camadas (clique duas vezes para repor todas as camadas para o estado predefinido) +layers_label=Camadas +thumbs.title=Mostrar miniaturas +thumbs_label=Miniaturas +current_outline_item.title=Encontrar o item atualmente destacado +current_outline_item_label=Item atualmente destacado +findbar.title=Localizar em documento +findbar_label=Localizar + +additional_layers=Camadas adicionais +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Página {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Página {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura da página {{page}} + +# Find panel button title and messages +find_input.title=Localizar +find_input.placeholder=Localizar em documento… +find_previous.title=Localizar ocorrência anterior da frase +find_previous_label=Anterior +find_next.title=Localizar ocorrência seguinte da frase +find_next_label=Seguinte +find_highlight=Destacar tudo +find_match_case_label=Correspondência +find_match_diacritics_label=Corresponder diacríticos +find_entire_word_label=Palavras completas +find_reached_top=Topo do documento atingido, a continuar a partir do fundo +find_reached_bottom=Fim do documento atingido, a continuar a partir do topo +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} de {{total}} correspondência +find_match_count[two]={{current}} de {{total}} correspondências +find_match_count[few]={{current}} de {{total}} correspondências +find_match_count[many]={{current}} de {{total}} correspondências +find_match_count[other]={{current}} de {{total}} correspondências +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Mais de {{limit}} correspondências +find_match_count_limit[one]=Mais de {{limit}} correspondência +find_match_count_limit[two]=Mais de {{limit}} correspondências +find_match_count_limit[few]=Mais de {{limit}} correspondências +find_match_count_limit[many]=Mais de {{limit}} correspondências +find_match_count_limit[other]=Mais de {{limit}} correspondências +find_not_found=Frase não encontrada + +# Error panel labels +error_more_info=Mais informação +error_less_info=Menos informação +error_close=Fechar +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (compilação: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mensagem: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Ficheiro: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linha: {{line}} + +# Predefined zoom values +page_scale_width=Ajustar à largura +page_scale_fit=Ajustar à página +page_scale_auto=Zoom automático +page_scale_actual=Tamanho real +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=A carregar… +loading_error=Ocorreu um erro ao carregar o PDF. +invalid_file_error=Ficheiro PDF inválido ou danificado. +missing_file_error=Ficheiro PDF inexistente. +unexpected_response_error=Resposta inesperada do servidor. + +rendering_error=Ocorreu um erro ao processar a página. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotação {{type}}] +password_label=Introduza a palavra-passe para abrir este ficheiro PDF. +password_invalid=Palavra-passe inválida. Por favor, tente novamente. +password_ok=OK +password_cancel=Cancelar + +printing_not_supported=Aviso: a impressão não é totalmente suportada por este navegador. +printing_not_ready=Aviso: o PDF ainda não está totalmente carregado. +web_fonts_disabled=Os tipos de letra web estão desativados: não é possível utilizar os tipos de letra PDF embutidos. + +# Editor +editor_free_text2.title=Texto +editor_free_text2_label=Texto +editor_ink2.title=Desenhar +editor_ink2_label=Desenhar + +free_text2_default_content=Começar a digitar… + +# Editor Parameters +editor_free_text_color=Cor +editor_free_text_size=Tamanho +editor_ink_color=Cor +editor_ink_thickness=Espessura +editor_ink_opacity=Opacidade + +# Editor aria +editor_free_text2_aria_label=Editor de texto +editor_ink2_aria_label=Editor de desenho +editor_ink_canvas_aria_label=Imagem criada pelo utilizador diff --git a/page/static/js/web/locale/rm/viewer.properties b/page/static/js/web/locale/rm/viewer.properties new file mode 100644 index 0000000..03afd28 --- /dev/null +++ b/page/static/js/web/locale/rm/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pagina precedenta +previous_label=Enavos +next.title=Proxima pagina +next_label=Enavant + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pagina +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=da {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} da {{pagesCount}}) + +zoom_out.title=Empitschnir +zoom_out_label=Empitschnir +zoom_in.title=Engrondir +zoom_in_label=Engrondir +zoom.title=Zoom +presentation_mode.title=Midar en il modus da preschentaziun +presentation_mode_label=Modus da preschentaziun +open_file.title=Avrir datoteca +open_file_label=Avrir +print.title=Stampar +print_label=Stampar +download.title=Telechargiar +download_label=Telechargiar +save.title=Memorisar +save_label=Memorisar +bookmark.title=Vista actuala (copiar u avrir en ina nova fanestra) +bookmark_label=Vista actuala + +bookmark1.title=Pagina actuala (mussar l'URL da la pagina actuala) +bookmark1_label=Pagina actuala + +# Secondary toolbar and context menu +tools.title=Utensils +tools_label=Utensils +first_page.title=Siglir a l'emprima pagina +first_page_label=Siglir a l'emprima pagina +last_page.title=Siglir a la davosa pagina +last_page_label=Siglir a la davosa pagina +page_rotate_cw.title=Rotar en direcziun da l'ura +page_rotate_cw_label=Rotar en direcziun da l'ura +page_rotate_ccw.title=Rotar en direcziun cuntraria a l'ura +page_rotate_ccw_label=Rotar en direcziun cuntraria a l'ura + +cursor_text_select_tool.title=Activar l'utensil per selecziunar text +cursor_text_select_tool_label=Utensil per selecziunar text +cursor_hand_tool.title=Activar l'utensil da maun +cursor_hand_tool_label=Utensil da maun + +scroll_page.title=Utilisar la defilada per pagina +scroll_page_label=Defilada per pagina +scroll_vertical.title=Utilisar il defilar vertical +scroll_vertical_label=Defilar vertical +scroll_horizontal.title=Utilisar il defilar orizontal +scroll_horizontal_label=Defilar orizontal +scroll_wrapped.title=Utilisar il defilar en colonnas +scroll_wrapped_label=Defilar en colonnas + +spread_none.title=Betg parallelisar las paginas +spread_none_label=Betg parallel +spread_odd.title=Parallelisar las paginas cun cumenzar cun paginas spèras +spread_odd_label=Parallel spèr +spread_even.title=Parallelisar las paginas cun cumenzar cun paginas pèras +spread_even_label=Parallel pèr + +# Document properties dialog box +document_properties.title=Caracteristicas dal document… +document_properties_label=Caracteristicas dal document… +document_properties_file_name=Num da la datoteca: +document_properties_file_size=Grondezza da la datoteca: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Titel: +document_properties_author=Autur: +document_properties_subject=Tema: +document_properties_keywords=Chavazzins: +document_properties_creation_date=Data da creaziun: +document_properties_modification_date=Data da modificaziun: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}} {{time}} +document_properties_creator=Creà da: +document_properties_producer=Creà il PDF cun: +document_properties_version=Versiun da PDF: +document_properties_page_count=Dumber da paginas: +document_properties_page_size=Grondezza da la pagina: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=vertical +document_properties_page_size_orientation_landscape=orizontal +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Web View: +document_properties_linearized_yes=Gea +document_properties_linearized_no=Na +document_properties_close=Serrar + +print_progress_message=Preparar il document per stampar… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Interrumper + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Activar/deactivar la trav laterala +toggle_sidebar_notification2.title=Activar/deactivar la trav laterala (il document cuntegna structura dal document/agiuntas/nivels) +toggle_sidebar_label=Activar/deactivar la trav laterala +document_outline.title=Mussar la structura dal document (cliccar duas giadas per extender/cumprimer tut ils elements) +document_outline_label=Structura dal document +attachments.title=Mussar agiuntas +attachments_label=Agiuntas +layers.title=Mussar ils nivels (cliccar dubel per restaurar il stadi da standard da tut ils nivels) +layers_label=Nivels +thumbs.title=Mussar las miniaturas +thumbs_label=Miniaturas +current_outline_item.title=Tschertgar l'element da structura actual +current_outline_item_label=Element da structura actual +findbar.title=Tschertgar en il document +findbar_label=Tschertgar + +additional_layers=Nivels supplementars +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Pagina {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pagina {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura da la pagina {{page}} + +# Find panel button title and messages +find_input.title=Tschertgar +find_input.placeholder=Tschertgar en il document… +find_previous.title=Tschertgar la posiziun precedenta da l'expressiun +find_previous_label=Enavos +find_next.title=Tschertgar la proxima posiziun da l'expressiun +find_next_label=Enavant +find_highlight=Relevar tuts +find_match_case_label=Resguardar maiusclas/minusclas +find_match_diacritics_label=Resguardar ils segns diacritics +find_entire_word_label=Pleds entirs +find_reached_top=Il cumenzament dal document è cuntanschì, la tschertga cuntinuescha a la fin dal document +find_reached_bottom=La fin dal document è cuntanschì, la tschertga cuntinuescha al cumenzament dal document +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} dad {{total}} correspundenza +find_match_count[two]={{current}} da {{total}} correspundenzas +find_match_count[few]={{current}} da {{total}} correspundenzas +find_match_count[many]={{current}} da {{total}} correspundenzas +find_match_count[other]={{current}} da {{total}} correspundenzas +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Dapli che {{limit}} correspundenzas +find_match_count_limit[one]=Dapli che {{limit}} correspundenza +find_match_count_limit[two]=Dapli che {{limit}} correspundenzas +find_match_count_limit[few]=Dapli che {{limit}} correspundenzas +find_match_count_limit[many]=Dapli che {{limit}} correspundenzas +find_match_count_limit[other]=Dapli che {{limit}} correspundenzas +find_not_found=Impussibel da chattar l'expressiun + +# Error panel labels +error_more_info=Dapli infurmaziuns +error_less_info=Damain infurmaziuns +error_close=Serrar +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Messadi: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Datoteca: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Lingia: {{line}} + +# Predefined zoom values +page_scale_width=Ladezza da la pagina +page_scale_fit=Entira pagina +page_scale_auto=Zoom automatic +page_scale_actual=Grondezza actuala +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Chargiar… +loading_error=Ina errur è cumparida cun chargiar il PDF. +invalid_file_error=Datoteca PDF nunvalida u donnegiada. +missing_file_error=Datoteca PDF manconta. +unexpected_response_error=Resposta nunspetgada dal server. + +rendering_error=Ina errur è cumparida cun visualisar questa pagina. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Annotaziun da {{type}}] +password_label=Endatescha il pled-clav per avrir questa datoteca da PDF. +password_invalid=Pled-clav nunvalid. Emprova anc ina giada. +password_ok=OK +password_cancel=Interrumper + +printing_not_supported=Attenziun: Il stampar na funcziunescha anc betg dal tut en quest navigatur. +printing_not_ready=Attenziun: Il PDF n'è betg chargià cumplettamain per stampar. +web_fonts_disabled=Scrittiras dal web èn deactivadas: impussibel dad utilisar las scrittiras integradas en il PDF. + +# Editor +editor_free_text2.title=Text +editor_free_text2_label=Text +editor_ink2.title=Dissegnar +editor_ink2_label=Dissegnar + +free_text2_default_content=Cumenzar a tippar… + +# Editor Parameters +editor_free_text_color=Colur +editor_free_text_size=Grondezza +editor_ink_color=Colur +editor_ink_thickness=Grossezza +editor_ink_opacity=Opacitad + +# Editor aria +editor_free_text2_aria_label=Editur da text +editor_ink2_aria_label=Editur dissegn +editor_ink_canvas_aria_label=Maletg creà da l'utilisader diff --git a/page/static/js/web/locale/ro/viewer.properties b/page/static/js/web/locale/ro/viewer.properties new file mode 100644 index 0000000..7560849 --- /dev/null +++ b/page/static/js/web/locale/ro/viewer.properties @@ -0,0 +1,241 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pagina precedentă +previous_label=ÃŽnapoi +next.title=Pagina următoare +next_label=ÃŽnainte + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pagina +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=din {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} din {{pagesCount}}) + +zoom_out.title=MicÈ™orează +zoom_out_label=MicÈ™orează +zoom_in.title=MăreÈ™te +zoom_in_label=MăreÈ™te +zoom.title=Zoom +presentation_mode.title=Comută la modul de prezentare +presentation_mode_label=Mod de prezentare +open_file.title=Deschide un fiÈ™ier +open_file_label=Deschide +print.title=TipăreÈ™te +print_label=TipăreÈ™te +download.title=Descarcă +download_label=Descarcă +bookmark.title=Vizualizare actuală (copiază sau deschide într-o fereastră nouă) +bookmark_label=Vizualizare actuală + +# Secondary toolbar and context menu +tools.title=Instrumente +tools_label=Instrumente +first_page.title=Mergi la prima pagină +first_page_label=Mergi la prima pagină +last_page.title=Mergi la ultima pagină +last_page_label=Mergi la ultima pagină +page_rotate_cw.title=RoteÈ™te în sensul acelor de ceas +page_rotate_cw_label=RoteÈ™te în sensul acelor de ceas +page_rotate_ccw.title=RoteÈ™te în sens invers al acelor de ceas +page_rotate_ccw_label=RoteÈ™te în sens invers al acelor de ceas + +cursor_text_select_tool.title=Activează instrumentul de selecÈ›ie a textului +cursor_text_select_tool_label=Instrumentul de selecÈ›ie a textului +cursor_hand_tool.title=Activează instrumentul mână +cursor_hand_tool_label=Unealta mână + +scroll_vertical.title=FoloseÈ™te derularea verticală +scroll_vertical_label=Derulare verticală +scroll_horizontal.title=FoloseÈ™te derularea orizontală +scroll_horizontal_label=Derulare orizontală +scroll_wrapped.title=FoloseÈ™te derularea încadrată +scroll_wrapped_label=Derulare încadrată + +spread_none.title=Nu uni paginile broÈ™ate +spread_none_label=Fără pagini broÈ™ate +spread_odd.title=UneÈ™te paginile broÈ™ate începând cu cele impare +spread_odd_label=BroÈ™are pagini impare +spread_even.title=UneÈ™te paginile broÈ™ate începând cu cele pare +spread_even_label=BroÈ™are pagini pare + +# Document properties dialog box +document_properties.title=Proprietățile documentului… +document_properties_label=Proprietățile documentului… +document_properties_file_name=Numele fiÈ™ierului: +document_properties_file_size=Mărimea fiÈ™ierului: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} byÈ›i) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} byÈ›i) +document_properties_title=Titlu: +document_properties_author=Autor: +document_properties_subject=Subiect: +document_properties_keywords=Cuvinte cheie: +document_properties_creation_date=Data creării: +document_properties_modification_date=Data modificării: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Autor: +document_properties_producer=Producător PDF: +document_properties_version=Versiune PDF: +document_properties_page_count=Număr de pagini: +document_properties_page_size=Mărimea paginii: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=verticală +document_properties_page_size_orientation_landscape=orizontală +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Literă +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vizualizare web rapidă: +document_properties_linearized_yes=Da +document_properties_linearized_no=Nu +document_properties_close=ÃŽnchide + +print_progress_message=Se pregăteÈ™te documentul pentru tipărire… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Renunță + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Comută bara laterală +toggle_sidebar_label=Comută bara laterală +document_outline.title=AfiÈ™ează schiÈ›a documentului (dublu-clic pentru a extinde/restrânge toate elementele) +document_outline_label=SchiÈ›a documentului +attachments.title=AfiÈ™ează ataÈ™amentele +attachments_label=AtaÈ™amente +thumbs.title=AfiÈ™ează miniaturi +thumbs_label=Miniaturi +findbar.title=Caută în document +findbar_label=Caută + +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pagina {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura paginii {{page}} + +# Find panel button title and messages +find_input.title=Caută +find_input.placeholder=Caută în document… +find_previous.title=Mergi la apariÈ›ia anterioară a textului +find_previous_label=ÃŽnapoi +find_next.title=Mergi la apariÈ›ia următoare a textului +find_next_label=ÃŽnainte +find_highlight=EvidenÈ›iază toate apariÈ›iile +find_match_case_label=Èšine cont de majuscule È™i minuscule +find_entire_word_label=Cuvinte întregi +find_reached_top=Am ajuns la începutul documentului, continuă de la sfârÈ™it +find_reached_bottom=Am ajuns la sfârÈ™itul documentului, continuă de la început +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} din {{total}} rezultat +find_match_count[two]={{current}} din {{total}} rezultate +find_match_count[few]={{current}} din {{total}} rezultate +find_match_count[many]={{current}} din {{total}} de rezultate +find_match_count[other]={{current}} din {{total}} de rezultate +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Peste {{limit}} rezultate +find_match_count_limit[one]=Peste {{limit}} rezultat +find_match_count_limit[two]=Peste {{limit}} rezultate +find_match_count_limit[few]=Peste {{limit}} rezultate +find_match_count_limit[many]=Peste {{limit}} de rezultate +find_match_count_limit[other]=Peste {{limit}} de rezultate +find_not_found=Nu s-a găsit textul + +# Error panel labels +error_more_info=Mai multe informaÈ›ii +error_less_info=Mai puÈ›ine informaÈ›ii +error_close=ÃŽnchide +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (versiunea compilată: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mesaj: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stivă: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=FiÈ™ier: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Rând: {{line}} +rendering_error=A intervenit o eroare la randarea paginii. + +# Predefined zoom values +page_scale_width=Lățime pagină +page_scale_fit=Potrivire la pagină +page_scale_auto=Zoom automat +page_scale_actual=Mărime reală +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading_error=A intervenit o eroare la încărcarea PDF-ului. +invalid_file_error=FiÈ™ier PDF nevalid sau corupt. +missing_file_error=FiÈ™ier PDF lipsă. +unexpected_response_error=Răspuns neaÈ™teptat de la server. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Adnotare {{type}}] +password_label=Introdu parola pentru a deschide acest fiÈ™ier PDF. +password_invalid=Parolă nevalidă. Te rugăm să încerci din nou. +password_ok=OK +password_cancel=Renunță + +printing_not_supported=Avertisment: Tipărirea nu este suportată în totalitate de acest browser. +printing_not_ready=Avertisment: PDF-ul nu este încărcat complet pentru tipărire. +web_fonts_disabled=Fonturile web sunt dezactivate: nu se pot folosi fonturile PDF încorporate. + diff --git a/page/static/js/web/locale/ru/viewer.properties b/page/static/js/web/locale/ru/viewer.properties new file mode 100644 index 0000000..2b3160d --- /dev/null +++ b/page/static/js/web/locale/ru/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ñтраница +previous_label=ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ +next.title=Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ñтраница +next_label=Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Страница +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=из {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} из {{pagesCount}}) + +zoom_out.title=Уменьшить +zoom_out_label=Уменьшить +zoom_in.title=Увеличить +zoom_in_label=Увеличить +zoom.title=МаÑштаб +presentation_mode.title=Перейти в режим презентации +presentation_mode_label=Режим презентации +open_file.title=Открыть файл +open_file_label=Открыть +print.title=Печать +print_label=Печать +download.title=Загрузить +download_label=Загрузить +save.title=Сохранить +save_label=Сохранить +bookmark.title=СÑылка на текущий вид (Ñкопировать или открыть в новом окне) +bookmark_label=Текущий вид + +bookmark1.title=Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ñтраница (проÑмотр URL-адреÑа Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ Ñтраницы) +bookmark1_label=Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ñтраница + +# Secondary toolbar and context menu +tools.title=ИнÑтрументы +tools_label=ИнÑтрументы +first_page.title=Перейти на первую Ñтраницу +first_page_label=Перейти на первую Ñтраницу +last_page.title=Перейти на поÑледнюю Ñтраницу +last_page_label=Перейти на поÑледнюю Ñтраницу +page_rotate_cw.title=Повернуть по чаÑовой Ñтрелке +page_rotate_cw_label=Повернуть по чаÑовой Ñтрелке +page_rotate_ccw.title=Повернуть против чаÑовой Ñтрелки +page_rotate_ccw_label=Повернуть против чаÑовой Ñтрелки + +cursor_text_select_tool.title=Включить ИнÑтрумент «Выделение текÑта» +cursor_text_select_tool_label=ИнÑтрумент «Выделение текÑта» +cursor_hand_tool.title=Включить ИнÑтрумент «Рука» +cursor_hand_tool_label=ИнÑтрумент «Рука» + +scroll_page.title=ИÑпользовать прокрутку Ñтраниц +scroll_page_label=Прокрутка Ñтраниц +scroll_vertical.title=ИÑпользовать вертикальную прокрутку +scroll_vertical_label=Ð’ÐµÑ€Ñ‚Ð¸ÐºÐ°Ð»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð¾ÐºÑ€ÑƒÑ‚ÐºÐ° +scroll_horizontal.title=ИÑпользовать горизонтальную прокрутку +scroll_horizontal_label=Ð“Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð¾ÐºÑ€ÑƒÑ‚ÐºÐ° +scroll_wrapped.title=ИÑпользовать маÑштабируемую прокрутку +scroll_wrapped_label=МаÑÑˆÑ‚Ð°Ð±Ð¸Ñ€ÑƒÐµÐ¼Ð°Ñ Ð¿Ñ€Ð¾ÐºÑ€ÑƒÑ‚ÐºÐ° + +spread_none.title=Ðе иÑпользовать режим разворотов Ñтраниц +spread_none_label=Без разворотов Ñтраниц +spread_odd.title=Развороты начинаютÑÑ Ñ Ð½ÐµÑ‡Ñ‘Ñ‚Ð½Ñ‹Ñ… номеров Ñтраниц +spread_odd_label=Ðечётные Ñтраницы Ñлева +spread_even.title=Развороты начинаютÑÑ Ñ Ñ‡Ñ‘Ñ‚Ð½Ñ‹Ñ… номеров Ñтраниц +spread_even_label=Чётные Ñтраницы Ñлева + +# Document properties dialog box +document_properties.title=СвойÑтва документа… +document_properties_label=СвойÑтва документа… +document_properties_file_name=Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°: +document_properties_file_size=Размер файла: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} КБ ({{size_b}} байт) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} МБ ({{size_b}} байт) +document_properties_title=Заголовок: +document_properties_author=Ðвтор: +document_properties_subject=Тема: +document_properties_keywords=Ключевые Ñлова: +document_properties_creation_date=Дата ÑозданиÑ: +document_properties_modification_date=Дата изменениÑ: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Приложение: +document_properties_producer=Производитель PDF: +document_properties_version=ВерÑÐ¸Ñ PDF: +document_properties_page_count=ЧиÑло Ñтраниц: +document_properties_page_size=Размер Ñтраницы: +document_properties_page_size_unit_inches=дюймов +document_properties_page_size_unit_millimeters=мм +document_properties_page_size_orientation_portrait=ÐºÐ½Ð¸Ð¶Ð½Ð°Ñ +document_properties_page_size_orientation_landscape=Ð°Ð»ÑŒÐ±Ð¾Ð¼Ð½Ð°Ñ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=БыÑтрый проÑмотр в Web: +document_properties_linearized_yes=Да +document_properties_linearized_no=Ðет +document_properties_close=Закрыть + +print_progress_message=Подготовка документа к печати… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Отмена + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Показать/Ñкрыть боковую панель +toggle_sidebar_notification2.title=Показать/Ñкрыть боковую панель (документ имеет Ñодержание/вложениÑ/Ñлои) +toggle_sidebar_label=Показать/Ñкрыть боковую панель +document_outline.title=Показать Ñодержание документа (двойной щелчок, чтобы развернуть/Ñвернуть вÑе Ñлементы) +document_outline_label=Содержание документа +attachments.title=Показать Ð²Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ +attachments_label=Ð’Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ +layers.title=Показать Ñлои (дважды щёлкните, чтобы ÑброÑить вÑе Ñлои к ÑоÑтоÑнию по умолчанию) +layers_label=Слои +thumbs.title=Показать миниатюры +thumbs_label=Миниатюры +current_outline_item.title=Ðайти текущий Ñлемент Ñтруктуры +current_outline_item_label=Текущий Ñлемент Ñтруктуры +findbar.title=Ðайти в документе +findbar_label=Ðайти + +additional_layers=Дополнительные Ñлои +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Страница {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Страница {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Миниатюра Ñтраницы {{page}} + +# Find panel button title and messages +find_input.title=Ðайти +find_input.placeholder=Ðайти в документе… +find_previous.title=Ðайти предыдущее вхождение фразы в текÑÑ‚ +find_previous_label=Ðазад +find_next.title=Ðайти Ñледующее вхождение фразы в текÑÑ‚ +find_next_label=Далее +find_highlight=ПодÑветить вÑе +find_match_case_label=С учётом региÑтра +find_match_diacritics_label=С учётом диакритичеÑких знаков +find_entire_word_label=Слова целиком +find_reached_top=ДоÑтигнут верх документа, продолжено Ñнизу +find_reached_bottom=ДоÑтигнут конец документа, продолжено Ñверху +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} из {{total}} ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ +find_match_count[two]={{current}} из {{total}} Ñовпадений +find_match_count[few]={{current}} из {{total}} Ñовпадений +find_match_count[many]={{current}} из {{total}} Ñовпадений +find_match_count[other]={{current}} из {{total}} Ñовпадений +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Более {{limit}} Ñовпадений +find_match_count_limit[one]=Более {{limit}} ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ +find_match_count_limit[two]=Более {{limit}} Ñовпадений +find_match_count_limit[few]=Более {{limit}} Ñовпадений +find_match_count_limit[many]=Более {{limit}} Ñовпадений +find_match_count_limit[other]=Более {{limit}} Ñовпадений +find_not_found=Фраза не найдена + +# Error panel labels +error_more_info=Детали +error_less_info=Скрыть детали +error_close=Закрыть +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (Ñборка: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Сообщение: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Стeк: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Файл: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Строка: {{line}} + +# Predefined zoom values +page_scale_width=По ширине Ñтраницы +page_scale_fit=По размеру Ñтраницы +page_scale_auto=ÐвтоматичеÑки +page_scale_actual=Реальный размер +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Загрузка… +loading_error=При загрузке PDF произошла ошибка. +invalid_file_error=Ðекорректный или повреждённый PDF-файл. +missing_file_error=PDF-файл отÑутÑтвует. +unexpected_response_error=Ðеожиданный ответ Ñервера. + +rendering_error=При Ñоздании Ñтраницы произошла ошибка. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[ÐÐ½Ð½Ð¾Ñ‚Ð°Ñ†Ð¸Ñ {{type}}] +password_label=Введите пароль, чтобы открыть Ñтот PDF-файл. +password_invalid=Ðеверный пароль. ПожалуйÑта, попробуйте Ñнова. +password_ok=OK +password_cancel=Отмена + +printing_not_supported=Предупреждение: Ð’ Ñтом браузере не полноÑтью поддерживаетÑÑ Ð¿ÐµÑ‡Ð°Ñ‚ÑŒ. +printing_not_ready=Предупреждение: PDF не полноÑтью загружен Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸. +web_fonts_disabled=Веб-шрифты отключены: не удалоÑÑŒ задейÑтвовать вÑтроенные PDF-шрифты. + +# Editor +editor_free_text2.title=ТекÑÑ‚ +editor_free_text2_label=ТекÑÑ‚ +editor_ink2.title=РиÑовать +editor_ink2_label=РиÑовать + +free_text2_default_content=Ðачните вводить… + +# Editor Parameters +editor_free_text_color=Цвет +editor_free_text_size=Размер +editor_ink_color=Цвет +editor_ink_thickness=Толщина +editor_ink_opacity=ПрозрачноÑÑ‚ÑŒ + +# Editor aria +editor_free_text2_aria_label=ТекÑтовый редактор +editor_ink2_aria_label=Редактор риÑÐ¾Ð²Ð°Ð½Ð¸Ñ +editor_ink_canvas_aria_label=Созданное пользователем изображение diff --git a/page/static/js/web/locale/sat/viewer.properties b/page/static/js/web/locale/sat/viewer.properties new file mode 100644 index 0000000..d0d138d --- /dev/null +++ b/page/static/js/web/locale/sat/viewer.properties @@ -0,0 +1,198 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=ᱢᱟᱲᱟᱠᱥᱟᱦᱴᱟ +previous_label=ᱢᱟᱲᱟá±á±Ÿá±œ +next.title=ᱤᱱᱟᱹ ᱛᱟᱭᱚᱢ ᱥᱟᱦᱴᱟ +next_label=ᱤᱱᱟᱹ ᱛᱟᱭᱚᱢ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=ᱥᱟᱦᱴᱟ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=ᱨᱮᱭᱟᱜ {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} ᱠᱷᱚᱱ {{pagesCount}}) + +zoom_out.title=ᱦᱤᱲᱤᱧ ᱛᱮᱭᱟᱨ +zoom_out_label=ᱦᱤᱲᱤᱧ ᱛᱮᱭᱟᱨ +zoom_in.title=ᱢᱟᱨᱟᱠᱛᱮᱭᱟᱨ +zoom_in_label=ᱢᱟᱨᱟᱠᱛᱮᱭᱟᱨ +zoom.title=ᱡᱩᱢ +presentation_mode.title=ᱩᱫᱩᱜ ᱥᱚᱫᱚᱨ ᱚᱵᱚᱥᱛᱟ ᱨᱮ ᱚᱛᱟᱭ ᱢᱮ +presentation_mode_label=ᱩᱫᱩᱜ ᱥᱚᱫᱚᱨ ᱚᱵᱚᱥᱛᱟ ᱨᱮ +open_file.title=ᱨᱮᱫ ᱡᱷᱤᱡᱽ ᱢᱮ +open_file_label=ᱡᱷᱤᱡᱽ ᱢᱮ +print.title=ᱪᱷᱟᱯᱟ +print_label=ᱪᱷᱟᱯᱟ +download.title=ᱰᱟᱩᱱᱞᱚᱰ +download_label=ᱰᱟᱩᱱᱞᱚᱰ +bookmark.title=ᱱᱤᱛᱚᱜᱟᱜ ᱧᱮᱞ (ᱱᱚᱶᱟ ᱡᱷᱚᱨᱠᱟ ᱨᱮ ᱱᱚᱠᱚᱞ ᱟᱨ ᱵᱟᱠᱡᱷᱤᱡᱽ ᱢᱮ ) +bookmark_label=ᱱᱤᱛᱚᱜᱟᱜ ᱧᱮᱞ + +# Secondary toolbar and context menu +tools.title=ᱦᱟᱹᱛᱤᱭᱟᱹᱨ ᱠᱚ +tools_label=ᱦᱟᱹᱛᱤᱭᱟᱹᱨ ᱠᱚ +first_page.title=ᱯᱩᱭᱞᱩ ᱥᱟᱦᱴᱟ ᱥᱮᱫ ᱪᱟᱞᱟᱜ ᱢᱮ +first_page_label=ᱯᱩᱭᱞᱩ ᱥᱟᱦᱴᱟ ᱥᱮᱫ ᱪᱟᱞᱟᱜ ᱢᱮ +last_page.title=ᱢᱩᱪᱟᱹᱫ ᱥᱟᱦᱴᱟ ᱥᱮᱫ ᱪᱟᱞᱟᱜ ᱢᱮ +last_page_label=ᱢᱩᱪᱟᱹᱫ ᱥᱟᱦᱴᱟ ᱥᱮᱫ ᱪᱟᱞᱟᱜ ᱢᱮ +page_rotate_cw.title=ᱜᱷᱚᱰᱤ ᱦᱤᱥᱟᱹᱵ ᱛᱮ ᱟᱹᱪᱩᱨ +page_rotate_cw_label=ᱜᱷᱚᱰᱤ ᱦᱤᱥᱟᱹᱵ ᱛᱮ ᱟᱹᱪᱩᱨ +page_rotate_ccw.title=ᱜᱷᱚᱰᱤ ᱦᱤᱥᱟᱹᱵ ᱛᱮ ᱩᱞᱴᱟᱹ ᱟᱹᱪᱩᱨ +page_rotate_ccw_label=ᱜᱷᱚᱰᱤ ᱦᱤᱥᱟᱹᱵ ᱛᱮ ᱩᱞᱴᱟᱹ ᱟᱹᱪᱩᱨ + +cursor_text_select_tool.title=ᱚᱞ ᱵᱟᱪᱷᱟᱣ ᱦᱟᱹᱛᱤᱭᱟᱨ ᱮᱢ ᱪᱷᱚᱭ ᱢᱮ +cursor_text_select_tool_label=ᱚᱞ ᱵᱟᱪᱷᱟᱣ ᱦᱟᱹᱛᱤᱭᱟᱨ +cursor_hand_tool.title=ᱛᱤ ᱦᱟᱹᱛᱤᱭᱟᱨ ᱮᱢ ᱪᱷᱚᱭ ᱢᱮ +cursor_hand_tool_label=ᱛᱤ ᱦᱟᱹᱛᱤᱭᱟᱨ + +scroll_page.title=ᱥᱟᱦᱴᱟ ᱜᱩᱲᱟᱹᱣ ᱵᱮᱵᱷᱟᱨ ᱢᱮ +scroll_page_label=ᱥᱟᱦᱴᱟ ᱜᱩᱲᱟᱹᱣ +scroll_vertical.title=ᱥᱤᱫᱽ ᱜᱩᱲᱟᱹᱣ ᱵᱮᱵᱷᱟᱨ ᱢᱮ +scroll_vertical_label=ᱥᱤᱫᱽ ᱜᱩᱲᱟᱹᱣ +scroll_horizontal.title=ᱜᱤᱛᱤᱡ ᱛᱮ ᱜᱩᱲᱟᱹᱣ ᱵᱮᱵᱷᱟᱨ ᱢᱮ + + +# Document properties dialog box +document_properties_file_name=ᱨᱮᱫᱽ ᱧᱩᱛᱩᱢ : +document_properties_file_size=ᱨᱮᱫᱽ ᱢᱟᱯ : +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} ᱵᱟᱭᱤᱴ ᱠᱚ) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} ᱵᱟᱭᱤᱴ ᱠᱚ) +document_properties_title=ᱧᱩᱛᱩᱢ : +document_properties_author=ᱚᱱᱚᱞᱤᱭᱟᱹ : +document_properties_subject=ᱵᱤᱥᱚᱭ : +document_properties_keywords=ᱠᱟᱹᱴᱷᱤ ᱥᱟᱵᱟᱫᱽ : +document_properties_creation_date=ᱛᱮᱭᱟᱨ ᱢᱟᱸᱦᱤᱛ : +document_properties_modification_date=ᱵᱚᱫᱚᱞ ᱦᱚᱪᱚ ᱢᱟᱹᱦᱤᱛ : +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=ᱵᱮᱱᱟᱣᱤᱡ : +document_properties_producer=PDF ᱛᱮᱭᱟᱨ ᱚᱰᱚᱠᱤᱡ : +document_properties_version=PDF ᱵᱷᱟᱹᱨᱥᱚᱱ : +document_properties_page_count=ᱥᱟᱦᱴᱟ ᱞᱮᱠᱷᱟ : +document_properties_page_size=ᱥᱟᱦᱴᱟ ᱢᱟᱯ : +document_properties_page_size_unit_inches=ᱤᱧᱪ +document_properties_page_size_unit_millimeters=ᱢᱤᱢᱤ +document_properties_page_size_orientation_portrait=ᱯᱚᱴᱨᱮᱴ +document_properties_page_size_orientation_landscape=ᱞᱮᱱᱰᱥᱠᱮᱯ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=ᱪᱤᱴᱷᱤ +document_properties_page_size_name_legal=ᱠᱟᱹᱱᱩᱱᱤ +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. + +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +document_outline_label=ᱫᱚᱞᱤᱞ ᱛᱮᱭᱟᱨ ᱛᱮᱫ +attachments.title=ᱞᱟᱴᱷᱟ ᱥᱮᱞᱮᱫ ᱠᱚ ᱩᱫᱩᱜᱽ ᱢᱮ +attachments_label=ᱞᱟᱴᱷᱟ ᱥᱮᱞᱮᱫ ᱠᱚ +thumbs.title=ᱪᱤᱛᱟᱹᱨ ᱟᱦᱞᱟ ᱠᱚ ᱩᱫᱩᱜᱽ ᱢᱮ +thumbs_label=ᱪᱤᱛᱟᱹᱨ ᱟᱦᱞᱟ ᱠᱚ +findbar.title=ᱫᱚᱞᱤᱞ ᱨᱮ ᱯᱟᱱᱛᱮ +findbar_label=ᱥᱮᱸᱫᱽᱨᱟᱭ ᱢᱮ + +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title={{page}} ᱥᱟᱦᱴᱟ +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}} ᱥᱟᱦᱴᱟ ᱨᱮᱭᱟᱜ ᱪᱤᱛᱟᱹᱨ ᱟᱦᱞᱟ + +# Find panel button title and messages +find_previous.title=ᱟᱭᱟᱛ ᱦᱤᱸᱥ ᱨᱮᱭᱟᱜ ᱯᱟᱹᱦᱤᱞ ᱥᱮᱫᱟᱜ ᱚᱰᱚᱠ ᱧᱟᱢ ᱢᱮ +find_next.title=ᱟᱭᱟᱛ ᱦᱤᱸᱥ ᱨᱮᱭᱟᱜ ᱤᱱᱟᱹ ᱛᱟᱭᱚᱢ ᱚᱰᱚᱠ ᱧᱟᱢ ᱢᱮ +find_highlight=ᱡᱷᱚᱛᱚ ᱩᱫᱩᱜ ᱨᱟᱠᱟᱵ +find_match_case_label=ᱡᱚᱲ ᱠᱟᱛᱷᱟ +find_reached_top=ᱫᱚᱞᱤᱞ ᱨᱮᱭᱟᱜ ᱪᱤᱴ ᱨᱮ ᱥᱮᱴᱮᱨ, ᱞᱟᱛᱟᱨ ᱠᱷᱚᱱ ᱞᱮᱛᱟᱲ +find_reached_bottom=ᱫᱚᱞᱤᱞ ᱨᱮᱭᱟᱜ ᱢᱩᱪᱟᱹᱫ ᱨᱮ ᱥᱮᱴᱮᱨ, ᱪᱚᱴ ᱠᱷᱚᱱ ᱞᱮᱛᱟᱲ +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_not_found=ᱛᱚᱯᱚᱞ ᱫᱚᱱᱚᱲ ᱵᱟᱠᱧᱟᱢ ᱞᱮᱱᱟ + +# Error panel labels +error_more_info=ᱵᱟᱹᱲᱛᱤ ᱞᱟᱹᱭ ᱥᱚᱫᱚᱨ +error_less_info=ᱠᱚᱢ ᱞᱟᱹᱭ ᱥᱚᱫᱚᱨ +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=ᱠᱷᱚᱵᱚᱨ : {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=ᱵᱟᱠ: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=ᱨᱮᱫᱽ : {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=ᱜᱟᱨ : {{line}} +rendering_error=ᱥᱟᱦᱴᱟ ᱮᱢ ᱡᱚᱦᱚᱠ ᱢᱤᱫ ᱵᱷᱩᱞ ᱦᱩᱭ ᱮᱱᱟ á±¾ + +# Predefined zoom values +page_scale_width=ᱥᱟᱦᱴᱟ ᱚᱥᱟᱨ +page_scale_fit=ᱥᱟᱦᱴᱟ ᱠᱷᱟᱯ +page_scale_auto=ᱟᱡᱼᱟᱡ ᱛᱮ ᱦᱩᱰᱤᱧ ᱞᱟᱹᱴᱩ ᱛᱮᱭᱟᱨ +page_scale_actual=ᱴᱷᱤᱠ ᱢᱟᱨᱟᱠᱛᱮᱫ +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. + +# Loading indicator messages +loading_error=PDF ᱞᱟᱫᱮ ᱡᱚᱦᱚᱜ ᱢᱤᱫ ᱵᱷᱩᱞ ᱦᱩᱭ ᱮᱱᱟ á±¾ +invalid_file_error=ᱵᱟᱠᱵᱟᱛᱟᱣ ᱟᱨᱵᱟá±á± á±·á±Ÿá±± ᱰᱤᱜᱟᱹᱣ PDF ᱨᱮᱫᱽ á±¾ +missing_file_error=ᱟᱫᱟᱜ PDF ᱨᱮᱫᱽ á±¾ + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} ᱢᱚᱱᱛᱚ ᱮᱢ] +password_label=ᱱᱚᱶᱟ PDF ᱨᱮᱫᱽ ᱡᱷᱤᱡᱽ ᱞᱟᱹᱜᱤᱫ ᱫᱟᱱᱟᱠᱥᱟᱵᱟᱫᱽ ᱟᱫᱮᱨ ᱢᱮ á±¾ +password_invalid=ᱵᱷᱩᱞ ᱫᱟᱱᱟᱠᱥᱟᱵᱟᱫᱽ á±¾ ᱫᱟᱭᱟᱠᱟᱛᱮ ᱫᱩᱦᱲᱟᱹ ᱪᱮᱥᱴᱟᱭ ᱢᱮ á±¾ +password_ok=ᱴᱷᱤᱠ + +printing_not_supported=ᱦᱚᱥᱤᱭᱟᱨ : ᱪᱷᱟᱯᱟ ᱱᱚᱣᱟ ᱯᱟᱱᱛᱮᱭᱟᱜ ᱫᱟᱨᱟᱭ ᱛᱮ ᱯᱩᱨᱟᱹᱣ ᱵᱟᱭ ᱜᱚᱲᱚᱣᱟᱠᱟᱱᱟ á±¾ +printing_not_ready=ᱦᱩᱥᱤᱭᱟᱹᱨ : ᱪᱷᱟᱯᱟ ᱞᱟᱹᱜᱤᱫ PDF ᱯᱩᱨᱟᱹ ᱵᱟᱭ ᱞᱟᱫᱮ ᱟᱠᱟᱱᱟ á±¾ +web_fonts_disabled=ᱣᱮᱵᱽ ᱪᱤᱠᱤ ᱵᱟᱠᱦᱩᱭ ᱦᱚᱪᱚ ᱠᱟᱱᱟ : ᱵᱷᱤᱛᱤᱨ ᱛᱷᱟᱯᱚᱱ PDF ᱪᱤᱠᱤ ᱵᱮᱵᱷᱟᱨ ᱵᱟᱠᱦᱩᱭ ᱠᱮᱭᱟ á±¾ + diff --git a/page/static/js/web/locale/sc/viewer.properties b/page/static/js/web/locale/sc/viewer.properties new file mode 100644 index 0000000..efcedca --- /dev/null +++ b/page/static/js/web/locale/sc/viewer.properties @@ -0,0 +1,261 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pàgina anteriore +previous_label=S'ischeda chi b'est primu +next.title=Pàgina imbeniente +next_label=Imbeniente + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pàgina +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Impitica +zoom_out_label=Impitica +zoom_in.title=Ismànnia +zoom_in_label=Ismànnia +zoom.title=Ismànnia +presentation_mode.title=Cola a sa modalidade de presentatzione +presentation_mode_label=Modalidade de presentatzione +open_file.title=Aberi s'archìviu +open_file_label=Abertu +print.title=Imprenta +print_label=Imprenta +download.title=Iscàrriga +download_label=Iscàrriga +save.title=Sarva +save_label=Sarva +bookmark.title=Visualizatzione atuale (còpia o aberi in una ventana noa) +bookmark_label=Visualizatzione atuale + +# Secondary toolbar and context menu +tools.title=Istrumentos +tools_label=Istrumentos +first_page.title=Bae a sa prima pàgina +first_page_label=Bae a sa prima pàgina +last_page.title=Bae a s'ùrtima pàgina +last_page_label=Bae a s'ùrtima pàgina +page_rotate_cw.title=Gira in sensu oràriu +page_rotate_cw_label=Gira in sensu oràriu +page_rotate_ccw.title=Gira in sensu anti-oràriu +page_rotate_ccw_label=Gira in sensu anti-oràriu + +cursor_text_select_tool.title=Ativa s'aina de seletzione de testu +cursor_text_select_tool_label=Aina de seletzione de testu +cursor_hand_tool.title=Ativa s'aina de manu +cursor_hand_tool_label=Aina de manu + +scroll_page.title=Imprea s'iscurrimentu de pàgina +scroll_page_label=Iscurrimentu de pàgina +scroll_vertical.title=Imprea s'iscurrimentu verticale +scroll_vertical_label=Iscurrimentu verticale +scroll_horizontal.title=Imprea s'iscurrimentu orizontale +scroll_horizontal_label=Iscurrimentu orizontale +scroll_wrapped.title=Imprea s'iscurrimentu continu +scroll_wrapped_label=Iscurrimentu continu + + +# Document properties dialog box +document_properties.title=Propiedades de su documentu… +document_properties_label=Propiedades de su documentu… +document_properties_file_name=Nòmine de s'archìviu: +document_properties_file_size=Mannària de s'archìviu: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Tìtulu: +document_properties_author=Autoria: +document_properties_subject=Ogetu: +document_properties_keywords=Faeddos crae: +document_properties_creation_date=Data de creatzione: +document_properties_modification_date=Data de modìfica: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creatzione: +document_properties_producer=Produtore de PDF: +document_properties_version=Versione de PDF: +document_properties_page_count=Contu de pàginas: +document_properties_page_size=Mannària de sa pàgina: +document_properties_page_size_unit_inches=pòddighes +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=verticale +document_properties_page_size_orientation_landscape=orizontale +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Lìtera +document_properties_page_size_name_legal=Legale +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Visualizatzione web lestra: +document_properties_linearized_yes=Eja +document_properties_linearized_no=Nono +document_properties_close=Serra + +print_progress_message=Aparitzende s'imprenta de su documentu… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cantzella + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Ativa/disativa sa barra laterale +toggle_sidebar_notification2.title=Ativa/disativa sa barra laterale (su documentu cuntenet un'ischema, alligongiados o livellos) +toggle_sidebar_label=Ativa/disativa sa barra laterale +document_outline_label=Ischema de su documentu +attachments.title=Ammustra alligongiados +attachments_label=Alliongiados +layers.title=Ammustra livellos (clic dòpiu pro ripristinare totu is livellos a s'istadu predefinidu) +layers_label=Livellos +thumbs.title=Ammustra miniaturas +thumbs_label=Miniaturas +current_outline_item.title=Agata s'elementu atuale de s'ischema +current_outline_item_label=Elementu atuale de s'ischema +findbar.title=Agata in su documentu +findbar_label=Agata + +additional_layers=Livellos additzionales +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Pàgina {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pàgina {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura de sa pàgina {{page}} + +# Find panel button title and messages +find_input.title=Agata +find_input.placeholder=Agata in su documentu… +find_previous.title=Agata s'ocurrèntzia pretzedente de sa fràsia +find_previous_label=S'ischeda chi b'est primu +find_next.title=Agata s'ocurrèntzia imbeniente de sa fràsia +find_next_label=Imbeniente +find_highlight=Evidèntzia totu +find_match_case_label=Distinghe intre majùsculas e minùsculas +find_match_diacritics_label=Respeta is diacrìticos +find_entire_word_label=Faeddos intreos +find_reached_top=S'est lòmpidu a su cumintzu de su documentu, si sighit dae su bàsciu +find_reached_bottom=Acabbu de su documentu, si sighit dae s'artu +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} dae {{total}} currispondèntzia +find_match_count[two]={{current}} dae {{total}} currispondèntzias +find_match_count[few]={{current}} dae {{total}} currispondèntzias +find_match_count[many]={{current}} dae {{total}} currispondèntzias +find_match_count[other]={{current}} dae {{total}} currispondèntzias +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Prus de {{limit}} currispondèntzias +find_match_count_limit[one]=Prus de {{limit}} currispondèntzia +find_match_count_limit[two]=Prus de {{limit}} currispondèntzias +find_match_count_limit[few]=Prus de {{limit}} currispondèntzias +find_match_count_limit[many]=Prus de {{limit}} currispondèntzias +find_match_count_limit[other]=Prus de {{limit}} currispondèntzias +find_not_found=Testu no agatadu + +# Error panel labels +error_more_info=Àteras informatziones +error_less_info=Prus pagu informatziones +error_close=Serra +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Messàgiu: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Archìviu: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Lìnia: {{line}} + +# Predefined zoom values +page_scale_auto=Ingrandimentu automàticu +page_scale_actual=Mannària reale +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Carrighende… +loading_error=Faddina in sa càrriga de su PDF. +invalid_file_error=Archìviu PDF non vàlidu o corrùmpidu. +missing_file_error=Ammancat s'archìviu PDF. +unexpected_response_error=Risposta imprevista de su serbidore. + +rendering_error=Faddina in sa visualizatzione de sa pàgina. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +password_label=Inserta sa crae pro abèrrere custu archìviu PDF. +password_invalid=Sa crae no est curreta. Torra·bi a proare. +password_ok=Andat bene +password_cancel=Cantzella + +printing_not_supported=Atentzione: s'imprenta no est funtzionende de su totu in custu navigadore. +printing_not_ready=Atentzione: su PDF no est istadu carrigadu de su totu pro s'imprenta. +web_fonts_disabled=Is tipografias web sunt disativadas: is tipografias incrustadas a su PDF non podent èssere impreadas. + +# Editor +editor_free_text2.title=Testu +editor_free_text2_label=Testu +editor_ink2.title=Disinnu +editor_ink2_label=Disinnu + +free_text2_default_content=Cumintza a iscrìere… + +# Editor Parameters +editor_free_text_color=Colore +editor_free_text_size=Mannària +editor_ink_color=Colore + +# Editor aria +editor_free_text2_aria_label=Editore de testu +editor_ink2_aria_label=Editore de disinnos +editor_ink_canvas_aria_label=Immàgine creada dae s’utente diff --git a/page/static/js/web/locale/scn/viewer.properties b/page/static/js/web/locale/scn/viewer.properties new file mode 100644 index 0000000..e9a650a --- /dev/null +++ b/page/static/js/web/locale/scn/viewer.properties @@ -0,0 +1,101 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. + +zoom_out.title=Cchiù nicu +zoom_out_label=Cchiù nicu +zoom_in.title=Cchiù granni +zoom_in_label=Cchiù granni + +# Secondary toolbar and context menu + + + + +# Document properties dialog box +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista web lesta: +document_properties_linearized_yes=Se + +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_close=Sfai + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. + +# Find panel button title and messages +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. + +# Error panel labels +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number + +# Predefined zoom values +page_scale_width=Larghizza dâ pàggina +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. + +# Loading indicator messages + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +password_cancel=Sfai + diff --git a/page/static/js/web/locale/sco/viewer.properties b/page/static/js/web/locale/sco/viewer.properties new file mode 100644 index 0000000..3cc9935 --- /dev/null +++ b/page/static/js/web/locale/sco/viewer.properties @@ -0,0 +1,249 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Page Afore +previous_label=Previous +next.title=Page Efter +next_label=Neist + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Page +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=o {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} o {{pagesCount}}) + +zoom_out.title=Zoom Oot +zoom_out_label=Zoom Oot +zoom_in.title=Zoom In +zoom_in_label=Zoom In +zoom.title=Zoom +presentation_mode.title=Flit tae Presentation Mode +presentation_mode_label=Presentation Mode +open_file.title=Open File +open_file_label=Open +print.title=Prent +print_label=Prent +download.title=Doonload +download_label=Doonload +bookmark.title=View the noo (copy or open in new windae) +bookmark_label=View The Noo + +# Secondary toolbar and context menu +tools.title=Tools +tools_label=Tools +first_page.title=Gang tae First Page +first_page_label=Gang tae First Page +last_page.title=Gang tae Lest Page +last_page_label=Gang tae Lest Page +page_rotate_cw.title=Rotate Clockwise +page_rotate_cw_label=Rotate Clockwise +page_rotate_ccw.title=Rotate Coonterclockwise +page_rotate_ccw_label=Rotate Coonterclockwise + +cursor_text_select_tool.title=Enable Text Walin Tool +cursor_text_select_tool_label=Text Walin Tool +cursor_hand_tool.title=Enable Haun Tool +cursor_hand_tool_label=Haun Tool + +scroll_vertical.title=Yaise Vertical Scrollin +scroll_vertical_label=Vertical Scrollin +scroll_horizontal.title=Yaise Horizontal Scrollin +scroll_horizontal_label=Horizontal Scrollin +scroll_wrapped.title=Yaise Wrapped Scrollin +scroll_wrapped_label=Wrapped Scrollin + +spread_none.title=Dinnae jyn page spreids +spread_none_label=Nae Spreids +spread_odd.title=Jyn page spreids stertin wi odd-numbered pages +spread_odd_label=Odd Spreids +spread_even.title=Jyn page spreids stertin wi even-numbered pages +spread_even_label=Even Spreids + +# Document properties dialog box +document_properties.title=Document Properties… +document_properties_label=Document Properties… +document_properties_file_name=File nemme: +document_properties_file_size=File size: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Title: +document_properties_author=Author: +document_properties_subject=Subjeck: +document_properties_keywords=Keywirds: +document_properties_creation_date=Date o Makkin: +document_properties_modification_date=Date o Chynges: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Makker: +document_properties_producer=PDF Producer: +document_properties_version=PDF Version: +document_properties_page_count=Page Coont: +document_properties_page_size=Page Size: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=portrait +document_properties_page_size_orientation_landscape=landscape +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Wab View: +document_properties_linearized_yes=Aye +document_properties_linearized_no=Naw +document_properties_close=Sneck + +print_progress_message=Reddin document fur prentin… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Stap + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Toggle Sidebaur +toggle_sidebar_notification2.title=Toggle Sidebaur (document conteens ootline/attachments/layers) +toggle_sidebar_label=Toggle Sidebaur +document_outline.title=Kythe Document Ootline (double-click fur tae oot-fauld/in-fauld aw items) +document_outline_label=Document Ootline +attachments.title=Kythe Attachments +attachments_label=Attachments +layers.title=Kythe Layers (double-click fur tae reset aw layers tae the staunart state) +layers_label=Layers +thumbs.title=Kythe Thumbnails +thumbs_label=Thumbnails +current_outline_item.title=Find Current Ootline Item +current_outline_item_label=Current Ootline Item +findbar.title=Find in Document +findbar_label=Find + +additional_layers=Mair Layers +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Page {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Page {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Thumbnail o Page {{page}} + +# Find panel button title and messages +find_input.title=Find +find_input.placeholder=Find in document… +find_previous.title=Airt oot the last time this phrase occurred +find_previous_label=Previous +find_next.title=Airt oot the neist time this phrase occurs +find_next_label=Neist +find_highlight=Highlicht aw +find_match_case_label=Match case +find_entire_word_label=Hale Wirds +find_reached_top=Raxed tap o document, went on fae the dowp end +find_reached_bottom=Raxed end o document, went on fae the tap +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} o {{total}} match +find_match_count[two]={{current}} o {{total}} matches +find_match_count[few]={{current}} o {{total}} matches +find_match_count[many]={{current}} o {{total}} matches +find_match_count[other]={{current}} o {{total}} matches +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Mair nor {{limit}} matches +find_match_count_limit[one]=Mair nor {{limit}} match +find_match_count_limit[two]=Mair nor {{limit}} matches +find_match_count_limit[few]=Mair nor {{limit}} matches +find_match_count_limit[many]=Mair nor {{limit}} matches +find_match_count_limit[other]=Mair nor {{limit}} matches +find_not_found=Phrase no fund + +# Error panel labels +error_more_info=Mair Information +error_less_info=Less Information +error_close=Sneck +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Message: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=File: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Line: {{line}} +rendering_error=A mishanter tuik place while renderin the page. + +# Predefined zoom values +page_scale_width=Page Width +page_scale_fit=Page Fit +page_scale_auto=Automatic Zoom +page_scale_actual=Actual Size +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Loadin… +loading_error=An mishanter tuik place while loadin the PDF. +invalid_file_error=No suithfest or camshauchlet PDF file. +missing_file_error=PDF file tint. +unexpected_response_error=Unexpectit server repone. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=Inpit the passwird fur tae open this PDF file. +password_invalid=Passwird no suithfest. Gonnae gie it anither shot. +password_ok=OK +password_cancel=Stap + +printing_not_supported=Tak tent: Prentin isnae richt supportit by this stravaiger. +printing_not_ready=Tak tent: The PDF isnae richt loadit fur prentin. +web_fonts_disabled=Wab fonts are disabled: cannae yaise embeddit PDF fonts. + diff --git a/page/static/js/web/locale/si/viewer.properties b/page/static/js/web/locale/si/viewer.properties new file mode 100644 index 0000000..04dfaf4 --- /dev/null +++ b/page/static/js/web/locale/si/viewer.properties @@ -0,0 +1,237 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=කලින් පිටුව +previous_label=කලින් +next.title=ඊළඟ පිටුව +next_label=ඊළඟ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=පිටුව +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. + +zoom_out.title=කුඩà·à¶½à¶±à¶º +zoom_out_label=කුඩà·à¶½à¶±à¶º +zoom_in.title=විà·à·à¶½à¶±à¶º +zoom_in_label=විà·à·à¶½à¶±à¶º +zoom.title=විà·à·à¶½ කරන්න +presentation_mode.title=සමර්පණ ප්â€à¶»à¶šà·à¶»à¶º වෙත මà·à¶»à·”වන්න +presentation_mode_label=සමර්පණ ප්â€à¶»à¶šà·à¶»à¶º +open_file.title=ගොනුව අරින්න +open_file_label=අරින්න +print.title=මුද්â€à¶»à¶«à¶º +print_label=මුද්â€à¶»à¶«à¶º +download.title=බà·à¶œà¶±à·Šà¶± +download_label=බà·à¶œà¶±à·Šà¶± +bookmark.title=වත්මන් දà·à¶šà·Šà¶¸ (පිටපත් කරන්න හ෠නව කවුළුවක අරින්න) +bookmark_label=වත්මන් දà·à¶šà·Šà¶¸ + +# Secondary toolbar and context menu +tools.title=මෙවලම් +tools_label=මෙවලම් +first_page.title=මුල් පිටුවට යන්න +first_page_label=මුල් පිටුවට යන්න +last_page.title=අවසන් පිටුවට යන්න +last_page_label=අවසන් පිටුවට යන්න + +cursor_text_select_tool.title=පෙළ තේරීමේ මෙවලම සබල කරන්න +cursor_text_select_tool_label=පෙළ තේරීමේ මෙවලම +cursor_hand_tool.title=අත් මෙවලම සබල කරන්න +cursor_hand_tool_label=අත් මෙවලම + +scroll_page.title=පිටුව අනුචලනය භà·à·€à·’තය +scroll_page_label=පිටුව අනුචලනය +scroll_vertical.title=සිරස් අනුචලනය භà·à·€à·’තය +scroll_vertical_label=සිරස් අනුචලනය +scroll_horizontal.title=තිරස් අනුචලනය භà·à·€à·’තය +scroll_horizontal_label=තිරස් අනුචලනය + + +# Document properties dialog box +document_properties.title=ලේඛනයේ ගුණà·à¶‚ග… +document_properties_label=ලේඛනයේ ගුණà·à¶‚ග… +document_properties_file_name=ගොනුවේ නම: +document_properties_file_size=ගොනුවේ ප්â€à¶»à¶¸à·à¶«à¶º: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb=කි.බ. {{size_kb}} (බයිට {{size_b}}) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb=මෙ.බ. {{size_mb}} (බයිට {{size_b}}) +document_properties_title=සිරà·à·ƒà·’ය: +document_properties_author=කතෘ: +document_properties_subject=මà·à¶­à·˜à¶šà·à·€: +document_properties_keywords=මූල පද: +document_properties_creation_date=සෑදූ දිනය: +document_properties_modification_date=සංà·à·à¶°à·’ත දිනය: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=නිර්මà·à¶­à·˜: +document_properties_producer=පීඩීඑෆ් සම්පà·à¶¯à¶š: +document_properties_version=පීඩීඑෆ් අනුවà·à¶¯à¶º: +document_properties_page_count=පිටු ගණන: +document_properties_page_size=පිටුවේ තරම: +document_properties_page_size_unit_inches=අඟල් +document_properties_page_size_unit_millimeters=මි.මී. +document_properties_page_size_orientation_portrait=සිරස් +document_properties_page_size_orientation_landscape=තිරස් +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}}×{{height}}{{unit}}{{name}}{{orientation}} +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=වේගවත් වියමන දà·à¶šà·Šà¶¸: +document_properties_linearized_yes=ඔව් +document_properties_linearized_no=නà·à·„à· +document_properties_close=වසන්න + +print_progress_message=මුද්â€à¶»à¶«à¶º සඳහ෠ලේඛනය සූදà·à¶±à¶¸à·Š වෙමින්… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=අවලංගු කරන්න + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +document_outline_label=ලේඛනයේ වටසන +attachments.title=ඇමුණුම් පෙන්වන්න +attachments_label=ඇමුණුම් +layers.title=ස්තර පෙන්වන්න (සියළු ස්තර පෙරනිමි තත්â€à·€à¶ºà¶§ යළි à·ƒà·à¶šà·ƒà·“මට දෙවරක් ඔබන්න) +layers_label=ස්තර +thumbs.title=සිඟිති රූ පෙන්වන්න +thumbs_label=සිඟිති රූ +findbar.title=ලේඛනයෙහි සොයන්න +findbar_label=සොයන්න + +additional_layers=අතිරේක ස්තර +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=පිටුව {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=පිටුව {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=පිටුවේ සිඟිත රූව {{page}} + +# Find panel button title and messages +find_input.title=සොයන්න +find_input.placeholder=ලේඛනයේ සොයන්න… +find_previous.title=මෙම à·€à·à¶šà·’කඩ කලින් යෙදුණු ස්ථà·à¶±à¶º සොයන්න +find_previous_label=කලින් +find_next.title=මෙම à·€à·à¶šà·’කඩ ඊළඟට යෙදෙන ස්ථà·à¶±à¶º සොයන්න +find_next_label=ඊළඟ +find_highlight=සියල්ල උද්දීපනය +find_entire_word_label=සමස්ත වචන +find_reached_top=ලේඛනයේ මුදුනට ළඟ෠විය, පහළ සිට ඉහළට +find_reached_bottom=ලේඛනයේ අවසà·à¶±à¶ºà¶§ ළඟ෠විය, ඉහළ සිට පහළට +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit[zero]=ගà·à·…පීම් {{limit}} කට වඩ෠+find_match_count_limit[two]=ගà·à·…පුම් {{limit}} කට වඩ෠+find_match_count_limit[few]=ගà·à·…පුම් {{limit}} කට වඩ෠+find_match_count_limit[many]=ගà·à·…පුම් {{limit}} කට වඩ෠+find_match_count_limit[other]=ගà·à·…පුම් {{limit}} කට වඩ෠+find_not_found=à·€à·à¶šà·’කඩ හමු නොවිණි + +# Error panel labels +error_more_info=තව තොරතුරු +error_less_info=අවම තොරතුරු +error_close=වසන්න +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=පීඩීඑෆ්.js v{{version}} (තà·à¶±à·“ම: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=පණිවිඩය: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=ගොනුව: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=පේළිය: {{line}} + +# Predefined zoom values +page_scale_width=පිටුවේ පළල +page_scale_auto=ස්වයංක්â€à¶»à·“ය විà·à·à¶½à¶±à¶º +page_scale_actual=à·ƒà·à¶¶à·‘ ප්â€à¶»à¶¸à·à¶«à¶º +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=පූරණය වෙමින්… +loading_error=පීඩීඑෆ් පූරණය කිරීමේදී දà·à·‚යක් සිදු විය. +invalid_file_error=වලංගු නොවන à·„à· à·„à·à¶±à·’වූ පීඩීඑෆ් ගොනුවකි. +missing_file_error=මඟහà·à¶»à·”ණු පීඩීඑෆ් ගොනුවකි. +unexpected_response_error=අනපේක්â€à·‚ිත සේවà·à¶¯à·à¶ºà¶š ප්â€à¶»à¶­à·’චà·à¶»à¶ºà¶šà·’. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +password_label=මෙම පීඩීඑෆ් ගොනුව විවෘත කිරීමට මුරපදය යොදන්න. +password_invalid=à·€à·à¶»à¶¯à·’ මුරපදයකි. නà·à·€à¶­ උත්සà·à·„ කරන්න. +password_ok=හරි +password_cancel=අවලංගු + +printing_not_supported=අවවà·à¶¯à¶ºà¶ºà·’: මෙම අතිරික්සුව මුද්â€à¶»à¶«à¶º සඳහ෠හොඳින් සහà·à¶º නොදක්වයි. +printing_not_ready=අවවà·à¶¯à¶ºà¶ºà·’: මුද්â€à¶»à¶«à¶ºà¶§ පීඩීඑෆ් ගොනුව සම්පූර්ණයෙන් පූරණය වී නà·à¶­. +web_fonts_disabled=වියමන අකුරු අබලයි: පීඩීඑෆ් වෙත කà·à·€à·à¶¯à·Šà¶¯à·– අකුරු භà·à·€à·’ත෠කළ නොහà·à¶šà·’ය. + +# Editor +editor_none_label=සංස්කරණය අබල කරන්න + +free_text_default_content=පෙළ යොදන්න… + +# Editor +editor_free_text2.title=පෙළ +editor_free_text2_label=පෙළ + + +# Editor Parameters +editor_free_text_color=වර්ණය +editor_free_text_size=තරම +editor_ink_color=වර්ණය +editor_ink_thickness=à¶à¶«à¶šà¶¸ + +# Editor aria +editor_free_text_aria_label=FreeText සංස්කරකය + +# Editor aria +editor_free_text2_aria_label=වදන් සකසනය diff --git a/page/static/js/web/locale/sk/viewer.properties b/page/static/js/web/locale/sk/viewer.properties new file mode 100644 index 0000000..696dc1c --- /dev/null +++ b/page/static/js/web/locale/sk/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Predchádzajúca strana +previous_label=Predchádzajúca +next.title=Nasledujúca strana +next_label=Nasledujúca + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Strana +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=z {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} z {{pagesCount}}) + +zoom_out.title=ZmenÅ¡iÅ¥ veľkosÅ¥ +zoom_out_label=ZmenÅ¡iÅ¥ veľkosÅ¥ +zoom_in.title=ZväÄÅ¡iÅ¥ veľkosÅ¥ +zoom_in_label=ZväÄÅ¡iÅ¥ veľkosÅ¥ +zoom.title=Nastavenie veľkosti +presentation_mode.title=Prepnúť na režim prezentácie +presentation_mode_label=Režim prezentácie +open_file.title=OtvoriÅ¥ súbor +open_file_label=OtvoriÅ¥ +print.title=TlaÄiÅ¥ +print_label=TlaÄiÅ¥ +download.title=StiahnuÅ¥ +download_label=StiahnuÅ¥ +save.title=UložiÅ¥ +save_label=UložiÅ¥ +bookmark.title=Aktuálne zobrazenie (kopírovaÅ¥ alebo otvoriÅ¥ v novom okne) +bookmark_label=Aktuálne zobrazenie + +bookmark1.title=Aktuálna stránka (zobraziÅ¥ adresu URL z aktuálnej stránky) +bookmark1_label=Aktuálna stránka + +# Secondary toolbar and context menu +tools.title=Nástroje +tools_label=Nástroje +first_page.title=PrejsÅ¥ na prvú stranu +first_page_label=PrejsÅ¥ na prvú stranu +last_page.title=PrejsÅ¥ na poslednú stranu +last_page_label=PrejsÅ¥ na poslednú stranu +page_rotate_cw.title=OtoÄiÅ¥ v smere hodinových ruÄiÄiek +page_rotate_cw_label=OtoÄiÅ¥ v smere hodinových ruÄiÄiek +page_rotate_ccw.title=OtoÄiÅ¥ proti smeru hodinových ruÄiÄiek +page_rotate_ccw_label=OtoÄiÅ¥ proti smeru hodinových ruÄiÄiek + +cursor_text_select_tool.title=PovoliÅ¥ výber textu +cursor_text_select_tool_label=Výber textu +cursor_hand_tool.title=PovoliÅ¥ nástroj ruka +cursor_hand_tool_label=Nástroj ruka + +scroll_page.title=PoužiÅ¥ rolovanie po stránkach +scroll_page_label=Rolovanie po stránkach +scroll_vertical.title=PoužívaÅ¥ zvislé posúvanie +scroll_vertical_label=Zvislé posúvanie +scroll_horizontal.title=PoužívaÅ¥ vodorovné posúvanie +scroll_horizontal_label=Vodorovné posúvanie +scroll_wrapped.title=PoužiÅ¥ postupné posúvanie +scroll_wrapped_label=Postupné posúvanie + +spread_none.title=NezdružovaÅ¥ stránky +spread_none_label=Žiadne združovanie +spread_odd.title=Združí stránky a umiestni nepárne stránky vľavo +spread_odd_label=ZdružiÅ¥ stránky (nepárne vľavo) +spread_even.title=Združí stránky a umiestni párne stránky vľavo +spread_even_label=ZdružiÅ¥ stránky (párne vľavo) + +# Document properties dialog box +document_properties.title=Vlastnosti dokumentu… +document_properties_label=Vlastnosti dokumentu… +document_properties_file_name=Názov súboru: +document_properties_file_size=VeľkosÅ¥ súboru: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} kB ({{size_b}} bajtov) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bajtov) +document_properties_title=Názov: +document_properties_author=Autor: +document_properties_subject=Predmet: +document_properties_keywords=KľúÄové slová: +document_properties_creation_date=Dátum vytvorenia: +document_properties_modification_date=Dátum úpravy: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Vytvoril: +document_properties_producer=Tvorca PDF: +document_properties_version=Verzia PDF: +document_properties_page_count=PoÄet strán: +document_properties_page_size=VeľkosÅ¥ stránky: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=na výšku +document_properties_page_size_orientation_landscape=na šírku +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=List +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Rýchle Web View: +document_properties_linearized_yes=Ãno +document_properties_linearized_no=Nie +document_properties_close=ZavrieÅ¥ + +print_progress_message=Príprava dokumentu na tlaÄ… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}} % +print_progress_close=ZruÅ¡iÅ¥ + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Prepnúť boÄný panel +toggle_sidebar_notification2.title=Prepnúť boÄný panel (dokument obsahuje osnovu/prílohy/vrstvy) +toggle_sidebar_label=Prepnúť boÄný panel +document_outline.title=ZobraziÅ¥ osnovu dokumentu (dvojitým kliknutím rozbalíte/zbalíte vÅ¡etky položky) +document_outline_label=Osnova dokumentu +attachments.title=ZobraziÅ¥ prílohy +attachments_label=Prílohy +layers.title=ZobraziÅ¥ vrstvy (dvojitým kliknutím uvediete vÅ¡etky vrstvy do pôvodného stavu) +layers_label=Vrstvy +thumbs.title=ZobraziÅ¥ miniatúry +thumbs_label=Miniatúry +current_outline_item.title=NájsÅ¥ aktuálnu položku v osnove +current_outline_item_label=Aktuálna položka v osnove +findbar.title=HľadaÅ¥ v dokumente +findbar_label=HľadaÅ¥ + +additional_layers=ÄŽalÅ¡ie vrstvy +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Strana {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Strana {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatúra strany {{page}} + +# Find panel button title and messages +find_input.title=HľadaÅ¥ +find_input.placeholder=HľadaÅ¥ v dokumente… +find_previous.title=VyhľadaÅ¥ predchádzajúci výskyt reÅ¥azca +find_previous_label=Predchádzajúce +find_next.title=VyhľadaÅ¥ Äalší výskyt reÅ¥azca +find_next_label=ÄŽalÅ¡ie +find_highlight=ZvýrazniÅ¥ vÅ¡etky +find_match_case_label=RozliÅ¡ovaÅ¥ veľkosÅ¥ písmen +find_match_diacritics_label=RozliÅ¡ovaÅ¥ diakritiku +find_entire_word_label=Celé slová +find_reached_top=Bol dosiahnutý zaÄiatok stránky, pokraÄuje sa od konca +find_reached_bottom=Bol dosiahnutý koniec stránky, pokraÄuje sa od zaÄiatku +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}}. z {{total}} výsledku +find_match_count[two]={{current}}. z {{total}} výsledkov +find_match_count[few]={{current}}. z {{total}} výsledkov +find_match_count[many]={{current}}. z {{total}} výsledkov +find_match_count[other]={{current}}. z {{total}} výsledkov +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Viac než {{limit}} výsledkov +find_match_count_limit[one]=Viac než {{limit}} výsledok +find_match_count_limit[two]=Viac než {{limit}} výsledky +find_match_count_limit[few]=Viac než {{limit}} výsledky +find_match_count_limit[many]=Viac než {{limit}} výsledkov +find_match_count_limit[other]=Viac než {{limit}} výsledkov +find_not_found=Výraz nebol nájdený + +# Error panel labels +error_more_info=ÄŽalÅ¡ie informácie +error_less_info=Menej informácií +error_close=ZavrieÅ¥ +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (zostavenie: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Správa: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Zásobník: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Súbor: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Riadok: {{line}} + +# Predefined zoom values +page_scale_width=Na šírku strany +page_scale_fit=Na veľkosÅ¥ strany +page_scale_auto=Automatická veľkosÅ¥ +page_scale_actual=SkutoÄná veľkosÅ¥ +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}} % + +# Loading indicator messages +loading=NaÄítava sa… +loading_error=PoÄas naÄítavania dokumentu PDF sa vyskytla chyba. +invalid_file_error=Neplatný alebo poÅ¡kodený súbor PDF. +missing_file_error=Chýbajúci súbor PDF. +unexpected_response_error=NeoÄakávaná odpoveÄ zo servera. + +rendering_error=Pri vykresľovaní stránky sa vyskytla chyba. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotácia typu {{type}}] +password_label=Ak chcete otvoriÅ¥ tento súbor PDF, zadajte jeho heslo. +password_invalid=Heslo nie je platné. Skúste to znova. +password_ok=OK +password_cancel=ZruÅ¡iÅ¥ + +printing_not_supported=Upozornenie: tlaÄ nie je v tomto prehliadaÄi plne podporovaná. +printing_not_ready=Upozornenie: súbor PDF nie je plne naÄítaný pre tlaÄ. +web_fonts_disabled=Webové písma sú vypnuté: nie je možné použiÅ¥ písma vložené do súboru PDF. + +# Editor +editor_free_text2.title=Text +editor_free_text2_label=Text +editor_ink2.title=Kreslenie +editor_ink2_label=KresliÅ¥ + +free_text2_default_content=ZaÄnite písať… + +# Editor Parameters +editor_free_text_color=Farba +editor_free_text_size=VeľkosÅ¥ +editor_ink_color=Farba +editor_ink_thickness=Hrúbka +editor_ink_opacity=PriehľadnosÅ¥ + +# Editor aria +editor_free_text2_aria_label=Textový editor +editor_ink2_aria_label=Editor kreslenia +editor_ink_canvas_aria_label=Obrázok vytvorený používateľom diff --git a/page/static/js/web/locale/skr/viewer.properties b/page/static/js/web/locale/skr/viewer.properties new file mode 100644 index 0000000..2d1e1e3 --- /dev/null +++ b/page/static/js/web/locale/skr/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=پچھلا ÙˆØ±Ù‚Û +previous_label=پچھلا +next.title=اڳلا ÙˆØ±Ù‚Û +next_label=اڳلا + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=ÙˆØ±Ù‚Û +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} دا +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} دا {{pagesCount}}) + +zoom_out.title=زوم آؤٹ +zoom_out_label=زوم آؤٹ +zoom_in.title=زوم اÙÙ† +zoom_in_label=زوم اÙÙ† +zoom.title=زوم +presentation_mode.title=پریزنٹیشن موڈ تے سوئچ کرو +presentation_mode_label=پریزنٹیشن موڈ +open_file.title=Ùائل کھولو +open_file_label=کھولو +print.title=چھاپو +print_label=چھاپو +download.title=ڈاؤن لوڈ +download_label=ڈاؤن لوڈ +save.title=Ûتھیکڑا کرو +save_label=Ûتھیکڑا کرو +bookmark.title=Ø­Ø§Ù„ÛŒÛ Ù†Ø¸Ø§Ø±Û (نویں ونڈو ÙˆÙÚ† نقل کرو یا کھولو) +bookmark_label=Ø­Ø§Ù„ÛŒÛ Ù†Ø¸Ø§Ø±Û + +bookmark1.title=Ù…ÙˆØ¬ÙˆØ¯Û ÙˆØ±Ù‚Û (Ù…ÙˆØ¬ÙˆØ¯Û ÙˆØ±Ù‚Û’ کنوں یوآرایل ݙیکھو) +bookmark1_label=Ù…ÙˆØ¬ÙˆØ¯Û ÙˆØ±Ù‚Û + +# Secondary toolbar and context menu +tools.title=اوزار +tools_label=اوزار +first_page.title=Ù¾ÛÙ„Û’ ورقے تے ونڄو +first_page_label=Ù¾ÛÙ„Û’ ورقے تے ونڄو +last_page.title=چھیکڑی ورقے تے ونڄو +last_page_label=چھیکڑی ورقے تے ونڄو +page_rotate_cw.title=Ú¯Ú¾Ú‘ÛŒ وانگوں گھماؤ +page_rotate_cw_label=Ú¯Ú¾Ú‘ÛŒ وانگوں گھماؤ +page_rotate_ccw.title=Ú¯Ú¾Ú‘ÛŒ تے اÙپٹھ گھماؤ +page_rotate_ccw_label=Ú¯Ú¾Ú‘ÛŒ تے اÙپٹھ گھماؤ + +cursor_text_select_tool.title=متن منتخب کݨ والا Ø¢Ù„Û Ùعال بݨاؤ +cursor_text_select_tool_label=متن منتخب کرݨ والا Ø¢Ù„Û +cursor_hand_tool.title=Ûینڈ ٹول Ùعال بݨاؤ +cursor_hand_tool_label=Ûینڈ ٹول + +scroll_page.title=پیج سکرولنگ استعمال کرو +scroll_page_label=پیج سکرولنگ +scroll_vertical.title=عمودی سکرولنگ استعمال کرو +scroll_vertical_label=عمودی سکرولنگ +scroll_horizontal.title=اÙÙ‚ÛŒ سکرولنگ استعمال کرو +scroll_horizontal_label=اÙÙ‚ÛŒ سکرولنگ +scroll_wrapped.title=ویڑھی Ûوئی سکرولنگ استعمال کرو +scroll_wrapped_label=ÙˆÛÚ‘Ú¾ÛŒ Ûوئی سکرولنگ + +spread_none.title=پیج سپریڈز ÙˆÙÚ† شامل Ù†Û ØªÚ¾ÛŒÙˆÙˆÛ” +spread_none_label=کوئی پولھ کائنی +spread_odd.title=طاق نمبر والے ورقیاں دے نال شروع تھیوݨ والے پیج سپریڈز ÙˆÙÚ† شامل تھیوو۔ +spread_odd_label=تاک پھیلاؤ +spread_even.title=جÙت نمر والے ورقیاں نال شروع تھیوݨ والے پیج سپریڈز و٠شامل تھیوو۔ +spread_even_label=جÙت پھیلاؤ + +# Document properties dialog box +document_properties.title=دستاویز خواص… +document_properties_label=دستاویز خواص … +document_properties_file_name=Ùائل دا ناں: +document_properties_file_size=Ùائل دا سائز: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} Ú©Û’ بی ({{size_b}} بائٹس) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} ایم بی ({{size_b}} بائٹس) +document_properties_title=عنوان: +document_properties_author=تخلیق کار: +document_properties_subject=موضوع: +document_properties_keywords=کلیدی الÙاظ: +document_properties_creation_date=تخلیق دی تاریخ: +document_properties_modification_date=ترمیم دی تاریخ: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=تخلیق کار: +document_properties_producer=PDF پیدا کار: +document_properties_version=PDF ورژن: +document_properties_page_count=ÙˆØ±Ù‚Û Ø´Ù…Ø§Ø±ÛŒ: +document_properties_page_size=ÙˆØ±Ù‚Û Ø¯ÛŒ سائز: +document_properties_page_size_unit_inches=ÙˆÙÚ† +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=عمودی انداز +document_properties_page_size_orientation_landscape=اÙقى انداز +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=لیٹر +document_properties_page_size_name_legal=قنونی +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=تکھا ویب نظارÛ: +document_properties_linearized_yes=جیا +document_properties_linearized_no=Ú©Ùˆ +document_properties_close=بند کرو + +print_progress_message=چھاپݨ کیتے دستاویز تیار تھیندے پئے ÛÙ† … +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=منسوخ کرو + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=سائیڈ بار ٹوگل کرو +toggle_sidebar_notification2.title=سائیڈ بار ٹوگل کرو (دستاویز ÙˆÙÚ† آؤٹ لائن/ منسلکات/ پرتاں شامل ÛÙ†) +toggle_sidebar_label=سائیڈ بار ٹوگل کرو +document_outline.title=دستاویز دا Ø®Ø§Ú©Û Ý™Ú©Ú¾Ø§Ø¤ (تمام آئٹمز Ú©ÙˆÚº پھیلاوݨ/سنگوڑݨ کیتے ڈبل Ú©Ù„Ú© کرو) +document_outline_label=دستاویز آؤٹ لائن +attachments.title=نتھیاں ݙکھاؤ +attachments_label=منسلکات +layers.title=پرتاں ݙکھاؤ (تمام پرتاں Ú©ÙˆÚº ÚˆÛŒÙالٹ حالت ÙˆÙÚ† Ø¯ÙˆØ¨Ø§Ø±Û ØªØ±ØªÛŒØ¨ ݙیوݨ کیتے ڈبل Ú©Ù„Ú© کرو) +layers_label=پرتاں +thumbs.title=تھمبنیل ݙکھاؤ +thumbs_label=تھمبنیلز +current_outline_item.title=Ù…ÙˆØ¬ÙˆØ¯Û Ø¢Ø¤Ù¹ لائن آئٹم لبھو +current_outline_item_label=Ù…ÙˆØ¬ÙˆØ¯Û Ø¢Ø¤Ù¹ لائن آئٹم +findbar.title=دستاویز ÙˆÙÚ† لبھو +findbar_label=لبھو + +additional_layers=اضاÙÛŒ پرتاں +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=ÙˆØ±Ù‚Û {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=ÙˆØ±Ù‚Û {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=ورقے دا تھمبنیل {{page}} + +# Find panel button title and messages +find_input.title=لبھو +find_input.placeholder=دستاویز ÙˆÙÚ† لبھو … +find_previous.title=Ùقرے دا پچھلا ÙˆØ§Ù‚Ø¹Û Ù„Ø¨Ú¾Ùˆ +find_previous_label=پچھلا +find_next.title=Ùقرے دا اڳلا ÙˆØ§Ù‚Ø¹Û Ù„Ø¨Ú¾Ùˆ +find_next_label=اڳلا +find_highlight=تمام نشابر کرو +find_match_case_label=Ø­Ø±ÙˆÙ Ù…Ø´Ø§Ø¨Û Ú©Ø±Ùˆ +find_match_diacritics_label=ڈائیکرٹکس Ù…Ø´Ø§Ø¨Û Ú©Ø±Ùˆ +find_entire_word_label=تمام الÙاظ +find_reached_top=ورقے دے شروع تے Ù¾Ùج ڳیا، تلوں جاری کیتا ڳیا +find_reached_bottom=ورقے دے پاند تے Ù¾ÙÚ„ ڳیا، اÙتوں شروع کیتا ڳیا +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ جمع (Ú©Ù„) ]} +find_match_count[one]={{current}} دا {{total}} Ù…ÙˆØ§Ø²Ù†Û Ú©Ø±Ùˆ +find_match_count[two]={{current}} دا {{total}} Ù…ÙˆØ§Ø²Ù†Û +find_match_count[few]={{current}} دا {{total}} Ù…ÙˆØ§Ø²Ù†Û +find_match_count[many]={{current}} دا {{total}} Ù…ÙˆØ§Ø²Ù†Û +find_match_count[other]={{current}} دا {{total}} Ù…ÙˆØ§Ø²Ù†Û +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ جمع (حد) ]} +find_match_count_limit[zero]={{limit}} کنوں Ø²ÛŒØ§Ø¯Û Ù…Ù…Ø§Ø«Ù„ØªØ§ÚºÛ” +find_match_count_limit[one]={{limit}} مماثل کنوں ودھ +find_match_count_limit[two]={{limit}} کنوں Ø²ÛŒØ§Ø¯Û Ù…Ù…Ø§Ø«Ù„ØªØ§ÚºÛ” +find_match_count_limit[few]={{limit}} مماثلاں کنوں ودھ +find_match_count_limit[many]={{limit}} مماثلاں کنوں ودھ +find_match_count_limit[other]={{limit}} مماثلاں کنوں ودھ +find_not_found=ÙÙ‚Ø±Û Ù†Ø¦ÛŒÚº ملیا + +# Error panel labels +error_more_info=ودھیک معلومات +error_less_info=Ú¯Ú¾Ù¹ معلومات +error_close=بند کرو +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (بݨاؤ: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=سنیÛا: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=سٹیک: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Ùائل: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=لائن: {{line}} + +# Predefined zoom values +page_scale_width=ورقے دی چوڑائی +page_scale_fit=ÙˆØ±Ù‚Û Ùٹنگ +page_scale_auto=آپوں آپ زوم +page_scale_actual=اصل میچا +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=لوڈ تھیندا پئے۔۔۔ +loading_error=PDF لوڈ کریندے ویلھے نقص Ø¢ ڳیا۔ +invalid_file_error=غلط یا خراب Ø´Ø¯Û PDF Ùائل۔ +missing_file_error=PDF Ùائل غائب ÛÛ’Û” +unexpected_response_error=سرور دا غیر متوقع جواب۔ + +rendering_error=ÙˆØ±Ù‚Û Ø±ÛŒÙ†ÚˆØ± کریندے ویلھے ÛÚ© خرابی پیش آڳئی۔ + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} تشریح] +password_label=Ø§ÛŒÛ PDF Ùائل کھولݨ کیتے پاس ورڈ درج کرو۔ +password_invalid=غلط پاس ورڈ: Ø¨Ø±Ø§Û Ù…Ûربانی ولدا کوشش کرو۔ +password_ok=ٹھیک ÛÛ’ +password_cancel=منسوخ کرو + +printing_not_supported=چتاوݨی: چھپائی ایں براؤزر تے پوری طراں معاونت Ø´Ø¯Û Ú©Ø§Ø¦Ù†ÛŒÛ” +printing_not_ready=چتاوݨی: PDF چھپائی کیتے پوری طراں لوڈ نئیں تھئی۔ +web_fonts_disabled=ویب Ùونٹس غیر Ùعال ÛÙ†: ایمبیڈڈ PDF Ùونٹس استعمال کرݨ کنوں قاصر ÛÙ† + +# Editor +editor_free_text2.title=متن +editor_free_text2_label=متن +editor_ink2.title=Ú†Ú¾Ú©Ùˆ +editor_ink2_label=Ú†Ú¾Ú©Ùˆ + +free_text2_default_content=ٹائپنگ شروع کرو … + +# Editor Parameters +editor_free_text_color=رنگ +editor_free_text_size=سائز +editor_ink_color=رنگ +editor_ink_thickness=ٹھولھ +editor_ink_opacity=دھندلاپن + +# Editor aria +editor_free_text2_aria_label=ٹیکسٹ ایڈیٹر +editor_ink2_aria_label=ڈرا ایڈیٹر +editor_ink_canvas_aria_label=صار٠دی بݨائی Ûوئی تصویر diff --git a/page/static/js/web/locale/sl/viewer.properties b/page/static/js/web/locale/sl/viewer.properties new file mode 100644 index 0000000..347d764 --- /dev/null +++ b/page/static/js/web/locale/sl/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=PrejÅ¡nja stran +previous_label=Nazaj +next.title=Naslednja stran +next_label=Naprej + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Stran +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=od {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} od {{pagesCount}}) + +zoom_out.title=PomanjÅ¡aj +zoom_out_label=PomanjÅ¡aj +zoom_in.title=PoveÄaj +zoom_in_label=PoveÄaj +zoom.title=PoveÄava +presentation_mode.title=Preklopi v naÄin predstavitve +presentation_mode_label=NaÄin predstavitve +open_file.title=Odpri datoteko +open_file_label=Odpri +print.title=Natisni +print_label=Natisni +download.title=Prenesi +download_label=Prenesi +save.title=Shrani +save_label=Shrani +bookmark.title=Trenutni pogled (kopiraj ali odpri v novem oknu) +bookmark_label=Trenutni pogled + +bookmark1.title=Trenutna stran (prikaži URL, ki vodi do trenutne strani) +bookmark1_label=Na trenutno stran + +# Secondary toolbar and context menu +tools.title=Orodja +tools_label=Orodja +first_page.title=Pojdi na prvo stran +first_page_label=Pojdi na prvo stran +last_page.title=Pojdi na zadnjo stran +last_page_label=Pojdi na zadnjo stran +page_rotate_cw.title=Zavrti v smeri urnega kazalca +page_rotate_cw_label=Zavrti v smeri urnega kazalca +page_rotate_ccw.title=Zavrti v nasprotni smeri urnega kazalca +page_rotate_ccw_label=Zavrti v nasprotni smeri urnega kazalca + +cursor_text_select_tool.title=OmogoÄi orodje za izbor besedila +cursor_text_select_tool_label=Orodje za izbor besedila +cursor_hand_tool.title=OmogoÄi roko +cursor_hand_tool_label=Roka + +scroll_page.title=Uporabi drsenje po strani +scroll_page_label=Drsenje po strani +scroll_vertical.title=Uporabi navpiÄno drsenje +scroll_vertical_label=NavpiÄno drsenje +scroll_horizontal.title=Uporabi vodoravno drsenje +scroll_horizontal_label=Vodoravno drsenje +scroll_wrapped.title=Uporabi ovito drsenje +scroll_wrapped_label=Ovito drsenje + +spread_none.title=Ne združuj razponov strani +spread_none_label=Brez razponov +spread_odd.title=Združuj razpone strani z zaÄetkom pri lihih straneh +spread_odd_label=Lihi razponi +spread_even.title=Združuj razpone strani z zaÄetkom pri sodih straneh +spread_even_label=Sodi razponi + +# Document properties dialog box +document_properties.title=Lastnosti dokumenta … +document_properties_label=Lastnosti dokumenta … +document_properties_file_name=Ime datoteke: +document_properties_file_size=Velikost datoteke: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bajtov) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bajtov) +document_properties_title=Ime: +document_properties_author=Avtor: +document_properties_subject=Tema: +document_properties_keywords=KljuÄne besede: +document_properties_creation_date=Datum nastanka: +document_properties_modification_date=Datum spremembe: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Ustvaril: +document_properties_producer=Izdelovalec PDF: +document_properties_version=RazliÄica PDF: +document_properties_page_count=Å tevilo strani: +document_properties_page_size=Velikost strani: +document_properties_page_size_unit_inches=palcev +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=pokonÄno +document_properties_page_size_orientation_landscape=ležeÄe +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Pismo +document_properties_page_size_name_legal=Pravno +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Hitri spletni ogled: +document_properties_linearized_yes=Da +document_properties_linearized_no=Ne +document_properties_close=Zapri + +print_progress_message=Priprava dokumenta na tiskanje … +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}} % +print_progress_close=PrekliÄi + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Preklopi stransko vrstico +toggle_sidebar_notification2.title=Preklopi stransko vrstico (dokument vsebuje oris/priponke/plasti) +toggle_sidebar_label=Preklopi stransko vrstico +document_outline.title=Prikaži oris dokumenta (dvokliknite za razÅ¡iritev/strnitev vseh predmetov) +document_outline_label=Oris dokumenta +attachments.title=Prikaži priponke +attachments_label=Priponke +layers.title=Prikaži plasti (dvokliknite za ponastavitev vseh plasti na privzeto stanje) +layers_label=Plasti +thumbs.title=Prikaži sliÄice +thumbs_label=SliÄice +current_outline_item.title=Najdi trenutni predmet orisa +current_outline_item_label=Trenutni predmet orisa +findbar.title=Iskanje po dokumentu +findbar_label=Najdi + +additional_layers=Dodatne plasti +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Stran {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Stran {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=SliÄica strani {{page}} + +# Find panel button title and messages +find_input.title=Najdi +find_input.placeholder=Najdi v dokumentu … +find_previous.title=Najdi prejÅ¡njo ponovitev iskanega +find_previous_label=Najdi nazaj +find_next.title=Najdi naslednjo ponovitev iskanega +find_next_label=Najdi naprej +find_highlight=OznaÄi vse +find_match_case_label=Razlikuj velike/male Ärke +find_match_diacritics_label=Razlikuj diakritiÄne znake +find_entire_word_label=Cele besede +find_reached_top=Dosežen zaÄetek dokumenta iz smeri konca +find_reached_bottom=Doseženo konec dokumenta iz smeri zaÄetka +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]=Zadetek {{current}} od {{total}} +find_match_count[two]=Zadetek {{current}} od {{total}} +find_match_count[few]=Zadetek {{current}} od {{total}} +find_match_count[many]=Zadetek {{current}} od {{total}} +find_match_count[other]=Zadetek {{current}} od {{total}} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=VeÄ kot {{limit}} zadetkov +find_match_count_limit[one]=VeÄ kot {{limit}} zadetek +find_match_count_limit[two]=VeÄ kot {{limit}} zadetka +find_match_count_limit[few]=VeÄ kot {{limit}} zadetki +find_match_count_limit[many]=VeÄ kot {{limit}} zadetkov +find_match_count_limit[other]=VeÄ kot {{limit}} zadetkov +find_not_found=Iskanega ni mogoÄe najti + +# Error panel labels +error_more_info=VeÄ informacij +error_less_info=Manj informacij +error_close=Zapri +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js r{{version}} (graditev: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=SporoÄilo: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Sklad: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Datoteka: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Vrstica: {{line}} + +# Predefined zoom values +page_scale_width=Å irina strani +page_scale_fit=Prilagodi stran +page_scale_auto=Samodejno +page_scale_actual=Dejanska velikost +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}} % + +# Loading indicator messages +loading=Nalaganje … +loading_error=Med nalaganjem datoteke PDF je priÅ¡lo do napake. +invalid_file_error=Neveljavna ali pokvarjena datoteka PDF. +missing_file_error=Ni datoteke PDF. +unexpected_response_error=NepriÄakovan odgovor strežnika. + +rendering_error=Med pripravljanjem strani je priÅ¡lo do napake! + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Opomba vrste {{type}}] +password_label=Vnesite geslo za odpiranje te datoteke PDF. +password_invalid=Neveljavno geslo. Poskusite znova. +password_ok=V redu +password_cancel=PrekliÄi + +printing_not_supported=Opozorilo: ta brskalnik ne podpira vseh možnosti tiskanja. +printing_not_ready=Opozorilo: PDF ni v celoti naložen za tiskanje. +web_fonts_disabled=Spletne pisave so onemogoÄene: vgradnih pisav za PDF ni mogoÄe uporabiti. + +# Editor +editor_free_text2.title=Besedilo +editor_free_text2_label=Besedilo +editor_ink2.title=RiÅ¡i +editor_ink2_label=RiÅ¡i + +free_text2_default_content=ZaÄnite tipkati … + +# Editor Parameters +editor_free_text_color=Barva +editor_free_text_size=Velikost +editor_ink_color=Barva +editor_ink_thickness=Debelina +editor_ink_opacity=Neprosojnost + +# Editor aria +editor_free_text2_aria_label=Urejevalnik besedila +editor_ink2_aria_label=Urejevalnik risanja +editor_ink_canvas_aria_label=Uporabnikova slika diff --git a/page/static/js/web/locale/son/viewer.properties b/page/static/js/web/locale/son/viewer.properties new file mode 100644 index 0000000..d4b0d24 --- /dev/null +++ b/page/static/js/web/locale/son/viewer.properties @@ -0,0 +1,173 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Moo bisante +previous_label=Bisante +next.title=Jinehere moo +next_label=Jine + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Moo +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} ra +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} ka hun {{pagesCount}}) ra + +zoom_out.title=Nakasandi +zoom_out_label=Nakasandi +zoom_in.title=Bebbeerandi +zoom_in_label=Bebbeerandi +zoom.title=Bebbeerandi +presentation_mode.title=Bere cebeyan alhaali +presentation_mode_label=Cebeyan alhaali +open_file.title=Tuku feeri +open_file_label=Feeri +print.title=Kar +print_label=Kar +download.title=Zumandi +download_label=Zumandi +bookmark.title=Sohõ gunarro (bere wala feeri zanfun taaga ra) +bookmark_label=Sohõ gunaroo + +# Secondary toolbar and context menu +tools.title=Goyjinawey +tools_label=Goyjinawey +first_page.title=Koy moo jinaa ga +first_page_label=Koy moo jinaa ga +last_page.title=Koy moo koraa ga +last_page_label=Koy moo koraa ga +page_rotate_cw.title=Kuubi kanbe guma here +page_rotate_cw_label=Kuubi kanbe guma here +page_rotate_ccw.title=Kuubi kanbe wowa here +page_rotate_ccw_label=Kuubi kanbe wowa here + + +# Document properties dialog box +document_properties.title=Takadda mayrawey… +document_properties_label=Takadda mayrawey… +document_properties_file_name=Tuku maa: +document_properties_file_size=Tuku adadu: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb=KB {{size_kb}} (cebsu-ize {{size_b}}) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb=MB {{size_mb}} (cebsu-ize {{size_b}}) +document_properties_title=Tiiramaa: +document_properties_author=Hantumkaw: +document_properties_subject=Dalil: +document_properties_keywords=Kufalkalimawey: +document_properties_creation_date=Teeyan han: +document_properties_modification_date=Barmayan han: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Teekaw: +document_properties_producer=PDF berandikaw: +document_properties_version=PDF dumi: +document_properties_page_count=Moo hinna: +document_properties_close=Daabu + +print_progress_message=Goo ma takaddaa soolu k'a kar se… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=NaÅ‹ + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Kanjari ceraw zuu +toggle_sidebar_label=Kanjari ceraw zuu +document_outline.title=Takaddaa korfur alhaaloo cebe (naagu cee hinka ka haya-izey kul hayandi/kankamandi) +document_outline_label=Takadda filla-boÅ‹ +attachments.title=Hangarey cebe +attachments_label=Hangarey +thumbs.title=Kabeboy biyey cebe +thumbs_label=Kabeboy biyey +findbar.title=Ceeci takaddaa ra +findbar_label=Ceeci + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title={{page}} moo +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Kabeboy bii {{page}} moo Å¡e + +# Find panel button title and messages +find_input.title=Ceeci +find_input.placeholder=Ceeci takaddaa ra… +find_previous.title=KalimaɲaÅ‹oo bangayri bisantaa ceeci +find_previous_label=Bisante +find_next.title=KalimaɲaÅ‹oo hiino bangayroo ceeci +find_next_label=Jine +find_highlight=Ikul Å¡ilbay +find_match_case_label=Harfu-beeriyan hawgay +find_reached_top=A too moÅ‹oo boÅ‹oo, koy jine ka Å¡initin nda cewoo +find_reached_bottom=A too moɲoo cewoo, koy jine Å¡intioo ga +find_not_found=Kalimaɲaa mana duwandi + +# Error panel labels +error_more_info=Alhabar tontoni +error_less_info=Alhabar tontoni +error_close=Daabu +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Alhabar: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Dekeri: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Tuku: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Žeeri: {{line}} +rendering_error=Firka bangay kaÅ‹ moɲoo goo ma willandi. + +# Predefined zoom values +page_scale_width=Mooo hayyan +page_scale_fit=Moo sawayan +page_scale_auto=BoÅ‹Å¡e azzaati barmayyan +page_scale_actual=Adadu cimi +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=Firka bangay kaÅ‹ PDF goo ma zumandi. +invalid_file_error=PDF tuku laala wala laybante. +missing_file_error=PDF tuku kumante. +unexpected_response_error=Manti ferÅ¡ikaw tuuruyan maatante. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt={{type}} maasa-caw] +password_label=Å ennikufal dam ka PDF tukoo woo feeri. +password_invalid=Å ennikufal laalo. Ceeci koyne taare. +password_ok=Ayyo +password_cancel=NaÅ‹ + +printing_not_supported=Yaamar: Karyan Å¡i tee ka timme nda ceecikaa woo. +printing_not_ready=Yaamar: PDF Å¡i zunbu ka timme karyan Å¡e. +web_fonts_disabled=Interneti Å¡igirawey kay: Å¡i hin ka goy nda PDF Å¡igira hurantey. + diff --git a/page/static/js/web/locale/sq/viewer.properties b/page/static/js/web/locale/sq/viewer.properties new file mode 100644 index 0000000..45bfb39 --- /dev/null +++ b/page/static/js/web/locale/sq/viewer.properties @@ -0,0 +1,271 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Faqja e Mëparshme +previous_label=E mëparshmja +next.title=Faqja Pasuese +next_label=Pasuesja + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Faqe +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=nga {{pagesCount}} gjithsej +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} nga {{pagesCount}}) + +zoom_out.title=Zvogëlojeni +zoom_out_label=Zvogëlojeni +zoom_in.title=Zmadhojeni +zoom_in_label=Zmadhojini +zoom.title=Zmadhim/Zvogëlim +presentation_mode.title=Kalo te Mënyra Paraqitje +presentation_mode_label=Mënyra Paraqitje +open_file.title=Hapni Kartelë +open_file_label=Hape +print.title=Shtypje +print_label=Shtype +download.title=Shkarkim +download_label=Shkarkoje +save.title=Ruaje +save_label=Ruaje +bookmark.title=Pamja e tanishme (kopjojeni ose hapeni në dritare të re) +bookmark_label=Pamja e Tanishme + +bookmark1.title=Faqja e Tanishme (Shihni URL nga Faqja e Tanishme) +bookmark1_label=Faqja e Tanishme + +# Secondary toolbar and context menu +tools.title=Mjete +tools_label=Mjete +first_page.title=Kaloni te Faqja e Parë +first_page_label=Kaloni te Faqja e Parë +last_page.title=Kaloni te Faqja e Fundit +last_page_label=Kaloni te Faqja e Fundit +page_rotate_cw.title=Rrotullojeni Në Kahun Orar +page_rotate_cw_label=Rrotulloje Në Kahun Orar +page_rotate_ccw.title=Rrotullojeni Në Kahun Kundërorar +page_rotate_ccw_label=Rrotulloje Në Kahun Kundërorar + +cursor_text_select_tool.title=Aktivizo Mjet Përzgjedhjeje Teksti +cursor_text_select_tool_label=Mjet Përzgjedhjeje Teksti +cursor_hand_tool.title=Aktivizo Mjetin Dorë +cursor_hand_tool_label=Mjeti Dorë + +scroll_page.title=Përdor Rrëshqitje Në Faqe +scroll_page_label=Rrëshqitje Në Faqe +scroll_vertical.title=Përdor Rrëshqitje Vertikale +scroll_vertical_label=Rrëshqitje Vertikale +scroll_horizontal.title=Përdor Rrëshqitje Horizontale +scroll_horizontal_label=Rrëshqitje Horizontale +scroll_wrapped.title=Përdor Rrëshqitje Me Mbështjellje +scroll_wrapped_label=Rrëshqitje Me Mbështjellje + + +# Document properties dialog box +document_properties.title=Veti Dokumenti… +document_properties_label=Veti Dokumenti… +document_properties_file_name=Emër kartele: +document_properties_file_size=Madhësi kartele: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bajte) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bajte) +document_properties_title=Titull: +document_properties_author=Autor: +document_properties_subject=Subjekt: +document_properties_keywords=Fjalëkyçe: +document_properties_creation_date=Datë Krijimi: +document_properties_modification_date=Datë Ndryshimi: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Krijues: +document_properties_producer=Prodhues PDF-je: +document_properties_version=Version PDF-je: +document_properties_page_count=Numër Faqesh: +document_properties_page_size=Madhësi Faqeje: +document_properties_page_size_unit_inches=inç +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=portret +document_properties_page_size_orientation_landscape=së gjeri +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Parje e Shpjetë në Web: +document_properties_linearized_yes=Po +document_properties_linearized_no=Jo +document_properties_close=Mbylleni + +print_progress_message=Po përgatitet dokumenti për shtypje… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Anuloje + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Shfaqni/Fshihni Anështyllën +toggle_sidebar_notification2.title=Hap/Mbyll Anështylë (dokumenti përmban përvijim/nashkëngjitje/shtresa) +toggle_sidebar_label=Shfaq/Fshih Anështyllën +document_outline.title=Shfaqni Përvijim Dokumenti (dyklikoni që të shfaqen/fshihen krejt elementët) +document_outline_label=Përvijim Dokumenti +attachments.title=Shfaqni Bashkëngjitje +attachments_label=Bashkëngjitje +layers.title=Shfaq Shtresa (dyklikoni që të rikthehen krejt shtresat në gjendjen e tyre parazgjedhje) +layers_label=Shtresa +thumbs.title=Shfaqni Miniatura +thumbs_label=Miniatura +current_outline_item.title=Gjej Objektin e Tanishëm të Përvijuar +current_outline_item_label=Objekt i Tanishëm i Përvijuar +findbar.title=Gjeni në Dokument +findbar_label=Gjej + +additional_layers=Shtresa Shtesë +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Faqja {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Faqja {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniaturë e Faqes {{page}} + +# Find panel button title and messages +find_input.title=Gjej +find_input.placeholder=Gjeni në dokument… +find_previous.title=Gjeni hasjen e mëparshme të togfjalëshit +find_previous_label=E mëparshmja +find_next.title=Gjeni hasjen pasuese të togfjalëshit +find_next_label=Pasuesja +find_highlight=Theksoji të tëra +find_match_case_label=Siç Është Shkruar +find_match_diacritics_label=Me Përputhje Me Shenjat Diakritike +find_entire_word_label=Fjalë të Plota +find_reached_top=U mbërrit në krye të dokumentit, vazhduar prej fundit +find_reached_bottom=U mbërrit në fund të dokumentit, vazhduar prej kreut +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} nga {{total}} përputhje gjithsej +find_match_count[two]={{current}} nga {{total}} përputhje gjithsej +find_match_count[few]={{current}} nga {{total}} përputhje gjithsej +find_match_count[many]={{current}} nga {{total}} përputhje gjithsej +find_match_count[other]={{current}} nga {{total}} përputhje gjithsej +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Më shumë se {{limit}} përputhje +find_match_count_limit[one]=Më shumë se {{limit}} përputhje +find_match_count_limit[two]=Më shumë se {{limit}} përputhje +find_match_count_limit[few]=Më shumë se {{limit}} përputhje +find_match_count_limit[many]=Më shumë se {{limit}} përputhje +find_match_count_limit[other]=Më shumë se {{limit}} përputhje +find_not_found=Togfjalësh që s’gjendet + +# Error panel labels +error_more_info=Më Tepër Hollësi +error_less_info=Më Pak të Dhëna +error_close=Mbylleni +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mesazh: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Kartelë: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Rresht: {{line}} + +# Predefined zoom values +page_scale_width=Gjerësi Faqeje +page_scale_fit=Sa Nxë Faqja +page_scale_auto=Zoom i Vetvetishëm +page_scale_actual=Madhësia Faktike +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Po ngarkohet… +loading_error=Ndodhi një gabim gjatë ngarkimit të PDF-së. +invalid_file_error=Kartelë PDF e pavlefshme ose e dëmtuar. +missing_file_error=Kartelë PDF që mungon. +unexpected_response_error=Përgjigje shërbyesi e papritur. + +rendering_error=Ndodhi një gabim gjatë riprodhimit të faqes. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Nënvizim {{type}}] +password_label=Jepni fjalëkalimin që të hapet kjo kartelë PDF. +password_invalid=Fjalëkalim i pavlefshëm. Ju lutemi, riprovoni. +password_ok=OK +password_cancel=Anuloje + +printing_not_supported=Kujdes: Shtypja s’mbulohet plotësisht nga ky shfletues. +printing_not_ready=Kujdes: PDF-ja s’është ngarkuar plotësisht që ta shtypni. +web_fonts_disabled=Shkronjat Web janë të çaktivizuara: s’arrihet të përdoren shkronja të trupëzuara në PDF. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=Vizatoni +editor_ink2_label=Vizatoni + +free_text2_default_content=Filloni të shtypni… + +# Editor Parameters +editor_free_text_color=Ngjyrë +editor_free_text_size=Madhësi +editor_ink_color=Ngjyrë +editor_ink_thickness=Trashësi +editor_ink_opacity=Patejdukshmëri + +# Editor aria +editor_free_text2_aria_label=Përpunues Tekstesh +editor_ink2_aria_label=Përpunues Vizatimesh +editor_ink_canvas_aria_label=Figurë e krijuar nga përdoruesi diff --git a/page/static/js/web/locale/sr/viewer.properties b/page/static/js/web/locale/sr/viewer.properties new file mode 100644 index 0000000..207b417 --- /dev/null +++ b/page/static/js/web/locale/sr/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Претходна Ñтраница +previous_label=Претходна +next.title=Следећа Ñтраница +next_label=Следећа + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Страница +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=од {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} од {{pagesCount}}) + +zoom_out.title=Умањи +zoom_out_label=Умањи +zoom_in.title=Увеличај +zoom_in_label=Увеличај +zoom.title=Увеличавање +presentation_mode.title=Промени на приказ у режиму презентације +presentation_mode_label=Режим презентације +open_file.title=Отвори датотеку +open_file_label=Отвори +print.title=Штампај +print_label=Штампај +download.title=Преузми +download_label=Преузми +save.title=Сачувај +save_label=Сачувај +bookmark.title=Тренутни приказ (копирај или отвори у новом прозору) +bookmark_label=Тренутни приказ + +bookmark1.title=Тренутна Ñтраница (погледајте URL Ñа тренутне Ñтранице) +bookmark1_label=Тренутна Ñтраница + +# Secondary toolbar and context menu +tools.title=Ðлатке +tools_label=Ðлатке +first_page.title=Иди на прву Ñтраницу +first_page_label=Иди на прву Ñтраницу +last_page.title=Иди на поÑледњу Ñтраницу +last_page_label=Иди на поÑледњу Ñтраницу +page_rotate_cw.title=Ротирај у Ñмеру казаљке на Ñату +page_rotate_cw_label=Ротирај у Ñмеру казаљке на Ñату +page_rotate_ccw.title=Ротирај у Ñмеру Ñупротном од казаљке на Ñату +page_rotate_ccw_label=Ротирај у Ñмеру Ñупротном од казаљке на Ñату + +cursor_text_select_tool.title=Омогући алат за Ñелектовање текÑта +cursor_text_select_tool_label=Ðлат за Ñелектовање текÑта +cursor_hand_tool.title=Омогући алат за померање +cursor_hand_tool_label=Ðлат за померање + +scroll_page.title=КориÑти Ñкроловање по омоту +scroll_page_label=Скроловање Ñтранице +scroll_vertical.title=КориÑти вертикално Ñкроловање +scroll_vertical_label=Вертикално Ñкроловање +scroll_horizontal.title=КориÑти хоризонтално Ñкроловање +scroll_horizontal_label=Хоризонтално Ñкроловање +scroll_wrapped.title=КориÑти Ñкроловање по омоту +scroll_wrapped_label=Скроловање по омоту + +spread_none.title=Ðемој Ñпајати ширења Ñтраница +spread_none_label=Без раÑпроÑтирања +spread_odd.title=Споји ширења Ñтраница које почињу непарним бројем +spread_odd_label=Ðепарна раÑпроÑтирања +spread_even.title=Споји ширења Ñтраница које почињу парним бројем +spread_even_label=Парна раÑпроÑтирања + +# Document properties dialog box +document_properties.title=Параметри документа… +document_properties_label=Параметри документа… +document_properties_file_name=Име датотеке: +document_properties_file_size=Величина датотеке: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} B) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} B) +document_properties_title=ÐаÑлов: +document_properties_author=Ðутор: +document_properties_subject=Тема: +document_properties_keywords=Кључне речи: +document_properties_creation_date=Датум креирања: +document_properties_modification_date=Датум модификације: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Стваралац: +document_properties_producer=PDF произвођач: +document_properties_version=PDF верзија: +document_properties_page_count=Број Ñтраница: +document_properties_page_size=Величина Ñтранице: +document_properties_page_size_unit_inches=ин +document_properties_page_size_unit_millimeters=мм +document_properties_page_size_orientation_portrait=уÑправно +document_properties_page_size_orientation_landscape=водоравно +document_properties_page_size_name_a3=Ð3 +document_properties_page_size_name_a4=Ð4 +document_properties_page_size_name_letter=Слово +document_properties_page_size_name_legal=Права +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Брз веб приказ: +document_properties_linearized_yes=Да +document_properties_linearized_no=Ðе +document_properties_close=Затвори + +print_progress_message=Припремам документ за штампање… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Откажи + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Прикажи додатну палету +toggle_sidebar_notification2.title=Прикажи/Ñакриј бочну траку (документ Ñадржи контуру/прилоге/Ñлојеве) +toggle_sidebar_label=Прикажи додатну палету +document_outline.title=Прикажи Ñтруктуру документа (двоÑтруким кликом проширујете/Ñкупљате Ñве Ñтавке) +document_outline_label=Контура документа +attachments.title=Прикажи прилоге +attachments_label=Прилози +layers.title=Прикажи Ñлојеве (дупли клик за враћање Ñвих Ñлојева у подразумевано Ñтање) +layers_label=Слојеви +thumbs.title=Прикажи Ñличице +thumbs_label=Сличице +current_outline_item.title=Пронађите тренутни елемент Ñтруктуре +current_outline_item_label=Тренутна контура +findbar.title=Пронађи у документу +findbar_label=Пронађи + +additional_layers=Додатни Ñлојеви +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Страница {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Страница {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Сличица од Ñтранице {{page}} + +# Find panel button title and messages +find_input.title=Пронађи +find_input.placeholder=Пронађи у документу… +find_previous.title=Пронађи претходно појављивање фразе +find_previous_label=Претходна +find_next.title=Пронађи Ñледеће појављивање фразе +find_next_label=Следећа +find_highlight=ИÑтакнути Ñве +find_match_case_label=Подударања +find_match_diacritics_label=Дијакритика +find_entire_word_label=Целе речи +find_reached_top=ДоÑтигнут врх документа, наÑтавио Ñа дна +find_reached_bottom=ДоÑтигнуто дно документа, наÑтавио Ñа врха +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} од {{total}} одговара +find_match_count[two]={{current}} од {{total}} одговара +find_match_count[few]={{current}} од {{total}} одговара +find_match_count[many]={{current}} од {{total}} одговара +find_match_count[other]={{current}} од {{total}} одговара +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Више од {{limit}} одговара +find_match_count_limit[one]=Више од {{limit}} одговара +find_match_count_limit[two]=Више од {{limit}} одговара +find_match_count_limit[few]=Више од {{limit}} одговара +find_match_count_limit[many]=Више од {{limit}} одговара +find_match_count_limit[other]=Више од {{limit}} одговара +find_not_found=Фраза није пронађена + +# Error panel labels +error_more_info=Више информација +error_less_info=Мање информација +error_close=Затвори +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Порука: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Стек: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Датотека: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Линија: {{line}} + +# Predefined zoom values +page_scale_width=Ширина Ñтранице +page_scale_fit=Прилагоди Ñтраницу +page_scale_auto=ÐутоматÑко увеличавање +page_scale_actual=Стварна величина +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Учитавање… +loading_error=Дошло је до грешке приликом учитавања PDF-а. +invalid_file_error=PDF датотека је неважећа или је оштећена. +missing_file_error=ÐедоÑтаје PDF датотека. +unexpected_response_error=Ðеочекиван одговор од Ñервера. + +rendering_error=Дошло је до грешке приликом рендеровања ове Ñтранице. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} коментар] +password_label=УнеÑите лозинку да биÑте отворили овај PDF докуменат. +password_invalid=ÐеиÑправна лозинка. Покушајте поново. +password_ok=У реду +password_cancel=Откажи + +printing_not_supported=Упозорење: Штампање није у потпуноÑти подржано у овом прегледачу. +printing_not_ready=Упозорење: PDF није у потпуноÑти учитан за штампу. +web_fonts_disabled=Веб фонтови Ñу онемогућени: не могу кориÑтити уграђене PDF фонтове. + +# Editor +editor_free_text2.title=ТекÑÑ‚ +editor_free_text2_label=ТекÑÑ‚ +editor_ink2.title=Цртај +editor_ink2_label=Цртај + +free_text2_default_content=Почни куцање… + +# Editor Parameters +editor_free_text_color=Боја +editor_free_text_size=Величина +editor_ink_color=Боја +editor_ink_thickness=Дебљина +editor_ink_opacity=Опацитет + +# Editor aria +editor_free_text2_aria_label=Уређивач текÑта +editor_ink2_aria_label=Уређивач цртежа +editor_ink_canvas_aria_label=КориÑнички направљена Ñлика diff --git a/page/static/js/web/locale/sv-SE/viewer.properties b/page/static/js/web/locale/sv-SE/viewer.properties new file mode 100644 index 0000000..55c31aa --- /dev/null +++ b/page/static/js/web/locale/sv-SE/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=FöregÃ¥ende sida +previous_label=FöregÃ¥ende +next.title=Nästa sida +next_label=Nästa + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Sida +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=av {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} av {{pagesCount}}) + +zoom_out.title=Zooma ut +zoom_out_label=Zooma ut +zoom_in.title=Zooma in +zoom_in_label=Zooma in +zoom.title=Zoom +presentation_mode.title=Byt till presentationsläge +presentation_mode_label=Presentationsläge +open_file.title=Öppna fil +open_file_label=Öppna +print.title=Skriv ut +print_label=Skriv ut +download.title=Hämta +download_label=Hämta +save.title=Spara +save_label=Spara +bookmark.title=Aktuell vy (kopiera eller öppna i nytt fönster) +bookmark_label=Aktuell vy + +bookmark1.title=Aktuell sida (Visa URL frÃ¥n aktuell sida) +bookmark1_label=Aktuell sida + +# Secondary toolbar and context menu +tools.title=Verktyg +tools_label=Verktyg +first_page.title=GÃ¥ till första sidan +first_page_label=GÃ¥ till första sidan +last_page.title=GÃ¥ till sista sidan +last_page_label=GÃ¥ till sista sidan +page_rotate_cw.title=Rotera medurs +page_rotate_cw_label=Rotera medurs +page_rotate_ccw.title=Rotera moturs +page_rotate_ccw_label=Rotera moturs + +cursor_text_select_tool.title=Aktivera textmarkeringsverktyg +cursor_text_select_tool_label=Textmarkeringsverktyg +cursor_hand_tool.title=Aktivera handverktyg +cursor_hand_tool_label=Handverktyg + +scroll_page.title=Använd sidrullning +scroll_page_label=Sidrullning +scroll_vertical.title=Använd vertikal rullning +scroll_vertical_label=Vertikal rullning +scroll_horizontal.title=Använd horisontell rullning +scroll_horizontal_label=Horisontell rullning +scroll_wrapped.title=Använd överlappande rullning +scroll_wrapped_label=Överlappande rullning + +spread_none.title=Visa enkelsidor +spread_none_label=Enkelsidor +spread_odd.title=Visa uppslag med olika sidnummer till vänster +spread_odd_label=Uppslag med framsida +spread_even.title=Visa uppslag med lika sidnummer till vänster +spread_even_label=Uppslag utan framsida + +# Document properties dialog box +document_properties.title=Dokumentegenskaper… +document_properties_label=Dokumentegenskaper… +document_properties_file_name=Filnamn: +document_properties_file_size=Filstorlek: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} kB ({{size_b}} byte) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} byte) +document_properties_title=Titel: +document_properties_author=Författare: +document_properties_subject=Ämne: +document_properties_keywords=Nyckelord: +document_properties_creation_date=Skapades: +document_properties_modification_date=Ändrades: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Skapare: +document_properties_producer=PDF-producent: +document_properties_version=PDF-version: +document_properties_page_count=Sidantal: +document_properties_page_size=Pappersstorlek: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=porträtt +document_properties_page_size_orientation_landscape=landskap +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Snabb webbvisning: +document_properties_linearized_yes=Ja +document_properties_linearized_no=Nej +document_properties_close=Stäng + +print_progress_message=Förbereder sidor för utskrift… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Avbryt + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Visa/dölj sidofält +toggle_sidebar_notification2.title=Växla sidofält (dokumentet innehÃ¥ller dokumentstruktur/bilagor/lager) +toggle_sidebar_label=Visa/dölj sidofält +document_outline.title=Visa dokumentdisposition (dubbelklicka för att expandera/komprimera alla objekt) +document_outline_label=Dokumentöversikt +attachments.title=Visa Bilagor +attachments_label=Bilagor +layers.title=Visa lager (dubbelklicka för att Ã¥terställa alla lager till standardläge) +layers_label=Lager +thumbs.title=Visa miniatyrer +thumbs_label=Miniatyrer +current_outline_item.title=Hitta aktuellt dispositionsobjekt +current_outline_item_label=Aktuellt dispositionsobjekt +findbar.title=Sök i dokument +findbar_label=Sök + +additional_layers=Ytterligare lager +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Sida {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Sida {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatyr av sida {{page}} + +# Find panel button title and messages +find_input.title=Sök +find_input.placeholder=Sök i dokument… +find_previous.title=Hitta föregÃ¥ende förekomst av frasen +find_previous_label=FöregÃ¥ende +find_next.title=Hitta nästa förekomst av frasen +find_next_label=Nästa +find_highlight=Markera alla +find_match_case_label=Matcha versal/gemen +find_match_diacritics_label=Matcha diakritiska tecken +find_entire_word_label=Hela ord +find_reached_top=NÃ¥dde början av dokumentet, började frÃ¥n slutet +find_reached_bottom=NÃ¥dde slutet pÃ¥ dokumentet, började frÃ¥n början +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} av {{total}} träff +find_match_count[two]={{current}} av {{total}} träffar +find_match_count[few]={{current}} av {{total}} träffar +find_match_count[many]={{current}} av {{total}} träffar +find_match_count[other]={{current}} av {{total}} träffar +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Mer än {{limit}} träffar +find_match_count_limit[one]=Mer än {{limit}} träff +find_match_count_limit[two]=Mer än {{limit}} träffar +find_match_count_limit[few]=Mer än {{limit}} träffar +find_match_count_limit[many]=Mer än {{limit}} träffar +find_match_count_limit[other]=Mer än {{limit}} träffar +find_not_found=Frasen hittades inte + +# Error panel labels +error_more_info=Mer information +error_less_info=Mindre information +error_close=Stäng +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Meddelande: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fil: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Rad: {{line}} + +# Predefined zoom values +page_scale_width=Sidbredd +page_scale_fit=Anpassa sida +page_scale_auto=Automatisk zoom +page_scale_actual=Verklig storlek +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Laddar… +loading_error=Ett fel uppstod vid laddning av PDF-filen. +invalid_file_error=Ogiltig eller korrupt PDF-fil. +missing_file_error=Saknad PDF-fil. +unexpected_response_error=Oväntat svar frÃ¥n servern. + +rendering_error=Ett fel uppstod vid visning av sidan. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}} {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}}-annotering] +password_label=Skriv in lösenordet för att öppna PDF-filen. +password_invalid=Ogiltigt lösenord. Försök igen. +password_ok=OK +password_cancel=Avbryt + +printing_not_supported=Varning: Utskrifter stöds inte helt av den här webbläsaren. +printing_not_ready=Varning: PDF:en är inte klar för utskrift. +web_fonts_disabled=Webbtypsnitt är inaktiverade: kan inte använda inbäddade PDF-typsnitt. + +# Editor +editor_free_text2.title=Text +editor_free_text2_label=Text +editor_ink2.title=Rita +editor_ink2_label=Rita + +free_text2_default_content=Börja skriva… + +# Editor Parameters +editor_free_text_color=Färg +editor_free_text_size=Storlek +editor_ink_color=Färg +editor_ink_thickness=Tjocklek +editor_ink_opacity=Opacitet + +# Editor aria +editor_free_text2_aria_label=Textredigerare +editor_ink2_aria_label=Ritredigerare +editor_ink_canvas_aria_label=Användarskapad bild diff --git a/page/static/js/web/locale/szl/viewer.properties b/page/static/js/web/locale/szl/viewer.properties new file mode 100644 index 0000000..88bc57a --- /dev/null +++ b/page/static/js/web/locale/szl/viewer.properties @@ -0,0 +1,245 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Piyrwyjszo strÅna +previous_label=Piyrwyjszo +next.title=Nastympno strÅna +next_label=Dalij + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=StrÅna +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=ze {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} ze {{pagesCount}}) + +zoom_out.title=ZmyÅ„sz +zoom_out_label=ZmyÅ„sz +zoom_in.title=Zwiynksz +zoom_in_label=Zwiynksz +zoom.title=Srogość +presentation_mode.title=PrzeÅ‚Åncz na tryb prezyntacyje +presentation_mode_label=Tryb prezyntacyje +open_file.title=Ôdewrzij zbiÅr +open_file_label=Ôdewrzij +print.title=Durkuj +print_label=Durkuj +download.title=Pobier +download_label=Pobier +bookmark.title=Aktualny widok (kopiuj abo ôdewrzij w nowym ôknie) +bookmark_label=Aktualny widok + +# Secondary toolbar and context menu +tools.title=Noczynia +tools_label=Noczynia +first_page.title=Idź ku piyrszyj strÅnie +first_page_label=Idź ku piyrszyj strÅnie +last_page.title=Idź ku ôstatnij strÅnie +last_page_label=Idź ku ôstatnij strÅnie +page_rotate_cw.title=Zwyrtnij w prawo +page_rotate_cw_label=Zwyrtnij w prawo +page_rotate_ccw.title=Zwyrtnij w lewo +page_rotate_ccw_label=Zwyrtnij w lewo + +cursor_text_select_tool.title=ZaÅ‚Åncz noczynie ôbiyranio tekstu +cursor_text_select_tool_label=Noczynie ôbiyranio tekstu +cursor_hand_tool.title=ZaÅ‚Åncz noczynie rÅnczka +cursor_hand_tool_label=Noczynie rÅnczka + +scroll_vertical.title=Używej piÅnowego przewijanio +scroll_vertical_label=PiÅnowe przewijanie +scroll_horizontal.title=Używej poziÅmego przewijanio +scroll_horizontal_label=PoziÅme przewijanie +scroll_wrapped.title=Używej szichtowego przewijanio +scroll_wrapped_label=Szichtowe przewijanie + +spread_none.title=Niy dowej strÅn w widoku po dwie +spread_none_label=Po jednyj strÅnie +spread_odd.title=Pokoż strÅny po dwie; niyporziste po lewyj +spread_odd_label=Niyporziste po lewyj +spread_even.title=Pokoż strÅny po dwie; porziste po lewyj +spread_even_label=Porziste po lewyj + +# Document properties dialog box +document_properties.title=WÅ‚osnoÅ›ci dokumyntu… +document_properties_label=WÅ‚osnoÅ›ci dokumyntu… +document_properties_file_name=Miano zbioru: +document_properties_file_size=Srogość zbioru: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} B) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} B) +document_properties_title=TytuÅ‚: +document_properties_author=AutÅr: +document_properties_subject=Tymat: +document_properties_keywords=Kluczowe sÅ‚owa: +document_properties_creation_date=Data zrychtowanio: +document_properties_modification_date=Data zmiany: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Zrychtowane ôd: +document_properties_producer=PDF ôd: +document_properties_version=Wersyjo PDF: +document_properties_page_count=Wielość strÅn: +document_properties_page_size=Srogość strÅny: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=piÅnowo +document_properties_page_size_orientation_landscape=poziÅmo +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Gibki necowy podglÅnd: +document_properties_linearized_yes=Ja +document_properties_linearized_no=Niy +document_properties_close=Zawrzij + +print_progress_message=Rychtowanie dokumyntu do durku… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Pociep + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=PrzeÅ‚Åncz posek na rancie +toggle_sidebar_notification2.title=PrzeÅ‚Åncz posek na rancie (dokumynt mo struktura/przidowki/warstwy) +toggle_sidebar_label=PrzeÅ‚Åncz posek na rancie +document_outline.title=Pokoż struktura dokumyntu (tuplowane klikniyncie rozszyrzo/swijo wszyskie elymynta) +document_outline_label=Struktura dokumyntu +attachments.title=Pokoż przidowki +attachments_label=Przidowki +layers.title=Pokoż warstwy (tuplowane klikniyncie resetuje wszyskie warstwy do bazowego stanu) +layers_label=Warstwy +thumbs.title=Pokoż miniatury +thumbs_label=Miniatury +findbar.title=Znojdź w dokumyncie +findbar_label=Znojdź + +additional_layers=Nadbytnie warstwy +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=StrÅna {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura strÅny {{page}} + +# Find panel button title and messages +find_input.title=Znojdź +find_input.placeholder=Znojdź w dokumyncie… +find_previous.title=Znojdź piyrwyjsze pokozanie sie tyj frazy +find_previous_label=Piyrwyjszo +find_next.title=Znojdź nastympne pokozanie sie tyj frazy +find_next_label=Dalij +find_highlight=Zaznacz wszysko +find_match_case_label=Poznowej srogość liter +find_entire_word_label=CoÅ‚ke sÅ‚owa +find_reached_top=DoszÅ‚o do samego wiyrchu strÅny, dalij ôd spodku +find_reached_bottom=DoszÅ‚o do samego spodku strÅny, dalij ôd wiyrchu +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} ze {{total}}, co pasujÅm +find_match_count[two]={{current}} ze {{total}}, co pasujÅm +find_match_count[few]={{current}} ze {{total}}, co pasujÅm +find_match_count[many]={{current}} ze {{total}}, co pasujÅm +find_match_count[other]={{current}} ze {{total}}, co pasujÅm +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(total) ]} +find_match_count_limit[zero]=Wiyncyj jak {{limit}}, co pasujÅm +find_match_count_limit[one]=Wiyncyj jak {{limit}}, co pasuje +find_match_count_limit[two]=Wiyncyj jak {{limit}}, co pasujÅm +find_match_count_limit[few]=Wiyncyj jak {{limit}}, co pasujÅm +find_match_count_limit[many]=Wiyncyj jak {{limit}}, co pasujÅm +find_match_count_limit[other]=Wiyncyj jak {{limit}}, co pasujÅm +find_not_found=Fraza niy znaleziÅno + +# Error panel labels +error_more_info=Wiyncyj informacyji +error_less_info=Mynij informacyji +error_close=Zawrzij +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=WiadÅmość: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Sztapel: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=ZbiÅr: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linijo: {{line}} +rendering_error=Przi renderowaniu strÅny pokozoÅ‚ sie feler. + +# Predefined zoom values +page_scale_width=Szyrzka strÅny +page_scale_fit=Napasowanie strÅny +page_scale_auto=AutÅmatyczno srogość +page_scale_actual=Aktualno srogość +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading_error=Przi ladowaniu PDFa pokozoÅ‚ sie feler. +invalid_file_error=ZÅ‚y abo felerny zbiÅr PDF. +missing_file_error=Chybio zbioru PDF. +unexpected_response_error=Niyôczekowano ôdpowiydź serwera. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotacyjo typu {{type}}] +password_label=Wkludź hasÅ‚o, coby ôdewrzić tyn zbiÅr PDF. +password_invalid=HasÅ‚o je zÅ‚e. SprÅbuj jeszcze roz. +password_ok=OK +password_cancel=Pociep + +printing_not_supported=PozÅr: Ta przeglÅndarka niy coÅ‚kiym ôbsuguje durk. +printing_not_ready=PozÅr: Tyn PDF niy ma za tela zaladowany do durku. +web_fonts_disabled=Necowe fÅnty sÅm zastawiÅne: niy idzie użyć wkludzÅnych fÅntÅw PDF. + diff --git a/page/static/js/web/locale/ta/viewer.properties b/page/static/js/web/locale/ta/viewer.properties new file mode 100644 index 0000000..72f75e2 --- /dev/null +++ b/page/static/js/web/locale/ta/viewer.properties @@ -0,0 +1,194 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=à®®à¯à®¨à¯à®¤à¯ˆà®¯ பகà¯à®•à®®à¯ +previous_label=à®®à¯à®¨à¯à®¤à¯ˆà®¯à®¤à¯ +next.title=அடà¯à®¤à¯à®¤ பகà¯à®•à®®à¯ +next_label=அடà¯à®¤à¯à®¤à¯ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=பகà¯à®•à®®à¯ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} இல௠+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages={{pagesCount}}) இல௠({{pageNumber}} + +zoom_out.title=சிறிதாகà¯à®•à¯ +zoom_out_label=சிறிதாகà¯à®•à¯ +zoom_in.title=பெரிதாகà¯à®•à¯ +zoom_in_label=பெரிதாகà¯à®•à¯ +zoom.title=பெரிதாகà¯à®•à¯ +presentation_mode.title=விளகà¯à®•à®•à®¾à®Ÿà¯à®šà®¿ பயனà¯à®®à¯à®±à¯ˆà®•à¯à®•à¯ மாற௠+presentation_mode_label=விளகà¯à®•à®•à®¾à®Ÿà¯à®šà®¿ பயனà¯à®®à¯à®±à¯ˆ +open_file.title=கோபà¯à®ªà®¿à®©à¯ˆ திற +open_file_label=திற +print.title=அசà¯à®šà®¿à®Ÿà¯ +print_label=அசà¯à®šà®¿à®Ÿà¯ +download.title=பதிவிறகà¯à®•à¯ +download_label=பதிவிறகà¯à®•à¯ +bookmark.title=தறà¯à®ªà¯‹à®¤à¯ˆà®¯ காடà¯à®šà®¿ (பà¯à®¤à®¿à®¯ சாளரதà¯à®¤à®¿à®±à¯à®•à¯ நகலெட௠அலà¯à®²à®¤à¯ பà¯à®¤à®¿à®¯ சாளரதà¯à®¤à®¿à®²à¯ திற) +bookmark_label=தறà¯à®ªà¯‹à®¤à¯ˆà®¯ காடà¯à®šà®¿ + +# Secondary toolbar and context menu +tools.title=கரà¯à®µà®¿à®•à®³à¯ +tools_label=கரà¯à®µà®¿à®•à®³à¯ +first_page.title=à®®à¯à®¤à®²à¯ பகà¯à®•à®¤à¯à®¤à®¿à®±à¯à®•à¯ செலà¯à®²à®µà¯à®®à¯ +first_page_label=à®®à¯à®¤à®²à¯ பகà¯à®•à®¤à¯à®¤à®¿à®±à¯à®•à¯ செலà¯à®²à®µà¯à®®à¯ +last_page.title=கடைசி பகà¯à®•à®¤à¯à®¤à®¿à®±à¯à®•à¯ செலà¯à®²à®µà¯à®®à¯ +last_page_label=கடைசி பகà¯à®•à®¤à¯à®¤à®¿à®±à¯à®•à¯ செலà¯à®²à®µà¯à®®à¯ +page_rotate_cw.title=வலஞà¯à®šà¯à®´à®¿à®¯à®¾à®• சà¯à®´à®±à¯à®±à¯ +page_rotate_cw_label=வலஞà¯à®šà¯à®´à®¿à®¯à®¾à®• சà¯à®´à®±à¯à®±à¯ +page_rotate_ccw.title=இடஞà¯à®šà¯à®´à®¿à®¯à®¾à®• சà¯à®´à®±à¯à®±à¯ +page_rotate_ccw_label=இடஞà¯à®šà¯à®´à®¿à®¯à®¾à®• சà¯à®´à®±à¯à®±à¯ + +cursor_text_select_tool.title=உரைத௠தெரிவ௠கரà¯à®µà®¿à®¯à¯ˆà®šà¯ செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯ +cursor_text_select_tool_label=உரைத௠தெரிவ௠கரà¯à®µà®¿ +cursor_hand_tool.title=கைக௠கரà¯à®µà®¿à®•à¯à®šà¯ செயறà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯ +cursor_hand_tool_label=கைகà¯à®•à¯à®°à¯à®µà®¿ + +# Document properties dialog box +document_properties.title=ஆவண பணà¯à®ªà¯à®•à®³à¯... +document_properties_label=ஆவண பணà¯à®ªà¯à®•à®³à¯... +document_properties_file_name=கோபà¯à®ªà¯ பெயரà¯: +document_properties_file_size=கோபà¯à®ªà®¿à®©à¯ அளவà¯: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} கிபை ({{size_b}} பைடà¯à®Ÿà¯à®•à®³à¯) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} மெபை ({{size_b}} பைடà¯à®Ÿà¯à®•à®³à¯) +document_properties_title=தலைபà¯à®ªà¯: +document_properties_author=எழà¯à®¤à®¿à®¯à®µà®°à¯ +document_properties_subject=பொரà¯à®³à¯: +document_properties_keywords=à®®à¯à®•à¯à®•à®¿à®¯ வாரà¯à®¤à¯à®¤à¯ˆà®•à®³à¯: +document_properties_creation_date=படைதà¯à®¤ தேதி : +document_properties_modification_date=திரà¯à®¤à¯à®¤à®¿à®¯ தேதி: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=உரà¯à®µà®¾à®•à¯à®•à¯à®ªà®µà®°à¯: +document_properties_producer=பிடிஎஃப௠தயாரிபà¯à®ªà®¾à®³à®°à¯: +document_properties_version=PDF பதிபà¯à®ªà¯: +document_properties_page_count=பகà¯à®• எணà¯à®£à®¿à®•à¯à®•à¯ˆ: +document_properties_page_size=பகà¯à®• அளவà¯: +document_properties_page_size_unit_inches=இதில௠+document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=நிலைபதிபà¯à®ªà¯ +document_properties_page_size_orientation_landscape=நிலைபரபà¯à®ªà¯ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=கடிதம௠+document_properties_page_size_name_legal=சடà¯à®Ÿà®ªà¯‚à®°à¯à®µ +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +document_properties_close=மூடà¯à®• + +print_progress_message=அசà¯à®šà®¿à®Ÿà¯à®µà®¤à®±à¯à®•à®¾à®© ஆவணம௠தயாராகிறதà¯... +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=ரதà¯à®¤à¯ + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=பகà¯à®•à®ªà¯ படà¯à®Ÿà®¿à®¯à¯ˆ நிலைமாறà¯à®±à¯ +toggle_sidebar_label=பகà¯à®•à®ªà¯ படà¯à®Ÿà®¿à®¯à¯ˆ நிலைமாறà¯à®±à¯ +document_outline.title=ஆவண அடகà¯à®•à®¤à¯à®¤à¯ˆà®•à¯ காடà¯à®Ÿà¯ (இரà¯à®®à¯à®±à¯ˆà®šà¯ சொடà¯à®•à¯à®•à®¿ அனைதà¯à®¤à¯ உறà¯à®ªà¯à®ªà®¿à®Ÿà®¿à®•à®³à¯ˆà®¯à¯à®®à¯ விரி/சேரà¯) +document_outline_label=ஆவண வெளிவரை +attachments.title=இணைபà¯à®ªà¯à®•à®³à¯ˆ காணà¯à®ªà®¿ +attachments_label=இணைபà¯à®ªà¯à®•à®³à¯ +thumbs.title=சிறà¯à®ªà®Ÿà®™à¯à®•à®³à¯ˆà®•à¯ காணà¯à®ªà®¿ +thumbs_label=சிறà¯à®ªà®Ÿà®™à¯à®•à®³à¯ +findbar.title=ஆவணதà¯à®¤à®¿à®²à¯ கணà¯à®Ÿà®±à®¿ +findbar_label=தேட௠+ +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=பகà¯à®•à®®à¯ {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=பகà¯à®•à®¤à¯à®¤à®¿à®©à¯ சிறà¯à®ªà®Ÿà®®à¯ {{page}} + +# Find panel button title and messages +find_input.title=கணà¯à®Ÿà¯à®ªà®¿à®Ÿà®¿ +find_input.placeholder=ஆவணதà¯à®¤à®¿à®²à¯ கணà¯à®Ÿà®±à®¿â€¦ +find_previous.title=இநà¯à®¤ சொறà¯à®±à¯Šà®Ÿà®°à®¿à®©à¯ à®®à¯à®¨à¯à®¤à¯ˆà®¯ நிகழà¯à®µà¯ˆ தேட௠+find_previous_label=à®®à¯à®¨à¯à®¤à¯ˆà®¯à®¤à¯ +find_next.title=இநà¯à®¤ சொறà¯à®±à¯Šà®Ÿà®°à®¿à®©à¯ அடà¯à®¤à¯à®¤ நிகழà¯à®µà¯ˆ தேட௠+find_next_label=அடà¯à®¤à¯à®¤à¯ +find_highlight=அனைதà¯à®¤à¯ˆà®¯à¯à®®à¯ தனிபà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯ +find_match_case_label=பேரெழà¯à®¤à¯à®¤à®¾à®•à¯à®•à®¤à¯à®¤à¯ˆ உணர௠+find_reached_top=ஆவணதà¯à®¤à®¿à®©à¯ மேல௠பகà¯à®¤à®¿à®¯à¯ˆ அடைநà¯à®¤à®¤à¯, அடிபà¯à®ªà®•à¯à®•à®¤à¯à®¤à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ தொடரà¯à®¨à¯à®¤à®¤à¯ +find_reached_bottom=ஆவணதà¯à®¤à®¿à®©à¯ à®®à¯à®Ÿà®¿à®µà¯ˆ அடைநà¯à®¤à®¤à¯, மேலிரà¯à®¨à¯à®¤à¯ தொடரà¯à®¨à¯à®¤à®¤à¯ +find_not_found=சொறà¯à®±à¯Šà®Ÿà®°à¯ காணவிலà¯à®²à¯ˆ + +# Error panel labels +error_more_info=கூடà¯à®¤à®²à¯ தகவல௠+error_less_info=கà¯à®±à¯ˆà®¨à¯à®¤ தகவல௠+error_close=மூடà¯à®• +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=செயà¯à®¤à®¿: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=ஸà¯à®Ÿà¯‡à®•à¯: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=கோபà¯à®ªà¯: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=வரி: {{line}} +rendering_error=இநà¯à®¤à®ªà¯ பகà¯à®•à®¤à¯à®¤à¯ˆ காடà¯à®šà®¿à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®®à¯ போத௠ஒர௠பிழை à®à®±à¯à®ªà®Ÿà¯à®Ÿà®¤à¯. + +# Predefined zoom values +page_scale_width=பகà¯à®• அகலம௠+page_scale_fit=பகà¯à®•à®ªà¯ பொரà¯à®¤à¯à®¤à®®à¯ +page_scale_auto=தானியகà¯à®• பெரிதாகà¯à®•à®²à¯ +page_scale_actual=உணà¯à®®à¯ˆà®¯à®¾à®© அளவ௠+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=PDF à® à®à®±à¯à®±à¯à®®à¯ போத௠ஒர௠பிழை à®à®±à¯à®ªà®Ÿà¯à®Ÿà®¤à¯. +invalid_file_error=செலà¯à®²à¯à®ªà®Ÿà®¿à®¯à®¾à®•à®¾à®¤ அலà¯à®²à®¤à¯ சிதைநà¯à®¤ PDF கோபà¯à®ªà¯. +missing_file_error=PDF கோபà¯à®ªà¯ காணவிலà¯à®²à¯ˆ. +unexpected_response_error=சேவகன௠பதில௠எதிரà¯à®ªà®¾à®°à®¤à®¤à¯. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} விளகà¯à®•à®®à¯] +password_label=இநà¯à®¤ PDF கோபà¯à®ªà¯ˆ திறகà¯à®• கடவà¯à®šà¯à®šà¯†à®¾à®²à¯à®²à¯ˆ உளà¯à®³à®¿à®Ÿà®µà¯à®®à¯. +password_invalid=செலà¯à®²à¯à®ªà®Ÿà®¿à®¯à®¾à®•à®¾à®¤ கடவà¯à®šà¯à®šà¯Šà®²à¯, தயை செயà¯à®¤à¯ மீணà¯à®Ÿà¯à®®à¯ à®®à¯à®¯à®±à¯à®šà®¿ செயà¯à®•. +password_ok=சரி +password_cancel=ரதà¯à®¤à¯ + +printing_not_supported=எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ: இநà¯à®¤ உலாவி அசà¯à®šà®¿à®Ÿà¯à®¤à®²à¯ˆ à®®à¯à®´à¯à®®à¯ˆà®¯à®¾à®• ஆதரிகà¯à®•à®µà®¿à®²à¯à®²à¯ˆ. +printing_not_ready=எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ: PDF அசà¯à®šà®¿à®Ÿ à®®à¯à®´à¯à®µà®¤à¯à®®à®¾à®• à®à®±à¯à®±à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ. +web_fonts_disabled=வலை எழà¯à®¤à¯à®¤à¯à®°à¯à®•à¯à®•à®³à¯ à®®à¯à®Ÿà®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®©: உடà¯à®ªà¯Šà®¤à®¿à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿ PDF எழà¯à®¤à¯à®¤à¯à®°à¯à®•à¯à®•à®³à¯ˆà®ªà¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤ à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ. + diff --git a/page/static/js/web/locale/te/viewer.properties b/page/static/js/web/locale/te/viewer.properties new file mode 100644 index 0000000..3c82095 --- /dev/null +++ b/page/static/js/web/locale/te/viewer.properties @@ -0,0 +1,237 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=à°®à±à°¨à±à°ªà°Ÿà°¿ పేజీ +previous_label=à°•à±à°°à°¿à°¤à°‚ +next.title=తరà±à°µà°¾à°¤ పేజీ +next_label=తరà±à°µà°¾à°¤ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=పేజీ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=మొతà±à°¤à°‚ {{pagesCount}} లో +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=(మొతà±à°¤à°‚ {{pagesCount}} లో {{pageNumber}}వది) + +zoom_out.title=జూమౠతగà±à°—à°¿à°‚à°šà± +zoom_out_label=జూమౠతగà±à°—à°¿à°‚à°šà± +zoom_in.title=జూమౠచేయి +zoom_in_label=జూమౠచేయి +zoom.title=జూమౠ+presentation_mode.title=à°ªà±à°°à°¦à°°à±à°¶à°¨à°¾ రీతికి మారౠ+presentation_mode_label=à°ªà±à°°à°¦à°°à±à°¶à°¨à°¾ రీతి +open_file.title=ఫైలౠతెరà±à°µà± +open_file_label=తెరà±à°µà± +print.title=à°®à±à°¦à±à°°à°¿à°‚à°šà± +print_label=à°®à±à°¦à±à°°à°¿à°‚à°šà± +download.title=దింపà±à°•à±‹à°³à±à°³à± +download_label=దింపà±à°•à±‹à°³à±à°³à± +bookmark.title=à°ªà±à°°à°¸à±à°¤à±à°¤ దరà±à°¶à°¨à°‚ (కాపీ చేయి లేదా కొతà±à°¤ విండోలో తెరà±à°µà±) +bookmark_label=à°ªà±à°°à°¸à±à°¤à±à°¤ దరà±à°¶à°¨à°‚ + +# Secondary toolbar and context menu +tools.title=పనిమà±à°Ÿà±à°²à± +tools_label=పనిమà±à°Ÿà±à°²à± +first_page.title=మొదటి పేజీకి వెళà±à°³à± +first_page_label=మొదటి పేజీకి వెళà±à°³à± +last_page.title=చివరి పేజీకి వెళà±à°³à± +last_page_label=చివరి పేజీకి వెళà±à°³à± +page_rotate_cw.title=సవà±à°¯à°¦à°¿à°¶à°²à±‹ తిపà±à°ªà± +page_rotate_cw_label=సవà±à°¯à°¦à°¿à°¶à°²à±‹ తిపà±à°ªà± +page_rotate_ccw.title=అపసవà±à°¯à°¦à°¿à°¶à°²à±‹ తిపà±à°ªà± +page_rotate_ccw_label=అపసవà±à°¯à°¦à°¿à°¶à°²à±‹ తిపà±à°ªà± + +cursor_text_select_tool.title=టెకà±à°¸à±à°Ÿà± ఎంపిక సాధనానà±à°¨à°¿ à°ªà±à°°à°¾à°°à°‚à°­à°¿à°‚à°šà°‚à°¡à°¿ +cursor_text_select_tool_label=టెకà±à°¸à±à°Ÿà± ఎంపిక సాధనం +cursor_hand_tool.title=చేతి సాధనం చేతనించౠ+cursor_hand_tool_label=చేతి సాధనం + +scroll_vertical_label=నిలà±à°µà± à°¸à±à°•à±à°°à±‹à°²à°¿à°‚à°—à± + + +# Document properties dialog box +document_properties.title=పతà±à°°à°®à± లకà±à°·à°£à°¾à°²à±... +document_properties_label=పతà±à°°à°®à± లకà±à°·à°£à°¾à°²à±... +document_properties_file_name=దసà±à°¤à±à°°à°‚ పేరà±: +document_properties_file_size=దసà±à°¤à±à°°à°‚ పరిమాణం: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=శీరà±à°·à°¿à°•: +document_properties_author=మూలకరà±à°¤: +document_properties_subject=విషయం: +document_properties_keywords=à°•à±€ పదాలà±: +document_properties_creation_date=సృషà±à°Ÿà°¿à°‚à°šà°¿à°¨ తేదీ: +document_properties_modification_date=సవరించిన తేదీ: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=సృషà±à°Ÿà°¿à°•à°°à±à°¤: +document_properties_producer=PDF ఉతà±à°ªà°¾à°¦à°•à°¿: +document_properties_version=PDF వరà±à°·à°¨à±: +document_properties_page_count=పేజీల సంఖà±à°¯: +document_properties_page_size=కాగితం పరిమాణం: +document_properties_page_size_unit_inches=లో +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=నిలà±à°µà±à°šà°¿à°¤à±à°°à°‚ +document_properties_page_size_orientation_landscape=à°…à°¡à±à°¡à°šà°¿à°¤à±à°°à°‚ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=లేఖ +document_properties_page_size_name_legal=à°šà°Ÿà±à°Ÿà°ªà°°à°®à±†à±–à°¨ +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized_yes=à°…à°µà±à°¨à± +document_properties_linearized_no=కాదౠ+document_properties_close=మూసివేయి + +print_progress_message=à°®à±à°¦à±à°°à°¿à°‚చడానికి పతà±à°°à°®à± సిదà±à°§à°®à°µà±à°¤à±à°¨à±à°¨à°¦à°¿â€¦ +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=à°°à°¦à±à°¦à±à°šà±‡à°¯à°¿ + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=పకà±à°•à°ªà°Ÿà±à°Ÿà±€ మారà±à°šà± +toggle_sidebar_label=పకà±à°•à°ªà°Ÿà±à°Ÿà±€ మారà±à°šà± +document_outline.title=పతà±à°°à°®à± రూపమౠచూపించౠ(à°¡à°¬à±à°²à± à°•à±à°²à°¿à°•à± చేసి à°…à°¨à±à°¨à°¿ అంశాలనౠవిసà±à°¤à°°à°¿à°‚à°šà±/కూలà±à°šà±) +document_outline_label=పతà±à°°à°®à± à°…à°µà±à°Ÿà±â€Œà°²à±ˆà°¨à± +attachments.title=à°…à°¨à±à°¬à°‚ధాలౠచూపౠ+attachments_label=à°…à°¨à±à°¬à°‚ధాలౠ+layers_label=పొరలౠ+thumbs.title=థంబà±â€Œà°¨à±ˆà°²à±à°¸à± చూపౠ+thumbs_label=థంబà±â€Œà°¨à±ˆà°²à±à°¸à± +findbar.title=పతà±à°°à°®à±à°²à±‹ à°•à°¨à±à°—ొనà±à°®à± +findbar_label=à°•à°¨à±à°—ొనౠ+ +additional_layers=అదనపౠపొరలౠ+# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=పేజీ {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}} పేజీ నఖచితà±à°°à°‚ + +# Find panel button title and messages +find_input.title=à°•à°¨à±à°—ొనౠ+find_input.placeholder=పతà±à°°à°®à±à°²à±‹ à°•à°¨à±à°—ొనà±â€¦ +find_previous.title=పదం యొకà±à°• à°®à±à°‚దౠసంభవానà±à°¨à°¿ à°•à°¨à±à°—ొనౠ+find_previous_label=à°®à±à°¨à±à°ªà°Ÿà°¿ +find_next.title=పదం యొకà±à°• తరà±à°µà°¾à°¤à°¿ సంభవానà±à°¨à°¿ à°•à°¨à±à°—ొనౠ+find_next_label=తరà±à°µà°¾à°¤ +find_highlight=à°…à°¨à±à°¨à°¿à°Ÿà°¿à°¨à°¿ ఉదà±à°¦à±€à°ªà°¨à°‚ చేయà±à°®à± +find_match_case_label=à°…à°•à±à°·à°°à°®à±à°² తేడాతో పోలà±à°šà± +find_entire_word_label=పూరà±à°¤à°¿ పదాలౠ+find_reached_top=పేజీ పైకి చేరà±à°•à±à°¨à±à°¨à°¦à°¿, à°•à±à°°à°¿à°‚ది à°¨à±à°‚à°¡à°¿ కొనసాగించండి +find_reached_bottom=పేజీ చివరకౠచేరà±à°•à±à°¨à±à°¨à°¦à°¿, పైనà±à°‚à°¡à°¿ కొనసాగించండి +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_not_found=పదబంధం కనబడలేదౠ+ +# Error panel labels +error_more_info=మరింత సమాచారం +error_less_info=తకà±à°•à±à°µ సమాచారం +error_close=మూసివేయి +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=సందేశం: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=à°¸à±à°Ÿà°¾à°•à±: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=ఫైలà±: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=వరà±à°¸: {{line}} +rendering_error=పేజీనౠరెండరౠచేయà±à°Ÿà°²à±‹ à°’à°• దోషం à°Žà°¦à±à°°à±ˆà°‚ది. + +# Predefined zoom values +page_scale_width=పేజీ వెడలà±à°ªà± +page_scale_fit=పేజీ అమరà±à°ªà± +page_scale_auto=à°¸à±à°µà°¯à°‚చాలక జూమౠ+page_scale_actual=యథారà±à°§ పరిమాణం +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading_error=PDF లోడవà±à°šà±à°¨à±à°¨à°ªà±à°ªà±à°¡à± à°’à°• దోషం à°Žà°¦à±à°°à±ˆà°‚ది. +invalid_file_error=చెలà±à°²à°¨à°¿ లేదా పాడైన PDF ఫైలà±. +missing_file_error=దొరకని PDF ఫైలà±. +unexpected_response_error=à°…à°¨à±à°•à±‹à°¨à°¿ సరà±à°µà°°à± à°¸à±à°ªà°‚దన. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} టీకా] +password_label=à°ˆ PDF ఫైలౠతెరà±à°šà±à°Ÿà°•à± సంకేతపదం à°ªà±à°°à°µà±‡à°¶à°ªà±†à°Ÿà±à°Ÿà±à°®à±. +password_invalid=సంకేతపదం చెలà±à°²à°¦à±. దయచేసి మళà±à°³à±€ à°ªà±à°°à°¯à°¤à±à°¨à°¿à°‚à°šà°‚à°¡à°¿. +password_ok=సరే +password_cancel=à°°à°¦à±à°¦à±à°šà±‡à°¯à°¿ + +printing_not_supported=హెచà±à°šà°°à°¿à°•: à°ˆ విహారిణి చేత à°®à±à°¦à±à°°à°£ పూరà±à°¤à°¿à°—à°¾ తోడà±à°ªà°¾à°Ÿà± లేదà±. +printing_not_ready=హెచà±à°šà°°à°¿à°•: à°®à±à°¦à±à°°à°£ కొరకౠఈ PDF పూరà±à°¤à°¿à°—à°¾ లోడవలేదà±. +web_fonts_disabled=వెబౠఫాంటà±à°²à± అచేతనించబడెనà±: ఎంబెడెడౠPDF ఫాంటà±à°²à± ఉపయోగించలేక పోయింది. + +# Editor + + +# Editor + + +# Editor Parameters +editor_free_text_color=à°°à°‚à°—à± +editor_free_text_size=పరిమాణం +editor_ink_color=à°°à°‚à°—à± +editor_ink_thickness=మందం +editor_ink_opacity=à°…à°•à°¿à°°à°£à±à°¯à°¤ + +# Editor aria + +# Editor aria + diff --git a/page/static/js/web/locale/tg/viewer.properties b/page/static/js/web/locale/tg/viewer.properties new file mode 100644 index 0000000..79dc852 --- /dev/null +++ b/page/static/js/web/locale/tg/viewer.properties @@ -0,0 +1,276 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Саҳифаи қаблӣ +previous_label=Қаблӣ +next.title=Саҳифаи навбатӣ +next_label=Ðавбатӣ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Саҳифа +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=аз {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} аз {{pagesCount}}) + +zoom_out.title=Хурд кардан +zoom_out_label=Хурд кардан +zoom_in.title=Калон кардан +zoom_in_label=Калон кардан +zoom.title=Танзими андоза +presentation_mode.title=Гузариш ба реҷаи тақдим +presentation_mode_label=Реҷаи тақдим +open_file.title=Кушодани файл +open_file_label=Кушодан +print.title=Чоп кардан +print_label=Чоп кардан +download.title=Боргирӣ кардан +download_label=Боргирӣ кардан +save.title=Ðигоҳ доштан +save_label=Ðигоҳ доштан +bookmark.title=Ðамуди ҷорӣ (нуÑха бардоштан Ñ‘ кушодан дар равзанаи нав) +bookmark_label=Ðамуди ҷорӣ + +bookmark1_label=Саҳифаи ҷорӣ + +# Secondary toolbar and context menu +tools.title=Ðбзорҳо +tools_label=Ðбзорҳо +first_page.title=Ба Ñаҳифаи аввал гузаред +first_page_label=Ба Ñаҳифаи аввал гузаред +last_page.title=Ба Ñаҳифаи охирин гузаред +last_page_label=Ба Ñаҳифаи охирин гузаред +page_rotate_cw.title=Ба Ñамти ҳаракати ақрабаки Ñоат давр задан +page_rotate_cw_label=Ба Ñамти ҳаракати ақрабаки Ñоат давр задан +page_rotate_ccw.title=Ба муқобили Ñамти ҳаракати ақрабаки Ñоат давр задан +page_rotate_ccw_label=Ба муқобили Ñамти ҳаракати ақрабаки Ñоат давр задан + +cursor_text_select_tool.title=Фаъол кардани «Ðбзори интихоби матн» +cursor_text_select_tool_label=Ðбзори интихоби матн +cursor_hand_tool.title=Фаъол кардани «Ðбзори даÑт» +cursor_hand_tool_label=Ðбзори даÑÑ‚ + +scroll_page.title=ИÑтифодаи варақзанӣ +scroll_page_label=Варақзанӣ +scroll_vertical.title=ИÑтифодаи варақзании амудӣ +scroll_vertical_label=Варақзании амудӣ +scroll_horizontal.title=ИÑтифодаи варақзании уфуқӣ +scroll_horizontal_label=Варақзании уфуқӣ +scroll_wrapped.title=ИÑтифодаи варақзании миқёÑбандӣ +scroll_wrapped_label=Варақзании миқёÑбандӣ + +spread_none.title=ГуÑтариши Ñаҳифаҳо иÑтифода бурда нашавад +spread_none_label=Бе гуÑтурдани Ñаҳифаҳо +spread_odd.title=ГуÑтариши Ñаҳифаҳо аз Ñаҳифаҳо бо рақамҳои тоқ оғоз карда мешавад +spread_odd_label=Саҳифаҳои тоқ аз тарафи чап +spread_even.title=ГуÑтариши Ñаҳифаҳо аз Ñаҳифаҳо бо рақамҳои ҷуфт оғоз карда мешавад +spread_even_label=Саҳифаҳои ҷуфт аз тарафи чап + +# Document properties dialog box +document_properties.title=ХуÑуÑиÑтҳои ҳуҷҷат… +document_properties_label=ХуÑуÑиÑтҳои ҳуҷҷат… +document_properties_file_name=Ðоми файл: +document_properties_file_size=Ðндозаи файл: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} КБ ({{size_b}} байт) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} МБ ({{size_b}} байт) +document_properties_title=Сарлавҳа: +document_properties_author=Муаллиф: +document_properties_subject=Мавзуъ: +document_properties_keywords=Калимаҳои калидӣ: +document_properties_creation_date=Санаи Ñҷод: +document_properties_modification_date=Санаи тағйирот: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Эҷодкунанда: +document_properties_producer=ТаҳиÑкунандаи «PDF»: +document_properties_version=ВерÑиÑи «PDF»: +document_properties_page_count=Шумораи Ñаҳифаҳо: +document_properties_page_size=Ðндозаи Ñаҳифа: +document_properties_page_size_unit_inches=дюйм +document_properties_page_size_unit_millimeters=мм +document_properties_page_size_orientation_portrait=амудӣ +document_properties_page_size_orientation_landscape=уфуқӣ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Мактуб +document_properties_page_size_name_legal=Ҳуқуқӣ +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Ðамоиши тез дар Интернет: +document_properties_linearized_yes=Ҳа +document_properties_linearized_no=Ðе +document_properties_close=Пӯшидан + +print_progress_message=ОмодаÑозии ҳуҷҷат барои чоп… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Бекор кардан + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Фаъол кардани навори ҷонибӣ +toggle_sidebar_notification2.title=Фаъол кардани навори ҷонибӣ (ҳуҷҷат дорои Ñохтор/замимаҳо/қабатҳо мебошад) +toggle_sidebar_label=Фаъол кардани навори ҷонибӣ +document_outline.title=Ðамоиш додани Ñохтори ҳуҷҷат (барои баркушодан/пеҷондани ҳамаи унÑурҳо дубора зер кунед) +document_outline_label=Сохтори ҳуҷҷат +attachments.title=Ðамоиш додани замимаҳо +attachments_label=Замимаҳо +layers.title=Ðамоиш додани қабатҳо (барои барқарор кардани ҳамаи қабатҳо ба вазъиÑти пешфарз дубора зер кунед) +layers_label=Қабатҳо +thumbs.title=Ðамоиш додани таÑвирчаҳо +thumbs_label=ТаÑвирчаҳо +current_outline_item.title=Ðфтани унÑури Ñохтори ҷорӣ +current_outline_item_label=УнÑури Ñохтори ҷорӣ +findbar.title=Ðфтан дар ҳуҷҷат +findbar_label=Ðфтан + +additional_layers=Қабатҳои иловагӣ +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Саҳифаи {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Саҳифаи {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=ТаÑвирчаи Ñаҳифаи {{page}} + +# Find panel button title and messages +find_input.title=Ðфтан +find_input.placeholder=Ðфтан дар ҳуҷҷат… +find_previous.title=ҶуÑтуҷӯи мавриди қаблии ибораи пешниҳодшуда +find_previous_label=Қаблӣ +find_next.title=ҶуÑтуҷӯи мавриди навбатии ибораи пешниҳодшуда +find_next_label=Ðавбатӣ +find_highlight=Ҳамаашро бо ранг ҷудо кардан +find_match_case_label=Бо дарназардошти ҳарфҳои хурду калон +find_match_diacritics_label=Бо дарназардошти аломатҳои диакритикӣ +find_entire_word_label=Калимаҳои пурра +find_reached_top=Ба болои ҳуҷҷат раÑид, аз поён идома Ñ‘Ñ„Ñ‚ +find_reached_bottom=Ба поёни ҳуҷҷат раÑид, аз боло идома Ñ‘Ñ„Ñ‚ +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} аз {{total}} мувофиқат +find_match_count[two]={{current}} аз {{total}} мувофиқат +find_match_count[few]={{current}} аз {{total}} мувофиқат +find_match_count[many]={{current}} аз {{total}} мувофиқат +find_match_count[other]={{current}} аз {{total}} мувофиқат +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Зиёда аз {{limit}} мувофиқат +find_match_count_limit[one]=Зиёда аз {{limit}} мувофиқат +find_match_count_limit[two]=Зиёда аз {{limit}} мувофиқат +find_match_count_limit[few]=Зиёда аз {{limit}} мувофиқат +find_match_count_limit[many]=Зиёда аз {{limit}} мувофиқат +find_match_count_limit[other]=Зиёда аз {{limit}} мувофиқат +find_not_found=Ибора Ñ‘Ñ„Ñ‚ нашуд + +# Error panel labels +error_more_info=Маълумоти бештар +error_less_info=Маълумоти камтар +error_close=Пӯшидан +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (Ñохт: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Паём: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=ДаÑта: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Файл: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Сатр: {{line}} + +# Predefined zoom values +page_scale_width=Ðз рӯи паҳнои Ñаҳифа +page_scale_fit=Ðз рӯи андозаи Ñаҳифа +page_scale_auto=Ðндозаи худкор +page_scale_actual=Ðндозаи воқеӣ +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Бор шуда иÑтодааÑт… +loading_error=Ҳангоми боркунии «PDF» хато ба миён омад. +invalid_file_error=Файли «PDF» нодуруÑÑ‚ Ñ‘ вайроншуда мебошад. +missing_file_error=Файли «PDF» ғоиб аÑÑ‚. +unexpected_response_error=Ҷавоби ногаҳон аз Ñервер. + +rendering_error=Ҳангоми шаклÑозии Ñаҳифа хато ба миён омад. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[ҲошиÑнавиÑÓ£ - {{type}}] +password_label=Барои кушодани ин файли «PDF» ниҳонвожаро ворид кунед. +password_invalid=Ðиҳонвожаи нодуруÑÑ‚. Лутфан, аз нав кӯшиш кунед. +password_ok=ХУБ +password_cancel=Бекор кардан + +printing_not_supported=Диққат: Чопкунӣ аз тарафи ин браузер ба таври пурра даÑтгирӣ намешавад. +printing_not_ready=Диққат: Файли «PDF» барои чопкунӣ пурра бор карда нашуд. +web_fonts_disabled=Шрифтҳои интернетӣ ғайрифаъоланд: иÑтифодаи шрифтҳои дарунÑохти «PDF» ғайриимкон аÑÑ‚. + +# Editor +editor_free_text2.title=Матн +editor_free_text2_label=Матн +editor_ink2.title=РаÑмкашӣ +editor_ink2_label=РаÑмкашӣ + +free_text2_default_content=ÐавиÑед… + +# Editor Parameters +editor_free_text_color=Ранг +editor_free_text_size=Ðндоза +editor_ink_color=Ранг +editor_ink_thickness=ҒафÑÓ£ +editor_ink_opacity=Шаффофӣ + +# Editor aria +editor_free_text2_aria_label=Муҳаррири матн +editor_ink2_aria_label=Муҳаррири раÑмкашӣ +editor_ink_canvas_aria_label=ТаÑвири Ñҷодкардаи корбар diff --git a/page/static/js/web/locale/th/viewer.properties b/page/static/js/web/locale/th/viewer.properties new file mode 100644 index 0000000..4f2a703 --- /dev/null +++ b/page/static/js/web/locale/th/viewer.properties @@ -0,0 +1,276 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=หน้าà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸² +previous_label=à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸² +next.title=หน้าถัดไป +next_label=ถัดไป + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=หน้า +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=จาภ{{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} จาภ{{pagesCount}}) + +zoom_out.title=ซูมออภ+zoom_out_label=ซูมออภ+zoom_in.title=ซูมเข้า +zoom_in_label=ซูมเข้า +zoom.title=ซูม +presentation_mode.title=สลับเป็นโหมดà¸à¸²à¸£à¸™à¸³à¹€à¸ªà¸™à¸­ +presentation_mode_label=โหมดà¸à¸²à¸£à¸™à¸³à¹€à¸ªà¸™à¸­ +open_file.title=เปิดไฟล์ +open_file_label=เปิด +print.title=พิมพ์ +print_label=พิมพ์ +download.title=ดาวน์โหลด +download_label=ดาวน์โหลด +save.title=บันทึภ+save_label=บันทึภ+bookmark.title=มุมมองปัจจุบัน (คัดลอà¸à¸«à¸£à¸·à¸­à¹€à¸›à¸´à¸”ในหน้าต่างใหม่) +bookmark_label=มุมมองปัจจุบัน + +bookmark1_label=หน้าปัจจุบัน + +# Secondary toolbar and context menu +tools.title=เครื่องมือ +tools_label=เครื่องมือ +first_page.title=ไปยังหน้าà¹à¸£à¸ +first_page_label=ไปยังหน้าà¹à¸£à¸ +last_page.title=ไปยังหน้าสุดท้าย +last_page_label=ไปยังหน้าสุดท้าย +page_rotate_cw.title=หมุนตามเข็มนาฬิà¸à¸² +page_rotate_cw_label=หมุนตามเข็มนาฬิà¸à¸² +page_rotate_ccw.title=หมุนทวนเข็มนาฬิà¸à¸² +page_rotate_ccw_label=หมุนทวนเข็มนาฬิà¸à¸² + +cursor_text_select_tool.title=เปิดใช้งานเครื่องมือà¸à¸²à¸£à¹€à¸¥à¸·à¸­à¸à¸‚้อความ +cursor_text_select_tool_label=เครื่องมือà¸à¸²à¸£à¹€à¸¥à¸·à¸­à¸à¸‚้อความ +cursor_hand_tool.title=เปิดใช้งานเครื่องมือมือ +cursor_hand_tool_label=เครื่องมือมือ + +scroll_page.title=ใช้à¸à¸²à¸£à¹€à¸¥à¸·à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸² +scroll_page_label=à¸à¸²à¸£à¹€à¸¥à¸·à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸² +scroll_vertical.title=ใช้à¸à¸²à¸£à¹€à¸¥à¸·à¹ˆà¸­à¸™à¹à¸™à¸§à¸•à¸±à¹‰à¸‡ +scroll_vertical_label=à¸à¸²à¸£à¹€à¸¥à¸·à¹ˆà¸­à¸™à¹à¸™à¸§à¸•à¸±à¹‰à¸‡ +scroll_horizontal.title=ใช้à¸à¸²à¸£à¹€à¸¥à¸·à¹ˆà¸­à¸™à¹à¸™à¸§à¸™à¸­à¸™ +scroll_horizontal_label=à¸à¸²à¸£à¹€à¸¥à¸·à¹ˆà¸­à¸™à¹à¸™à¸§à¸™à¸­à¸™ +scroll_wrapped.title=ใช้à¸à¸²à¸£à¹€à¸¥à¸·à¹ˆà¸­à¸™à¹à¸šà¸šà¸„ลุม +scroll_wrapped_label=เลื่อนà¹à¸šà¸šà¸„ลุม + +spread_none.title=ไม่ต้องรวมà¸à¸²à¸£à¸à¸£à¸°à¸ˆà¸²à¸¢à¸«à¸™à¹‰à¸² +spread_none_label=ไม่à¸à¸£à¸°à¸ˆà¸²à¸¢ +spread_odd.title=รวมà¸à¸²à¸£à¸à¸£à¸°à¸ˆà¸²à¸¢à¸«à¸™à¹‰à¸²à¹€à¸£à¸´à¹ˆà¸¡à¸ˆà¸²à¸à¸«à¸™à¹‰à¸²à¸„ี่ +spread_odd_label=à¸à¸£à¸°à¸ˆà¸²à¸¢à¸­à¸¢à¹ˆà¸²à¸‡à¹€à¸«à¸¥à¸·à¸­à¹€à¸¨à¸© +spread_even.title=รวมà¸à¸²à¸£à¸à¸£à¸°à¸ˆà¸²à¸¢à¸«à¸™à¹‰à¸²à¹€à¸£à¸´à¹ˆà¸¡à¸ˆà¸²à¸à¸«à¸™à¹‰à¸²à¸„ู่ +spread_even_label=à¸à¸£à¸°à¸ˆà¸²à¸¢à¸­à¸¢à¹ˆà¸²à¸‡à¹€à¸—่าเทียม + +# Document properties dialog box +document_properties.title=คุณสมบัติเอà¸à¸ªà¸²à¸£â€¦ +document_properties_label=คุณสมบัติเอà¸à¸ªà¸²à¸£â€¦ +document_properties_file_name=ชื่อไฟล์: +document_properties_file_size=ขนาดไฟล์: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} ไบต์) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} ไบต์) +document_properties_title=ชื่อเรื่อง: +document_properties_author=ผู้สร้าง: +document_properties_subject=ชื่อเรื่อง: +document_properties_keywords=คำสำคัà¸: +document_properties_creation_date=วันที่สร้าง: +document_properties_modification_date=วันที่à¹à¸à¹‰à¹„ข: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=ผู้สร้าง: +document_properties_producer=ผู้ผลิต PDF: +document_properties_version=รุ่น PDF: +document_properties_page_count=จำนวนหน้า: +document_properties_page_size=ขนาดหน้า: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=à¹à¸™à¸§à¸•à¸±à¹‰à¸‡ +document_properties_page_size_orientation_landscape=à¹à¸™à¸§à¸™à¸­à¸™ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=จดหมาย +document_properties_page_size_name_legal=ข้อà¸à¸Žà¸«à¸¡à¸²à¸¢ +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=มุมมองเว็บà¹à¸šà¸šà¸£à¸§à¸”เร็ว: +document_properties_linearized_yes=ใช่ +document_properties_linearized_no=ไม่ +document_properties_close=ปิด + +print_progress_message=à¸à¸³à¸¥à¸±à¸‡à¹€à¸•à¸£à¸µà¸¢à¸¡à¹€à¸­à¸à¸ªà¸²à¸£à¸ªà¸³à¸«à¸£à¸±à¸šà¸à¸²à¸£à¸žà¸´à¸¡à¸žà¹Œâ€¦ +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=ยà¸à¹€à¸¥à¸´à¸ + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=เปิด/ปิดà¹à¸–บข้าง +toggle_sidebar_notification2.title=เปิด/ปิดà¹à¸–บข้าง (เอà¸à¸ªà¸²à¸£à¸¡à¸µà¹€à¸„้าร่าง/ไฟล์à¹à¸™à¸š/เลเยอร์) +toggle_sidebar_label=เปิด/ปิดà¹à¸–บข้าง +document_outline.title=à¹à¸ªà¸”งเค้าร่างเอà¸à¸ªà¸²à¸£ (คลิà¸à¸ªà¸­à¸‡à¸„รั้งเพื่อขยาย/ยุบรายà¸à¸²à¸£à¸—ั้งหมด) +document_outline_label=เค้าร่างเอà¸à¸ªà¸²à¸£ +attachments.title=à¹à¸ªà¸”งไฟล์à¹à¸™à¸š +attachments_label=ไฟล์à¹à¸™à¸š +layers.title=à¹à¸ªà¸”งเลเยอร์ (คลิà¸à¸ªà¸­à¸‡à¸„รั้งเพื่อรีเซ็ตเลเยอร์ทั้งหมดเป็นสถานะเริ่มต้น) +layers_label=เลเยอร์ +thumbs.title=à¹à¸ªà¸”งภาพขนาดย่อ +thumbs_label=ภาพขนาดย่อ +current_outline_item.title=ค้นหารายà¸à¸²à¸£à¹€à¸„้าร่างปัจจุบัน +current_outline_item_label=รายà¸à¸²à¸£à¹€à¸„้าร่างปัจจุบัน +findbar.title=ค้นหาในเอà¸à¸ªà¸²à¸£ +findbar_label=ค้นหา + +additional_layers=เลเยอร์เพิ่มเติม +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=หน้า {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=หน้า {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=ภาพขนาดย่อของหน้า {{page}} + +# Find panel button title and messages +find_input.title=ค้นหา +find_input.placeholder=ค้นหาในเอà¸à¸ªà¸²à¸£â€¦ +find_previous.title=หาตำà¹à¸«à¸™à¹ˆà¸‡à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸‚องวลี +find_previous_label=à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸² +find_next.title=หาตำà¹à¸«à¸™à¹ˆà¸‡à¸–ัดไปของวลี +find_next_label=ถัดไป +find_highlight=เน้นสีทั้งหมด +find_match_case_label=ตัวพิมพ์ใหà¸à¹ˆà¹€à¸¥à¹‡à¸à¸•à¸£à¸‡à¸à¸±à¸™ +find_match_diacritics_label=เครื่องหมายà¸à¸³à¸à¸±à¸šà¸à¸²à¸£à¸­à¸­à¸à¹€à¸ªà¸µà¸¢à¸‡à¸•à¸£à¸‡à¸à¸±à¸™ +find_entire_word_label=ทั้งคำ +find_reached_top=ค้นหาถึงจุดเริ่มต้นของหน้า เริ่มค้นต่อจาà¸à¸”้านล่าง +find_reached_bottom=ค้นหาถึงจุดสิ้นสุดหน้า เริ่มค้นต่อจาà¸à¸”้านบน +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} จาภ{{total}} ที่ตรงà¸à¸±à¸™ +find_match_count[two]={{current}} จาภ{{total}} ที่ตรงà¸à¸±à¸™ +find_match_count[few]={{current}} จาภ{{total}} ที่ตรงà¸à¸±à¸™ +find_match_count[many]={{current}} จาภ{{total}} ที่ตรงà¸à¸±à¸™ +find_match_count[other]={{current}} จาภ{{total}} ที่ตรงà¸à¸±à¸™ +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=มาà¸à¸à¸§à¹ˆà¸² {{limit}} ที่ตรงà¸à¸±à¸™ +find_match_count_limit[one]=มาà¸à¸à¸§à¹ˆà¸² {{limit}} ที่ตรงà¸à¸±à¸™ +find_match_count_limit[two]=มาà¸à¸à¸§à¹ˆà¸² {{limit}} ที่ตรงà¸à¸±à¸™ +find_match_count_limit[few]=มาà¸à¸à¸§à¹ˆà¸² {{limit}} ที่ตรงà¸à¸±à¸™ +find_match_count_limit[many]=มาà¸à¸à¸§à¹ˆà¸² {{limit}} ที่ตรงà¸à¸±à¸™ +find_match_count_limit[other]=มาà¸à¸à¸§à¹ˆà¸² {{limit}} ที่ตรงà¸à¸±à¸™ +find_not_found=ไม่พบวลี + +# Error panel labels +error_more_info=ข้อมูลเพิ่มเติม +error_less_info=ข้อมูลน้อยลง +error_close=ปิด +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=ข้อความ: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=สà¹à¸•à¸: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=ไฟล์: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=บรรทัด: {{line}} + +# Predefined zoom values +page_scale_width=ความà¸à¸§à¹‰à¸²à¸‡à¸«à¸™à¹‰à¸² +page_scale_fit=พอดีหน้า +page_scale_auto=ซูมอัตโนมัติ +page_scale_actual=ขนาดจริง +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=à¸à¸³à¸¥à¸±à¸‡à¹‚หลด… +loading_error=เà¸à¸´à¸”ข้อผิดพลาดขณะโหลด PDF +invalid_file_error=ไฟล์ PDF ไม่ถูà¸à¸•à¹‰à¸­à¸‡à¸«à¸£à¸·à¸­à¹€à¸ªà¸µà¸¢à¸«à¸²à¸¢ +missing_file_error=ไฟล์ PDF หายไป +unexpected_response_error=à¸à¸²à¸£à¸•à¸­à¸šà¸ªà¸™à¸­à¸‡à¸‚องเซิร์ฟเวอร์ที่ไม่คาดคิด + +rendering_error=เà¸à¸´à¸”ข้อผิดพลาดขณะเรนเดอร์หน้า + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[คำอธิบายประà¸à¸­à¸š {{type}}] +password_label=ป้อนรหัสผ่านเพื่อเปิดไฟล์ PDF นี้ +password_invalid=รหัสผ่านไม่ถูà¸à¸•à¹‰à¸­à¸‡ โปรดลองอีà¸à¸„รั้ง +password_ok=ตà¸à¸¥à¸‡ +password_cancel=ยà¸à¹€à¸¥à¸´à¸ + +printing_not_supported=คำเตือน: เบราว์เซอร์นี้ไม่ได้สนับสนุนà¸à¸²à¸£à¸žà¸´à¸¡à¸žà¹Œà¸­à¸¢à¹ˆà¸²à¸‡à¹€à¸•à¹‡à¸¡à¸—ี่ +printing_not_ready=คำเตือน: PDF ไม่ได้รับà¸à¸²à¸£à¹‚หลดอย่างเต็มที่สำหรับà¸à¸²à¸£à¸žà¸´à¸¡à¸žà¹Œ +web_fonts_disabled=à¹à¸šà¸šà¸­à¸±à¸à¸©à¸£à¹€à¸§à¹‡à¸šà¸–ูà¸à¸›à¸´à¸”ใช้งาน: ไม่สามารถใช้à¹à¸šà¸šà¸­à¸±à¸à¸©à¸£ PDF à¸à¸±à¸‡à¸•à¸±à¸§ + +# Editor +editor_free_text2.title=ข้อความ +editor_free_text2_label=ข้อความ +editor_ink2.title=รูปวาด +editor_ink2_label=รูปวาด + +free_text2_default_content=เริ่มพิมพ์… + +# Editor Parameters +editor_free_text_color=สี +editor_free_text_size=ขนาด +editor_ink_color=สี +editor_ink_thickness=ความหนา +editor_ink_opacity=ความทึบ + +# Editor aria +editor_free_text2_aria_label=ตัวà¹à¸à¹‰à¹„ขข้อความ +editor_ink2_aria_label=ตัวà¹à¸à¹‰à¹„ขรูปวาด +editor_ink_canvas_aria_label=ภาพที่ผู้ใช้สร้างขึ้น diff --git a/page/static/js/web/locale/tl/viewer.properties b/page/static/js/web/locale/tl/viewer.properties new file mode 100644 index 0000000..2d44451 --- /dev/null +++ b/page/static/js/web/locale/tl/viewer.properties @@ -0,0 +1,243 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Naunang Pahina +previous_label=Nakaraan +next.title=Sunod na Pahina +next_label=Sunod + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pahina +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=ng {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} ng {{pagesCount}}) + +zoom_out.title=Paliitin +zoom_out_label=Paliitin +zoom_in.title=Palakihin +zoom_in_label=Palakihin +zoom.title=Mag-zoom +presentation_mode.title=Lumipat sa Presentation Mode +presentation_mode_label=Presentation Mode +open_file.title=Magbukas ng file +open_file_label=Buksan +print.title=i-Print +print_label=i-Print +download.title=i-Download +download_label=i-Download +bookmark.title=Kasalukuyang tingin (kopyahin o buksan sa bagong window) +bookmark_label=Kasalukuyang tingin + +# Secondary toolbar and context menu +tools.title=Mga Kagamitan +tools_label=Mga Kagamitan +first_page.title=Pumunta sa Unang Pahina +first_page_label=Pumunta sa Unang Pahina +last_page.title=Pumunta sa Huling Pahina +last_page_label=Pumunta sa Huling Pahina +page_rotate_cw.title=Paikutin Pakanan +page_rotate_cw_label=Paikutin Pakanan +page_rotate_ccw.title=Paikutin Pakaliwa +page_rotate_ccw_label=Paikutin Pakaliwa + +cursor_text_select_tool.title=I-enable ang Text Selection Tool +cursor_text_select_tool_label=Text Selection Tool +cursor_hand_tool.title=I-enable ang Hand Tool +cursor_hand_tool_label=Hand Tool + +scroll_vertical.title=Gumamit ng Vertical Scrolling +scroll_vertical_label=Vertical Scrolling +scroll_horizontal.title=Gumamit ng Horizontal Scrolling +scroll_horizontal_label=Horizontal Scrolling +scroll_wrapped.title=Gumamit ng Wrapped Scrolling +scroll_wrapped_label=Wrapped Scrolling + +spread_none.title=Huwag pagsamahin ang mga page spread +spread_none_label=No Spreads +spread_odd.title=Join page spreads starting with odd-numbered pages +spread_odd_label=Mga Odd Spread +spread_even.title=Pagsamahin ang mga page spread na nagsisimula sa mga even-numbered na pahina +spread_even_label=Mga Even Spread + +# Document properties dialog box +document_properties.title=Mga Katangian ng Dokumento… +document_properties_label=Mga Katangian ng Dokumento… +document_properties_file_name=File name: +document_properties_file_size=File size: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Pamagat: +document_properties_author=May-akda: +document_properties_subject=Paksa: +document_properties_keywords=Mga keyword: +document_properties_creation_date=Petsa ng Pagkakagawa: +document_properties_modification_date=Petsa ng Pagkakabago: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Tagalikha: +document_properties_producer=PDF Producer: +document_properties_version=PDF Version: +document_properties_page_count=Bilang ng Pahina: +document_properties_page_size=Laki ng Pahina: +document_properties_page_size_unit_inches=pulgada +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=patayo +document_properties_page_size_orientation_landscape=pahiga +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Web View: +document_properties_linearized_yes=Oo +document_properties_linearized_no=Hindi +document_properties_close=Isara + +print_progress_message=Inihahanda ang dokumento para sa pag-print… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Kanselahin + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Ipakita/Itago ang Sidebar +toggle_sidebar_notification2.title=Ipakita/Itago ang Sidebar (nagtataglay ang dokumento ng balangkas/mga attachment/mga layer) +toggle_sidebar_label=Ipakita/Itago ang Sidebar +document_outline.title=Ipakita ang Document Outline (mag-double-click para i-expand/collapse ang laman) +document_outline_label=Balangkas ng Dokumento +attachments.title=Ipakita ang mga Attachment +attachments_label=Mga attachment +layers.title=Ipakita ang mga Layer (mag-double click para mareset ang lahat ng layer sa orihinal na estado) +layers_label=Mga layer +thumbs.title=Ipakita ang mga Thumbnail +thumbs_label=Mga thumbnail +findbar.title=Hanapin sa Dokumento +findbar_label=Hanapin + +additional_layers=Mga Karagdagang Layer +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pahina {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Thumbnail ng Pahina {{page}} + +# Find panel button title and messages +find_input.title=Hanapin +find_input.placeholder=Hanapin sa dokumento… +find_previous.title=Hanapin ang nakaraang pangyayari ng parirala +find_previous_label=Nakaraan +find_next.title=Hanapin ang susunod na pangyayari ng parirala +find_next_label=Susunod +find_highlight=I-highlight lahat +find_match_case_label=Itugma ang case +find_entire_word_label=Buong salita +find_reached_top=Naabot na ang tuktok ng dokumento, ipinagpatuloy mula sa ilalim +find_reached_bottom=Naabot na ang dulo ng dokumento, ipinagpatuloy mula sa tuktok +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} ng {{total}} tugma +find_match_count[two]={{current}} ng {{total}} tugma +find_match_count[few]={{current}} ng {{total}} tugma +find_match_count[many]={{current}} ng {{total}} tugma +find_match_count[other]={{current}} ng {{total}} tugma +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Higit sa {{limit}} tugma +find_match_count_limit[one]=Higit sa {{limit}} tugma +find_match_count_limit[two]=Higit sa {{limit}} tugma +find_match_count_limit[few]=Higit sa {{limit}} tugma +find_match_count_limit[many]=Higit sa {{limit}} tugma +find_match_count_limit[other]=Higit sa {{limit}} tugma +find_not_found=Hindi natagpuan ang parirala + +# Error panel labels +error_more_info=Karagdagang Impormasyon +error_less_info=Mas Kaunting Impormasyon +error_close=Isara +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mensahe: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=File: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linya: {{line}} +rendering_error=Nagkaproblema habang nirerender ang pahina. + +# Predefined zoom values +page_scale_width=Lapad ng Pahina +page_scale_fit=Pagkasyahin ang Pahina +page_scale_auto=Automatic Zoom +page_scale_actual=Totoong sukat +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=Nagkaproblema habang niloload ang PDF. +invalid_file_error=Di-wasto o sira ang PDF file. +missing_file_error=Nawawalang PDF file. +unexpected_response_error=Hindi inaasahang tugon ng server. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=Ipasok ang password upang buksan ang PDF file na ito. +password_invalid=Maling password. Subukan uli. +password_ok=OK +password_cancel=Kanselahin + +printing_not_supported=Babala: Hindi pa ganap na suportado ang pag-print sa browser na ito. +printing_not_ready=Babala: Hindi ganap na nabuksan ang PDF para sa pag-print. +web_fonts_disabled=Naka-disable ang mga Web font: hindi kayang gamitin ang mga naka-embed na PDF font. + diff --git a/page/static/js/web/locale/tr/viewer.properties b/page/static/js/web/locale/tr/viewer.properties new file mode 100644 index 0000000..c654089 --- /dev/null +++ b/page/static/js/web/locale/tr/viewer.properties @@ -0,0 +1,276 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Önceki sayfa +previous_label=Önceki +next.title=Sonraki sayfa +next_label=Sonraki + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Sayfa +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=/ {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} / {{pagesCount}}) + +zoom_out.title=UzaklaÅŸtır +zoom_out_label=UzaklaÅŸtır +zoom_in.title=YaklaÅŸtır +zoom_in_label=YaklaÅŸtır +zoom.title=YakınlaÅŸtırma +presentation_mode.title=Sunum moduna geç +presentation_mode_label=Sunum modu +open_file.title=Dosya aç +open_file_label=Aç +print.title=Yazdır +print_label=Yazdır +download.title=Ä°ndir +download_label=Ä°ndir +save.title=Kaydet +save_label=Kaydet +bookmark.title=Geçerli görünüm (kopyala veya yeni pencerede aç) +bookmark_label=Geçerli görünüm + +bookmark1_label=Geçerli sayfa + +# Secondary toolbar and context menu +tools.title=Araçlar +tools_label=Araçlar +first_page.title=Ä°lk sayfaya git +first_page_label=Ä°lk sayfaya git +last_page.title=Son sayfaya git +last_page_label=Son sayfaya git +page_rotate_cw.title=Saat yönünde döndür +page_rotate_cw_label=Saat yönünde döndür +page_rotate_ccw.title=Saat yönünün tersine döndür +page_rotate_ccw_label=Saat yönünün tersine döndür + +cursor_text_select_tool.title=Metin seçme aracını etkinleÅŸtir +cursor_text_select_tool_label=Metin seçme aracı +cursor_hand_tool.title=El aracını etkinleÅŸtir +cursor_hand_tool_label=El aracı + +scroll_page.title=Sayfa kaydırmayı kullan +scroll_page_label=Sayfa kaydırma +scroll_vertical.title=Dikey kaydırma kullan +scroll_vertical_label=Dikey kaydırma +scroll_horizontal.title=Yatay kaydırma kullan +scroll_horizontal_label=Yatay kaydırma +scroll_wrapped.title=Yan yana kaydırmayı kullan +scroll_wrapped_label=Yan yana kaydırma + +spread_none.title=Yan yana sayfaları birleÅŸtirme +spread_none_label=BirleÅŸtirme +spread_odd.title=Yan yana sayfaları tek numaralı sayfalardan baÅŸlayarak birleÅŸtir +spread_odd_label=Tek numaralı +spread_even.title=Yan yana sayfaları çift numaralı sayfalardan baÅŸlayarak birleÅŸtir +spread_even_label=Çift numaralı + +# Document properties dialog box +document_properties.title=Belge özellikleri… +document_properties_label=Belge özellikleri… +document_properties_file_name=Dosya adı: +document_properties_file_size=Dosya boyutu: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bayt) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bayt) +document_properties_title=BaÅŸlık: +document_properties_author=Yazar: +document_properties_subject=Konu: +document_properties_keywords=Anahtar kelimeler: +document_properties_creation_date=Oluturma tarihi: +document_properties_modification_date=DeÄŸiÅŸtirme tarihi: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}} {{time}} +document_properties_creator=OluÅŸturan: +document_properties_producer=PDF üreticisi: +document_properties_version=PDF sürümü: +document_properties_page_count=Sayfa sayısı: +document_properties_page_size=Sayfa boyutu: +document_properties_page_size_unit_inches=inç +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=dikey +document_properties_page_size_orientation_landscape=yatay +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Hızlı web görünümü: +document_properties_linearized_yes=Evet +document_properties_linearized_no=Hayır +document_properties_close=Kapat + +print_progress_message=Belge yazdırılmaya hazırlanıyor… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent=%{{progress}} +print_progress_close=Ä°ptal + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Kenar çubuÄŸunu aç/kapat +toggle_sidebar_notification2.title=Kenar çubuÄŸunu aç/kapat (Belge ana hat/ekler/katmanlar içeriyor) +toggle_sidebar_label=Kenar çubuÄŸunu aç/kapat +document_outline.title=Belge ana hatlarını göster (Tüm öğeleri geniÅŸletmek/daraltmak için çift tıklayın) +document_outline_label=Belge ana hatları +attachments.title=Ekleri göster +attachments_label=Ekler +layers.title=Katmanları göster (tüm katmanları varsayılan duruma sıfırlamak için çift tıklayın) +layers_label=Katmanlar +thumbs.title=Küçük resimleri göster +thumbs_label=Küçük resimler +current_outline_item.title=Mevcut ana hat öğesini bul +current_outline_item_label=Mevcut ana hat öğesi +findbar.title=Belgede bul +findbar_label=Bul + +additional_layers=Ek katmanlar +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Sayfa {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Sayfa {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}}. sayfanın küçük hâli + +# Find panel button title and messages +find_input.title=Bul +find_input.placeholder=Belgede bul… +find_previous.title=Önceki eÅŸleÅŸmeyi bul +find_previous_label=Önceki +find_next.title=Sonraki eÅŸleÅŸmeyi bul +find_next_label=Sonraki +find_highlight=Tümünü vurgula +find_match_case_label=Büyük-küçük harfe duyarlı +find_match_diacritics_label=Fonetik iÅŸaretleri bul +find_entire_word_label=Tam sözcükler +find_reached_top=Belgenin başına ulaşıldı, sonundan devam edildi +find_reached_bottom=Belgenin sonuna ulaşıldı, başından devam edildi +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{total}} eÅŸleÅŸmeden {{current}}. eÅŸleÅŸme +find_match_count[two]={{total}} eÅŸleÅŸmeden {{current}}. eÅŸleÅŸme +find_match_count[few]={{total}} eÅŸleÅŸmeden {{current}}. eÅŸleÅŸme +find_match_count[many]={{total}} eÅŸleÅŸmeden {{current}}. eÅŸleÅŸme +find_match_count[other]={{total}} eÅŸleÅŸmeden {{current}}. eÅŸleÅŸme +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]={{limit}} eÅŸleÅŸmeden fazla +find_match_count_limit[one]={{limit}} eÅŸleÅŸmeden fazla +find_match_count_limit[two]={{limit}} eÅŸleÅŸmeden fazla +find_match_count_limit[few]={{limit}} eÅŸleÅŸmeden fazla +find_match_count_limit[many]={{limit}} eÅŸleÅŸmeden fazla +find_match_count_limit[other]={{limit}} eÅŸleÅŸmeden fazla +find_not_found=EÅŸleÅŸme bulunamadı + +# Error panel labels +error_more_info=Daha fazla bilgi al +error_less_info=Daha az bilgi +error_close=Kapat +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js sürüm {{version}} (yapı: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Ä°leti: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Yığın: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Dosya: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Satır: {{line}} + +# Predefined zoom values +page_scale_width=Sayfa geniÅŸliÄŸi +page_scale_fit=Sayfayı sığdır +page_scale_auto=Otomatik yakınlaÅŸtır +page_scale_actual=Gerçek boyut +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent=%{{scale}} + +# Loading indicator messages +loading=Yükleniyor… +loading_error=PDF yüklenirken bir hata oluÅŸtu. +invalid_file_error=Geçersiz veya bozulmuÅŸ PDF dosyası. +missing_file_error=PDF dosyası eksik. +unexpected_response_error=Beklenmeyen sunucu yanıtı. + +rendering_error=Sayfa yorumlanırken bir hata oluÅŸtu. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} iÅŸareti] +password_label=Bu PDF dosyasını açmak için parolasını yazın. +password_invalid=Geçersiz parola. Lütfen yeniden deneyin. +password_ok=Tamam +password_cancel=Ä°ptal + +printing_not_supported=Uyarı: Yazdırma bu tarayıcı tarafından tam olarak desteklenmemektedir. +printing_not_ready=Uyarı: PDF tamamen yüklenmedi ve yazdırmaya hazır deÄŸil. +web_fonts_disabled=Web fontları devre dışı: Gömülü PDF fontları kullanılamıyor. + +# Editor +editor_free_text2.title=Metin +editor_free_text2_label=Metin +editor_ink2.title=Çiz +editor_ink2_label=Çiz + +free_text2_default_content=Yazmaya baÅŸlayın… + +# Editor Parameters +editor_free_text_color=Renk +editor_free_text_size=Boyut +editor_ink_color=Renk +editor_ink_thickness=Kalınlık +editor_ink_opacity=Saydamlık + +# Editor aria +editor_free_text2_aria_label=Metin düzenleyicisi +editor_ink2_aria_label=Çizim düzenleyicisi +editor_ink_canvas_aria_label=Kullanıcı tarafından oluÅŸturulan resim diff --git a/page/static/js/web/locale/trs/viewer.properties b/page/static/js/web/locale/trs/viewer.properties new file mode 100644 index 0000000..8bd1fe1 --- /dev/null +++ b/page/static/js/web/locale/trs/viewer.properties @@ -0,0 +1,206 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pajinâ gunâj rukùu +previous_label=Sa gachin +next.title=Pajinâ 'na' ñaan +next_label=Ne' ñaan + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Ñanj +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=si'iaj {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} of {{pagesCount}}) + +zoom_out.title=Nagi'iaj li' +zoom_out_label=Nagi'iaj li' +zoom_in.title=Nagi'iaj niko' +zoom_in_label=Nagi'iaj niko' +zoom.title=dàj nìko ma'an +presentation_mode.title=Naduno' daj ga ma +presentation_mode_label=Daj gà ma +open_file.title=Na'nïn' chrû ñanj +open_file_label=Na'nïn +print.title=Nari' ña du'ua +print_label=Nari' ñadu'ua +download.title=Nadunïnj +download_label=Nadunïnj +bookmark.title=Daj hua ma (Guxun' nej na'nïn' riña ventana nakàa) +bookmark_label=Daj hua ma + +# Secondary toolbar and context menu +tools.title=Rasun +tools_label=Nej rasùun +first_page.title=gun' riña pajina asiniin +first_page_label=Gun' riña pajina asiniin +last_page.title=Gun' riña pajina rukù ni'in +last_page_label=Gun' riña pajina rukù ni'inj +page_rotate_cw.title=Tanikaj ne' huat +page_rotate_cw_label=Tanikaj ne' huat +page_rotate_ccw.title=Tanikaj ne' chînt' +page_rotate_ccw_label=Tanikaj ne' chint + +cursor_text_select_tool.title=Dugi'iaj sun' sa ganahui texto +cursor_text_select_tool_label=Nej rasun arajsun' da' nahui' texto +cursor_hand_tool.title=Nachrun' nej rasun +cursor_hand_tool_label=Sa rajsun ro'o' + +scroll_vertical.title=Garasun' dukuán runÅ«u +scroll_vertical_label=Dukuán runÅ«u +scroll_horizontal.title=Garasun' dukuán nikin' nahui +scroll_horizontal_label=Dukuán nikin' nahui +scroll_wrapped.title=Garasun' sa nachree +scroll_wrapped_label=Sa nachree + +spread_none.title=Si nagi'iaj nugun'un' nej pagina hua ninin +spread_none_label=Ni'io daj hua pagina +spread_odd.title=Nagi'iaj nugua'ant nej pajina +spread_odd_label=Ni'io' daj hua libro gurin +spread_even.title=NakÄj dugui' ngà nej pajinâ ayi'ì ngà da' hùi hùi +spread_even_label=Nahuin nìko nej + +# Document properties dialog box +document_properties.title=Nej sa nikÄj ñanj… +document_properties_label=Nej sa nikÄj ñanj… +document_properties_file_name=Si yugui archîbo: +document_properties_file_size=Dàj yachìj archîbo: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Si yugui: +document_properties_author=Sí girirà: +document_properties_subject=Dugui': +document_properties_keywords=Nej nuguan' huìi: +document_properties_creation_date=Gui gurugui' man: +document_properties_modification_date=Nuguan' nahuin nakà: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Guiri ro' +document_properties_producer=Sa ri PDF: +document_properties_version=PDF Version: +document_properties_page_count=Si Guendâ Pâjina: +document_properties_page_size=Dàj yachìj pâjina: +document_properties_page_size_unit_inches=riña +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=nadu'ua +document_properties_page_size_orientation_landscape=dàj huaj +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Da'ngà'a +document_properties_page_size_name_legal=Nuguan' a'nï'ïn +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Nanèt chre ni'iajt riña Web: +document_properties_linearized_yes=Ga'ue +document_properties_linearized_no=Si ga'ue +document_properties_close=Narán + +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Duyichin' + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=NadunÄ barrâ nù yi'nïn +toggle_sidebar_label=NadunÄ barrâ nù yi'nïn +findbar_label=Narì' + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. + +# Find panel button title and messages +find_input.title=Narì' +find_previous_label=Sa gachîn +find_next_label=Ne' ñaan +find_highlight=Daran' sa ña'an +find_match_case_label=Match case +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} si'iaj {{total}} guña gè huaj +find_match_count[two]={{current}} si'iaj {{total}} guña gè huaj +find_match_count[few]={{current}} si'iaj {{total}} guña gè huaj +find_match_count[many]={{current}} si'iaj {{total}} guña gè huaj +find_match_count[other]={{current}} of {{total}} matches +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Doj ngà da' {{limit}} nej sa nari' dugui'i +find_match_count_limit[one]=Doj ngà da' {{limit}} sa nari' dugui'i +find_match_count_limit[two]=Doj ngà da' {{limit}} nej sa nari' dugui'i +find_match_count_limit[few]=Doj ngà da' {{limit}} nej sa nari' dugui'i +find_match_count_limit[many]=Doj ngà da' {{limit}} nej sa nari' dugui'i +find_match_count_limit[other]=Doj ngà da' {{limit}} nej sa nari' dugui'i +find_not_found=Nu narì'ij nugua'anj + +# Error panel labels +error_more_info=Doj nuguan' a'min rayi'î nan +error_less_info=Dòj nuguan' a'min rayi'î nan +error_close=Narán +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Message: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Naru'ui': {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Archîbo: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Lînia: {{line}} + +# Predefined zoom values +page_scale_actual=Dàj yàchi akuan' nín +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +password_ok=Ga'ue +password_cancel=Duyichin' + diff --git a/page/static/js/web/locale/uk/viewer.properties b/page/static/js/web/locale/uk/viewer.properties new file mode 100644 index 0000000..cf2936b --- /dev/null +++ b/page/static/js/web/locale/uk/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ Ñторінка +previous_label=ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ +next.title=ÐаÑтупна Ñторінка +next_label=ÐаÑтупна + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Сторінка +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=із {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} із {{pagesCount}}) + +zoom_out.title=Зменшити +zoom_out_label=Зменшити +zoom_in.title=Збільшити +zoom_in_label=Збільшити +zoom.title=МаÑштаб +presentation_mode.title=Перейти в режим презентації +presentation_mode_label=Режим презентації +open_file.title=Відкрити файл +open_file_label=Відкрити +print.title=Друк +print_label=Друк +download.title=Завантажити +download_label=Завантажити +save.title=Зберегти +save_label=Зберегти +bookmark.title=Поточний виглÑд (копіювати чи відкрити в новому вікні) +bookmark_label=Поточний виглÑд + +bookmark1.title=Поточна Ñторінка (переглÑд URL-адреÑи з поточної Ñторінки) +bookmark1_label=Поточна Ñторінка + +# Secondary toolbar and context menu +tools.title=ІнÑтрументи +tools_label=ІнÑтрументи +first_page.title=Ðа першу Ñторінку +first_page_label=Ðа першу Ñторінку +last_page.title=Ðа оÑтанню Ñторінку +last_page_label=Ðа оÑтанню Ñторінку +page_rotate_cw.title=Повернути за годинниковою Ñтрілкою +page_rotate_cw_label=Повернути за годинниковою Ñтрілкою +page_rotate_ccw.title=Повернути проти годинникової Ñтрілки +page_rotate_ccw_label=Повернути проти годинникової Ñтрілки + +cursor_text_select_tool.title=Увімкнути інÑтрумент вибору текÑту +cursor_text_select_tool_label=ІнÑтрумент вибору текÑту +cursor_hand_tool.title=Увімкнути інÑтрумент "Рука" +cursor_hand_tool_label=ІнÑтрумент "Рука" + +scroll_page.title=ВикориÑтовувати Ð¿Ñ€Ð¾ÐºÑ€ÑƒÑ‡ÑƒÐ²Ð°Ð½Ð½Ñ Ñторінки +scroll_page_label=ÐŸÑ€Ð¾ÐºÑ€ÑƒÑ‡ÑƒÐ²Ð°Ð½Ð½Ñ Ñторінки +scroll_vertical.title=ВикориÑтовувати вертикальне Ð¿Ñ€Ð¾ÐºÑ€ÑƒÑ‡ÑƒÐ²Ð°Ð½Ð½Ñ +scroll_vertical_label=Вертикальне Ð¿Ñ€Ð¾ÐºÑ€ÑƒÑ‡ÑƒÐ²Ð°Ð½Ð½Ñ +scroll_horizontal.title=ВикориÑтовувати горизонтальне Ð¿Ñ€Ð¾ÐºÑ€ÑƒÑ‡ÑƒÐ²Ð°Ð½Ð½Ñ +scroll_horizontal_label=Горизонтальне Ð¿Ñ€Ð¾ÐºÑ€ÑƒÑ‡ÑƒÐ²Ð°Ð½Ð½Ñ +scroll_wrapped.title=ВикориÑтовувати маÑштабоване Ð¿Ñ€Ð¾ÐºÑ€ÑƒÑ‡ÑƒÐ²Ð°Ð½Ð½Ñ +scroll_wrapped_label=МаÑштабоване Ð¿Ñ€Ð¾ÐºÑ€ÑƒÑ‡ÑƒÐ²Ð°Ð½Ð½Ñ + +spread_none.title=Ðе викориÑтовувати розгорнуті Ñторінки +spread_none_label=Без розгорнутих Ñторінок +spread_odd.title=Розгорнуті Ñторінки починаютьÑÑ Ð· непарних номерів +spread_odd_label=Ðепарні Ñторінки зліва +spread_even.title=Розгорнуті Ñторінки починаютьÑÑ Ð· парних номерів +spread_even_label=Парні Ñторінки зліва + +# Document properties dialog box +document_properties.title=ВлаÑтивоÑÑ‚Ñ– документа… +document_properties_label=ВлаÑтивоÑÑ‚Ñ– документа… +document_properties_file_name=Ðазва файла: +document_properties_file_size=Розмір файла: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} КБ ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} МБ ({{size_b}} bytes) +document_properties_title=Заголовок: +document_properties_author=Ðвтор: +document_properties_subject=Тема: +document_properties_keywords=Ключові Ñлова: +document_properties_creation_date=Дата ÑтвореннÑ: +document_properties_modification_date=Дата зміни: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Створено: +document_properties_producer=Виробник PDF: +document_properties_version=ВерÑÑ–Ñ PDF: +document_properties_page_count=КількіÑÑ‚ÑŒ Ñторінок: +document_properties_page_size=Розмір Ñторінки: +document_properties_page_size_unit_inches=дюймів +document_properties_page_size_unit_millimeters=мм +document_properties_page_size_orientation_portrait=книжкова +document_properties_page_size_orientation_landscape=альбомна +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Швидкий переглÑд в Інтернеті: +document_properties_linearized_yes=Так +document_properties_linearized_no=ÐÑ– +document_properties_close=Закрити + +print_progress_message=Підготовка документу до друку… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=СкаÑувати + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Бічна панель +toggle_sidebar_notification2.title=Перемкнути бічну панель (документ міÑтить еÑкіз/вкладеннÑ/шари) +toggle_sidebar_label=Перемкнути бічну панель +document_outline.title=Показати Ñхему документу (подвійний клік Ð´Ð»Ñ Ñ€Ð¾Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ/Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ñ–Ð²) +document_outline_label=Схема документа +attachments.title=Показати Ð¿Ñ€Ð¸ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ +attachments_label=ÐŸÑ€Ð¸ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ +layers.title=Показати шари (двічі клацніть, щоб Ñкинути вÑÑ– шари до типового Ñтану) +layers_label=Шари +thumbs.title=Показувати еÑкізи +thumbs_label=ЕÑкізи +current_outline_item.title=Знайти поточний елемент зміÑту +current_outline_item_label=Поточний елемент зміÑту +findbar.title=Знайти в документі +findbar_label=Знайти + +additional_layers=Додаткові шари +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Сторінка {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Сторінка {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=ЕÑкіз Ñторінки {{page}} + +# Find panel button title and messages +find_input.title=Знайти +find_input.placeholder=Знайти в документі… +find_previous.title=Знайти попереднє Ð²Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ñ„Ñ€Ð°Ð·Ð¸ +find_previous_label=Попереднє +find_next.title=Знайти наÑтупне Ð²Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ñ„Ñ€Ð°Ð·Ð¸ +find_next_label=ÐаÑтупне +find_highlight=ПідÑвітити вÑе +find_match_case_label=З урахуваннÑм регіÑтру +find_match_diacritics_label=ВідповідніÑÑ‚ÑŒ діакритичних знаків +find_entire_word_label=Цілі Ñлова +find_reached_top=ДоÑÑгнуто початку документу, продовжено з ÐºÑ–Ð½Ñ†Ñ +find_reached_bottom=ДоÑÑгнуто ÐºÑ–Ð½Ñ†Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ñƒ, продовжено з початку +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} збіг із {{total}} +find_match_count[two]={{current}} збіги з {{total}} +find_match_count[few]={{current}} збігів із {{total}} +find_match_count[many]={{current}} збігів із {{total}} +find_match_count[other]={{current}} збігів із {{total}} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Понад {{limit}} збігів +find_match_count_limit[one]=Більше, ніж {{limit}} збіг +find_match_count_limit[two]=Більше, ніж {{limit}} збіги +find_match_count_limit[few]=Більше, ніж {{limit}} збігів +find_match_count_limit[many]=Понад {{limit}} збігів +find_match_count_limit[other]=Понад {{limit}} збігів +find_not_found=Фразу не знайдено + +# Error panel labels +error_more_info=Більше інформації +error_less_info=Менше інформації +error_close=Закрити +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=ПовідомленнÑ: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Стек: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Файл: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=РÑдок: {{line}} + +# Predefined zoom values +page_scale_width=За шириною +page_scale_fit=ВміÑтити +page_scale_auto=ÐвтомаÑштаб +page_scale_actual=ДійÑний розмір +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=ЗавантаженнÑ… +loading_error=Під Ñ‡Ð°Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ PDF ÑталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°. +invalid_file_error=ÐедійÑний або пошкоджений PDF-файл. +missing_file_error=ВідÑутній PDF-файл. +unexpected_response_error=Ðеочікувана відповідь Ñервера. + +rendering_error=Під Ñ‡Ð°Ñ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñторінки ÑталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}}-анотаціÑ] +password_label=Введіть пароль Ð´Ð»Ñ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ñ†ÑŒÐ¾Ð³Ð¾ PDF-файла. +password_invalid=Ðевірний пароль. Спробуйте ще. +password_ok=Гаразд +password_cancel=СкаÑувати + +printing_not_supported=ПопередженнÑ: Цей браузер не повніÑÑ‚ÑŽ підтримує друк. +printing_not_ready=ПопередженнÑ: PDF не повніÑÑ‚ÑŽ завантажений Ð´Ð»Ñ Ð´Ñ€ÑƒÐºÑƒ. +web_fonts_disabled=Веб-шрифти вимкнено: неможливо викориÑтати вбудовані у PDF шрифти. + +# Editor +editor_free_text2.title=ТекÑÑ‚ +editor_free_text2_label=ТекÑÑ‚ +editor_ink2.title=Малювати +editor_ink2_label=Малювати + +free_text2_default_content=Почніть вводити… + +# Editor Parameters +editor_free_text_color=Колір +editor_free_text_size=Розмір +editor_ink_color=Колір +editor_ink_thickness=Товщина +editor_ink_opacity=ПрозоріÑÑ‚ÑŒ + +# Editor aria +editor_free_text2_aria_label=ТекÑтовий редактор +editor_ink2_aria_label=Графічний редактор +editor_ink_canvas_aria_label=ЗображеннÑ, Ñтворене кориÑтувачем diff --git a/page/static/js/web/locale/ur/viewer.properties b/page/static/js/web/locale/ur/viewer.properties new file mode 100644 index 0000000..e3853b0 --- /dev/null +++ b/page/static/js/web/locale/ur/viewer.properties @@ -0,0 +1,239 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=پچھلا صÙØ­Û +previous_label=پچھلا +next.title=اگلا صÙØ­Û +next_label=Ø¢Ú¯Û’ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=صÙØ­Û +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} کا +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} کا {{pagesCount}}) + +zoom_out.title=باÛر زوم کریں +zoom_out_label=باÛر زوم کریں +zoom_in.title=اندر زوم کریں +zoom_in_label=اندر زوم کریں +zoom.title=زوم +presentation_mode.title=پیشکش موڈ میں Ú†Ù„Û’ جائیں +presentation_mode_label=پیشکش موڈ +open_file.title=مسل کھولیں +open_file_label=کھولیں +print.title=چھاپیں +print_label=چھاپیں +download.title=ڈاؤن لوڈ +download_label=ڈاؤن لوڈ +bookmark.title=Ø­Ø§Ù„ÛŒÛ Ù†Ø¸Ø§Ø±Û (Ù†Û“ Ø¯Ø±ÛŒÚ†Û Ù…ÛŒÚº نقل کریں یا کھولیں) +bookmark_label=Ø­Ø§Ù„ÛŒÛ Ù†Ø¸Ø§Ø±Û + +# Secondary toolbar and context menu +tools.title=آلات +tools_label=آلات +first_page.title=Ù¾ÛÙ„Û’ صÙØ­Û Ù¾Ø± جائیں +first_page_label=Ù¾ÛÙ„Û’ صÙØ­Û Ù¾Ø± جائیں +last_page.title=آخری صÙØ­Û Ù¾Ø± جائیں +last_page_label=آخری صÙØ­Û Ù¾Ø± جائیں +page_rotate_cw.title=Ú¯Ú¾Ú‘ÛŒ وار گھمائیں +page_rotate_cw_label=Ú¯Ú¾Ú‘ÛŒ وار گھمائیں +page_rotate_ccw.title=ضد Ú¯Ú¾Ú‘ÛŒ وار گھمائیں +page_rotate_ccw_label=ضد Ú¯Ú¾Ú‘ÛŒ وار گھمائیں + +cursor_text_select_tool.title=متن Ú©Û’ انتخاب Ú©Û’ ٹول Ú©Ùˆ Ùعال بناے +cursor_text_select_tool_label=متن Ú©Û’ انتخاب کا Ø¢Ù„Û +cursor_hand_tool.title=Ûینڈ ٹول Ú©Ùˆ Ùعال بناییں +cursor_hand_tool_label=Ûاتھ کا Ø¢Ù„Û + +scroll_vertical.title=عمودی اسکرولنگ کا استعمال کریں +scroll_vertical_label=عمودی اسکرولنگ +scroll_horizontal.title=اÙÙ‚ÛŒ سکرولنگ کا استعمال کریں +scroll_horizontal_label=اÙÙ‚ÛŒ سکرولنگ + +spread_none.title=صÙØ­Û Ù¾Ú¾ÛŒÙ„Ø§Ù†Û’ میں شامل Ù†Û ÛÙˆÚº +spread_none_label=کوئی پھیلاؤ Ù†Ûیں +spread_odd_label=تاک پھیلاؤ +spread_even_label=جÙت پھیلاؤ + +# Document properties dialog box +document_properties.title=دستاویز خواص… +document_properties_label=دستاویز خواص…\u0020 +document_properties_file_name=نام مسل: +document_properties_file_size=مسل سائز: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=عنوان: +document_properties_author=تخلیق کار: +document_properties_subject=موضوع: +document_properties_keywords=کلیدی الÙاظ: +document_properties_creation_date=تخلیق Ú©ÛŒ تاریخ: +document_properties_modification_date=ترمیم Ú©ÛŒ تاریخ: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}ØŒ {{time}} +document_properties_creator=تخلیق کار: +document_properties_producer=PDF پیدا کار: +document_properties_version=PDF ورژن: +document_properties_page_count=صÙØ­Û Ø´Ù…Ø§Ø±: +document_properties_page_size=صÙÛ Ú©ÛŒ لمبائ: +document_properties_page_size_unit_inches=میں +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=عمودی انداز +document_properties_page_size_orientation_landscape=اÙقى انداز +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=خط +document_properties_page_size_name_legal=قانونی +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} {{name}} {{orientation}} +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=تیز ویب دیکھیں: +document_properties_linearized_yes=Ûاں +document_properties_linearized_no=Ù†Ûیں +document_properties_close=بند کریں + +print_progress_message=چھاپنے کرنے Ú©Û’ لیے دستاویز تیار کیے جا رھے ھیں +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent=*{{progress}}%* +print_progress_close=منسوخ کریں + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=سلائیڈ ٹوگل کریں +toggle_sidebar_label=سلائیڈ ٹوگل کریں +document_outline.title=دستاویز Ú©ÛŒ سرخیاں دکھایں (تمام اشیاء وسیع / غائب کرنے Ú©Û’ لیے ڈبل Ú©Ù„Ú© کریں) +document_outline_label=دستاویز آؤٹ لائن +attachments.title=منسلکات دکھائیں +attachments_label=منسلکات +thumbs.title=تھمبنیل دکھائیں +thumbs_label=مجمل +findbar.title=دستاویز میں ڈھونڈیں +findbar_label=ڈھونڈیں + +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=صÙØ­Û {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=صÙØ­Û {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=صÙØ­Û’ کا مجمل {{page}} + +# Find panel button title and messages +find_input.title=ڈھونڈیں +find_input.placeholder=دستاویز… میں ڈھونڈیں +find_previous.title=Ùقرے کا پچھلا وقوع ڈھونڈیں +find_previous_label=پچھلا +find_next.title=Ùقرے کا Ø§Ú¯Ù„Û ÙˆÙ‚ÙˆØ¹ ڈھونڈیں +find_next_label=Ø¢Ú¯Û’ +find_highlight=تمام نمایاں کریں +find_match_case_label=Ø­Ø±ÙˆÙ Ù…Ø´Ø§Ø¨Û Ú©Ø±ÛŒÚº +find_entire_word_label=تمام الÙاظ +find_reached_top=صÙØ­Û Ú©Û’ شروع پر Ù¾ÛÙ†Ú† گیا، نیچے سے جاری کیا +find_reached_bottom=صÙØ­Û Ú©Û’ اختتام پر Ù¾ÛÙ†Ú† گیا، اوپر سے جاری کیا +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{total}} میچ کا {{current}} +find_match_count[few]={{total}} میچوں میں سے {{current}} +find_match_count[many]={{total}} میچوں میں سے {{current}} +find_match_count[other]={{total}} میچوں میں سے {{current}} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(total) ]} +find_match_count_limit[zero]={{limit}} سے Ø²ÛŒØ§Ø¯Û Ù…ÛŒÚ† +find_match_count_limit[one]={{limit}} سے Ø²ÛŒØ§Ø¯Û Ù…ÛŒÚ† +find_match_count_limit[two]={{limit}} سے Ø²ÛŒØ§Ø¯Û Ù…ÛŒÚ† +find_match_count_limit[few]={{limit}} سے Ø²ÛŒØ§Ø¯Û Ù…ÛŒÚ† +find_match_count_limit[many]={{limit}} سے Ø²ÛŒØ§Ø¯Û Ù…ÛŒÚ† +find_match_count_limit[other]={{limit}} سے Ø²ÛŒØ§Ø¯Û Ù…ÛŒÚ† +find_not_found=Ùقرا Ù†Ûیں ملا + +# Error panel labels +error_more_info=مزید معلومات +error_less_info=Ú©Ù… معلومات +error_close=بند کریں +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=پیغام: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=سٹیک: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=مسل: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=لائن: {{line}} +rendering_error=صÙØ­Û Ø¨Ù†Ø§ØªÛ’ Ûوئے نقص Ø¢ گیا۔ + +# Predefined zoom values +page_scale_width=صÙØ­Û Ú†ÙˆÚ‘Ø§Ø¦ÛŒ +page_scale_fit=صÙØ­Û Ùٹنگ +page_scale_auto=خودکار زوم +page_scale_actual=اصل سائز +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading_error=PDF لوڈ کرتے وقت نقص Ø¢ گیا۔ +invalid_file_error=ناجائز یا خراب PDF مسل +missing_file_error=PDF مسل غائب ÛÛ’Û” +unexpected_response_error=غیرمتوقع پیش کار جواب + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}.{{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} نوٹ] +password_label=PDF مسل کھولنے Ú©Û’ لیے پاس ورڈ داخل کریں. +password_invalid=ناجائز پاس ورڈ. براےؑ کرم Ø¯ÙˆØ¨Ø§Ø±Û Ú©ÙˆØ´Ø´ کریں. +password_ok=ٹھیک ÛÛ’ +password_cancel=منسوخ کریں + +printing_not_supported=تنبیÛ:چھاپنا اس براؤزر پر پوری طرح معاونت Ø´Ø¯Û Ù†Ûیں ÛÛ’Û” +printing_not_ready=تنبیÛ: PDF چھپائی Ú©Û’ لیے پوری طرح لوڈ Ù†Ûیں Ûوئی۔ +web_fonts_disabled=ویب Ùانٹ نا اÛÙ„ Ûیں: شامل PDF Ùانٹ استعمال کرنے میں ناکام۔ +# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same +# exact string as in the `chrome.properties` file. + diff --git a/page/static/js/web/locale/uz/viewer.properties b/page/static/js/web/locale/uz/viewer.properties new file mode 100644 index 0000000..31c60ae --- /dev/null +++ b/page/static/js/web/locale/uz/viewer.properties @@ -0,0 +1,163 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Oldingi sahifa +previous_label=Oldingi +next.title=Keyingi sahifa +next_label=Keyingi + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=/{{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. + +zoom_out.title=Kichiklashtirish +zoom_out_label=Kichiklashtirish +zoom_in.title=Kattalashtirish +zoom_in_label=Kattalashtirish +zoom.title=Masshtab +presentation_mode.title=Namoyish usuliga oÊ»tish +presentation_mode_label=Namoyish usuli +open_file.title=Faylni ochish +open_file_label=Ochish +print.title=Chop qilish +print_label=Chop qilish +download.title=Yuklab olish +download_label=Yuklab olish +bookmark.title=Joriy koÊ»rinish (nusxa oling yoki yangi oynada oching) +bookmark_label=Joriy koÊ»rinish + +# Secondary toolbar and context menu +tools.title=Vositalar +tools_label=Vositalar +first_page.title=Birinchi sahifaga oÊ»tish +first_page_label=Birinchi sahifaga oÊ»tish +last_page.title=SoÊ»nggi sahifaga oÊ»tish +last_page_label=SoÊ»nggi sahifaga oÊ»tish +page_rotate_cw.title=Soat yoÊ»nalishi boÊ»yicha burish +page_rotate_cw_label=Soat yoÊ»nalishi boÊ»yicha burish +page_rotate_ccw.title=Soat yoÊ»nalishiga qarshi burish +page_rotate_ccw_label=Soat yoÊ»nalishiga qarshi burish + + +# Document properties dialog box +document_properties.title=Hujjat xossalari +document_properties_label=Hujjat xossalari +document_properties_file_name=Fayl nomi: +document_properties_file_size=Fayl hajmi: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Nomi: +document_properties_author=Muallifi: +document_properties_subject=Mavzusi: +document_properties_keywords=Kalit so‘zlar +document_properties_creation_date=Yaratilgan sanasi: +document_properties_modification_date=O‘zgartirilgan sanasi +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Yaratuvchi: +document_properties_producer=PDF ishlab chiqaruvchi: +document_properties_version=PDF versiyasi: +document_properties_page_count=Sahifa soni: +document_properties_close=Yopish + +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Yon panelni yoqib/oÊ»chirib qoÊ»yish +toggle_sidebar_label=Yon panelni yoqib/oÊ»chirib qoÊ»yish +document_outline_label=Hujjat tuzilishi +attachments.title=Ilovalarni ko‘rsatish +attachments_label=Ilovalar +thumbs.title=Nishonchalarni koÊ»rsatish +thumbs_label=Nishoncha +findbar.title=Hujjat ichidan topish + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title={{page}} sahifa +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}} sahifa nishonchasi + +# Find panel button title and messages +find_previous.title=SoÊ»zlardagi oldingi hodisani topish +find_previous_label=Oldingi +find_next.title=Iboradagi keyingi hodisani topish +find_next_label=Keyingi +find_highlight=Barchasini ajratib koÊ»rsatish +find_match_case_label=Katta-kichik harflarni farqlash +find_reached_top=Hujjatning boshigacha yetib keldik, pastdan davom ettiriladi +find_reached_bottom=Hujjatning oxiriga yetib kelindi, yuqoridan davom ettirladi +find_not_found=SoÊ»zlar topilmadi + +# Error panel labels +error_more_info=KoÊ»proq ma`lumot +error_less_info=Kamroq ma`lumot +error_close=Yopish +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Xabar: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=ToÊ»plam: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fayl: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Satr: {{line}} +rendering_error=Sahifa renderlanayotganda xato yuz berdi. + +# Predefined zoom values +page_scale_width=Sahifa eni +page_scale_fit=Sahifani moslashtirish +page_scale_auto=Avtomatik masshtab +page_scale_actual=Haqiqiy hajmi +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=PDF yuklanayotganda xato yuz berdi. +invalid_file_error=Xato yoki buzuq PDF fayli. +missing_file_error=PDF fayl kerak. +unexpected_response_error=Kutilmagan server javobi. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=PDF faylni ochish uchun parolni kiriting. +password_invalid=Parol - notoÊ»gÊ»ri. Qaytadan urinib koÊ»ring. +password_ok=OK + +printing_not_supported=Diqqat: chop qilish bruzer tomonidan toÊ»liq qoÊ»llab-quvvatlanmaydi. +printing_not_ready=Diqqat: PDF fayl chop qilish uchun toÊ»liq yuklanmadi. +web_fonts_disabled=Veb shriftlar oÊ»chirilgan: ichki PDF shriftlardan foydalanib boÊ»lmmaydi. + diff --git a/page/static/js/web/locale/vi/viewer.properties b/page/static/js/web/locale/vi/viewer.properties new file mode 100644 index 0000000..b140a30 --- /dev/null +++ b/page/static/js/web/locale/vi/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Trang trÆ°á»›c +previous_label=TrÆ°á»›c +next.title=Trang Sau +next_label=Tiếp + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Trang +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=trên {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} trên {{pagesCount}}) + +zoom_out.title=Thu nhá» +zoom_out_label=Thu nhá» +zoom_in.title=Phóng to +zoom_in_label=Phóng to +zoom.title=Thu phóng +presentation_mode.title=Chuyển sang chế Ä‘á»™ trình chiếu +presentation_mode_label=Chế Ä‘á»™ trình chiếu +open_file.title=Mở tập tin +open_file_label=Mở tập tin +print.title=In +print_label=In +download.title=Tải xuống +download_label=Tải xuống +save.title=LÆ°u +save_label=LÆ°u +bookmark.title=Chế Ä‘á»™ xem hiện tại (sao chép hoặc mở trong cá»­a sổ má»›i) +bookmark_label=Chế Ä‘á»™ xem hiện tại + +bookmark1.title=Trang hiện tại (xem URL từ trang hiện tại) +bookmark1_label=Trang hiện tại + +# Secondary toolbar and context menu +tools.title=Công cụ +tools_label=Công cụ +first_page.title=Vá» trang đầu +first_page_label=Vá» trang đầu +last_page.title=Äến trang cuối +last_page_label=Äến trang cuối +page_rotate_cw.title=Xoay theo chiá»u kim đồng hồ +page_rotate_cw_label=Xoay theo chiá»u kim đồng hồ +page_rotate_ccw.title=Xoay ngược chiá»u kim đồng hồ +page_rotate_ccw_label=Xoay ngược chiá»u kim đồng hồ + +cursor_text_select_tool.title=Kích hoạt công cụ chá»n vùng văn bản +cursor_text_select_tool_label=Công cụ chá»n vùng văn bản +cursor_hand_tool.title=Kích hoạt công cụ con trá» +cursor_hand_tool_label=Công cụ con trá» + +scroll_page.title=Sá»­ dụng cuá»™n trang hiện tại +scroll_page_label=Cuá»™n trang hiện tại +scroll_vertical.title=Sá»­ dụng cuá»™n dá»c +scroll_vertical_label=Cuá»™n dá»c +scroll_horizontal.title=Sá»­ dụng cuá»™n ngang +scroll_horizontal_label=Cuá»™n ngang +scroll_wrapped.title=Sá»­ dụng cuá»™n ngắt dòng +scroll_wrapped_label=Cuá»™n ngắt dòng + +spread_none.title=Không nối rá»™ng trang +spread_none_label=Không có phân cách +spread_odd.title=Nối trang bài bắt đầu vá»›i các trang được đánh số lẻ +spread_odd_label=Phân cách theo số lẻ +spread_even.title=Nối trang bài bắt đầu vá»›i các trang được đánh số chẵn +spread_even_label=Phân cách theo số chẵn + +# Document properties dialog box +document_properties.title=Thuá»™c tính của tài liệu… +document_properties_label=Thuá»™c tính của tài liệu… +document_properties_file_name=Tên tập tin: +document_properties_file_size=Kích thÆ°á»›c: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} byte) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} byte) +document_properties_title=Tiêu Ä‘á»: +document_properties_author=Tác giả: +document_properties_subject=Chủ Ä‘á»: +document_properties_keywords=Từ khóa: +document_properties_creation_date=Ngày tạo: +document_properties_modification_date=Ngày sá»­a đổi: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=NgÆ°á»i tạo: +document_properties_producer=Phần má»m tạo PDF: +document_properties_version=Phiên bản PDF: +document_properties_page_count=Tổng số trang: +document_properties_page_size=Kích thÆ°á»›c trang: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=khổ dá»c +document_properties_page_size_orientation_landscape=khổ ngang +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=ThÆ° +document_properties_page_size_name_legal=Pháp lý +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Xem nhanh trên web: +document_properties_linearized_yes=Có +document_properties_linearized_no=Không +document_properties_close=Ãóng + +print_progress_message=Chuẩn bị trang để in… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Hủy bá» + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Bật/Tắt thanh lá» +toggle_sidebar_notification2.title=Bật tắt thanh lá» (tài liệu bao gồm bản phác thảo/tập tin đính kèm/lá»›p) +toggle_sidebar_label=Bật/Tắt thanh lá» +document_outline.title=Hiển thị tài liệu phác thảo (nhấp đúp vào để mở rá»™ng/thu gá»n tất cả các mục) +document_outline_label=Bản phác tài liệu +attachments.title=Hiện ná»™i dung đính kèm +attachments_label=Ná»™i dung đính kèm +layers.title=Hiển thị các lá»›p (nhấp đúp để đặt lại tất cả các lá»›p vá» trạng thái mặc định) +layers_label=Lá»›p +thumbs.title=Hiển thị ảnh thu nhá» +thumbs_label=Ảnh thu nhá» +current_outline_item.title=Tìm mục phác thảo hiện tại +current_outline_item_label=Mục phác thảo hiện tại +findbar.title=Tìm trong tài liệu +findbar_label=Tìm + +additional_layers=Các lá»›p bổ sung +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Trang {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Trang {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Ảnh thu nhá» của trang {{page}} + +# Find panel button title and messages +find_input.title=Tìm +find_input.placeholder=Tìm trong tài liệu… +find_previous.title=Tìm cụm từ ở phần trÆ°á»›c +find_previous_label=TrÆ°á»›c +find_next.title=Tìm cụm từ ở phần sau +find_next_label=Tiếp +find_highlight=Tô sáng tất cả +find_match_case_label=Phân biệt hoa, thÆ°á»ng +find_match_diacritics_label=Khá»›p dấu phụ +find_entire_word_label=Toàn bá»™ từ +find_reached_top=Äã đến phần đầu tài liệu, quay trở lại từ cuối +find_reached_bottom=Äã đến phần cuối của tài liệu, quay trở lại từ đầu +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} của {{total}} đã trùng +find_match_count[two]={{current}} của {{total}} đã trùng +find_match_count[few]={{current}} của {{total}} đã trùng +find_match_count[many]={{current}} của {{total}} đã trùng +find_match_count[other]={{current}} của {{total}} đã trùng +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Nhiá»u hÆ¡n {{limit}} đã trùng +find_match_count_limit[one]=Nhiá»u hÆ¡n {{limit}} đã trùng +find_match_count_limit[two]=Nhiá»u hÆ¡n {{limit}} đã trùng +find_match_count_limit[few]=Nhiá»u hÆ¡n {{limit}} đã trùng +find_match_count_limit[many]=Nhiá»u hÆ¡n {{limit}} đã trùng +find_match_count_limit[other]=Nhiá»u hÆ¡n {{limit}} đã trùng +find_not_found=Không tìm thấy cụm từ này + +# Error panel labels +error_more_info=Thông tin thêm +error_less_info=Hiển thị ít thông tin hÆ¡n +error_close=Äóng +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Thông Ä‘iệp: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Tập tin: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Dòng: {{line}} + +# Predefined zoom values +page_scale_width=Vừa chiá»u rá»™ng +page_scale_fit=Vừa chiá»u cao +page_scale_auto=Tá»± Ä‘á»™ng chá»n kích thÆ°á»›c +page_scale_actual=Kích thÆ°á»›c thá»±c +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Äang tải… +loading_error=Lá»—i khi tải tài liệu PDF. +invalid_file_error=Tập tin PDF há»ng hoặc không hợp lệ. +missing_file_error=Thiếu tập tin PDF. +unexpected_response_error=Máy chủ có phản hồi lạ. + +rendering_error=Lá»—i khi hiển thị trang. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Chú thích] +password_label=Nhập mật khẩu để mở tập tin PDF này. +password_invalid=Mật khẩu không đúng. Vui lòng thá»­ lại. +password_ok=OK +password_cancel=Hủy bá» + +printing_not_supported=Cảnh báo: In ấn không được há»— trợ đầy đủ ở trình duyệt này. +printing_not_ready=Cảnh báo: PDF chÆ°a được tải hết để in. +web_fonts_disabled=Phông chữ Web bị vô hiệu hóa: không thể sá»­ dụng các phông chữ PDF được nhúng. + +# Editor +editor_free_text2.title=Văn bản +editor_free_text2_label=Văn bản +editor_ink2.title=Vẽ +editor_ink2_label=Vẽ + +free_text2_default_content=Bắt đầu nhập… + +# Editor Parameters +editor_free_text_color=Màu +editor_free_text_size=Kích cỡ +editor_ink_color=Màu +editor_ink_thickness=Äá»™ dày +editor_ink_opacity=Äộ mÆ¡Ì€ + +# Editor aria +editor_free_text2_aria_label=Trình sá»­a văn bản +editor_ink2_aria_label=Trình sá»­a nét vẽ +editor_ink_canvas_aria_label=Hình ảnh do ngÆ°á»i dùng tạo diff --git a/page/static/js/web/locale/wo/viewer.properties b/page/static/js/web/locale/wo/viewer.properties new file mode 100644 index 0000000..71b23cb --- /dev/null +++ b/page/static/js/web/locale/wo/viewer.properties @@ -0,0 +1,123 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Xët wi jiitu +previous_label=Bi jiitu +next.title=Xët wi ci topp +next_label=Bi ci topp + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. + +zoom_out.title=Wàññi +zoom_out_label=Wàññi +zoom_in.title=Yaatal +zoom_in_label=Yaatal +zoom.title=YambalaÅ‹ +presentation_mode.title=Wañarñil ci anamu wone +presentation_mode_label=Anamu Wone +open_file.title=Ubbi benn dencukaay +open_file_label=Ubbi +print.title=Móol +print_label=Móol +download.title=Yeb yi +download_label=Yeb yi +bookmark.title=Wone bi taxaw (duppi walla ubbi palanteer bu bees) +bookmark_label=Wone bi feeñ + +# Secondary toolbar and context menu + + +# Document properties dialog box +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_title=Bopp: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. + +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +thumbs.title=Wone nataal yu ndaw yi +thumbs_label=Nataal yu ndaw yi +findbar.title=Gis ci biir jukki bi +findbar_label=Wut + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Xët {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Wiñet bu xët {{page}} + +# Find panel button title and messages +find_previous.title=Seet beneen kaddu bu ni mel te jiitu +find_previous_label=Bi jiitu +find_next.title=Seet beneen kaddu bu ni mel +find_next_label=Bi ci topp +find_highlight=Melaxal lépp +find_match_case_label=Sàmm jëmmalin wi +find_reached_top=Jot nañu ndorteel xët wi, kontine dale ko ci suuf +find_reached_bottom=Jot nañu jeexitalu xët wi, kontine ci ndorte +find_not_found=Gisiñu kaddu gi + +# Error panel labels +error_more_info=Xibaar yu gën bari +error_less_info=Xibaar yu gën bari +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Bataaxal: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Juug: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Dencukaay: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Rëdd : {{line}} +rendering_error=Am njumte bu am bi xët bi di wonewu. + +# Predefined zoom values +page_scale_width=Yaatuwaay bu mët +page_scale_fit=Xët lëmm +page_scale_auto=YambalaÅ‹ ci saa si +page_scale_actual=Dayo bi am +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. + +loading_error=Am na njumte ci yebum dencukaay PDF bi. +invalid_file_error=Dencukaay PDF bi baaxul walla mu sankar. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Karmat {{type}}] +password_ok=OK +password_cancel=Neenal + +printing_not_supported=Artu: Joowkat bii nanguwul lool mool. + diff --git a/page/static/js/web/locale/xh/viewer.properties b/page/static/js/web/locale/xh/viewer.properties new file mode 100644 index 0000000..0bb9e88 --- /dev/null +++ b/page/static/js/web/locale/xh/viewer.properties @@ -0,0 +1,177 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Iphepha langaphambili +previous_label=Okwangaphambili +next.title=Iphepha elilandelayo +next_label=Okulandelayo + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Iphepha +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=kwali- {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} kwali {{pagesCount}}) + +zoom_out.title=Bhekelisela Kudana +zoom_out_label=Bhekelisela Kudana +zoom_in.title=Sondeza Kufuphi +zoom_in_label=Sondeza Kufuphi +zoom.title=Yandisa / Nciphisa +presentation_mode.title=Tshintshela kwimo yonikezelo +presentation_mode_label=Imo yonikezelo +open_file.title=Vula Ifayile +open_file_label=Vula +print.title=Printa +print_label=Printa +download.title=Khuphela +download_label=Khuphela +bookmark.title=Imbonakalo ekhoyo (kopa okanye vula kwifestile entsha) +bookmark_label=Imbonakalo ekhoyo + +# Secondary toolbar and context menu +tools.title=Izixhobo zemiyalelo +tools_label=Izixhobo zemiyalelo +first_page.title=Yiya kwiphepha lokuqala +first_page_label=Yiya kwiphepha lokuqala +last_page.title=Yiya kwiphepha lokugqibela +last_page_label=Yiya kwiphepha lokugqibela +page_rotate_cw.title=Jikelisa ngasekunene +page_rotate_cw_label=Jikelisa ngasekunene +page_rotate_ccw.title=Jikelisa ngasekhohlo +page_rotate_ccw_label=Jikelisa ngasekhohlo + +cursor_text_select_tool.title=Vumela iSixhobo sokuKhetha iTeksti +cursor_text_select_tool_label=ISixhobo sokuKhetha iTeksti +cursor_hand_tool.title=Yenza iSixhobo seSandla siSebenze +cursor_hand_tool_label=ISixhobo seSandla + +# Document properties dialog box +document_properties.title=Iipropati zoxwebhu… +document_properties_label=Iipropati zoxwebhu… +document_properties_file_name=Igama lefayile: +document_properties_file_size=Isayizi yefayile: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB (iibhayiti{{size_b}}) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB (iibhayithi{{size_b}}) +document_properties_title=Umxholo: +document_properties_author=Umbhali: +document_properties_subject=Umbandela: +document_properties_keywords=Amagama aphambili: +document_properties_creation_date=Umhla wokwenziwa kwayo: +document_properties_modification_date=Umhla wokulungiswa kwayo: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Umntu oyenzileyo: +document_properties_producer=Umvelisi we-PDF: +document_properties_version=Uhlelo lwe-PDF: +document_properties_page_count=Inani lamaphepha: +document_properties_close=Vala + +print_progress_message=Ilungisa uxwebhu ukuze iprinte… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Rhoxisa + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Togola ngebha eseCaleni +toggle_sidebar_label=Togola ngebha eseCaleni +document_outline.title=Bonisa uLwandlalo loXwebhu (cofa kabini ukuze wandise/diliza zonke izinto) +document_outline_label=Isishwankathelo soxwebhu +attachments.title=Bonisa iziqhotyoshelwa +attachments_label=Iziqhoboshelo +thumbs.title=Bonisa ukrobiso kumfanekiso +thumbs_label=Ukrobiso kumfanekiso +findbar.title=Fumana kuXwebhu +findbar_label=Fumana + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Iphepha {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Ukrobiso kumfanekiso wephepha {{page}} + +# Find panel button title and messages +find_input.title=Fumana +find_input.placeholder=Fumana kuXwebhu… +find_previous.title=Fumanisa isenzeko sangaphambili sebinzana lamagama +find_previous_label=Okwangaphambili +find_next.title=Fumanisa isenzeko esilandelayo sebinzana lamagama +find_next_label=Okulandelayo +find_highlight=Qaqambisa konke +find_match_case_label=Tshatisa ngobukhulu bukanobumba +find_reached_top=Ufike ngaphezulu ephepheni, kusukwa ngezantsi +find_reached_bottom=Ufike ekupheleni kwephepha, kusukwa ngaphezulu +find_not_found=Ibinzana alifunyenwanga + +# Error panel labels +error_more_info=Inkcazelo Engakumbi +error_less_info=Inkcazelo Encinane +error_close=Vala +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=I-PDF.js v{{version}} (yakha: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Umyalezo: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Imfumba: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Ifayile: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Umgca: {{line}} +rendering_error=Imposiso yenzekile xa bekunikezelwa iphepha. + +# Predefined zoom values +page_scale_width=Ububanzi bephepha +page_scale_fit=Ukulinganiswa kwephepha +page_scale_auto=Ukwandisa/Ukunciphisa Ngokwayo +page_scale_actual=Ubungakanani bokwenene +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=Imposiso yenzekile xa kulayishwa i-PDF. +invalid_file_error=Ifayile ye-PDF engeyiyo okanye eyonakalisiweyo. +missing_file_error=Ifayile ye-PDF edukileyo. +unexpected_response_error=Impendulo yeseva engalindelekanga. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Ubhalo-nqaku] +password_label=Faka ipasiwedi ukuze uvule le fayile yePDF. +password_invalid=Ipasiwedi ayisebenzi. Nceda uzame kwakhona. +password_ok=KULUNGILE +password_cancel=Rhoxisa + +printing_not_supported=Isilumkiso: Ukuprinta akuxhaswa ngokupheleleyo yile bhrawuza. +printing_not_ready=Isilumkiso: IPDF ayihlohlwanga ngokupheleleyo ukwenzela ukuprinta. +web_fonts_disabled=Iifonti zewebhu ziqhwalelisiwe: ayikwazi ukusebenzisa iifonti ze-PDF ezincanyathelisiweyo. + diff --git a/page/static/js/web/locale/zh-CN/viewer.properties b/page/static/js/web/locale/zh-CN/viewer.properties new file mode 100644 index 0000000..b9394c3 --- /dev/null +++ b/page/static/js/web/locale/zh-CN/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=上一页 +previous_label=上一页 +next.title=下一页 +next_label=下一页 + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=é¡µé¢ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=/ {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} / {{pagesCount}}) + +zoom_out.title=ç¼©å° +zoom_out_label=ç¼©å° +zoom_in.title=放大 +zoom_in_label=放大 +zoom.title=缩放 +presentation_mode.title=切æ¢åˆ°æ¼”ç¤ºæ¨¡å¼ +presentation_mode_label=æ¼”ç¤ºæ¨¡å¼ +open_file.title=打开文件 +open_file_label=打开 +print.title=æ‰“å° +print_label=æ‰“å° +download.title=下载 +download_label=下载 +save.title=ä¿å­˜ +save_label=ä¿å­˜ +bookmark.title=当å‰åœ¨çœ‹çš„内容(å¤åˆ¶æˆ–在新窗å£ä¸­æ‰“开) +bookmark_label=当å‰åœ¨çœ‹ + +bookmark1.title=当å‰é¡µé¢ï¼ˆåœ¨å½“å‰é¡µé¢æŸ¥çœ‹ URL) +bookmark1_label=当å‰é¡µé¢ + +# Secondary toolbar and context menu +tools.title=工具 +tools_label=工具 +first_page.title=转到第一页 +first_page_label=转到第一页 +last_page.title=转到最åŽä¸€é¡µ +last_page_label=转到最åŽä¸€é¡µ +page_rotate_cw.title=顺时针旋转 +page_rotate_cw_label=顺时针旋转 +page_rotate_ccw.title=逆时针旋转 +page_rotate_ccw_label=逆时针旋转 + +cursor_text_select_tool.title=å¯ç”¨æ–‡æœ¬é€‰æ‹©å·¥å…· +cursor_text_select_tool_label=文本选择工具 +cursor_hand_tool.title=å¯ç”¨æ‰‹å½¢å·¥å…· +cursor_hand_tool_label=手形工具 + +scroll_page.title=使用页é¢æ»šåŠ¨ +scroll_page_label=页é¢æ»šåŠ¨ +scroll_vertical.title=使用垂直滚动 +scroll_vertical_label=垂直滚动 +scroll_horizontal.title=使用水平滚动 +scroll_horizontal_label=水平滚动 +scroll_wrapped.title=使用平铺滚动 +scroll_wrapped_label=平铺滚动 + +spread_none.title=ä¸åŠ å…¥è¡”接页 +spread_none_label=å•é¡µè§†å›¾ +spread_odd.title=加入衔接页使奇数页作为起始页 +spread_odd_label=åŒé¡µè§†å›¾ +spread_even.title=加入衔接页使å¶æ•°é¡µä½œä¸ºèµ·å§‹é¡µ +spread_even_label=书ç±è§†å›¾ + +# Document properties dialog box +document_properties.title=文档属性… +document_properties_label=文档属性… +document_properties_file_name=文件å: +document_properties_file_size=文件大å°: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} 字节) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} 字节) +document_properties_title=标题: +document_properties_author=作者: +document_properties_subject=主题: +document_properties_keywords=关键è¯: +document_properties_creation_date=创建日期: +document_properties_modification_date=修改日期: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=创建者: +document_properties_producer=PDF 生æˆå™¨ï¼š +document_properties_version=PDF 版本: +document_properties_page_count=页数: +document_properties_page_size=页é¢å¤§å°ï¼š +document_properties_page_size_unit_inches=英寸 +document_properties_page_size_unit_millimeters=毫米 +document_properties_page_size_orientation_portrait=çºµå‘ +document_properties_page_size_orientation_landscape=æ¨ªå‘ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=文本 +document_properties_page_size_name_legal=法律 +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}}({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}}({{name}},{{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=快速 Web 视图: +document_properties_linearized_yes=是 +document_properties_linearized_no=å¦ +document_properties_close=关闭 + +print_progress_message=正在准备打å°æ–‡æ¡£â€¦ +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=å–消 + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=切æ¢ä¾§æ  +toggle_sidebar_notification2.title=切æ¢ä¾§æ ï¼ˆæ–‡æ¡£æ‰€å«çš„大纲/附件/图层) +toggle_sidebar_label=切æ¢ä¾§æ  +document_outline.title=显示文档大纲(åŒå‡»å±•å¼€/折å æ‰€æœ‰é¡¹ï¼‰ +document_outline_label=文档大纲 +attachments.title=显示附件 +attachments_label=附件 +layers.title=显示图层(åŒå‡»å³å¯å°†æ‰€æœ‰å›¾å±‚é‡ç½®ä¸ºé»˜è®¤çŠ¶æ€ï¼‰ +layers_label=图层 +thumbs.title=显示缩略图 +thumbs_label=缩略图 +current_outline_item.title=查找当å‰å¤§çº²é¡¹ç›® +current_outline_item_label=当å‰å¤§çº²é¡¹ç›® +findbar.title=在文档中查找 +findbar_label=查找 + +additional_layers=其他图层 +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=第 {{page}} 页 +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=第 {{page}} 页 +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=é¡µé¢ {{page}} 的缩略图 + +# Find panel button title and messages +find_input.title=查找 +find_input.placeholder=在文档中查找… +find_previous.title=查找è¯è¯­ä¸Šä¸€æ¬¡å‡ºçŽ°çš„ä½ç½® +find_previous_label=上一页 +find_next.title=查找è¯è¯­åŽä¸€æ¬¡å‡ºçŽ°çš„ä½ç½® +find_next_label=下一页 +find_highlight=全部高亮显示 +find_match_case_label=区分大å°å†™ +find_match_diacritics_label=匹é…å˜éŸ³ç¬¦å· +find_entire_word_label=å­—è¯åŒ¹é… +find_reached_top=到达文档开头,从末尾继续 +find_reached_bottom=到达文档末尾,从开头继续 +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]=第 {{current}} é¡¹ï¼Œå…±åŒ¹é… {{total}} 项 +find_match_count[two]=第 {{current}} é¡¹ï¼Œå…±åŒ¹é… {{total}} 项 +find_match_count[few]=第 {{current}} é¡¹ï¼Œå…±åŒ¹é… {{total}} 项 +find_match_count[many]=第 {{current}} é¡¹ï¼Œå…±åŒ¹é… {{total}} 项 +find_match_count[other]=第 {{current}} é¡¹ï¼Œå…±åŒ¹é… {{total}} 项 +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=超过 {{limit}} é¡¹åŒ¹é… +find_match_count_limit[one]=超过 {{limit}} é¡¹åŒ¹é… +find_match_count_limit[two]=超过 {{limit}} é¡¹åŒ¹é… +find_match_count_limit[few]=超过 {{limit}} é¡¹åŒ¹é… +find_match_count_limit[many]=超过 {{limit}} é¡¹åŒ¹é… +find_match_count_limit[other]=超过 {{limit}} é¡¹åŒ¹é… +find_not_found=找ä¸åˆ°æŒ‡å®šè¯è¯­ + +# Error panel labels +error_more_info=æ›´å¤šä¿¡æ¯ +error_less_info=æ›´å°‘ä¿¡æ¯ +error_close=关闭 +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=ä¿¡æ¯ï¼š{{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=堆栈:{{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=文件:{{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=è¡Œå·ï¼š{{line}} + +# Predefined zoom values +page_scale_width=适åˆé¡µå®½ +page_scale_fit=适åˆé¡µé¢ +page_scale_auto=自动缩放 +page_scale_actual=å®žé™…å¤§å° +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=正在载入… +loading_error=载入 PDF æ—¶å‘生错误。 +invalid_file_error=无效或æŸåçš„ PDF 文件。 +missing_file_error=缺少 PDF 文件。 +unexpected_response_error=æ„外的æœåŠ¡å™¨å“应。 + +rendering_error=渲染页é¢æ—¶å‘生错误。 + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}},{{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} 注释] +password_label=输入密ç ä»¥æ‰“开此 PDF 文件。 +password_invalid=密ç æ— æ•ˆã€‚请é‡è¯•ã€‚ +password_ok=确定 +password_cancel=å–消 + +printing_not_supported=警告:此æµè§ˆå™¨å°šæœªå®Œæ•´æ”¯æŒæ‰“å°åŠŸèƒ½ã€‚ +printing_not_ready=警告:此 PDF 未完æˆè½½å…¥ï¼Œæ— æ³•æ‰“å°ã€‚ +web_fonts_disabled=Web 字体已被ç¦ç”¨ï¼šæ— æ³•ä½¿ç”¨åµŒå…¥çš„ PDF 字体。 + +# Editor +editor_free_text2.title=文本 +editor_free_text2_label=文本 +editor_ink2.title=绘图 +editor_ink2_label=绘图 + +free_text2_default_content=开始输入… + +# Editor Parameters +editor_free_text_color=颜色 +editor_free_text_size=å­—å· +editor_ink_color=颜色 +editor_ink_thickness=粗细 +editor_ink_opacity=ä¸é€æ˜Žåº¦ + +# Editor aria +editor_free_text2_aria_label=文本编辑器 +editor_ink2_aria_label=绘图编辑器 +editor_ink_canvas_aria_label=ç”¨æˆ·åˆ›å»ºå›¾åƒ diff --git a/page/static/js/web/locale/zh-TW/viewer.properties b/page/static/js/web/locale/zh-TW/viewer.properties new file mode 100644 index 0000000..89339a5 --- /dev/null +++ b/page/static/js/web/locale/zh-TW/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=ä¸Šä¸€é  +previous_label=ä¸Šä¸€é  +next.title=ä¸‹ä¸€é  +next_label=ä¸‹ä¸€é  + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=第 +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=é ï¼Œå…± {{pagesCount}} é  +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=(第 {{pageNumber}} é ï¼Œå…± {{pagesCount}} é ï¼‰ + +zoom_out.title=ç¸®å° +zoom_out_label=ç¸®å° +zoom_in.title=放大 +zoom_in_label=放大 +zoom.title=縮放 +presentation_mode.title=切æ›è‡³ç°¡å ±æ¨¡å¼ +presentation_mode_label=ç°¡å ±æ¨¡å¼ +open_file.title=開啟檔案 +open_file_label=é–‹å•Ÿ +print.title=åˆ—å° +print_label=åˆ—å° +download.title=下載 +download_label=下載 +save.title=儲存 +save_label=儲存 +bookmark.title=ç›®å‰ç•«é¢ï¼ˆè¤‡è£½æˆ–開啟於新視窗) +bookmark_label=ç›®å‰ç•«é¢ + +bookmark1.title=ç›®å‰é é¢ï¼ˆå«ç›®å‰æª¢è¦–é é¢çš„網å€ï¼‰ +bookmark1_label=ç›®å‰é é¢ + +# Secondary toolbar and context menu +tools.title=工具 +tools_label=工具 +first_page.title=è·³åˆ°ç¬¬ä¸€é  +first_page_label=è·³åˆ°ç¬¬ä¸€é  +last_page.title=è·³åˆ°æœ€å¾Œä¸€é  +last_page_label=è·³åˆ°æœ€å¾Œä¸€é  +page_rotate_cw.title=順時é‡æ—‹è½‰ +page_rotate_cw_label=順時é‡æ—‹è½‰ +page_rotate_ccw.title=逆時é‡æ—‹è½‰ +page_rotate_ccw_label=逆時é‡æ—‹è½‰ + +cursor_text_select_tool.title=開啟文字é¸æ“‡å·¥å…· +cursor_text_select_tool_label=文字é¸æ“‡å·¥å…· +cursor_hand_tool.title=é–‹å•Ÿé é¢ç§»å‹•å·¥å…· +cursor_hand_tool_label=é é¢ç§»å‹•å·¥å…· + +scroll_page.title=使用é é¢æ²å‹•åŠŸèƒ½ +scroll_page_label=é é¢æ²å‹•åŠŸèƒ½ +scroll_vertical.title=使用垂直æ²å‹•ç‰ˆé¢ +scroll_vertical_label=åž‚ç›´æ²å‹• +scroll_horizontal.title=使用水平æ²å‹•ç‰ˆé¢ +scroll_horizontal_label=æ°´å¹³æ²å‹• +scroll_wrapped.title=使用多é æ²å‹•ç‰ˆé¢ +scroll_wrapped_label=多é æ²å‹• + +spread_none.title=ä¸è¦é€²è¡Œè·¨é é¡¯ç¤º +spread_none_label=ä¸è·¨é  +spread_odd.title=從奇數é é–‹å§‹è·¨é  +spread_odd_label=å¥‡æ•¸è·¨é  +spread_even.title=從å¶æ•¸é é–‹å§‹è·¨é  +spread_even_label=å¶æ•¸è·¨é  + +# Document properties dialog box +document_properties.title=文件內容… +document_properties_label=文件內容… +document_properties_file_name=檔案å稱: +document_properties_file_size=檔案大å°: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB({{size_b}} ä½å…ƒçµ„) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB({{size_b}} ä½å…ƒçµ„) +document_properties_title=標題: +document_properties_author=作者: +document_properties_subject=主旨: +document_properties_keywords=é—œéµå­—: +document_properties_creation_date=建立日期: +document_properties_modification_date=修改日期: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}} {{time}} +document_properties_creator=建立者: +document_properties_producer=PDF 產生器: +document_properties_version=PDF 版本: +document_properties_page_count=é æ•¸: +document_properties_page_size=é é¢å¤§å°: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=åž‚ç›´ +document_properties_page_size_orientation_landscape=æ°´å¹³ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}}({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}}({{name}},{{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=快速 Web 檢視: +document_properties_linearized_yes=是 +document_properties_linearized_no=å¦ +document_properties_close=關閉 + +print_progress_message=正在準備列å°æ–‡ä»¶â€¦ +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=å–消 + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=切æ›å´é‚Šæ¬„ +toggle_sidebar_notification2.title=切æ›å´é‚Šæ¬„(包å«å¤§ç¶±ã€é™„件ã€åœ–層的文件) +toggle_sidebar_label=切æ›å´é‚Šæ¬„ +document_outline.title=顯示文件大綱(雙擊展開/摺疊所有項目) +document_outline_label=文件大綱 +attachments.title=顯示附件 +attachments_label=附件 +layers.title=顯示圖層(滑鼠雙擊å³å¯å°‡æ‰€æœ‰åœ–層é‡è¨­ç‚ºé è¨­ç‹€æ…‹ï¼‰ +layers_label=圖層 +thumbs.title=顯示縮圖 +thumbs_label=縮圖 +current_outline_item.title=尋找目å‰çš„大綱項目 +current_outline_item_label=ç›®å‰çš„大綱項目 +findbar.title=在文件中尋找 +findbar_label=尋找 + +additional_layers=其他圖層 +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=第 {{page}} é  +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=第 {{page}} é  +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=第 {{page}} é çš„縮圖 + +# Find panel button title and messages +find_input.title=尋找 +find_input.placeholder=在文件中æœå°‹â€¦ +find_previous.title=尋找文字å‰æ¬¡å‡ºç¾çš„ä½ç½® +find_previous_label=上一個 +find_next.title=尋找文字下次出ç¾çš„ä½ç½® +find_next_label=下一個 +find_highlight=全部強調標示 +find_match_case_label=å€åˆ†å¤§å°å¯« +find_match_diacritics_label=符åˆè®ŠéŸ³ç¬¦è™Ÿ +find_entire_word_label=符åˆæ•´å€‹å­— +find_reached_top=å·²æœå°‹è‡³æ–‡ä»¶é ‚端,自底端繼續æœå°‹ +find_reached_bottom=å·²æœå°‹è‡³æ–‡ä»¶åº•ç«¯ï¼Œè‡ªé ‚端繼續æœå°‹ +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]=第 {{current}} 筆,共找到 {{total}} ç­† +find_match_count[two]=第 {{current}} 筆,共找到 {{total}} ç­† +find_match_count[few]=第 {{current}} 筆,共找到 {{total}} ç­† +find_match_count[many]=第 {{current}} 筆,共找到 {{total}} ç­† +find_match_count[other]=第 {{current}} 筆,共找到 {{total}} ç­† +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=æ‰¾åˆ°è¶…éŽ {{limit}} ç­† +find_match_count_limit[one]=æ‰¾åˆ°è¶…éŽ {{limit}} ç­† +find_match_count_limit[two]=æ‰¾åˆ°è¶…éŽ {{limit}} ç­† +find_match_count_limit[few]=æ‰¾åˆ°è¶…éŽ {{limit}} ç­† +find_match_count_limit[many]=æ‰¾åˆ°è¶…éŽ {{limit}} ç­† +find_match_count_limit[other]=æ‰¾åˆ°è¶…éŽ {{limit}} ç­† +find_not_found=找ä¸åˆ°æŒ‡å®šæ–‡å­— + +# Error panel labels +error_more_info=更多資訊 +error_less_info=更少資訊 +error_close=關閉 +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=訊æ¯: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=堆疊: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=檔案: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=è¡Œ: {{line}} + +# Predefined zoom values +page_scale_width=é é¢å¯¬åº¦ +page_scale_fit=縮放至é é¢å¤§å° +page_scale_auto=自動縮放 +page_scale_actual=å¯¦éš›å¤§å° +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=載入中… +loading_error=載入 PDF 時發生錯誤。 +invalid_file_error=無效或毀æçš„ PDF 檔案。 +missing_file_error=找ä¸åˆ° PDF 檔案。 +unexpected_response_error=伺æœå™¨å›žæ‡‰æœªé æœŸçš„內容。 + +rendering_error=æ繪é é¢æ™‚發生錯誤。 + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}} {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} 註解] +password_label=請輸入用來開啟此 PDF 檔案的密碼。 +password_invalid=密碼ä¸æ­£ç¢ºï¼Œè«‹å†è©¦ä¸€æ¬¡ã€‚ +password_ok=確定 +password_cancel=å–消 + +printing_not_supported=警告: æ­¤ç€è¦½å™¨æœªå®Œæ•´æ”¯æ´åˆ—å°åŠŸèƒ½ã€‚ +printing_not_ready=警告: æ­¤ PDF 未完æˆä¸‹è¼‰ä»¥ä¾›åˆ—å°ã€‚ +web_fonts_disabled=å·²åœç”¨ç¶²è·¯å­—åž‹ (Web fonts): 無法使用 PDF 內嵌字型。 + +# Editor +editor_free_text2.title=文字 +editor_free_text2_label=文字 +editor_ink2.title=繪圖 +editor_ink2_label=繪圖 + +free_text2_default_content=開始打字… + +# Editor Parameters +editor_free_text_color=色彩 +editor_free_text_size=å¤§å° +editor_ink_color=色彩 +editor_ink_thickness=ç·šæ¢ç²—ç´° +editor_ink_opacity=é€â€‹æ˜Žåº¦ + +# Editor aria +editor_free_text2_aria_label=文本編輯器 +editor_ink2_aria_label=圖形編輯器 +editor_ink_canvas_aria_label=使用者建立的圖片 diff --git a/page/static/js/web/standard_fonts/FoxitDingbats.pfb b/page/static/js/web/standard_fonts/FoxitDingbats.pfb new file mode 100644 index 0000000..30d5296 Binary files /dev/null and b/page/static/js/web/standard_fonts/FoxitDingbats.pfb differ diff --git a/page/static/js/web/standard_fonts/FoxitFixed.pfb b/page/static/js/web/standard_fonts/FoxitFixed.pfb new file mode 100644 index 0000000..f12dcbc Binary files /dev/null and b/page/static/js/web/standard_fonts/FoxitFixed.pfb differ diff --git a/page/static/js/web/standard_fonts/FoxitFixedBold.pfb b/page/static/js/web/standard_fonts/FoxitFixedBold.pfb new file mode 100644 index 0000000..cf8e24a Binary files /dev/null and b/page/static/js/web/standard_fonts/FoxitFixedBold.pfb differ diff --git a/page/static/js/web/standard_fonts/FoxitFixedBoldItalic.pfb b/page/static/js/web/standard_fonts/FoxitFixedBoldItalic.pfb new file mode 100644 index 0000000..d288001 Binary files /dev/null and b/page/static/js/web/standard_fonts/FoxitFixedBoldItalic.pfb differ diff --git a/page/static/js/web/standard_fonts/FoxitFixedItalic.pfb b/page/static/js/web/standard_fonts/FoxitFixedItalic.pfb new file mode 100644 index 0000000..d71697d Binary files /dev/null and b/page/static/js/web/standard_fonts/FoxitFixedItalic.pfb differ diff --git a/page/static/js/web/standard_fonts/FoxitSans.pfb b/page/static/js/web/standard_fonts/FoxitSans.pfb new file mode 100644 index 0000000..37f244b Binary files /dev/null and b/page/static/js/web/standard_fonts/FoxitSans.pfb differ diff --git a/page/static/js/web/standard_fonts/FoxitSansBold.pfb b/page/static/js/web/standard_fonts/FoxitSansBold.pfb new file mode 100644 index 0000000..affcf31 Binary files /dev/null and b/page/static/js/web/standard_fonts/FoxitSansBold.pfb differ diff --git a/page/static/js/web/standard_fonts/FoxitSansBoldItalic.pfb b/page/static/js/web/standard_fonts/FoxitSansBoldItalic.pfb new file mode 100644 index 0000000..e1f60b7 Binary files /dev/null and b/page/static/js/web/standard_fonts/FoxitSansBoldItalic.pfb differ diff --git a/page/static/js/web/standard_fonts/FoxitSansItalic.pfb b/page/static/js/web/standard_fonts/FoxitSansItalic.pfb new file mode 100644 index 0000000..c04b0a5 Binary files /dev/null and b/page/static/js/web/standard_fonts/FoxitSansItalic.pfb differ diff --git a/page/static/js/web/standard_fonts/FoxitSerif.pfb b/page/static/js/web/standard_fonts/FoxitSerif.pfb new file mode 100644 index 0000000..3fa682e Binary files /dev/null and b/page/static/js/web/standard_fonts/FoxitSerif.pfb differ diff --git a/page/static/js/web/standard_fonts/FoxitSerifBold.pfb b/page/static/js/web/standard_fonts/FoxitSerifBold.pfb new file mode 100644 index 0000000..ff7c6dd Binary files /dev/null and b/page/static/js/web/standard_fonts/FoxitSerifBold.pfb differ diff --git a/page/static/js/web/standard_fonts/FoxitSerifBoldItalic.pfb b/page/static/js/web/standard_fonts/FoxitSerifBoldItalic.pfb new file mode 100644 index 0000000..460231f Binary files /dev/null and b/page/static/js/web/standard_fonts/FoxitSerifBoldItalic.pfb differ diff --git a/page/static/js/web/standard_fonts/FoxitSerifItalic.pfb b/page/static/js/web/standard_fonts/FoxitSerifItalic.pfb new file mode 100644 index 0000000..d03a7c7 Binary files /dev/null and b/page/static/js/web/standard_fonts/FoxitSerifItalic.pfb differ diff --git a/page/static/js/web/standard_fonts/FoxitSymbol.pfb b/page/static/js/web/standard_fonts/FoxitSymbol.pfb new file mode 100644 index 0000000..c8f9bca Binary files /dev/null and b/page/static/js/web/standard_fonts/FoxitSymbol.pfb differ diff --git a/page/static/js/web/standard_fonts/LICENSE_FOXIT b/page/static/js/web/standard_fonts/LICENSE_FOXIT new file mode 100644 index 0000000..8b4ed6d --- /dev/null +++ b/page/static/js/web/standard_fonts/LICENSE_FOXIT @@ -0,0 +1,27 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/page/static/js/web/standard_fonts/LICENSE_LIBERATION b/page/static/js/web/standard_fonts/LICENSE_LIBERATION new file mode 100644 index 0000000..aba73e8 --- /dev/null +++ b/page/static/js/web/standard_fonts/LICENSE_LIBERATION @@ -0,0 +1,102 @@ +Digitized data copyright (c) 2010 Google Corporation + with Reserved Font Arimo, Tinos and Cousine. +Copyright (c) 2012 Red Hat, Inc. + with Reserved Font Name Liberation. + +This Font Software is licensed under the SIL Open Font License, +Version 1.1. + +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 + +PREAMBLE The goals of the Open Font License (OFL) are to stimulate +worldwide development of collaborative font projects, to support the font +creation efforts of academic and linguistic communities, and to provide +a free and open framework in which fonts may be shared and improved in +partnership with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. +The fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply to +any document created using the fonts or their derivatives. + + + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. +This may include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components +as distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting ? in part or in whole ? +any of the components of the Original Version, by changing formats or +by porting the Font Software to a new environment. + +"Author" refers to any designer, engineer, programmer, technical writer +or other person who contributed to the Font Software. + + +PERMISSION & CONDITIONS + +Permission is hereby granted, free of charge, to any person obtaining a +copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components,in + Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, + redistributed and/or sold with any software, provided that each copy + contains the above copyright notice and this license. These can be + included either as stand-alone text files, human-readable headers or + in the appropriate machine-readable metadata fields within text or + binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font + Name(s) unless explicit written permission is granted by the + corresponding Copyright Holder. This restriction only applies to the + primary font name as presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font + Software shall not be used to promote, endorse or advertise any + Modified Version, except to acknowledge the contribution(s) of the + Copyright Holder(s) and the Author(s) or with their explicit written + permission. + +5) The Font Software, modified or unmodified, in part or in whole, must + be distributed entirely under this license, and must not be distributed + under any other license. The requirement for fonts to remain under + this license does not apply to any document created using the Font + Software. + + + +TERMINATION +This license becomes null and void if any of the above conditions are not met. + + + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER +DEALINGS IN THE FONT SOFTWARE. + diff --git a/page/static/js/web/standard_fonts/LiberationSans-Bold.ttf b/page/static/js/web/standard_fonts/LiberationSans-Bold.ttf new file mode 100644 index 0000000..ee23715 Binary files /dev/null and b/page/static/js/web/standard_fonts/LiberationSans-Bold.ttf differ diff --git a/page/static/js/web/standard_fonts/LiberationSans-BoldItalic.ttf b/page/static/js/web/standard_fonts/LiberationSans-BoldItalic.ttf new file mode 100644 index 0000000..42b5717 Binary files /dev/null and b/page/static/js/web/standard_fonts/LiberationSans-BoldItalic.ttf differ diff --git a/page/static/js/web/standard_fonts/LiberationSans-Italic.ttf b/page/static/js/web/standard_fonts/LiberationSans-Italic.ttf new file mode 100644 index 0000000..0cf6126 Binary files /dev/null and b/page/static/js/web/standard_fonts/LiberationSans-Italic.ttf differ diff --git a/page/static/js/web/standard_fonts/LiberationSans-Regular.ttf b/page/static/js/web/standard_fonts/LiberationSans-Regular.ttf new file mode 100644 index 0000000..366d148 Binary files /dev/null and b/page/static/js/web/standard_fonts/LiberationSans-Regular.ttf differ diff --git a/page/static/js/web/viewer.css b/page/static/js/web/viewer.css new file mode 100644 index 0000000..9febd42 --- /dev/null +++ b/page/static/js/web/viewer.css @@ -0,0 +1,2692 @@ +/* Copyright 2014 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +:root { + --highlight-bg-color: rgba(180, 0, 170, 1); + --highlight-selected-bg-color: rgba(0, 100, 0, 1); +} + +@media screen and (forced-colors: active) { + :root { + --highlight-bg-color: Highlight; + --highlight-selected-bg-color: ButtonText; + } +} + +.textLayer { + position: absolute; + text-align: initial; + left: 0; + top: 0; + right: 0; + bottom: 0; + overflow: hidden; + opacity: 0.25; + line-height: 1; + -webkit-text-size-adjust: none; + -moz-text-size-adjust: none; + text-size-adjust: none; + forced-color-adjust: none; + transform-origin: 0 0; + z-index: 2; +} + +.textLayer span, +.textLayer br { + color: transparent; + position: absolute; + white-space: pre; + cursor: text; + transform-origin: 0% 0%; +} + +/* Only necessary in Google Chrome, see issue 14205, and most unfortunately + * the problem doesn't show up in "text" reference tests. */ +.textLayer span.markedContent { + top: 0; + height: 0; +} + +.textLayer .highlight { + margin: -1px; + padding: 1px; + background-color: var(--highlight-bg-color); + border-radius: 4px; +} + +.textLayer .highlight.appended { + position: initial; +} + +.textLayer .highlight.begin { + border-radius: 4px 0 0 4px; +} + +.textLayer .highlight.end { + border-radius: 0 4px 4px 0; +} + +.textLayer .highlight.middle { + border-radius: 0; +} + +.textLayer .highlight.selected { + background-color: var(--highlight-selected-bg-color); +} + +.textLayer ::-moz-selection { + background: blue; + background: AccentColor; +} + +.textLayer ::selection { + background: blue; + background: AccentColor; +} + +/* Avoids https://github.com/mozilla/pdf.js/issues/13840 in Chrome */ +.textLayer br::-moz-selection { + background: transparent; +} +.textLayer br::selection { + background: transparent; +} + +.textLayer .endOfContent { + display: block; + position: absolute; + left: 0; + top: 100%; + right: 0; + bottom: 0; + z-index: -1; + cursor: default; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.textLayer .endOfContent.active { + top: 0; +} + + +:root { + --annotation-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,<svg width='1px' height='1px' xmlns='http://www.w3.org/2000/svg'><rect width='100%' height='100%' style='fill:rgba(0, 54, 255, 0.13);'/></svg>"); + --input-focus-border-color: Highlight; + --input-focus-outline: 1px solid Canvas; + --input-unfocused-border-color: transparent; + --input-disabled-border-color: transparent; + --input-hover-border-color: black; + --link-outline: none; +} + +@media screen and (forced-colors: active) { + :root { + --input-focus-border-color: CanvasText; + --input-unfocused-border-color: ActiveText; + --input-disabled-border-color: GrayText; + --input-hover-border-color: Highlight; + --link-outline: 1.5px solid LinkText; + } + .annotationLayer .textWidgetAnnotation input:required, + .annotationLayer .textWidgetAnnotation textarea:required, + .annotationLayer .choiceWidgetAnnotation select:required, + .annotationLayer .buttonWidgetAnnotation.checkBox input:required, + .annotationLayer .buttonWidgetAnnotation.radioButton input:required { + outline: 1.5px solid selectedItem; + } + + .annotationLayer .linkAnnotation:hover { + -webkit-backdrop-filter: invert(100%); + backdrop-filter: invert(100%); + } +} + +.annotationLayer { + position: absolute; + top: 0; + left: 0; + pointer-events: none; + transform-origin: 0 0; + z-index: 3; +} + +.annotationLayer section { + position: absolute; + text-align: initial; + pointer-events: auto; + box-sizing: border-box; + transform-origin: 0 0; +} + +.annotationLayer .linkAnnotation { + outline: var(--link-outline); +} + +.annotationLayer .linkAnnotation > a, +.annotationLayer .buttonWidgetAnnotation.pushButton > a { + position: absolute; + font-size: 1em; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.annotationLayer .buttonWidgetAnnotation.pushButton > canvas { + width: 100%; + height: 100%; +} + +.annotationLayer .linkAnnotation > a:hover, +.annotationLayer .buttonWidgetAnnotation.pushButton > a:hover { + opacity: 0.2; + background: rgba(255, 255, 0, 1); + box-shadow: 0 2px 10px rgba(255, 255, 0, 1); +} + +.annotationLayer .textAnnotation img { + position: absolute; + cursor: pointer; + width: 100%; + height: 100%; +} + +.annotationLayer .textWidgetAnnotation input, +.annotationLayer .textWidgetAnnotation textarea, +.annotationLayer .choiceWidgetAnnotation select, +.annotationLayer .buttonWidgetAnnotation.checkBox input, +.annotationLayer .buttonWidgetAnnotation.radioButton input { + background-image: var(--annotation-unfocused-field-background); + border: 2px solid var(--input-unfocused-border-color); + box-sizing: border-box; + font: calc(9px * var(--scale-factor)) sans-serif; + height: 100%; + margin: 0; + vertical-align: top; + width: 100%; +} + +.annotationLayer .textWidgetAnnotation input:required, +.annotationLayer .textWidgetAnnotation textarea:required, +.annotationLayer .choiceWidgetAnnotation select:required, +.annotationLayer .buttonWidgetAnnotation.checkBox input:required, +.annotationLayer .buttonWidgetAnnotation.radioButton input:required { + outline: 1.5px solid red; +} + +.annotationLayer .choiceWidgetAnnotation select option { + padding: 0; +} + +.annotationLayer .buttonWidgetAnnotation.radioButton input { + border-radius: 50%; +} + +.annotationLayer .textWidgetAnnotation textarea { + resize: none; +} + +.annotationLayer .textWidgetAnnotation input[disabled], +.annotationLayer .textWidgetAnnotation textarea[disabled], +.annotationLayer .choiceWidgetAnnotation select[disabled], +.annotationLayer .buttonWidgetAnnotation.checkBox input[disabled], +.annotationLayer .buttonWidgetAnnotation.radioButton input[disabled] { + background: none; + border: 2px solid var(--input-disabled-border-color); + cursor: not-allowed; +} + +.annotationLayer .textWidgetAnnotation input:hover, +.annotationLayer .textWidgetAnnotation textarea:hover, +.annotationLayer .choiceWidgetAnnotation select:hover, +.annotationLayer .buttonWidgetAnnotation.checkBox input:hover, +.annotationLayer .buttonWidgetAnnotation.radioButton input:hover { + border: 2px solid var(--input-hover-border-color); +} +.annotationLayer .textWidgetAnnotation input:hover, +.annotationLayer .textWidgetAnnotation textarea:hover, +.annotationLayer .choiceWidgetAnnotation select:hover, +.annotationLayer .buttonWidgetAnnotation.checkBox input:hover { + border-radius: 2px; +} + +.annotationLayer .textWidgetAnnotation input:focus, +.annotationLayer .textWidgetAnnotation textarea:focus, +.annotationLayer .choiceWidgetAnnotation select:focus { + background: none; + border: 2px solid var(--input-focus-border-color); + border-radius: 2px; + outline: var(--input-focus-outline); +} + +.annotationLayer .buttonWidgetAnnotation.checkBox :focus, +.annotationLayer .buttonWidgetAnnotation.radioButton :focus { + background-image: none; + background-color: transparent; +} + +.annotationLayer .buttonWidgetAnnotation.checkBox :focus { + border: 2px solid var(--input-focus-border-color); + border-radius: 2px; + outline: var(--input-focus-outline); +} + +.annotationLayer .buttonWidgetAnnotation.radioButton :focus { + border: 2px solid var(--input-focus-border-color); + outline: var(--input-focus-outline); +} + +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before, +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after, +.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before { + background-color: CanvasText; + content: ""; + display: block; + position: absolute; +} + +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before, +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after { + height: 80%; + left: 45%; + width: 1px; +} + +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before { + transform: rotate(45deg); +} + +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after { + transform: rotate(-45deg); +} + +.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before { + border-radius: 50%; + height: 50%; + left: 30%; + top: 20%; + width: 50%; +} + +.annotationLayer .textWidgetAnnotation input.comb { + font-family: monospace; + padding-left: 2px; + padding-right: 0; +} + +.annotationLayer .textWidgetAnnotation input.comb:focus { + /* + * Letter spacing is placed on the right side of each character. Hence, the + * letter spacing of the last character may be placed outside the visible + * area, causing horizontal scrolling. We avoid this by extending the width + * when the element has focus and revert this when it loses focus. + */ + width: 103%; +} + +.annotationLayer .buttonWidgetAnnotation.checkBox input, +.annotationLayer .buttonWidgetAnnotation.radioButton input { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +.annotationLayer .popupTriggerArea { + height: 100%; + width: 100%; +} + +.annotationLayer .popupWrapper { + position: absolute; + font-size: calc(9px * var(--scale-factor)); + width: 100%; + min-width: calc(180px * var(--scale-factor)); + pointer-events: none; +} + +.annotationLayer .popup { + position: absolute; + max-width: calc(180px * var(--scale-factor)); + background-color: rgba(255, 255, 153, 1); + box-shadow: 0 calc(2px * var(--scale-factor)) calc(5px * var(--scale-factor)) + rgba(136, 136, 136, 1); + border-radius: calc(2px * var(--scale-factor)); + padding: calc(6px * var(--scale-factor)); + margin-left: calc(5px * var(--scale-factor)); + cursor: pointer; + font: message-box; + white-space: normal; + word-wrap: break-word; + pointer-events: auto; +} + +.annotationLayer .popup > * { + font-size: calc(9px * var(--scale-factor)); +} + +.annotationLayer .popup h1 { + display: inline-block; +} + +.annotationLayer .popupDate { + display: inline-block; + margin-left: calc(5px * var(--scale-factor)); +} + +.annotationLayer .popupContent { + border-top: 1px solid rgba(51, 51, 51, 1); + margin-top: calc(2px * var(--scale-factor)); + padding-top: calc(2px * var(--scale-factor)); +} + +.annotationLayer .richText > * { + white-space: pre-wrap; + font-size: calc(9px * var(--scale-factor)); +} + +.annotationLayer .highlightAnnotation, +.annotationLayer .underlineAnnotation, +.annotationLayer .squigglyAnnotation, +.annotationLayer .strikeoutAnnotation, +.annotationLayer .freeTextAnnotation, +.annotationLayer .lineAnnotation svg line, +.annotationLayer .squareAnnotation svg rect, +.annotationLayer .circleAnnotation svg ellipse, +.annotationLayer .polylineAnnotation svg polyline, +.annotationLayer .polygonAnnotation svg polygon, +.annotationLayer .caretAnnotation, +.annotationLayer .inkAnnotation svg polyline, +.annotationLayer .stampAnnotation, +.annotationLayer .fileAttachmentAnnotation { + cursor: pointer; +} + +.annotationLayer section svg { + position: absolute; + width: 100%; + height: 100%; +} + +.annotationLayer .annotationTextContent { + position: absolute; + width: 100%; + height: 100%; + opacity: 0; + color: transparent; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + pointer-events: none; +} + +.annotationLayer .annotationTextContent span { + width: 100%; + display: inline-block; +} + + +:root { + --xfa-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,<svg width='1px' height='1px' xmlns='http://www.w3.org/2000/svg'><rect width='100%' height='100%' style='fill:rgba(0, 54, 255, 0.13);'/></svg>"); + --xfa-focus-outline: auto; +} + +@media screen and (forced-colors: active) { + :root { + --xfa-focus-outline: 2px solid CanvasText; + } + .xfaLayer *:required { + outline: 1.5px solid selectedItem; + } +} + +.xfaLayer { + background-color: transparent; +} + +.xfaLayer .highlight { + margin: -1px; + padding: 1px; + background-color: rgba(239, 203, 237, 1); + border-radius: 4px; +} + +.xfaLayer .highlight.appended { + position: initial; +} + +.xfaLayer .highlight.begin { + border-radius: 4px 0 0 4px; +} + +.xfaLayer .highlight.end { + border-radius: 0 4px 4px 0; +} + +.xfaLayer .highlight.middle { + border-radius: 0; +} + +.xfaLayer .highlight.selected { + background-color: rgba(203, 223, 203, 1); +} + +.xfaPage { + overflow: hidden; + position: relative; +} + +.xfaContentarea { + position: absolute; +} + +.xfaPrintOnly { + display: none; +} + +.xfaLayer { + position: absolute; + text-align: initial; + top: 0; + left: 0; + transform-origin: 0 0; + line-height: 1.2; +} + +.xfaLayer * { + color: inherit; + font: inherit; + font-style: inherit; + font-weight: inherit; + font-kerning: inherit; + letter-spacing: -0.01px; + text-align: inherit; + text-decoration: inherit; + box-sizing: border-box; + background-color: transparent; + padding: 0; + margin: 0; + pointer-events: auto; + line-height: inherit; +} + +.xfaLayer *:required { + outline: 1.5px solid red; +} + +.xfaLayer div { + pointer-events: none; +} + +.xfaLayer svg { + pointer-events: none; +} + +.xfaLayer svg * { + pointer-events: none; +} + +.xfaLayer a { + color: blue; +} + +.xfaRich li { + margin-left: 3em; +} + +.xfaFont { + color: black; + font-weight: normal; + font-kerning: none; + font-size: 10px; + font-style: normal; + letter-spacing: 0; + text-decoration: none; + vertical-align: 0; +} + +.xfaCaption { + overflow: hidden; + flex: 0 0 auto; +} + +.xfaCaptionForCheckButton { + overflow: hidden; + flex: 1 1 auto; +} + +.xfaLabel { + height: 100%; + width: 100%; +} + +.xfaLeft { + display: flex; + flex-direction: row; + align-items: center; +} + +.xfaRight { + display: flex; + flex-direction: row-reverse; + align-items: center; +} + +.xfaLeft > .xfaCaption, +.xfaLeft > .xfaCaptionForCheckButton, +.xfaRight > .xfaCaption, +.xfaRight > .xfaCaptionForCheckButton { + max-height: 100%; +} + +.xfaTop { + display: flex; + flex-direction: column; + align-items: flex-start; +} + +.xfaBottom { + display: flex; + flex-direction: column-reverse; + align-items: flex-start; +} + +.xfaTop > .xfaCaption, +.xfaTop > .xfaCaptionForCheckButton, +.xfaBottom > .xfaCaption, +.xfaBottom > .xfaCaptionForCheckButton { + width: 100%; +} + +.xfaBorder { + background-color: transparent; + position: absolute; + pointer-events: none; +} + +.xfaWrapped { + width: 100%; + height: 100%; +} + +.xfaTextfield:focus, +.xfaSelect:focus { + background-image: none; + background-color: transparent; + outline: var(--xfa-focus-outline); + outline-offset: -1px; +} + +.xfaCheckbox:focus, +.xfaRadio:focus { + outline: var(--xfa-focus-outline); +} + +.xfaTextfield, +.xfaSelect { + height: 100%; + width: 100%; + flex: 1 1 auto; + border: none; + resize: none; + background-image: var(--xfa-unfocused-field-background); +} + +.xfaSelect { + padding-inline: 2px; +} + +.xfaTop > .xfaTextfield, +.xfaTop > .xfaSelect, +.xfaBottom > .xfaTextfield, +.xfaBottom > .xfaSelect { + flex: 0 1 auto; +} + +.xfaButton { + cursor: pointer; + width: 100%; + height: 100%; + border: none; + text-align: center; +} + +.xfaLink { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; +} + +.xfaCheckbox, +.xfaRadio { + width: 100%; + height: 100%; + flex: 0 0 auto; + border: none; +} + +.xfaRich { + white-space: pre-wrap; + width: 100%; + height: 100%; +} + +.xfaImage { + -o-object-position: left top; + object-position: left top; + -o-object-fit: contain; + object-fit: contain; + width: 100%; + height: 100%; +} + +.xfaLrTb, +.xfaRlTb, +.xfaTb { + display: flex; + flex-direction: column; + align-items: stretch; +} + +.xfaLr { + display: flex; + flex-direction: row; + align-items: stretch; +} + +.xfaRl { + display: flex; + flex-direction: row-reverse; + align-items: stretch; +} + +.xfaTb > div { + justify-content: left; +} + +.xfaPosition { + position: relative; +} + +.xfaArea { + position: relative; +} + +.xfaValignMiddle { + display: flex; + align-items: center; +} + +.xfaTable { + display: flex; + flex-direction: column; + align-items: stretch; +} + +.xfaTable .xfaRow { + display: flex; + flex-direction: row; + align-items: stretch; +} + +.xfaTable .xfaRlRow { + display: flex; + flex-direction: row-reverse; + align-items: stretch; + flex: 1; +} + +.xfaTable .xfaRlRow > div { + flex: 1; +} + +.xfaNonInteractive input, +.xfaNonInteractive textarea, +.xfaDisabled input, +.xfaDisabled textarea, +.xfaReadOnly input, +.xfaReadOnly textarea { + background: initial; +} + +@media print { + .xfaTextfield, + .xfaSelect { + background: transparent; + } + + .xfaSelect { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + text-indent: 1px; + text-overflow: ""; + } +} + + +:root { + --focus-outline: solid 2px blue; + --hover-outline: dashed 2px blue; + --freetext-line-height: 1.35; + --freetext-padding: 2px; + --editorFreeText-editing-cursor: text; + --editorInk-editing-cursor: url(images/cursor-editorInk.svg) 0 16, pointer; +} + +@media (-webkit-min-device-pixel-ratio: 1.1), (min-resolution: 1.1dppx) { + :root { + --editorFreeText-editing-cursor: url(images/cursor-editorFreeText.svg) 0 16, + text; + } +} + +@media screen and (forced-colors: active) { + :root { + --focus-outline: solid 3px ButtonText; + --hover-outline: dashed 3px ButtonText; + } +} + +[data-editor-rotation="90"] { + transform: rotate(90deg); +} +[data-editor-rotation="180"] { + transform: rotate(180deg); +} +[data-editor-rotation="270"] { + transform: rotate(270deg); +} + +.annotationEditorLayer { + background: transparent; + position: absolute; + top: 0; + left: 0; + font-size: calc(100px * var(--scale-factor)); + transform-origin: 0 0; + cursor: auto; + z-index: 4; +} + +.annotationEditorLayer.freeTextEditing { + cursor: var(--editorFreeText-editing-cursor); +} + +.annotationEditorLayer.inkEditing { + cursor: var(--editorInk-editing-cursor); +} + +.annotationEditorLayer .selectedEditor { + outline: var(--focus-outline); + resize: none; +} + +.annotationEditorLayer .freeTextEditor { + position: absolute; + background: transparent; + border-radius: 3px; + padding: calc(var(--freetext-padding) * var(--scale-factor)); + resize: none; + width: auto; + height: auto; + z-index: 1; + transform-origin: 0 0; + touch-action: none; + cursor: auto; +} + +.annotationEditorLayer .freeTextEditor .internal { + background: transparent; + border: none; + top: 0; + left: 0; + overflow: visible; + white-space: nowrap; + resize: none; + font: 10px sans-serif; + line-height: var(--freetext-line-height); +} + +.annotationEditorLayer .freeTextEditor .overlay { + position: absolute; + display: none; + background: transparent; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.annotationEditorLayer .freeTextEditor .overlay.enabled { + display: block; +} + +.annotationEditorLayer .freeTextEditor .internal:empty::before { + content: attr(default-content); + color: gray; +} + +.annotationEditorLayer .freeTextEditor .internal:focus { + outline: none; +} + +.annotationEditorLayer .inkEditor.disabled { + resize: none; +} + +.annotationEditorLayer .inkEditor.disabled.selectedEditor { + resize: horizontal; +} + +.annotationEditorLayer .freeTextEditor:hover:not(.selectedEditor), +.annotationEditorLayer .inkEditor:hover:not(.selectedEditor) { + outline: var(--hover-outline); +} + +.annotationEditorLayer .inkEditor { + position: absolute; + background: transparent; + border-radius: 3px; + overflow: auto; + width: 100%; + height: 100%; + z-index: 1; + transform-origin: 0 0; + cursor: auto; +} + +.annotationEditorLayer .inkEditor.editing { + resize: none; + cursor: inherit; +} + +.annotationEditorLayer .inkEditor .inkEditorCanvas { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + touch-action: none; +} + +:root { + --viewer-container-height: 0; + --pdfViewer-padding-bottom: 0; + --page-margin: 1px auto -8px; + --page-border: 9px solid transparent; + --spreadHorizontalWrapped-margin-LR: -3.5px; + --loading-icon-delay: 400ms; +} + +@media screen and (forced-colors: active) { + :root { + --pdfViewer-padding-bottom: 9px; + --page-margin: 8px auto -1px; + --page-border: 1px solid CanvasText; + --spreadHorizontalWrapped-margin-LR: 3.5px; + } +} + +[data-main-rotation="90"] { + transform: rotate(90deg) translateY(-100%); +} +[data-main-rotation="180"] { + transform: rotate(180deg) translate(-100%, -100%); +} +[data-main-rotation="270"] { + transform: rotate(270deg) translateX(-100%); +} + +.pdfViewer { + /* Define this variable here and not in :root to avoid to reflow all the UI + when scaling (see #15929). */ + --scale-factor: 1; + + padding-bottom: var(--pdfViewer-padding-bottom); +} + +.pdfViewer .canvasWrapper { + overflow: hidden; + width: 100%; + height: 100%; + z-index: 1; +} + +.pdfViewer .page { + direction: ltr; + width: 816px; + height: 1056px; + margin: var(--page-margin); + position: relative; + overflow: visible; + border: var(--page-border); + background-clip: content-box; + background-color: rgba(255, 255, 255, 1); +} + +.pdfViewer .dummyPage { + position: relative; + width: 0; + height: var(--viewer-container-height); +} + +.pdfViewer.removePageBorders .page { + margin: 0 auto 10px; + border: none; +} + +.pdfViewer.scrollHorizontal, +.pdfViewer.scrollWrapped, +.spread { + margin-left: 3.5px; + margin-right: 3.5px; + text-align: center; +} + +.pdfViewer.scrollHorizontal, +.spread { + white-space: nowrap; +} + +.pdfViewer.removePageBorders, +.pdfViewer.scrollHorizontal .spread, +.pdfViewer.scrollWrapped .spread { + margin-left: 0; + margin-right: 0; +} + +.spread .page, +.spread .dummyPage, +.pdfViewer.scrollHorizontal .page, +.pdfViewer.scrollWrapped .page, +.pdfViewer.scrollHorizontal .spread, +.pdfViewer.scrollWrapped .spread { + display: inline-block; + vertical-align: middle; +} + +.spread .page, +.pdfViewer.scrollHorizontal .page, +.pdfViewer.scrollWrapped .page { + margin-left: var(--spreadHorizontalWrapped-margin-LR); + margin-right: var(--spreadHorizontalWrapped-margin-LR); +} + +.pdfViewer.removePageBorders .spread .page, +.pdfViewer.removePageBorders.scrollHorizontal .page, +.pdfViewer.removePageBorders.scrollWrapped .page { + margin-left: 5px; + margin-right: 5px; +} + +.pdfViewer .page canvas { + margin: 0; + display: block; +} + +.pdfViewer .page canvas .structTree { + contain: strict; +} + +.pdfViewer .page canvas[hidden] { + display: none; +} + +.pdfViewer .page canvas[zooming] { + width: 100%; + height: 100%; +} + +.pdfViewer .page.loadingIcon:after { + position: absolute; + top: 0; + left: 0; + content: ""; + width: 100%; + height: 100%; + background: url("images/loading-icon.gif") center no-repeat; + display: none; + /* Using a delay with background-image doesn't work, + consequently we use the display. */ + transition-property: display; + transition-delay: var(--loading-icon-delay); + z-index: 5; + contain: strict; +} + +.pdfViewer .page.loading:after { + display: block; +} + +.pdfViewer .page:not(.loading):after { + transition-property: none; + display: none; +} + +.pdfViewer.enablePermissions .textLayer span { + -webkit-user-select: none !important; + -moz-user-select: none !important; + user-select: none !important; + cursor: not-allowed; +} + +.pdfPresentationMode .pdfViewer { + padding-bottom: 0; +} + +.pdfPresentationMode .spread { + margin: 0; +} + +.pdfPresentationMode .pdfViewer .page { + margin: 0 auto; + border: 2px solid transparent; +} + +:root { + --dir-factor: 1; + --inline-start: left; + --inline-end: right; + + --sidebar-width: 200px; + --sidebar-transition-duration: 200ms; + --sidebar-transition-timing-function: ease; + + --toolbar-icon-opacity: 0.7; + --doorhanger-icon-opacity: 0.9; + + --main-color: rgba(12, 12, 13, 1); + --body-bg-color: rgba(212, 212, 215, 1); + --progressBar-color: rgba(10, 132, 255, 1); + --progressBar-bg-color: rgba(221, 221, 222, 1); + --progressBar-blend-color: rgba(116, 177, 239, 1); + --scrollbar-color: auto; + --scrollbar-bg-color: auto; + --toolbar-icon-bg-color: rgba(0, 0, 0, 1); + --toolbar-icon-hover-bg-color: rgba(0, 0, 0, 1); + + --sidebar-narrow-bg-color: rgba(212, 212, 215, 0.9); + --sidebar-toolbar-bg-color: rgba(245, 246, 247, 1); + --toolbar-bg-color: rgba(249, 249, 250, 1); + --toolbar-border-color: rgba(184, 184, 184, 1); + --toolbar-box-shadow: 0 1px 0 var(--toolbar-border-color); + --toolbar-border-bottom: none; + --toolbarSidebar-box-shadow: inset calc(-1px * var(--dir-factor)) 0 0 + rgba(0, 0, 0, 0.25), + 0 1px 0 rgba(0, 0, 0, 0.15), 0 0 1px rgba(0, 0, 0, 0.1); + --toolbarSidebar-border-bottom: none; + --button-hover-color: rgba(221, 222, 223, 1); + --toggled-btn-color: rgba(0, 0, 0, 1); + --toggled-btn-bg-color: rgba(0, 0, 0, 0.3); + --toggled-hover-active-btn-color: rgba(0, 0, 0, 0.4); + --dropdown-btn-bg-color: rgba(215, 215, 219, 1); + --dropdown-btn-border: none; + --separator-color: rgba(0, 0, 0, 0.3); + --field-color: rgba(6, 6, 6, 1); + --field-bg-color: rgba(255, 255, 255, 1); + --field-border-color: rgba(187, 187, 188, 1); + --treeitem-color: rgba(0, 0, 0, 0.8); + --treeitem-hover-color: rgba(0, 0, 0, 0.9); + --treeitem-selected-color: rgba(0, 0, 0, 0.9); + --treeitem-selected-bg-color: rgba(0, 0, 0, 0.25); + --sidebaritem-bg-color: rgba(0, 0, 0, 0.15); + --doorhanger-bg-color: rgba(255, 255, 255, 1); + --doorhanger-border-color: rgba(12, 12, 13, 0.2); + --doorhanger-hover-color: rgba(12, 12, 13, 1); + --doorhanger-hover-bg-color: rgba(237, 237, 237, 1); + --doorhanger-separator-color: rgba(222, 222, 222, 1); + --dialog-button-border: none; + --dialog-button-bg-color: rgba(12, 12, 13, 0.1); + --dialog-button-hover-bg-color: rgba(12, 12, 13, 0.3); + + --loading-icon: url(images/loading.svg); + --treeitem-expanded-icon: url(images/treeitem-expanded.svg); + --treeitem-collapsed-icon: url(images/treeitem-collapsed.svg); + --toolbarButton-editorFreeText-icon: url(images/toolbarButton-editorFreeText.svg); + --toolbarButton-editorInk-icon: url(images/toolbarButton-editorInk.svg); + --toolbarButton-menuArrow-icon: url(images/toolbarButton-menuArrow.svg); + --toolbarButton-sidebarToggle-icon: url(images/toolbarButton-sidebarToggle.svg); + --toolbarButton-secondaryToolbarToggle-icon: url(images/toolbarButton-secondaryToolbarToggle.svg); + --toolbarButton-pageUp-icon: url(images/toolbarButton-pageUp.svg); + --toolbarButton-pageDown-icon: url(images/toolbarButton-pageDown.svg); + --toolbarButton-zoomOut-icon: url(images/toolbarButton-zoomOut.svg); + --toolbarButton-zoomIn-icon: url(images/toolbarButton-zoomIn.svg); + --toolbarButton-presentationMode-icon: url(images/toolbarButton-presentationMode.svg); + --toolbarButton-print-icon: url(images/toolbarButton-print.svg); + --toolbarButton-openFile-icon: url(images/toolbarButton-openFile.svg); + --toolbarButton-download-icon: url(images/toolbarButton-download.svg); + --toolbarButton-bookmark-icon: url(images/toolbarButton-bookmark.svg); + --toolbarButton-viewThumbnail-icon: url(images/toolbarButton-viewThumbnail.svg); + --toolbarButton-viewOutline-icon: url(images/toolbarButton-viewOutline.svg); + --toolbarButton-viewAttachments-icon: url(images/toolbarButton-viewAttachments.svg); + --toolbarButton-viewLayers-icon: url(images/toolbarButton-viewLayers.svg); + --toolbarButton-currentOutlineItem-icon: url(images/toolbarButton-currentOutlineItem.svg); + --toolbarButton-search-icon: url(images/toolbarButton-search.svg); + --findbarButton-previous-icon: url(images/findbarButton-previous.svg); + --findbarButton-next-icon: url(images/findbarButton-next.svg); + --secondaryToolbarButton-firstPage-icon: url(images/secondaryToolbarButton-firstPage.svg); + --secondaryToolbarButton-lastPage-icon: url(images/secondaryToolbarButton-lastPage.svg); + --secondaryToolbarButton-rotateCcw-icon: url(images/secondaryToolbarButton-rotateCcw.svg); + --secondaryToolbarButton-rotateCw-icon: url(images/secondaryToolbarButton-rotateCw.svg); + --secondaryToolbarButton-selectTool-icon: url(images/secondaryToolbarButton-selectTool.svg); + --secondaryToolbarButton-handTool-icon: url(images/secondaryToolbarButton-handTool.svg); + --secondaryToolbarButton-scrollPage-icon: url(images/secondaryToolbarButton-scrollPage.svg); + --secondaryToolbarButton-scrollVertical-icon: url(images/secondaryToolbarButton-scrollVertical.svg); + --secondaryToolbarButton-scrollHorizontal-icon: url(images/secondaryToolbarButton-scrollHorizontal.svg); + --secondaryToolbarButton-scrollWrapped-icon: url(images/secondaryToolbarButton-scrollWrapped.svg); + --secondaryToolbarButton-spreadNone-icon: url(images/secondaryToolbarButton-spreadNone.svg); + --secondaryToolbarButton-spreadOdd-icon: url(images/secondaryToolbarButton-spreadOdd.svg); + --secondaryToolbarButton-spreadEven-icon: url(images/secondaryToolbarButton-spreadEven.svg); + --secondaryToolbarButton-documentProperties-icon: url(images/secondaryToolbarButton-documentProperties.svg); +} + +[dir="rtl"]:root { + --dir-factor: -1; + --inline-start: right; + --inline-end: left; +} + +@media (prefers-color-scheme: dark) { + :root { + --main-color: rgba(249, 249, 250, 1); + --body-bg-color: rgba(42, 42, 46, 1); + --progressBar-color: rgba(0, 96, 223, 1); + --progressBar-bg-color: rgba(40, 40, 43, 1); + --progressBar-blend-color: rgba(20, 68, 133, 1); + --scrollbar-color: rgba(121, 121, 123, 1); + --scrollbar-bg-color: rgba(35, 35, 39, 1); + --toolbar-icon-bg-color: rgba(255, 255, 255, 1); + --toolbar-icon-hover-bg-color: rgba(255, 255, 255, 1); + + --sidebar-narrow-bg-color: rgba(42, 42, 46, 0.9); + --sidebar-toolbar-bg-color: rgba(50, 50, 52, 1); + --toolbar-bg-color: rgba(56, 56, 61, 1); + --toolbar-border-color: rgba(12, 12, 13, 1); + --button-hover-color: rgba(102, 102, 103, 1); + --toggled-btn-color: rgba(255, 255, 255, 1); + --toggled-btn-bg-color: rgba(0, 0, 0, 0.3); + --toggled-hover-active-btn-color: rgba(0, 0, 0, 0.4); + --dropdown-btn-bg-color: rgba(74, 74, 79, 1); + --separator-color: rgba(0, 0, 0, 0.3); + --field-color: rgba(250, 250, 250, 1); + --field-bg-color: rgba(64, 64, 68, 1); + --field-border-color: rgba(115, 115, 115, 1); + --treeitem-color: rgba(255, 255, 255, 0.8); + --treeitem-hover-color: rgba(255, 255, 255, 0.9); + --treeitem-selected-color: rgba(255, 255, 255, 0.9); + --treeitem-selected-bg-color: rgba(255, 255, 255, 0.25); + --sidebaritem-bg-color: rgba(255, 255, 255, 0.15); + --doorhanger-bg-color: rgba(74, 74, 79, 1); + --doorhanger-border-color: rgba(39, 39, 43, 1); + --doorhanger-hover-color: rgba(249, 249, 250, 1); + --doorhanger-hover-bg-color: rgba(93, 94, 98, 1); + --doorhanger-separator-color: rgba(92, 92, 97, 1); + --dialog-button-bg-color: rgba(92, 92, 97, 1); + --dialog-button-hover-bg-color: rgba(115, 115, 115, 1); + + /* This image is used in <input> elements, which unfortunately means that + * the `mask-image` approach used with all of the other images doesn't work + * here; hence why we still have two versions of this particular image. */ + --loading-icon: url(images/loading-dark.svg); + } +} + +@media screen and (forced-colors: active) { + :root { + --button-hover-color: Highlight; + --doorhanger-hover-bg-color: Highlight; + --toolbar-icon-opacity: 1; + --toolbar-icon-bg-color: ButtonText; + --toolbar-icon-hover-bg-color: ButtonFace; + --toolbar-border-color: CanvasText; + --toolbar-border-bottom: 1px solid var(--toolbar-border-color); + --toolbar-box-shadow: none; + --toggled-btn-color: HighlightText; + --toggled-btn-bg-color: LinkText; + --doorhanger-hover-color: ButtonFace; + --doorhanger-border-color-whcm: 1px solid ButtonText; + --doorhanger-triangle-opacity-whcm: 0; + --dialog-button-border: 1px solid Highlight; + --dialog-button-hover-bg-color: Highlight; + --dialog-button-hover-color: ButtonFace; + --dropdown-btn-border: 1px solid ButtonText; + --field-border-color: ButtonText; + --main-color: CanvasText; + --separator-color: GrayText; + --doorhanger-separator-color: GrayText; + --toolbarSidebar-box-shadow: none; + --toolbarSidebar-border-bottom: 1px solid var(--toolbar-border-color); + } +} + +@media screen and (prefers-reduced-motion: reduce) { + :root { + --sidebar-transition-duration: 0; + } +} + +* { + padding: 0; + margin: 0; +} + +html, +body { + height: 100%; + width: 100%; +} + +body { + background-color: var(--body-bg-color); + scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color); +} + +.hidden, +[hidden] { + display: none !important; +} + +#viewerContainer.pdfPresentationMode:-webkit-full-screen { + top: 0; + background-color: rgba(0, 0, 0, 1); + width: 100%; + height: 100%; + overflow: hidden; + cursor: none; + -webkit-user-select: none; + user-select: none; +} + +#viewerContainer.pdfPresentationMode:fullscreen { + top: 0; + background-color: rgba(0, 0, 0, 1); + width: 100%; + height: 100%; + overflow: hidden; + cursor: none; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.pdfPresentationMode:-webkit-full-screen section:not([data-internal-link]) { + pointer-events: none; +} + +.pdfPresentationMode:fullscreen section:not([data-internal-link]) { + pointer-events: none; +} + +.pdfPresentationMode:-webkit-full-screen .textLayer span { + cursor: none; +} + +.pdfPresentationMode:fullscreen .textLayer span { + cursor: none; +} + +.pdfPresentationMode.pdfPresentationModeControls > *, +.pdfPresentationMode.pdfPresentationModeControls .textLayer span { + cursor: default; +} + +#outerContainer { + width: 100%; + height: 100%; + position: relative; +} + +#sidebarContainer { + position: absolute; + top: 32px; + bottom: 0; + inset-inline-start: calc(-1 * var(--sidebar-width)); + width: var(--sidebar-width); + visibility: hidden; + z-index: 100; + font: message-box; + border-top: 1px solid rgba(51, 51, 51, 1); + -webkit-border-end: var(--doorhanger-border-color-whcm); + border-inline-end: var(--doorhanger-border-color-whcm); + transition-property: inset-inline-start; + transition-duration: var(--sidebar-transition-duration); + transition-timing-function: var(--sidebar-transition-timing-function); +} + +#outerContainer.sidebarMoving #sidebarContainer, +#outerContainer.sidebarOpen #sidebarContainer { + visibility: visible; +} +#outerContainer.sidebarOpen #sidebarContainer { + inset-inline-start: 0; +} + +#mainContainer { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + min-width: 350px; +} + +#sidebarContent { + top: 32px; + bottom: 0; + inset-inline-start: 0; + overflow: auto; + position: absolute; + width: 100%; + box-shadow: inset calc(-1px * var(--dir-factor)) 0 0 rgba(0, 0, 0, 0.25); +} + +#viewerContainer { + overflow: auto; + position: absolute; + top: 32px; + right: 0; + bottom: 0; + left: 0; + outline: none; +} +#viewerContainer:not(.pdfPresentationMode) { + transition-duration: var(--sidebar-transition-duration); + transition-timing-function: var(--sidebar-transition-timing-function); +} + +#outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) { + inset-inline-start: var(--sidebar-width); + transition-property: inset-inline-start; +} + +.toolbar { + position: relative; + left: 0; + right: 0; + z-index: 9999; + cursor: default; + font: message-box; +} + +.toolbar input, +.toolbar button, +.toolbar select, +.secondaryToolbar input, +.secondaryToolbar button, +.secondaryToolbar a, +.secondaryToolbar select, +.editorParamsToolbar input, +.editorParamsToolbar button, +.editorParamsToolbar select, +.findbar input, +.findbar button, +.findbar select, +#sidebarContainer input, +#sidebarContainer button, +#sidebarContainer select { + outline: none; + font: message-box; +} + +#toolbarContainer { + width: 100%; +} + +#toolbarSidebar { + width: 100%; + height: 32px; + background-color: var(--sidebar-toolbar-bg-color); + box-shadow: var(--toolbarSidebar-box-shadow); + border-bottom: var(--toolbarSidebar-border-bottom); +} + +#sidebarResizer { + position: absolute; + top: 0; + bottom: 0; + inset-inline-end: -6px; + width: 6px; + z-index: 200; + cursor: ew-resize; +} + +#toolbarContainer, +.findbar, +.secondaryToolbar, +.editorParamsToolbar { + position: relative; + height: 32px; + background-color: var(--toolbar-bg-color); + box-shadow: var(--toolbar-box-shadow); + border-bottom: var(--toolbar-border-bottom); +} + +#toolbarViewer { + height: 32px; +} + +#loadingBar { + /* Define these variables here, and not in :root, to avoid reflowing the + entire viewer when updating progress (see issue 15958). */ + --progressBar-percent: 0%; + --progressBar-end-offset: 0; + + position: absolute; + inset-inline: 0 var(--progressBar-end-offset); + height: 4px; + background-color: var(--progressBar-bg-color); + border-bottom: 1px solid var(--toolbar-border-color); + transition-property: inset-inline-start; + transition-duration: var(--sidebar-transition-duration); + transition-timing-function: var(--sidebar-transition-timing-function); +} + +#outerContainer.sidebarOpen #loadingBar { + inset-inline-start: var(--sidebar-width); +} + +#loadingBar .progress { + position: absolute; + top: 0; + left: 0; + width: 100%; + transform: scaleX(var(--progressBar-percent)); + transform-origin: 0 0; + height: 100%; + background-color: var(--progressBar-color); + overflow: hidden; + transition: transform 200ms; +} + +@keyframes progressIndeterminate { + 0% { + transform: translateX(-142px); + } + 100% { + transform: translateX(0); + } +} + +#loadingBar.indeterminate .progress { + transform: none; + background-color: var(--progressBar-bg-color); + transition: none; +} + +#loadingBar.indeterminate .progress .glimmer { + position: absolute; + top: 0; + left: 0; + height: 100%; + width: calc(100% + 150px); + background: repeating-linear-gradient( + 135deg, + var(--progressBar-blend-color) 0, + var(--progressBar-bg-color) 5px, + var(--progressBar-bg-color) 45px, + var(--progressBar-color) 55px, + var(--progressBar-color) 95px, + var(--progressBar-blend-color) 100px + ); + animation: progressIndeterminate 1s linear infinite; +} + +#outerContainer.sidebarResizing #sidebarContainer, +#outerContainer.sidebarResizing #viewerContainer, +#outerContainer.sidebarResizing #loadingBar { + /* Improve responsiveness and avoid visual glitches when the sidebar is resized. */ + transition-duration: 0s; +} + +.findbar, +.secondaryToolbar, +.editorParamsToolbar { + top: 32px; + position: absolute; + z-index: 30000; + height: auto; + padding: 0 4px; + margin: 4px 2px; + font: message-box; + font-size: 12px; + line-height: 14px; + text-align: left; + cursor: default; +} + +.findbar { + inset-inline-start: 64px; + min-width: 300px; + background-color: var(--toolbar-bg-color); +} +.findbar > div { + height: 32px; +} +.findbar > div#findbarInputContainer { + -webkit-margin-end: 4px; + margin-inline-end: 4px; +} +.findbar.wrapContainers > div, +.findbar.wrapContainers > div#findbarMessageContainer > * { + clear: both; +} +.findbar.wrapContainers > div#findbarMessageContainer { + height: auto; +} + +.findbar input[type="checkbox"] { + pointer-events: none; +} + +.findbar label { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.findbar label:hover, +.findbar input:focus-visible + label { + color: var(--toggled-btn-color); + background-color: var(--button-hover-color); +} + +.findbar .toolbarField[type="checkbox"]:checked + .toolbarLabel { + background-color: var(--toggled-btn-bg-color) !important; + color: var(--toggled-btn-color); +} + +#findInput { + width: 200px; +} +#findInput::-moz-placeholder { + font-style: normal; +} +#findInput::placeholder { + font-style: normal; +} +#findInput[data-status="pending"] { + background-image: var(--loading-icon); + background-repeat: no-repeat; + background-position: calc(50% + 48% * var(--dir-factor)); +} +#findInput[data-status="notFound"] { + background-color: rgba(255, 102, 102, 1); +} + +.secondaryToolbar, +.editorParamsToolbar { + padding: 6px 0 10px; + inset-inline-end: 4px; + height: auto; + background-color: var(--doorhanger-bg-color); +} + +.editorParamsToolbarContainer { + width: 220px; + margin-bottom: -4px; +} + +.editorParamsToolbarContainer > .editorParamsSetter { + min-height: 26px; + display: flex; + align-items: center; + justify-content: space-between; + padding-inline: 10px; +} + +.editorParamsToolbarContainer .editorParamsLabel { + -webkit-padding-end: 10px; + padding-inline-end: 10px; + flex: none; + color: var(--main-color); +} + +.editorParamsToolbarContainer .editorParamsColor { + width: 32px; + height: 32px; + flex: none; +} + +.editorParamsToolbarContainer .editorParamsSlider { + background-color: transparent; + width: 90px; + flex: 0 1 0; +} + +.editorParamsToolbarContainer .editorParamsSlider::-moz-range-progress { + background-color: black; +} + +.editorParamsToolbarContainer .editorParamsSlider::-webkit-slider-runnable-track, +.editorParamsToolbarContainer .editorParamsSlider::-moz-range-track { + background-color: black; +} + +.editorParamsToolbarContainer .editorParamsSlider::-webkit-slider-thumb, +.editorParamsToolbarContainer .editorParamsSlider::-moz-range-thumb { + background-color: white; +} + +#secondaryToolbarButtonContainer { + max-width: 220px; + min-height: 26px; + max-height: calc(var(--viewer-container-height) - 40px); + overflow-y: auto; + margin-bottom: -4px; +} + +#editorInkParamsToolbar { + inset-inline-end: 40px; + background-color: var(--toolbar-bg-color); +} + +#editorFreeTextParamsToolbar { + inset-inline-end: 68px; + background-color: var(--toolbar-bg-color); +} + +.doorHanger, +.doorHangerRight { + border-radius: 2px; + box-shadow: 0 1px 5px var(--doorhanger-border-color), + 0 0 0 1px var(--doorhanger-border-color); + border: var(--doorhanger-border-color-whcm); +} +.doorHanger:after, +.doorHanger:before, +.doorHangerRight:after, +.doorHangerRight:before { + bottom: 100%; + border: 8px solid rgba(0, 0, 0, 0); + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; + opacity: var(--doorhanger-triangle-opacity-whcm); +} +.doorHanger:after { + inset-inline-start: 10px; + -webkit-margin-start: -8px; + margin-inline-start: -8px; + border-bottom-color: var(--toolbar-bg-color); +} +.doorHangerRight:after { + inset-inline-end: 10px; + -webkit-margin-end: -8px; + margin-inline-end: -8px; + border-bottom-color: var(--doorhanger-bg-color); +} +.doorHanger:before, +.doorHangerRight:before { + border-bottom-color: var(--doorhanger-border-color); + border-width: 9px; +} +.doorHanger:before { + inset-inline-start: 10px; + -webkit-margin-start: -9px; + margin-inline-start: -9px; +} +.doorHangerRight:before { + inset-inline-end: 10px; + -webkit-margin-end: -9px; + margin-inline-end: -9px; +} + +#findResultsCount { + background-color: rgba(217, 217, 217, 1); + color: rgba(82, 82, 82, 1); + text-align: center; + padding: 4px 5px; + margin: 5px; +} + +#findMsg { + color: rgba(251, 0, 0, 1); +} + +#findResultsCount:empty, +#findMsg:empty { + display: none; +} + +#toolbarViewerMiddle { + position: absolute; + left: 50%; + transform: translateX(-50%); +} + +#toolbarViewerLeft, +#toolbarSidebarLeft { + float: var(--inline-start); +} +#toolbarViewerRight, +#toolbarSidebarRight { + float: var(--inline-end); +} + +#toolbarViewerLeft > *, +#toolbarViewerMiddle > *, +#toolbarViewerRight > *, +#toolbarSidebarLeft *, +#toolbarSidebarRight *, +.findbar * { + position: relative; + float: var(--inline-start); +} + +#toolbarViewerLeft { + -webkit-padding-start: 1px; + padding-inline-start: 1px; +} +#toolbarViewerRight { + -webkit-padding-end: 1px; + padding-inline-end: 1px; +} +#toolbarSidebarRight { + -webkit-padding-end: 2px; + padding-inline-end: 2px; +} + +.splitToolbarButton { + margin: 2px; + display: inline-block; +} +.splitToolbarButton > .toolbarButton { + float: var(--inline-start); +} + +.toolbarButton, +.secondaryToolbarButton, +.dialogButton { + border: none; + background: none; + width: 28px; + height: 28px; + outline: none; +} + +.dialogButton:hover, +.dialogButton:focus-visible { + background-color: var(--dialog-button-hover-bg-color); +} + +.dialogButton:hover > span, +.dialogButton:focus-visible > span { + color: var(--dialog-button-hover-color); +} + +.toolbarButton > span { + display: inline-block; + width: 0; + height: 0; + overflow: hidden; +} + +.toolbarButton[disabled], +.secondaryToolbarButton[disabled], +.dialogButton[disabled] { + opacity: 0.5; +} + +.splitToolbarButton > .toolbarButton:hover, +.splitToolbarButton > .toolbarButton:focus-visible, +.dropdownToolbarButton:hover { + background-color: var(--button-hover-color); +} +.splitToolbarButton > .toolbarButton { + position: relative; + margin: 0; +} +#toolbarSidebar .splitToolbarButton > .toolbarButton { + -webkit-margin-end: 2px; + margin-inline-end: 2px; +} + +.splitToolbarButtonSeparator { + float: var(--inline-start); + margin: 4px 0; + width: 1px; + height: 20px; + background-color: var(--separator-color); +} + +.toolbarButton, +.dropdownToolbarButton, +.secondaryToolbarButton, +.dialogButton { + min-width: 16px; + margin: 2px 1px; + padding: 2px 6px 0; + border: none; + border-radius: 2px; + color: var(--main-color); + font-size: 12px; + line-height: 14px; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + cursor: default; + box-sizing: border-box; +} + +.toolbarButton:hover, +.toolbarButton:focus-visible { + background-color: var(--button-hover-color); +} +.secondaryToolbarButton:hover, +.secondaryToolbarButton:focus-visible { + background-color: var(--doorhanger-hover-bg-color); + color: var(--doorhanger-hover-color); +} + +.toolbarButton.toggled, +.splitToolbarButton.toggled > .toolbarButton.toggled, +.secondaryToolbarButton.toggled { + background-color: var(--toggled-btn-bg-color); + color: var(--toggled-btn-color); +} + +.toolbarButton.toggled::before, +.secondaryToolbarButton.toggled::before { + background-color: var(--toggled-btn-color); +} + +.toolbarButton.toggled:hover:active, +.splitToolbarButton.toggled > .toolbarButton.toggled:hover:active, +.secondaryToolbarButton.toggled:hover:active { + background-color: var(--toggled-hover-active-btn-color); +} + +.dropdownToolbarButton { + /* Define this variable here, and not in :root, to avoid reflowing the + entire viewer when updating the width. */ + --scale-select-width: 140px; + + width: var(--scale-select-width); + padding: 0; + background-color: var(--dropdown-btn-bg-color); + border: var(--dropdown-btn-border); +} +.dropdownToolbarButton::after { + top: 6px; + inset-inline-end: 6px; + pointer-events: none; + -webkit-mask-image: var(--toolbarButton-menuArrow-icon); + mask-image: var(--toolbarButton-menuArrow-icon); +} + +.dropdownToolbarButton > select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + width: inherit; + height: 28px; + font-size: 12px; + color: var(--main-color); + margin: 0; + padding: 1px 0 2px; + -webkit-padding-start: 6px; + padding-inline-start: 6px; + border: none; + background-color: var(--dropdown-btn-bg-color); +} +.dropdownToolbarButton > select:hover, +.dropdownToolbarButton > select:focus-visible { + background-color: var(--button-hover-color); + color: var(--toggled-btn-color); +} +.dropdownToolbarButton > select > option { + background: var(--doorhanger-bg-color); + color: var(--main-color); +} + +.toolbarButtonSpacer { + width: 30px; + display: inline-block; + height: 1px; +} + +.toolbarButton::before, +.secondaryToolbarButton::before, +.dropdownToolbarButton::after, +.treeItemToggler::before { + /* All matching images have a size of 16x16 + * All relevant containers have a size of 28x28 */ + position: absolute; + display: inline-block; + width: 16px; + height: 16px; + + content: ""; + background-color: var(--toolbar-icon-bg-color); + -webkit-mask-size: cover; + mask-size: cover; +} + +.dropdownToolbarButton:hover::after, +.dropdownToolbarButton:focus-visible::after, +.dropdownToolbarButton:active::after { + background-color: var(--toolbar-icon-hover-bg-color); +} + +.toolbarButton::before { + opacity: var(--toolbar-icon-opacity); + top: 6px; + left: 6px; +} + +.toolbarButton:hover::before, +.toolbarButton:focus-visible::before, +.secondaryToolbarButton:hover::before, +.secondaryToolbarButton:focus-visible::before { + background-color: var(--toolbar-icon-hover-bg-color); +} + +.secondaryToolbarButton::before { + opacity: var(--doorhanger-icon-opacity); + top: 5px; + inset-inline-start: 12px; +} + +#sidebarToggle::before { + -webkit-mask-image: var(--toolbarButton-sidebarToggle-icon); + mask-image: var(--toolbarButton-sidebarToggle-icon); + transform: scaleX(var(--dir-factor)); +} + +#secondaryToolbarToggle::before { + -webkit-mask-image: var(--toolbarButton-secondaryToolbarToggle-icon); + mask-image: var(--toolbarButton-secondaryToolbarToggle-icon); + transform: scaleX(var(--dir-factor)); +} + +#findPrevious::before { + -webkit-mask-image: var(--findbarButton-previous-icon); + mask-image: var(--findbarButton-previous-icon); +} + +#findNext::before { + -webkit-mask-image: var(--findbarButton-next-icon); + mask-image: var(--findbarButton-next-icon); +} + +#previous::before { + -webkit-mask-image: var(--toolbarButton-pageUp-icon); + mask-image: var(--toolbarButton-pageUp-icon); +} + +#next::before { + -webkit-mask-image: var(--toolbarButton-pageDown-icon); + mask-image: var(--toolbarButton-pageDown-icon); +} + +#zoomOut::before { + -webkit-mask-image: var(--toolbarButton-zoomOut-icon); + mask-image: var(--toolbarButton-zoomOut-icon); +} + +#zoomIn::before { + -webkit-mask-image: var(--toolbarButton-zoomIn-icon); + mask-image: var(--toolbarButton-zoomIn-icon); +} + +#presentationMode::before { + -webkit-mask-image: var(--toolbarButton-presentationMode-icon); + mask-image: var(--toolbarButton-presentationMode-icon); +} + +#editorFreeText::before { + -webkit-mask-image: var(--toolbarButton-editorFreeText-icon); + mask-image: var(--toolbarButton-editorFreeText-icon); +} + +#editorInk::before { + -webkit-mask-image: var(--toolbarButton-editorInk-icon); + mask-image: var(--toolbarButton-editorInk-icon); +} + +#print::before, +#secondaryPrint::before { + -webkit-mask-image: var(--toolbarButton-print-icon); + mask-image: var(--toolbarButton-print-icon); +} + +#openFile::before, +#secondaryOpenFile::before { + -webkit-mask-image: var(--toolbarButton-openFile-icon); + mask-image: var(--toolbarButton-openFile-icon); +} + +#download::before, +#secondaryDownload::before { + -webkit-mask-image: var(--toolbarButton-download-icon); + mask-image: var(--toolbarButton-download-icon); +} + +a.secondaryToolbarButton { + padding-top: 5px; + text-decoration: none; +} +a.toolbarButton[href="#"], +a.secondaryToolbarButton[href="#"] { + opacity: 0.5; + pointer-events: none; +} + +#viewBookmark::before { + -webkit-mask-image: var(--toolbarButton-bookmark-icon); + mask-image: var(--toolbarButton-bookmark-icon); +} + +#viewThumbnail::before { + -webkit-mask-image: var(--toolbarButton-viewThumbnail-icon); + mask-image: var(--toolbarButton-viewThumbnail-icon); +} + +#viewOutline::before { + -webkit-mask-image: var(--toolbarButton-viewOutline-icon); + mask-image: var(--toolbarButton-viewOutline-icon); + transform: scaleX(var(--dir-factor)); +} + +#viewAttachments::before { + -webkit-mask-image: var(--toolbarButton-viewAttachments-icon); + mask-image: var(--toolbarButton-viewAttachments-icon); +} + +#viewLayers::before { + -webkit-mask-image: var(--toolbarButton-viewLayers-icon); + mask-image: var(--toolbarButton-viewLayers-icon); +} + +#currentOutlineItem::before { + -webkit-mask-image: var(--toolbarButton-currentOutlineItem-icon); + mask-image: var(--toolbarButton-currentOutlineItem-icon); + transform: scaleX(var(--dir-factor)); +} + +#viewFind::before { + -webkit-mask-image: var(--toolbarButton-search-icon); + mask-image: var(--toolbarButton-search-icon); +} + +.pdfSidebarNotification::after { + position: absolute; + display: inline-block; + top: 2px; + inset-inline-end: 2px; + /* Create a filled circle, with a diameter of 9 pixels, using only CSS: */ + content: ""; + background-color: rgba(112, 219, 85, 1); + height: 9px; + width: 9px; + border-radius: 50%; +} + +.secondaryToolbarButton { + position: relative; + margin: 0; + padding: 0 0 1px; + -webkit-padding-start: 36px; + padding-inline-start: 36px; + height: auto; + min-height: 26px; + width: auto; + min-width: 100%; + text-align: start; + white-space: normal; + border-radius: 0; + box-sizing: border-box; + display: inline-block; +} +.secondaryToolbarButton > span { + -webkit-padding-end: 4px; + padding-inline-end: 4px; +} + +#firstPage::before { + -webkit-mask-image: var(--secondaryToolbarButton-firstPage-icon); + mask-image: var(--secondaryToolbarButton-firstPage-icon); +} + +#lastPage::before { + -webkit-mask-image: var(--secondaryToolbarButton-lastPage-icon); + mask-image: var(--secondaryToolbarButton-lastPage-icon); +} + +#pageRotateCcw::before { + -webkit-mask-image: var(--secondaryToolbarButton-rotateCcw-icon); + mask-image: var(--secondaryToolbarButton-rotateCcw-icon); +} + +#pageRotateCw::before { + -webkit-mask-image: var(--secondaryToolbarButton-rotateCw-icon); + mask-image: var(--secondaryToolbarButton-rotateCw-icon); +} + +#cursorSelectTool::before { + -webkit-mask-image: var(--secondaryToolbarButton-selectTool-icon); + mask-image: var(--secondaryToolbarButton-selectTool-icon); +} + +#cursorHandTool::before { + -webkit-mask-image: var(--secondaryToolbarButton-handTool-icon); + mask-image: var(--secondaryToolbarButton-handTool-icon); +} + +#scrollPage::before { + -webkit-mask-image: var(--secondaryToolbarButton-scrollPage-icon); + mask-image: var(--secondaryToolbarButton-scrollPage-icon); +} + +#scrollVertical::before { + -webkit-mask-image: var(--secondaryToolbarButton-scrollVertical-icon); + mask-image: var(--secondaryToolbarButton-scrollVertical-icon); +} + +#scrollHorizontal::before { + -webkit-mask-image: var(--secondaryToolbarButton-scrollHorizontal-icon); + mask-image: var(--secondaryToolbarButton-scrollHorizontal-icon); +} + +#scrollWrapped::before { + -webkit-mask-image: var(--secondaryToolbarButton-scrollWrapped-icon); + mask-image: var(--secondaryToolbarButton-scrollWrapped-icon); +} + +#spreadNone::before { + -webkit-mask-image: var(--secondaryToolbarButton-spreadNone-icon); + mask-image: var(--secondaryToolbarButton-spreadNone-icon); +} + +#spreadOdd::before { + -webkit-mask-image: var(--secondaryToolbarButton-spreadOdd-icon); + mask-image: var(--secondaryToolbarButton-spreadOdd-icon); +} + +#spreadEven::before { + -webkit-mask-image: var(--secondaryToolbarButton-spreadEven-icon); + mask-image: var(--secondaryToolbarButton-spreadEven-icon); +} + +#documentProperties::before { + -webkit-mask-image: var(--secondaryToolbarButton-documentProperties-icon); + mask-image: var(--secondaryToolbarButton-documentProperties-icon); +} + +.verticalToolbarSeparator { + display: block; + margin: 5px 2px; + width: 1px; + height: 22px; + background-color: var(--separator-color); +} +.horizontalToolbarSeparator { + display: block; + margin: 6px 0; + height: 1px; + width: 100%; + background-color: var(--doorhanger-separator-color); +} + +.toolbarField { + padding: 4px 7px; + margin: 3px 0; + border-radius: 2px; + background-color: var(--field-bg-color); + background-clip: padding-box; + border: 1px solid var(--field-border-color); + box-shadow: none; + color: var(--field-color); + font-size: 12px; + line-height: 16px; + outline: none; +} + +.toolbarField[type="checkbox"] { + opacity: 0; + position: absolute !important; + left: 0; + margin: 10px 0 3px; + -webkit-margin-start: 7px; + margin-inline-start: 7px; +} + +#pageNumber { + -moz-appearance: textfield; /* hides the spinner in moz */ + text-align: right; + width: 40px; + background-size: 0 0; + transition-property: none; +} +#pageNumber.visiblePageIsLoading { + background-image: var(--loading-icon); + background-repeat: no-repeat; + background-position: 3px; + background-size: 16px 16px; + /* Using a delay with background-image doesn't work, + consequently we use background-size. */ + transition-property: background-size; + transition-delay: var(--loading-icon-delay); +} +#pageNumber::-webkit-inner-spin-button { + -webkit-appearance: none; +} + +.toolbarField:focus { + border-color: #0a84ff; +} + +.toolbarLabel { + min-width: 16px; + padding: 7px; + margin: 2px; + border-radius: 2px; + color: var(--main-color); + font-size: 12px; + line-height: 14px; + text-align: left; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + cursor: default; +} + +#numPages.toolbarLabel { + -webkit-padding-start: 3px; + padding-inline-start: 3px; +} + +#thumbnailView, +#outlineView, +#attachmentsView, +#layersView { + position: absolute; + width: calc(100% - 8px); + top: 0; + bottom: 0; + padding: 4px 4px 0; + overflow: auto; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +#thumbnailView { + width: calc(100% - 60px); + padding: 10px 30px 0; +} + +#thumbnailView > a:active, +#thumbnailView > a:focus { + outline: 0; +} + +.thumbnail { + float: var(--inline-start); + margin: 0 10px 5px; +} + +#thumbnailView > a:last-of-type > .thumbnail { + margin-bottom: 10px; +} +#thumbnailView > a:last-of-type > .thumbnail:not([data-loaded]) { + margin-bottom: 9px; +} + +.thumbnail:not([data-loaded]) { + border: 1px dashed rgba(132, 132, 132, 1); + margin: -1px 9px 4px; +} + +.thumbnailImage { + border: 1px solid rgba(0, 0, 0, 0); + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.5), 0 2px 8px rgba(0, 0, 0, 0.3); + opacity: 0.8; + z-index: 99; + background-color: rgba(255, 255, 255, 1); + background-clip: content-box; +} + +.thumbnailSelectionRing { + border-radius: 2px; + padding: 7px; +} + +a:focus > .thumbnail > .thumbnailSelectionRing > .thumbnailImage, +.thumbnail:hover > .thumbnailSelectionRing > .thumbnailImage { + opacity: 0.9; +} + +a:focus > .thumbnail > .thumbnailSelectionRing, +.thumbnail:hover > .thumbnailSelectionRing { + background-color: var(--sidebaritem-bg-color); + background-clip: padding-box; + color: rgba(255, 255, 255, 0.9); +} + +.thumbnail.selected > .thumbnailSelectionRing > .thumbnailImage { + opacity: 1; +} + +.thumbnail.selected > .thumbnailSelectionRing { + background-color: var(--sidebaritem-bg-color); + background-clip: padding-box; + color: rgba(255, 255, 255, 1); +} + +.treeWithDeepNesting > .treeItem, +.treeItem > .treeItems { + -webkit-margin-start: 20px; + margin-inline-start: 20px; +} + +.treeItem > a { + text-decoration: none; + display: inline-block; + /* Subtract the right padding (left, in RTL mode) of the container: */ + min-width: calc(100% - 4px); + height: auto; + margin-bottom: 1px; + padding: 2px 0 5px; + -webkit-padding-start: 4px; + padding-inline-start: 4px; + border-radius: 2px; + color: var(--treeitem-color); + font-size: 13px; + line-height: 15px; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + white-space: normal; + cursor: pointer; +} + +#layersView .treeItem > a * { + cursor: pointer; +} +#layersView .treeItem > a > label { + -webkit-padding-start: 4px; + padding-inline-start: 4px; +} +#layersView .treeItem > a > label > input { + float: var(--inline-start); + margin-top: 1px; +} + +.treeItemToggler { + position: relative; + float: var(--inline-start); + height: 0; + width: 0; + color: rgba(255, 255, 255, 0.5); +} +.treeItemToggler::before { + inset-inline-end: 4px; + -webkit-mask-image: var(--treeitem-expanded-icon); + mask-image: var(--treeitem-expanded-icon); +} +.treeItemToggler.treeItemsHidden::before { + -webkit-mask-image: var(--treeitem-collapsed-icon); + mask-image: var(--treeitem-collapsed-icon); + transform: scaleX(var(--dir-factor)); +} +.treeItemToggler.treeItemsHidden ~ .treeItems { + display: none; +} + +.treeItem.selected > a { + background-color: var(--treeitem-selected-bg-color); + color: var(--treeitem-selected-color); +} + +.treeItemToggler:hover, +.treeItemToggler:hover + a, +.treeItemToggler:hover ~ .treeItems, +.treeItem > a:hover { + background-color: var(--sidebaritem-bg-color); + background-clip: padding-box; + border-radius: 2px; + color: var(--treeitem-hover-color); +} + +.dialogButton { + width: auto; + margin: 3px 4px 2px !important; + padding: 2px 11px; + color: var(--main-color); + background-color: var(--dialog-button-bg-color); + border: var(--dialog-button-border) !important; +} + +dialog { + margin: auto; + padding: 15px; + border-spacing: 4px; + color: var(--main-color); + font: message-box; + font-size: 12px; + line-height: 14px; + background-color: var(--doorhanger-bg-color); + border: 1px solid rgba(0, 0, 0, 0.5); + border-radius: 4px; + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); +} +dialog::-webkit-backdrop { + background-color: rgba(0, 0, 0, 0.2); +} +dialog::backdrop { + background-color: rgba(0, 0, 0, 0.2); +} + +dialog > .row { + display: table-row; +} + +dialog > .row > * { + display: table-cell; +} + +dialog .toolbarField { + margin: 5px 0; +} + +dialog .separator { + display: block; + margin: 4px 0; + height: 1px; + width: 100%; + background-color: var(--separator-color); +} + +dialog .buttonRow { + text-align: center; + vertical-align: middle; +} + +dialog :link { + color: rgba(255, 255, 255, 1); +} + +#passwordDialog { + text-align: center; +} +#passwordDialog .toolbarField { + width: 200px; +} + +#documentPropertiesDialog { + text-align: left; +} +#documentPropertiesDialog .row > * { + min-width: 100px; + text-align: start; +} +#documentPropertiesDialog .row > span { + width: 125px; + word-wrap: break-word; +} +#documentPropertiesDialog .row > p { + max-width: 225px; + word-wrap: break-word; +} +#documentPropertiesDialog .buttonRow { + margin-top: 10px; +} + +.grab-to-pan-grab { + cursor: grab !important; +} +.grab-to-pan-grab + *:not(input):not(textarea):not(button):not(select):not(:link) { + cursor: inherit !important; +} +.grab-to-pan-grab:active, +.grab-to-pan-grabbing { + cursor: grabbing !important; + position: fixed; + background: rgba(0, 0, 0, 0); + display: block; + top: 0; + left: 0; + right: 0; + bottom: 0; + overflow: hidden; + z-index: 50000; /* should be higher than anything else in PDF.js! */ +} + +@page { + margin: 0; +} + +#printContainer { + display: none; +} + +@media print { + body { + background: rgba(0, 0, 0, 0) none; + } + body[data-pdfjsprinting] #outerContainer { + display: none; + } + body[data-pdfjsprinting] #printContainer { + display: block; + } + #printContainer { + height: 100%; + } + /* wrapper around (scaled) print canvas elements */ + #printContainer > .printedPage { + page-break-after: always; + page-break-inside: avoid; + + /* The wrapper always cover the whole page. */ + height: 100%; + width: 100%; + + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + } + + #printContainer > .xfaPrintedPage .xfaPage { + position: absolute; + } + + #printContainer > .xfaPrintedPage { + page-break-after: always; + page-break-inside: avoid; + width: 100%; + height: 100%; + position: relative; + } + + #printContainer > .printedPage canvas, + #printContainer > .printedPage img { + /* The intrinsic canvas / image size will make sure that we fit the page. */ + max-width: 100%; + max-height: 100%; + + direction: ltr; + display: block; + } +} + +.visibleLargeView, +.visibleMediumView { + display: none; +} + +@media all and (max-width: 900px) { + #toolbarViewerMiddle { + display: table; + margin: auto; + left: auto; + position: inherit; + transform: none; + } +} + +@media all and (max-width: 840px) { + #sidebarContainer { + background-color: var(--sidebar-narrow-bg-color); + } + #outerContainer.sidebarOpen #viewerContainer { + inset-inline-start: 0 !important; + } +} + +@media all and (max-width: 820px) { + #outerContainer .hiddenLargeView { + display: none; + } + #outerContainer .visibleLargeView { + display: inherit; + } +} + +@media all and (max-width: 750px) { + #outerContainer .hiddenMediumView { + display: none; + } + #outerContainer .visibleMediumView { + display: inherit; + } +} + +@media all and (max-width: 690px) { + .hiddenSmallView, + .hiddenSmallView * { + display: none; + } + .toolbarButtonSpacer { + width: 0; + } + .findbar { + inset-inline-start: 34px; + } +} + +@media all and (max-width: 560px) { + #scaleSelectContainer { + display: none; + } +} diff --git a/page/static/js/web/viewer.html b/page/static/js/web/viewer.html new file mode 100644 index 0000000..498984e --- /dev/null +++ b/page/static/js/web/viewer.html @@ -0,0 +1,433 @@ +<!DOCTYPE html> +<!-- +Copyright 2012 Mozilla Foundation + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Adobe CMap resources are covered by their own copyright but the same license: + + Copyright 1990-2015 Adobe Systems Incorporated. + +See https://github.com/adobe-type-tools/cmap-resources +--> +<html dir="ltr" mozdisallowselectionprint> + <head> + <meta charset="utf-8"> + <meta content="width=device-width, initial-scale=1, maximum-scale=1" name="viewport"> + <meta content="notranslate" name="google"> + <title>PDF.js viewer + + + + + + + + + + + + +
+ +
+
+
+
+ + + + +
+
+ +
+ +
+
+
+
+
+ + + +
+
+
+ +
+ + + + + + + + +
+
+
+
+ +
+ +
+ +
+ +
+ + +
+
+ + + + + + +
+ +
+ + +
+ +
+ + +
+
+
+ +
+ +
+ + + +
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+ +
+ +
+
+ +
+
+ + +
+
+ +
+ File name: +

-

+
+
+ File size: +

-

+
+
+
+ Title: +

-

+
+
+ Author: +

-

+
+
+ Subject: +

-

+
+
+ Keywords: +

-

+
+
+ Creation Date: +

-

+
+
+ Modification Date: +

-

+
+
+ Creator: +

-

+
+
+
+ PDF Producer: +

-

+
+
+ PDF Version: +

-

+
+
+ Page Count: +

-

+
+
+ Page Size: +

-

+
+
+
+ Fast Web View: +

-

+
+
+ +
+
+ +
+ Preparing document for printing… +
+
+ + 0% +
+
+ +
+
+
+ +
+
+ + + + diff --git a/page/static/js/web/viewer.js b/page/static/js/web/viewer.js new file mode 100644 index 0000000..6706c10 --- /dev/null +++ b/page/static/js/web/viewer.js @@ -0,0 +1,13912 @@ +/** + * @licstart The following is the entire license notice for the + * JavaScript code in this page + * + * Copyright 2023 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @licend The above is the entire license notice for the + * JavaScript code in this page + */ + +/******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ([ +/* 0 */, +/* 1 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GenericCom = void 0; +var _app = __webpack_require__(2); +var _preferences = __webpack_require__(42); +var _download_manager = __webpack_require__(43); +var _genericl10n = __webpack_require__(44); +var _generic_scripting = __webpack_require__(46); +; +const GenericCom = {}; +exports.GenericCom = GenericCom; +class GenericPreferences extends _preferences.BasePreferences { + async _writeToStorage(prefObj) { + localStorage.setItem("pdfjs.preferences", JSON.stringify(prefObj)); + } + async _readFromStorage(prefObj) { + return JSON.parse(localStorage.getItem("pdfjs.preferences")); + } +} +class GenericExternalServices extends _app.DefaultExternalServices { + static createDownloadManager() { + return new _download_manager.DownloadManager(); + } + static createPreferences() { + return new GenericPreferences(); + } + static createL10n({ + locale = "en-US" + }) { + return new _genericl10n.GenericL10n(locale); + } + static createScripting({ + sandboxBundleSrc + }) { + return new _generic_scripting.GenericScripting(sandboxBundleSrc); + } +} +_app.PDFViewerApplication.externalServices = GenericExternalServices; + +/***/ }), +/* 2 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFViewerApplication = exports.PDFPrintServiceFactory = exports.DefaultExternalServices = void 0; +var _ui_utils = __webpack_require__(3); +var _pdfjsLib = __webpack_require__(4); +var _app_options = __webpack_require__(5); +var _event_utils = __webpack_require__(6); +var _pdf_link_service = __webpack_require__(7); +var _webAnnotation_editor_params = __webpack_require__(8); +var _overlay_manager = __webpack_require__(9); +var _password_prompt = __webpack_require__(10); +var _webPdf_attachment_viewer = __webpack_require__(11); +var _webPdf_cursor_tools = __webpack_require__(13); +var _webPdf_document_properties = __webpack_require__(15); +var _webPdf_find_bar = __webpack_require__(16); +var _pdf_find_controller = __webpack_require__(17); +var _pdf_history = __webpack_require__(19); +var _webPdf_layer_viewer = __webpack_require__(20); +var _webPdf_outline_viewer = __webpack_require__(21); +var _webPdf_presentation_mode = __webpack_require__(22); +var _pdf_rendering_queue = __webpack_require__(23); +var _pdf_scripting_manager = __webpack_require__(24); +var _webPdf_sidebar = __webpack_require__(25); +var _webPdf_sidebar_resizer = __webpack_require__(26); +var _webPdf_thumbnail_viewer = __webpack_require__(27); +var _pdf_viewer = __webpack_require__(29); +var _webSecondary_toolbar = __webpack_require__(39); +var _webToolbar = __webpack_require__(40); +var _view_history = __webpack_require__(41); +const FORCE_PAGES_LOADED_TIMEOUT = 10000; +const WHEEL_ZOOM_DISABLED_TIMEOUT = 1000; +const ViewOnLoad = { + UNKNOWN: -1, + PREVIOUS: 0, + INITIAL: 1 +}; +const ViewerCssTheme = { + AUTOMATIC: 0, + LIGHT: 1, + DARK: 2 +}; +class DefaultExternalServices { + constructor() { + throw new Error("Cannot initialize DefaultExternalServices."); + } + static updateFindControlState(data) {} + static updateFindMatchesCount(data) {} + static initPassiveLoading(callbacks) {} + static reportTelemetry(data) {} + static createDownloadManager() { + throw new Error("Not implemented: createDownloadManager"); + } + static createPreferences() { + throw new Error("Not implemented: createPreferences"); + } + static createL10n(options) { + throw new Error("Not implemented: createL10n"); + } + static createScripting(options) { + throw new Error("Not implemented: createScripting"); + } + static get supportsPinchToZoom() { + return (0, _pdfjsLib.shadow)(this, "supportsPinchToZoom", true); + } + static get supportsIntegratedFind() { + return (0, _pdfjsLib.shadow)(this, "supportsIntegratedFind", false); + } + static get supportsDocumentFonts() { + return (0, _pdfjsLib.shadow)(this, "supportsDocumentFonts", true); + } + static get supportedMouseWheelZoomModifierKeys() { + return (0, _pdfjsLib.shadow)(this, "supportedMouseWheelZoomModifierKeys", { + ctrlKey: true, + metaKey: true + }); + } + static get isInAutomation() { + return (0, _pdfjsLib.shadow)(this, "isInAutomation", false); + } + static updateEditorStates(data) { + throw new Error("Not implemented: updateEditorStates"); + } +} +exports.DefaultExternalServices = DefaultExternalServices; +const PDFViewerApplication = { + initialBookmark: document.location.hash.substring(1), + _initializedCapability: (0, _pdfjsLib.createPromiseCapability)(), + appConfig: null, + pdfDocument: null, + pdfLoadingTask: null, + printService: null, + pdfViewer: null, + pdfThumbnailViewer: null, + pdfRenderingQueue: null, + pdfPresentationMode: null, + pdfDocumentProperties: null, + pdfLinkService: null, + pdfHistory: null, + pdfSidebar: null, + pdfSidebarResizer: null, + pdfOutlineViewer: null, + pdfAttachmentViewer: null, + pdfLayerViewer: null, + pdfCursorTools: null, + pdfScriptingManager: null, + store: null, + downloadManager: null, + overlayManager: null, + preferences: null, + toolbar: null, + secondaryToolbar: null, + eventBus: null, + l10n: null, + annotationEditorParams: null, + isInitialViewSet: false, + downloadComplete: false, + isViewerEmbedded: window.parent !== window, + url: "", + baseUrl: "", + _downloadUrl: "", + externalServices: DefaultExternalServices, + _boundEvents: Object.create(null), + documentInfo: null, + metadata: null, + _contentDispositionFilename: null, + _contentLength: null, + _saveInProgress: false, + _wheelUnusedTicks: 0, + _wheelUnusedFactor: 1, + _touchUnusedTicks: 0, + _touchUnusedFactor: 1, + _PDFBug: null, + _hasAnnotationEditors: false, + _title: document.title, + _printAnnotationStoragePromise: null, + _touchInfo: null, + _isCtrlKeyDown: false, + async initialize(appConfig) { + this.preferences = this.externalServices.createPreferences(); + this.appConfig = appConfig; + await this._initializeOptions(); + this._forceCssTheme(); + await this._initializeL10n(); + if (this.isViewerEmbedded && _app_options.AppOptions.get("externalLinkTarget") === _pdf_link_service.LinkTarget.NONE) { + _app_options.AppOptions.set("externalLinkTarget", _pdf_link_service.LinkTarget.TOP); + } + await this._initializeViewerComponents(); + this.bindEvents(); + this.bindWindowEvents(); + const appContainer = appConfig.appContainer || document.documentElement; + this.l10n.translate(appContainer).then(() => { + this.eventBus.dispatch("localized", { + source: this + }); + }); + this._initializedCapability.resolve(); + }, + async _initializeOptions() { + if (_app_options.AppOptions.get("disablePreferences")) { + if (_app_options.AppOptions.get("pdfBugEnabled")) { + await this._parseHashParams(); + } + return; + } + if (_app_options.AppOptions._hasUserOptions()) { + console.warn("_initializeOptions: The Preferences may override manually set AppOptions; " + 'please use the "disablePreferences"-option in order to prevent that.'); + } + try { + _app_options.AppOptions.setAll(await this.preferences.getAll()); + } catch (reason) { + console.error(`_initializeOptions: "${reason.message}".`); + } + if (_app_options.AppOptions.get("pdfBugEnabled")) { + await this._parseHashParams(); + } + }, + async _parseHashParams() { + const hash = document.location.hash.substring(1); + if (!hash) { + return; + } + const { + mainContainer, + viewerContainer + } = this.appConfig, + params = (0, _ui_utils.parseQueryString)(hash); + if (params.get("disableworker") === "true") { + try { + await loadFakeWorker(); + } catch (ex) { + console.error(`_parseHashParams: "${ex.message}".`); + } + } + if (params.has("disablerange")) { + _app_options.AppOptions.set("disableRange", params.get("disablerange") === "true"); + } + if (params.has("disablestream")) { + _app_options.AppOptions.set("disableStream", params.get("disablestream") === "true"); + } + if (params.has("disableautofetch")) { + _app_options.AppOptions.set("disableAutoFetch", params.get("disableautofetch") === "true"); + } + if (params.has("disablefontface")) { + _app_options.AppOptions.set("disableFontFace", params.get("disablefontface") === "true"); + } + if (params.has("disablehistory")) { + _app_options.AppOptions.set("disableHistory", params.get("disablehistory") === "true"); + } + if (params.has("verbosity")) { + _app_options.AppOptions.set("verbosity", params.get("verbosity") | 0); + } + if (params.has("textlayer")) { + switch (params.get("textlayer")) { + case "off": + _app_options.AppOptions.set("textLayerMode", _ui_utils.TextLayerMode.DISABLE); + break; + case "visible": + case "shadow": + case "hover": + viewerContainer.classList.add(`textLayer-${params.get("textlayer")}`); + try { + await loadPDFBug(this); + this._PDFBug.loadCSS(); + } catch (ex) { + console.error(`_parseHashParams: "${ex.message}".`); + } + break; + } + } + if (params.has("pdfbug")) { + _app_options.AppOptions.set("pdfBug", true); + _app_options.AppOptions.set("fontExtraProperties", true); + const enabled = params.get("pdfbug").split(","); + try { + await loadPDFBug(this); + this._PDFBug.init({ + OPS: _pdfjsLib.OPS + }, mainContainer, enabled); + } catch (ex) { + console.error(`_parseHashParams: "${ex.message}".`); + } + } + if (params.has("locale")) { + _app_options.AppOptions.set("locale", params.get("locale")); + } + }, + async _initializeL10n() { + this.l10n = this.externalServices.createL10n({ + locale: _app_options.AppOptions.get("locale") + }); + const dir = await this.l10n.getDirection(); + document.getElementsByTagName("html")[0].dir = dir; + }, + _forceCssTheme() { + const cssTheme = _app_options.AppOptions.get("viewerCssTheme"); + if (cssTheme === ViewerCssTheme.AUTOMATIC || !Object.values(ViewerCssTheme).includes(cssTheme)) { + return; + } + try { + const styleSheet = document.styleSheets[0]; + const cssRules = styleSheet?.cssRules || []; + for (let i = 0, ii = cssRules.length; i < ii; i++) { + const rule = cssRules[i]; + if (rule instanceof CSSMediaRule && rule.media?.[0] === "(prefers-color-scheme: dark)") { + if (cssTheme === ViewerCssTheme.LIGHT) { + styleSheet.deleteRule(i); + return; + } + const darkRules = /^@media \(prefers-color-scheme: dark\) {\n\s*([\w\s-.,:;/\\{}()]+)\n}$/.exec(rule.cssText); + if (darkRules?.[1]) { + styleSheet.deleteRule(i); + styleSheet.insertRule(darkRules[1], i); + } + return; + } + } + } catch (reason) { + console.error(`_forceCssTheme: "${reason?.message}".`); + } + }, + async _initializeViewerComponents() { + const { + appConfig, + externalServices + } = this; + const eventBus = externalServices.isInAutomation ? new _event_utils.AutomationEventBus() : new _event_utils.EventBus(); + this.eventBus = eventBus; + this.overlayManager = new _overlay_manager.OverlayManager(); + const pdfRenderingQueue = new _pdf_rendering_queue.PDFRenderingQueue(); + pdfRenderingQueue.onIdle = this._cleanup.bind(this); + this.pdfRenderingQueue = pdfRenderingQueue; + const pdfLinkService = new _pdf_link_service.PDFLinkService({ + eventBus, + externalLinkTarget: _app_options.AppOptions.get("externalLinkTarget"), + externalLinkRel: _app_options.AppOptions.get("externalLinkRel"), + ignoreDestinationZoom: _app_options.AppOptions.get("ignoreDestinationZoom") + }); + this.pdfLinkService = pdfLinkService; + const downloadManager = externalServices.createDownloadManager(); + this.downloadManager = downloadManager; + const findController = new _pdf_find_controller.PDFFindController({ + linkService: pdfLinkService, + eventBus, + updateMatchesCountOnProgress: true + }); + this.findController = findController; + const pdfScriptingManager = new _pdf_scripting_manager.PDFScriptingManager({ + eventBus, + sandboxBundleSrc: _app_options.AppOptions.get("sandboxBundleSrc"), + scriptingFactory: externalServices, + docPropertiesLookup: this._scriptingDocProperties.bind(this) + }); + this.pdfScriptingManager = pdfScriptingManager; + const container = appConfig.mainContainer, + viewer = appConfig.viewerContainer; + const annotationEditorMode = _app_options.AppOptions.get("annotationEditorMode"); + const pageColors = _app_options.AppOptions.get("forcePageColors") || window.matchMedia("(forced-colors: active)").matches ? { + background: _app_options.AppOptions.get("pageColorsBackground"), + foreground: _app_options.AppOptions.get("pageColorsForeground") + } : null; + this.pdfViewer = new _pdf_viewer.PDFViewer({ + container, + viewer, + eventBus, + renderingQueue: pdfRenderingQueue, + linkService: pdfLinkService, + downloadManager, + findController, + scriptingManager: _app_options.AppOptions.get("enableScripting") && pdfScriptingManager, + renderer: _app_options.AppOptions.get("renderer"), + l10n: this.l10n, + textLayerMode: _app_options.AppOptions.get("textLayerMode"), + annotationMode: _app_options.AppOptions.get("annotationMode"), + annotationEditorMode, + imageResourcesPath: _app_options.AppOptions.get("imageResourcesPath"), + enablePrintAutoRotate: _app_options.AppOptions.get("enablePrintAutoRotate"), + useOnlyCssZoom: _app_options.AppOptions.get("useOnlyCssZoom"), + isOffscreenCanvasSupported: _app_options.AppOptions.get("isOffscreenCanvasSupported"), + maxCanvasPixels: _app_options.AppOptions.get("maxCanvasPixels"), + enablePermissions: _app_options.AppOptions.get("enablePermissions"), + pageColors + }); + pdfRenderingQueue.setViewer(this.pdfViewer); + pdfLinkService.setViewer(this.pdfViewer); + pdfScriptingManager.setViewer(this.pdfViewer); + if (appConfig.sidebar?.thumbnailView) { + this.pdfThumbnailViewer = new _webPdf_thumbnail_viewer.PDFThumbnailViewer({ + container: appConfig.sidebar.thumbnailView, + renderingQueue: pdfRenderingQueue, + linkService: pdfLinkService, + l10n: this.l10n, + pageColors + }); + pdfRenderingQueue.setThumbnailViewer(this.pdfThumbnailViewer); + } + if (!this.isViewerEmbedded && !_app_options.AppOptions.get("disableHistory")) { + this.pdfHistory = new _pdf_history.PDFHistory({ + linkService: pdfLinkService, + eventBus + }); + pdfLinkService.setHistory(this.pdfHistory); + } + if (!this.supportsIntegratedFind && appConfig.findBar) { + this.findBar = new _webPdf_find_bar.PDFFindBar(appConfig.findBar, eventBus, this.l10n); + } + if (appConfig.annotationEditorParams) { + if (annotationEditorMode !== _pdfjsLib.AnnotationEditorType.DISABLE) { + this.annotationEditorParams = new _webAnnotation_editor_params.AnnotationEditorParams(appConfig.annotationEditorParams, eventBus); + } else { + for (const id of ["editorModeButtons", "editorModeSeparator"]) { + document.getElementById(id)?.classList.add("hidden"); + } + } + } + if (appConfig.documentProperties) { + this.pdfDocumentProperties = new _webPdf_document_properties.PDFDocumentProperties(appConfig.documentProperties, this.overlayManager, eventBus, this.l10n, () => { + return this._docFilename; + }); + } + if (appConfig.secondaryToolbar?.cursorHandToolButton) { + this.pdfCursorTools = new _webPdf_cursor_tools.PDFCursorTools({ + container, + eventBus, + cursorToolOnLoad: _app_options.AppOptions.get("cursorToolOnLoad") + }); + } + if (appConfig.toolbar) { + this.toolbar = new _webToolbar.Toolbar(appConfig.toolbar, eventBus, this.l10n); + } + if (appConfig.secondaryToolbar) { + this.secondaryToolbar = new _webSecondary_toolbar.SecondaryToolbar(appConfig.secondaryToolbar, eventBus, this.externalServices); + } + if (this.supportsFullscreen && appConfig.secondaryToolbar?.presentationModeButton) { + this.pdfPresentationMode = new _webPdf_presentation_mode.PDFPresentationMode({ + container, + pdfViewer: this.pdfViewer, + eventBus + }); + } + if (appConfig.passwordOverlay) { + this.passwordPrompt = new _password_prompt.PasswordPrompt(appConfig.passwordOverlay, this.overlayManager, this.l10n, this.isViewerEmbedded); + } + if (appConfig.sidebar?.outlineView) { + this.pdfOutlineViewer = new _webPdf_outline_viewer.PDFOutlineViewer({ + container: appConfig.sidebar.outlineView, + eventBus, + linkService: pdfLinkService, + downloadManager + }); + } + if (appConfig.sidebar?.attachmentsView) { + this.pdfAttachmentViewer = new _webPdf_attachment_viewer.PDFAttachmentViewer({ + container: appConfig.sidebar.attachmentsView, + eventBus, + downloadManager + }); + } + if (appConfig.sidebar?.layersView) { + this.pdfLayerViewer = new _webPdf_layer_viewer.PDFLayerViewer({ + container: appConfig.sidebar.layersView, + eventBus, + l10n: this.l10n + }); + } + if (appConfig.sidebar) { + this.pdfSidebar = new _webPdf_sidebar.PDFSidebar({ + elements: appConfig.sidebar, + pdfViewer: this.pdfViewer, + pdfThumbnailViewer: this.pdfThumbnailViewer, + eventBus, + l10n: this.l10n + }); + this.pdfSidebar.onToggled = this.forceRendering.bind(this); + this.pdfSidebarResizer = new _webPdf_sidebar_resizer.PDFSidebarResizer(appConfig.sidebarResizer, eventBus, this.l10n); + } + }, + run(config) { + this.initialize(config).then(webViewerInitialized); + }, + get initialized() { + return this._initializedCapability.settled; + }, + get initializedPromise() { + return this._initializedCapability.promise; + }, + zoomIn(steps, scaleFactor) { + if (this.pdfViewer.isInPresentationMode) { + return; + } + this.pdfViewer.increaseScale({ + drawingDelay: _app_options.AppOptions.get("defaultZoomDelay"), + steps, + scaleFactor + }); + }, + zoomOut(steps, scaleFactor) { + if (this.pdfViewer.isInPresentationMode) { + return; + } + this.pdfViewer.decreaseScale({ + drawingDelay: _app_options.AppOptions.get("defaultZoomDelay"), + steps, + scaleFactor + }); + }, + zoomReset() { + if (this.pdfViewer.isInPresentationMode) { + return; + } + this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; + }, + get pagesCount() { + return this.pdfDocument ? this.pdfDocument.numPages : 0; + }, + get page() { + return this.pdfViewer.currentPageNumber; + }, + set page(val) { + this.pdfViewer.currentPageNumber = val; + }, + get supportsPrinting() { + return PDFPrintServiceFactory.instance.supportsPrinting; + }, + get supportsFullscreen() { + return (0, _pdfjsLib.shadow)(this, "supportsFullscreen", document.fullscreenEnabled); + }, + get supportsPinchToZoom() { + return this.externalServices.supportsPinchToZoom; + }, + get supportsIntegratedFind() { + return this.externalServices.supportsIntegratedFind; + }, + get supportsDocumentFonts() { + return this.externalServices.supportsDocumentFonts; + }, + get loadingBar() { + const barElement = document.getElementById("loadingBar"); + const bar = barElement ? new _ui_utils.ProgressBar(barElement) : null; + return (0, _pdfjsLib.shadow)(this, "loadingBar", bar); + }, + get supportedMouseWheelZoomModifierKeys() { + return this.externalServices.supportedMouseWheelZoomModifierKeys; + }, + initPassiveLoading() { + throw new Error("Not implemented: initPassiveLoading"); + }, + setTitleUsingUrl(url = "", downloadUrl = null) { + this.url = url; + this.baseUrl = url.split("#")[0]; + if (downloadUrl) { + this._downloadUrl = downloadUrl === url ? this.baseUrl : downloadUrl.split("#")[0]; + } + if ((0, _pdfjsLib.isDataScheme)(url)) { + this._hideViewBookmark(); + } + let title = (0, _pdfjsLib.getPdfFilenameFromUrl)(url, ""); + if (!title) { + try { + title = decodeURIComponent((0, _pdfjsLib.getFilenameFromUrl)(url)) || url; + } catch (ex) { + title = url; + } + } + this.setTitle(title); + }, + setTitle(title = this._title) { + this._title = title; + if (this.isViewerEmbedded) { + return; + } + const editorIndicator = this._hasAnnotationEditors && !this.pdfRenderingQueue.printing; + document.title = `${editorIndicator ? "* " : ""}${title}`; + }, + get _docFilename() { + return this._contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(this.url); + }, + _hideViewBookmark() { + const { + secondaryToolbar + } = this.appConfig; + secondaryToolbar?.viewBookmarkButton.classList.add("hidden"); + if (secondaryToolbar?.presentationModeButton.classList.contains("hidden")) { + document.getElementById("viewBookmarkSeparator")?.classList.add("hidden"); + } + }, + async close() { + this._unblockDocumentLoadEvent(); + this._hideViewBookmark(); + if (!this.pdfLoadingTask) { + return; + } + if (this.pdfDocument?.annotationStorage.size > 0 && this._annotationStorageModified) { + try { + await this.save(); + } catch (reason) {} + } + const promises = []; + promises.push(this.pdfLoadingTask.destroy()); + this.pdfLoadingTask = null; + if (this.pdfDocument) { + this.pdfDocument = null; + this.pdfThumbnailViewer?.setDocument(null); + this.pdfViewer.setDocument(null); + this.pdfLinkService.setDocument(null); + this.pdfDocumentProperties?.setDocument(null); + } + this.pdfLinkService.externalLinkEnabled = true; + this.store = null; + this.isInitialViewSet = false; + this.downloadComplete = false; + this.url = ""; + this.baseUrl = ""; + this._downloadUrl = ""; + this.documentInfo = null; + this.metadata = null; + this._contentDispositionFilename = null; + this._contentLength = null; + this._saveInProgress = false; + this._hasAnnotationEditors = false; + promises.push(this.pdfScriptingManager.destroyPromise); + this.setTitle(); + this.pdfSidebar?.reset(); + this.pdfOutlineViewer?.reset(); + this.pdfAttachmentViewer?.reset(); + this.pdfLayerViewer?.reset(); + this.pdfHistory?.reset(); + this.findBar?.reset(); + this.toolbar?.reset(); + this.secondaryToolbar?.reset(); + this._PDFBug?.cleanup(); + await Promise.all(promises); + }, + async open(args) { + let deprecatedArgs = false; + if (typeof args === "string") { + args = { + url: args + }; + deprecatedArgs = true; + } else if (args?.byteLength) { + args = { + data: args + }; + deprecatedArgs = true; + } + if (deprecatedArgs) { + console.error("The `PDFViewerApplication.open` signature was updated, please use an object instead."); + } + if (this.pdfLoadingTask) { + await this.close(); + } + const workerParams = _app_options.AppOptions.getAll(_app_options.OptionKind.WORKER); + Object.assign(_pdfjsLib.GlobalWorkerOptions, workerParams); + if (args.url) { + this.setTitleUsingUrl(args.originalUrl || args.url, args.url); + } + const apiParams = _app_options.AppOptions.getAll(_app_options.OptionKind.API); + const params = { + ...apiParams, + ...args + }; + const loadingTask = (0, _pdfjsLib.getDocument)(params); + this.pdfLoadingTask = loadingTask; + loadingTask.onPassword = (updateCallback, reason) => { + if (this.isViewerEmbedded) { + this._unblockDocumentLoadEvent(); + } + this.pdfLinkService.externalLinkEnabled = false; + this.passwordPrompt.setUpdateCallback(updateCallback, reason); + this.passwordPrompt.open(); + }; + loadingTask.onProgress = ({ + loaded, + total + }) => { + this.progress(loaded / total); + }; + return loadingTask.promise.then(pdfDocument => { + this.load(pdfDocument); + }, reason => { + if (loadingTask !== this.pdfLoadingTask) { + return undefined; + } + let key = "loading_error"; + if (reason instanceof _pdfjsLib.InvalidPDFException) { + key = "invalid_file_error"; + } else if (reason instanceof _pdfjsLib.MissingPDFException) { + key = "missing_file_error"; + } else if (reason instanceof _pdfjsLib.UnexpectedResponseException) { + key = "unexpected_response_error"; + } + return this.l10n.get(key).then(msg => { + this._documentError(msg, { + message: reason?.message + }); + throw reason; + }); + }); + }, + _ensureDownloadComplete() { + if (this.pdfDocument && this.downloadComplete) { + return; + } + throw new Error("PDF document not downloaded."); + }, + async download() { + const url = this._downloadUrl, + filename = this._docFilename; + try { + this._ensureDownloadComplete(); + const data = await this.pdfDocument.getData(); + const blob = new Blob([data], { + type: "application/pdf" + }); + await this.downloadManager.download(blob, url, filename); + } catch (reason) { + await this.downloadManager.downloadUrl(url, filename); + } + }, + async save() { + if (this._saveInProgress) { + return; + } + this._saveInProgress = true; + await this.pdfScriptingManager.dispatchWillSave(); + const url = this._downloadUrl, + filename = this._docFilename; + try { + this._ensureDownloadComplete(); + const data = await this.pdfDocument.saveDocument(); + const blob = new Blob([data], { + type: "application/pdf" + }); + await this.downloadManager.download(blob, url, filename); + } catch (reason) { + console.error(`Error when saving the document: ${reason.message}`); + await this.download(); + } finally { + await this.pdfScriptingManager.dispatchDidSave(); + this._saveInProgress = false; + } + if (this._hasAnnotationEditors) { + this.externalServices.reportTelemetry({ + type: "editing", + data: { + type: "save" + } + }); + } + }, + downloadOrSave() { + if (this.pdfDocument?.annotationStorage.size > 0) { + this.save(); + } else { + this.download(); + } + }, + _documentError(message, moreInfo = null) { + this._unblockDocumentLoadEvent(); + this._otherError(message, moreInfo); + this.eventBus.dispatch("documenterror", { + source: this, + message, + reason: moreInfo?.message ?? null + }); + }, + _otherError(message, moreInfo = null) { + const moreInfoText = [`PDF.js v${_pdfjsLib.version || "?"} (build: ${_pdfjsLib.build || "?"})`]; + if (moreInfo) { + moreInfoText.push(`Message: ${moreInfo.message}`); + if (moreInfo.stack) { + moreInfoText.push(`Stack: ${moreInfo.stack}`); + } else { + if (moreInfo.filename) { + moreInfoText.push(`File: ${moreInfo.filename}`); + } + if (moreInfo.lineNumber) { + moreInfoText.push(`Line: ${moreInfo.lineNumber}`); + } + } + } + console.error(`${message}\n\n${moreInfoText.join("\n")}`); + }, + progress(level) { + if (!this.loadingBar || this.downloadComplete) { + return; + } + const percent = Math.round(level * 100); + if (percent <= this.loadingBar.percent) { + return; + } + this.loadingBar.percent = percent; + if (this.pdfDocument?.loadingParams.disableAutoFetch ?? _app_options.AppOptions.get("disableAutoFetch")) { + this.loadingBar.setDisableAutoFetch(); + } + }, + load(pdfDocument) { + this.pdfDocument = pdfDocument; + pdfDocument.getDownloadInfo().then(({ + length + }) => { + this._contentLength = length; + this.downloadComplete = true; + this.loadingBar?.hide(); + firstPagePromise.then(() => { + this.eventBus.dispatch("documentloaded", { + source: this + }); + }); + }); + const pageLayoutPromise = pdfDocument.getPageLayout().catch(function () {}); + const pageModePromise = pdfDocument.getPageMode().catch(function () {}); + const openActionPromise = pdfDocument.getOpenAction().catch(function () {}); + this.toolbar?.setPagesCount(pdfDocument.numPages, false); + this.secondaryToolbar?.setPagesCount(pdfDocument.numPages); + let baseDocumentUrl; + baseDocumentUrl = null; + if (baseDocumentUrl && (0, _pdfjsLib.isDataScheme)(baseDocumentUrl)) { + baseDocumentUrl = null; + } + this.pdfLinkService.setDocument(pdfDocument, baseDocumentUrl); + this.pdfDocumentProperties?.setDocument(pdfDocument); + const pdfViewer = this.pdfViewer; + pdfViewer.setDocument(pdfDocument); + const { + firstPagePromise, + onePageRendered, + pagesPromise + } = pdfViewer; + this.pdfThumbnailViewer?.setDocument(pdfDocument); + const storedPromise = (this.store = new _view_history.ViewHistory(pdfDocument.fingerprints[0])).getMultiple({ + page: null, + zoom: _ui_utils.DEFAULT_SCALE_VALUE, + scrollLeft: "0", + scrollTop: "0", + rotation: null, + sidebarView: _ui_utils.SidebarView.UNKNOWN, + scrollMode: _ui_utils.ScrollMode.UNKNOWN, + spreadMode: _ui_utils.SpreadMode.UNKNOWN + }).catch(() => { + return Object.create(null); + }); + firstPagePromise.then(pdfPage => { + this.loadingBar?.setWidth(this.appConfig.viewerContainer); + this._initializeAnnotationStorageCallbacks(pdfDocument); + Promise.all([_ui_utils.animationStarted, storedPromise, pageLayoutPromise, pageModePromise, openActionPromise]).then(async ([timeStamp, stored, pageLayout, pageMode, openAction]) => { + const viewOnLoad = _app_options.AppOptions.get("viewOnLoad"); + this._initializePdfHistory({ + fingerprint: pdfDocument.fingerprints[0], + viewOnLoad, + initialDest: openAction?.dest + }); + const initialBookmark = this.initialBookmark; + const zoom = _app_options.AppOptions.get("defaultZoomValue"); + let hash = zoom ? `zoom=${zoom}` : null; + let rotation = null; + let sidebarView = _app_options.AppOptions.get("sidebarViewOnLoad"); + let scrollMode = _app_options.AppOptions.get("scrollModeOnLoad"); + let spreadMode = _app_options.AppOptions.get("spreadModeOnLoad"); + if (stored.page && viewOnLoad !== ViewOnLoad.INITIAL) { + hash = `page=${stored.page}&zoom=${zoom || stored.zoom},` + `${stored.scrollLeft},${stored.scrollTop}`; + rotation = parseInt(stored.rotation, 10); + if (sidebarView === _ui_utils.SidebarView.UNKNOWN) { + sidebarView = stored.sidebarView | 0; + } + if (scrollMode === _ui_utils.ScrollMode.UNKNOWN) { + scrollMode = stored.scrollMode | 0; + } + if (spreadMode === _ui_utils.SpreadMode.UNKNOWN) { + spreadMode = stored.spreadMode | 0; + } + } + if (pageMode && sidebarView === _ui_utils.SidebarView.UNKNOWN) { + sidebarView = (0, _ui_utils.apiPageModeToSidebarView)(pageMode); + } + if (pageLayout && scrollMode === _ui_utils.ScrollMode.UNKNOWN && spreadMode === _ui_utils.SpreadMode.UNKNOWN) { + const modes = (0, _ui_utils.apiPageLayoutToViewerModes)(pageLayout); + spreadMode = modes.spreadMode; + } + this.setInitialView(hash, { + rotation, + sidebarView, + scrollMode, + spreadMode + }); + this.eventBus.dispatch("documentinit", { + source: this + }); + if (!this.isViewerEmbedded) { + pdfViewer.focus(); + } + await Promise.race([pagesPromise, new Promise(resolve => { + setTimeout(resolve, FORCE_PAGES_LOADED_TIMEOUT); + })]); + if (!initialBookmark && !hash) { + return; + } + if (pdfViewer.hasEqualPageSizes) { + return; + } + this.initialBookmark = initialBookmark; + pdfViewer.currentScaleValue = pdfViewer.currentScaleValue; + this.setInitialView(hash); + }).catch(() => { + this.setInitialView(); + }).then(function () { + pdfViewer.update(); + }); + }); + pagesPromise.then(() => { + this._unblockDocumentLoadEvent(); + this._initializeAutoPrint(pdfDocument, openActionPromise); + }, reason => { + this.l10n.get("loading_error").then(msg => { + this._documentError(msg, { + message: reason?.message + }); + }); + }); + onePageRendered.then(data => { + this.externalServices.reportTelemetry({ + type: "pageInfo", + timestamp: data.timestamp + }); + if (this.pdfOutlineViewer) { + pdfDocument.getOutline().then(outline => { + if (pdfDocument !== this.pdfDocument) { + return; + } + this.pdfOutlineViewer.render({ + outline, + pdfDocument + }); + }); + } + if (this.pdfAttachmentViewer) { + pdfDocument.getAttachments().then(attachments => { + if (pdfDocument !== this.pdfDocument) { + return; + } + this.pdfAttachmentViewer.render({ + attachments + }); + }); + } + if (this.pdfLayerViewer) { + pdfViewer.optionalContentConfigPromise.then(optionalContentConfig => { + if (pdfDocument !== this.pdfDocument) { + return; + } + this.pdfLayerViewer.render({ + optionalContentConfig, + pdfDocument + }); + }); + } + }); + this._initializePageLabels(pdfDocument); + this._initializeMetadata(pdfDocument); + }, + async _scriptingDocProperties(pdfDocument) { + if (!this.documentInfo) { + await new Promise(resolve => { + this.eventBus._on("metadataloaded", resolve, { + once: true + }); + }); + if (pdfDocument !== this.pdfDocument) { + return null; + } + } + if (!this._contentLength) { + await new Promise(resolve => { + this.eventBus._on("documentloaded", resolve, { + once: true + }); + }); + if (pdfDocument !== this.pdfDocument) { + return null; + } + } + return { + ...this.documentInfo, + baseURL: this.baseUrl, + filesize: this._contentLength, + filename: this._docFilename, + metadata: this.metadata?.getRaw(), + authors: this.metadata?.get("dc:creator"), + numPages: this.pagesCount, + URL: this.url + }; + }, + async _initializeAutoPrint(pdfDocument, openActionPromise) { + const [openAction, javaScript] = await Promise.all([openActionPromise, !this.pdfViewer.enableScripting ? pdfDocument.getJavaScript() : null]); + if (pdfDocument !== this.pdfDocument) { + return; + } + let triggerAutoPrint = false; + if (openAction?.action === "Print") { + triggerAutoPrint = true; + } + if (javaScript) { + javaScript.some(js => { + if (!js) { + return false; + } + console.warn("Warning: JavaScript support is not enabled"); + return true; + }); + if (!triggerAutoPrint) { + for (const js of javaScript) { + if (js && _ui_utils.AutoPrintRegExp.test(js)) { + triggerAutoPrint = true; + break; + } + } + } + } + if (triggerAutoPrint) { + this.triggerPrinting(); + } + }, + async _initializeMetadata(pdfDocument) { + const { + info, + metadata, + contentDispositionFilename, + contentLength + } = await pdfDocument.getMetadata(); + if (pdfDocument !== this.pdfDocument) { + return; + } + this.documentInfo = info; + this.metadata = metadata; + this._contentDispositionFilename ??= contentDispositionFilename; + this._contentLength ??= contentLength; + console.log(`PDF ${pdfDocument.fingerprints[0]} [${info.PDFFormatVersion} ` + `${(info.Producer || "-").trim()} / ${(info.Creator || "-").trim()}] ` + `(PDF.js: ${_pdfjsLib.version || "?"} [${_pdfjsLib.build || "?"}])`); + let pdfTitle = info.Title; + const metadataTitle = metadata?.get("dc:title"); + if (metadataTitle) { + if (metadataTitle !== "Untitled" && !/[\uFFF0-\uFFFF]/g.test(metadataTitle)) { + pdfTitle = metadataTitle; + } + } + if (pdfTitle) { + this.setTitle(`${pdfTitle} - ${this._contentDispositionFilename || this._title}`); + } else if (this._contentDispositionFilename) { + this.setTitle(this._contentDispositionFilename); + } + if (info.IsXFAPresent && !info.IsAcroFormPresent && !pdfDocument.isPureXfa) { + if (pdfDocument.loadingParams.enableXfa) { + console.warn("Warning: XFA Foreground documents are not supported"); + } else { + console.warn("Warning: XFA support is not enabled"); + } + } else if ((info.IsAcroFormPresent || info.IsXFAPresent) && !this.pdfViewer.renderForms) { + console.warn("Warning: Interactive form support is not enabled"); + } + if (info.IsSignaturesPresent) { + console.warn("Warning: Digital signatures validation is not supported"); + } + this.eventBus.dispatch("metadataloaded", { + source: this + }); + }, + async _initializePageLabels(pdfDocument) { + const labels = await pdfDocument.getPageLabels(); + if (pdfDocument !== this.pdfDocument) { + return; + } + if (!labels || _app_options.AppOptions.get("disablePageLabels")) { + return; + } + const numLabels = labels.length; + let standardLabels = 0, + emptyLabels = 0; + for (let i = 0; i < numLabels; i++) { + const label = labels[i]; + if (label === (i + 1).toString()) { + standardLabels++; + } else if (label === "") { + emptyLabels++; + } else { + break; + } + } + if (standardLabels >= numLabels || emptyLabels >= numLabels) { + return; + } + const { + pdfViewer, + pdfThumbnailViewer, + toolbar + } = this; + pdfViewer.setPageLabels(labels); + pdfThumbnailViewer?.setPageLabels(labels); + toolbar?.setPagesCount(numLabels, true); + toolbar?.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel); + }, + _initializePdfHistory({ + fingerprint, + viewOnLoad, + initialDest = null + }) { + if (!this.pdfHistory) { + return; + } + this.pdfHistory.initialize({ + fingerprint, + resetHistory: viewOnLoad === ViewOnLoad.INITIAL, + updateUrl: _app_options.AppOptions.get("historyUpdateUrl") + }); + if (this.pdfHistory.initialBookmark) { + this.initialBookmark = this.pdfHistory.initialBookmark; + this.initialRotation = this.pdfHistory.initialRotation; + } + if (initialDest && !this.initialBookmark && viewOnLoad === ViewOnLoad.UNKNOWN) { + this.initialBookmark = JSON.stringify(initialDest); + this.pdfHistory.push({ + explicitDest: initialDest, + pageNumber: null + }); + } + }, + _initializeAnnotationStorageCallbacks(pdfDocument) { + if (pdfDocument !== this.pdfDocument) { + return; + } + const { + annotationStorage + } = pdfDocument; + annotationStorage.onSetModified = () => { + window.addEventListener("beforeunload", beforeUnload); + this._annotationStorageModified = true; + }; + annotationStorage.onResetModified = () => { + window.removeEventListener("beforeunload", beforeUnload); + delete this._annotationStorageModified; + }; + annotationStorage.onAnnotationEditor = typeStr => { + this._hasAnnotationEditors = !!typeStr; + this.setTitle(); + if (typeStr) { + this.externalServices.reportTelemetry({ + type: "editing", + data: { + type: typeStr + } + }); + } + }; + }, + setInitialView(storedHash, { + rotation, + sidebarView, + scrollMode, + spreadMode + } = {}) { + const setRotation = angle => { + if ((0, _ui_utils.isValidRotation)(angle)) { + this.pdfViewer.pagesRotation = angle; + } + }; + const setViewerModes = (scroll, spread) => { + if ((0, _ui_utils.isValidScrollMode)(scroll)) { + this.pdfViewer.scrollMode = scroll; + } + if ((0, _ui_utils.isValidSpreadMode)(spread)) { + this.pdfViewer.spreadMode = spread; + } + }; + this.isInitialViewSet = true; + this.pdfSidebar?.setInitialView(sidebarView); + setViewerModes(scrollMode, spreadMode); + if (this.initialBookmark) { + setRotation(this.initialRotation); + delete this.initialRotation; + this.pdfLinkService.setHash(this.initialBookmark); + this.initialBookmark = null; + } else if (storedHash) { + setRotation(rotation); + this.pdfLinkService.setHash(storedHash); + } + this.toolbar?.setPageNumber(this.pdfViewer.currentPageNumber, this.pdfViewer.currentPageLabel); + this.secondaryToolbar?.setPageNumber(this.pdfViewer.currentPageNumber); + if (!this.pdfViewer.currentScaleValue) { + this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; + } + }, + _cleanup() { + if (!this.pdfDocument) { + return; + } + this.pdfViewer.cleanup(); + this.pdfThumbnailViewer?.cleanup(); + this.pdfDocument.cleanup(this.pdfViewer.renderer === _ui_utils.RendererType.SVG); + }, + forceRendering() { + this.pdfRenderingQueue.printing = !!this.printService; + this.pdfRenderingQueue.isThumbnailViewEnabled = this.pdfSidebar?.visibleView === _ui_utils.SidebarView.THUMBS; + this.pdfRenderingQueue.renderHighestPriority(); + }, + beforePrint() { + this._printAnnotationStoragePromise = this.pdfScriptingManager.dispatchWillPrint().catch(() => {}).then(() => { + return this.pdfDocument?.annotationStorage.print; + }); + if (this.printService) { + return; + } + if (!this.supportsPrinting) { + this.l10n.get("printing_not_supported").then(msg => { + this._otherError(msg); + }); + return; + } + if (!this.pdfViewer.pageViewsReady) { + this.l10n.get("printing_not_ready").then(msg => { + window.alert(msg); + }); + return; + } + const pagesOverview = this.pdfViewer.getPagesOverview(); + const printContainer = this.appConfig.printContainer; + const printResolution = _app_options.AppOptions.get("printResolution"); + const optionalContentConfigPromise = this.pdfViewer.optionalContentConfigPromise; + const printService = PDFPrintServiceFactory.instance.createPrintService(this.pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise, this._printAnnotationStoragePromise, this.l10n); + this.printService = printService; + this.forceRendering(); + this.setTitle(); + printService.layout(); + if (this._hasAnnotationEditors) { + this.externalServices.reportTelemetry({ + type: "editing", + data: { + type: "print" + } + }); + } + }, + afterPrint() { + if (this._printAnnotationStoragePromise) { + this._printAnnotationStoragePromise.then(() => { + this.pdfScriptingManager.dispatchDidPrint(); + }); + this._printAnnotationStoragePromise = null; + } + if (this.printService) { + this.printService.destroy(); + this.printService = null; + this.pdfDocument?.annotationStorage.resetModified(); + } + this.forceRendering(); + this.setTitle(); + }, + rotatePages(delta) { + this.pdfViewer.pagesRotation += delta; + }, + requestPresentationMode() { + this.pdfPresentationMode?.request(); + }, + triggerPrinting() { + if (!this.supportsPrinting) { + return; + } + window.print(); + }, + bindEvents() { + const { + eventBus, + _boundEvents + } = this; + _boundEvents.beforePrint = this.beforePrint.bind(this); + _boundEvents.afterPrint = this.afterPrint.bind(this); + eventBus._on("resize", webViewerResize); + eventBus._on("hashchange", webViewerHashchange); + eventBus._on("beforeprint", _boundEvents.beforePrint); + eventBus._on("afterprint", _boundEvents.afterPrint); + eventBus._on("pagerender", webViewerPageRender); + eventBus._on("pagerendered", webViewerPageRendered); + eventBus._on("updateviewarea", webViewerUpdateViewarea); + eventBus._on("pagechanging", webViewerPageChanging); + eventBus._on("scalechanging", webViewerScaleChanging); + eventBus._on("rotationchanging", webViewerRotationChanging); + eventBus._on("sidebarviewchanged", webViewerSidebarViewChanged); + eventBus._on("pagemode", webViewerPageMode); + eventBus._on("namedaction", webViewerNamedAction); + eventBus._on("presentationmodechanged", webViewerPresentationModeChanged); + eventBus._on("presentationmode", webViewerPresentationMode); + eventBus._on("switchannotationeditormode", webViewerSwitchAnnotationEditorMode); + eventBus._on("switchannotationeditorparams", webViewerSwitchAnnotationEditorParams); + eventBus._on("print", webViewerPrint); + eventBus._on("download", webViewerDownload); + eventBus._on("firstpage", webViewerFirstPage); + eventBus._on("lastpage", webViewerLastPage); + eventBus._on("nextpage", webViewerNextPage); + eventBus._on("previouspage", webViewerPreviousPage); + eventBus._on("zoomin", webViewerZoomIn); + eventBus._on("zoomout", webViewerZoomOut); + eventBus._on("zoomreset", webViewerZoomReset); + eventBus._on("pagenumberchanged", webViewerPageNumberChanged); + eventBus._on("scalechanged", webViewerScaleChanged); + eventBus._on("rotatecw", webViewerRotateCw); + eventBus._on("rotateccw", webViewerRotateCcw); + eventBus._on("optionalcontentconfig", webViewerOptionalContentConfig); + eventBus._on("switchscrollmode", webViewerSwitchScrollMode); + eventBus._on("scrollmodechanged", webViewerScrollModeChanged); + eventBus._on("switchspreadmode", webViewerSwitchSpreadMode); + eventBus._on("spreadmodechanged", webViewerSpreadModeChanged); + eventBus._on("documentproperties", webViewerDocumentProperties); + eventBus._on("findfromurlhash", webViewerFindFromUrlHash); + eventBus._on("updatefindmatchescount", webViewerUpdateFindMatchesCount); + eventBus._on("updatefindcontrolstate", webViewerUpdateFindControlState); + if (_app_options.AppOptions.get("pdfBug")) { + _boundEvents.reportPageStatsPDFBug = reportPageStatsPDFBug; + eventBus._on("pagerendered", _boundEvents.reportPageStatsPDFBug); + eventBus._on("pagechanging", _boundEvents.reportPageStatsPDFBug); + } + eventBus._on("fileinputchange", webViewerFileInputChange); + eventBus._on("openfile", webViewerOpenFile); + }, + bindWindowEvents() { + const { + eventBus, + _boundEvents + } = this; + function addWindowResolutionChange(evt = null) { + if (evt) { + webViewerResolutionChange(evt); + } + const mediaQueryList = window.matchMedia(`(resolution: ${window.devicePixelRatio || 1}dppx)`); + mediaQueryList.addEventListener("change", addWindowResolutionChange, { + once: true + }); + _boundEvents.removeWindowResolutionChange ||= function () { + mediaQueryList.removeEventListener("change", addWindowResolutionChange); + _boundEvents.removeWindowResolutionChange = null; + }; + } + addWindowResolutionChange(); + _boundEvents.windowResize = () => { + eventBus.dispatch("resize", { + source: window + }); + }; + _boundEvents.windowHashChange = () => { + eventBus.dispatch("hashchange", { + source: window, + hash: document.location.hash.substring(1) + }); + }; + _boundEvents.windowBeforePrint = () => { + eventBus.dispatch("beforeprint", { + source: window + }); + }; + _boundEvents.windowAfterPrint = () => { + eventBus.dispatch("afterprint", { + source: window + }); + }; + _boundEvents.windowUpdateFromSandbox = event => { + eventBus.dispatch("updatefromsandbox", { + source: window, + detail: event.detail + }); + }; + window.addEventListener("visibilitychange", webViewerVisibilityChange); + window.addEventListener("wheel", webViewerWheel, { + passive: false + }); + window.addEventListener("touchstart", webViewerTouchStart, { + passive: false + }); + window.addEventListener("touchmove", webViewerTouchMove, { + passive: false + }); + window.addEventListener("touchend", webViewerTouchEnd, { + passive: false + }); + window.addEventListener("click", webViewerClick); + window.addEventListener("keydown", webViewerKeyDown); + window.addEventListener("keyup", webViewerKeyUp); + window.addEventListener("resize", _boundEvents.windowResize); + window.addEventListener("hashchange", _boundEvents.windowHashChange); + window.addEventListener("beforeprint", _boundEvents.windowBeforePrint); + window.addEventListener("afterprint", _boundEvents.windowAfterPrint); + window.addEventListener("updatefromsandbox", _boundEvents.windowUpdateFromSandbox); + }, + unbindEvents() { + const { + eventBus, + _boundEvents + } = this; + eventBus._off("resize", webViewerResize); + eventBus._off("hashchange", webViewerHashchange); + eventBus._off("beforeprint", _boundEvents.beforePrint); + eventBus._off("afterprint", _boundEvents.afterPrint); + eventBus._off("pagerender", webViewerPageRender); + eventBus._off("pagerendered", webViewerPageRendered); + eventBus._off("updateviewarea", webViewerUpdateViewarea); + eventBus._off("pagechanging", webViewerPageChanging); + eventBus._off("scalechanging", webViewerScaleChanging); + eventBus._off("rotationchanging", webViewerRotationChanging); + eventBus._off("sidebarviewchanged", webViewerSidebarViewChanged); + eventBus._off("pagemode", webViewerPageMode); + eventBus._off("namedaction", webViewerNamedAction); + eventBus._off("presentationmodechanged", webViewerPresentationModeChanged); + eventBus._off("presentationmode", webViewerPresentationMode); + eventBus._off("print", webViewerPrint); + eventBus._off("download", webViewerDownload); + eventBus._off("firstpage", webViewerFirstPage); + eventBus._off("lastpage", webViewerLastPage); + eventBus._off("nextpage", webViewerNextPage); + eventBus._off("previouspage", webViewerPreviousPage); + eventBus._off("zoomin", webViewerZoomIn); + eventBus._off("zoomout", webViewerZoomOut); + eventBus._off("zoomreset", webViewerZoomReset); + eventBus._off("pagenumberchanged", webViewerPageNumberChanged); + eventBus._off("scalechanged", webViewerScaleChanged); + eventBus._off("rotatecw", webViewerRotateCw); + eventBus._off("rotateccw", webViewerRotateCcw); + eventBus._off("optionalcontentconfig", webViewerOptionalContentConfig); + eventBus._off("switchscrollmode", webViewerSwitchScrollMode); + eventBus._off("scrollmodechanged", webViewerScrollModeChanged); + eventBus._off("switchspreadmode", webViewerSwitchSpreadMode); + eventBus._off("spreadmodechanged", webViewerSpreadModeChanged); + eventBus._off("documentproperties", webViewerDocumentProperties); + eventBus._off("findfromurlhash", webViewerFindFromUrlHash); + eventBus._off("updatefindmatchescount", webViewerUpdateFindMatchesCount); + eventBus._off("updatefindcontrolstate", webViewerUpdateFindControlState); + if (_boundEvents.reportPageStatsPDFBug) { + eventBus._off("pagerendered", _boundEvents.reportPageStatsPDFBug); + eventBus._off("pagechanging", _boundEvents.reportPageStatsPDFBug); + _boundEvents.reportPageStatsPDFBug = null; + } + eventBus._off("fileinputchange", webViewerFileInputChange); + eventBus._off("openfile", webViewerOpenFile); + _boundEvents.beforePrint = null; + _boundEvents.afterPrint = null; + }, + unbindWindowEvents() { + const { + _boundEvents + } = this; + window.removeEventListener("visibilitychange", webViewerVisibilityChange); + window.removeEventListener("wheel", webViewerWheel, { + passive: false + }); + window.removeEventListener("touchstart", webViewerTouchStart, { + passive: false + }); + window.removeEventListener("touchmove", webViewerTouchMove, { + passive: false + }); + window.removeEventListener("touchend", webViewerTouchEnd, { + passive: false + }); + window.removeEventListener("click", webViewerClick); + window.removeEventListener("keydown", webViewerKeyDown); + window.removeEventListener("keyup", webViewerKeyUp); + window.removeEventListener("resize", _boundEvents.windowResize); + window.removeEventListener("hashchange", _boundEvents.windowHashChange); + window.removeEventListener("beforeprint", _boundEvents.windowBeforePrint); + window.removeEventListener("afterprint", _boundEvents.windowAfterPrint); + window.removeEventListener("updatefromsandbox", _boundEvents.windowUpdateFromSandbox); + _boundEvents.removeWindowResolutionChange?.(); + _boundEvents.windowResize = null; + _boundEvents.windowHashChange = null; + _boundEvents.windowBeforePrint = null; + _boundEvents.windowAfterPrint = null; + _boundEvents.windowUpdateFromSandbox = null; + }, + _accumulateTicks(ticks, prop) { + if (this[prop] > 0 && ticks < 0 || this[prop] < 0 && ticks > 0) { + this[prop] = 0; + } + this[prop] += ticks; + const wholeTicks = Math.trunc(this[prop]); + this[prop] -= wholeTicks; + return wholeTicks; + }, + _accumulateFactor(previousScale, factor, prop) { + if (factor === 1) { + return 1; + } + if (this[prop] > 1 && factor < 1 || this[prop] < 1 && factor > 1) { + this[prop] = 1; + } + const newFactor = Math.floor(previousScale * factor * this[prop] * 100) / (100 * previousScale); + this[prop] = factor / newFactor; + return newFactor; + }, + _centerAtPos(previousScale, x, y) { + const { + pdfViewer + } = this; + const scaleDiff = pdfViewer.currentScale / previousScale - 1; + if (scaleDiff !== 0) { + const [top, left] = pdfViewer.containerTopLeft; + pdfViewer.container.scrollLeft += (x - left) * scaleDiff; + pdfViewer.container.scrollTop += (y - top) * scaleDiff; + } + }, + _unblockDocumentLoadEvent() { + document.blockUnblockOnload?.(false); + this._unblockDocumentLoadEvent = () => {}; + }, + get scriptingReady() { + return this.pdfScriptingManager.ready; + } +}; +exports.PDFViewerApplication = PDFViewerApplication; +{ + const HOSTED_VIEWER_ORIGINS = ["null", "http://mozilla.github.io", "https://mozilla.github.io"]; + var validateFileURL = function (file) { + if (!file) { + return; + } + try { + const viewerOrigin = new URL(window.location.href).origin || "null"; + if (HOSTED_VIEWER_ORIGINS.includes(viewerOrigin)) { + return; + } + const fileOrigin = new URL(file, window.location.href).origin; + if (fileOrigin !== viewerOrigin) { + throw new Error("file origin does not match viewer's"); + } + } catch (ex) { + PDFViewerApplication.l10n.get("loading_error").then(msg => { + PDFViewerApplication._documentError(msg, { + message: ex?.message + }); + }); + throw ex; + } + }; +} +async function loadFakeWorker() { + _pdfjsLib.GlobalWorkerOptions.workerSrc ||= _app_options.AppOptions.get("workerSrc"); + await (0, _pdfjsLib.loadScript)(_pdfjsLib.PDFWorker.workerSrc); +} +async function loadPDFBug(self) { + const { + debuggerScriptPath + } = self.appConfig; + const { + PDFBug + } = await import(debuggerScriptPath); + self._PDFBug = PDFBug; +} +function reportPageStatsPDFBug({ + pageNumber +}) { + if (!globalThis.Stats?.enabled) { + return; + } + const pageView = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1); + globalThis.Stats.add(pageNumber, pageView?.pdfPage?.stats); +} +function webViewerInitialized() { + const { + appConfig, + eventBus, + l10n + } = PDFViewerApplication; + let file; + const queryString = document.location.search.substring(1); + const params = (0, _ui_utils.parseQueryString)(queryString); + file = params.get("file") ?? _app_options.AppOptions.get("defaultUrl"); + validateFileURL(file); + const fileInput = appConfig.openFileInput; + fileInput.value = null; + fileInput.addEventListener("change", function (evt) { + const { + files + } = evt.target; + if (!files || files.length === 0) { + return; + } + eventBus.dispatch("fileinputchange", { + source: this, + fileInput: evt.target + }); + }); + appConfig.mainContainer.addEventListener("dragover", function (evt) { + evt.preventDefault(); + evt.dataTransfer.dropEffect = evt.dataTransfer.effectAllowed === "copy" ? "copy" : "move"; + }); + appConfig.mainContainer.addEventListener("drop", function (evt) { + evt.preventDefault(); + const { + files + } = evt.dataTransfer; + if (!files || files.length === 0) { + return; + } + eventBus.dispatch("fileinputchange", { + source: this, + fileInput: evt.dataTransfer + }); + }); + if (!PDFViewerApplication.supportsDocumentFonts) { + _app_options.AppOptions.set("disableFontFace", true); + l10n.get("web_fonts_disabled").then(msg => { + console.warn(msg); + }); + } + if (!PDFViewerApplication.supportsPrinting) { + appConfig.toolbar?.print.classList.add("hidden"); + appConfig.secondaryToolbar?.printButton.classList.add("hidden"); + } + if (!PDFViewerApplication.supportsFullscreen) { + appConfig.secondaryToolbar?.presentationModeButton.classList.add("hidden"); + } + if (PDFViewerApplication.supportsIntegratedFind) { + appConfig.toolbar?.viewFind.classList.add("hidden"); + } + appConfig.mainContainer.addEventListener("transitionend", function (evt) { + if (evt.target === this) { + eventBus.dispatch("resize", { + source: this + }); + } + }, true); + try { + if (file) { + PDFViewerApplication.open({ + url: file + }); + } else { + PDFViewerApplication._hideViewBookmark(); + } + } catch (reason) { + l10n.get("loading_error").then(msg => { + PDFViewerApplication._documentError(msg, reason); + }); + } +} +function webViewerPageRender({ + pageNumber +}) { + if (pageNumber === PDFViewerApplication.page) { + PDFViewerApplication.toolbar?.updateLoadingIndicatorState(true); + } +} +function webViewerPageRendered({ + pageNumber, + error +}) { + if (pageNumber === PDFViewerApplication.page) { + PDFViewerApplication.toolbar?.updateLoadingIndicatorState(false); + } + if (PDFViewerApplication.pdfSidebar?.visibleView === _ui_utils.SidebarView.THUMBS) { + const pageView = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1); + const thumbnailView = PDFViewerApplication.pdfThumbnailViewer?.getThumbnail(pageNumber - 1); + if (pageView && thumbnailView) { + thumbnailView.setImage(pageView); + } + } + if (error) { + PDFViewerApplication.l10n.get("rendering_error").then(msg => { + PDFViewerApplication._otherError(msg, error); + }); + } +} +function webViewerPageMode({ + mode +}) { + let view; + switch (mode) { + case "thumbs": + view = _ui_utils.SidebarView.THUMBS; + break; + case "bookmarks": + case "outline": + view = _ui_utils.SidebarView.OUTLINE; + break; + case "attachments": + view = _ui_utils.SidebarView.ATTACHMENTS; + break; + case "layers": + view = _ui_utils.SidebarView.LAYERS; + break; + case "none": + view = _ui_utils.SidebarView.NONE; + break; + default: + console.error('Invalid "pagemode" hash parameter: ' + mode); + return; + } + PDFViewerApplication.pdfSidebar?.switchView(view, true); +} +function webViewerNamedAction(evt) { + switch (evt.action) { + case "GoToPage": + PDFViewerApplication.appConfig.toolbar?.pageNumber.select(); + break; + case "Find": + if (!PDFViewerApplication.supportsIntegratedFind) { + PDFViewerApplication?.findBar.toggle(); + } + break; + case "Print": + PDFViewerApplication.triggerPrinting(); + break; + case "SaveAs": + PDFViewerApplication.downloadOrSave(); + break; + } +} +function webViewerPresentationModeChanged(evt) { + PDFViewerApplication.pdfViewer.presentationModeState = evt.state; +} +function webViewerSidebarViewChanged({ + view +}) { + PDFViewerApplication.pdfRenderingQueue.isThumbnailViewEnabled = view === _ui_utils.SidebarView.THUMBS; + if (PDFViewerApplication.isInitialViewSet) { + PDFViewerApplication.store?.set("sidebarView", view).catch(() => {}); + } +} +function webViewerUpdateViewarea({ + location +}) { + if (PDFViewerApplication.isInitialViewSet) { + PDFViewerApplication.store?.setMultiple({ + page: location.pageNumber, + zoom: location.scale, + scrollLeft: location.left, + scrollTop: location.top, + rotation: location.rotation + }).catch(() => {}); + } + if (PDFViewerApplication.appConfig.secondaryToolbar) { + const href = PDFViewerApplication.pdfLinkService.getAnchorUrl(location.pdfOpenParams); + PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href = href; + } +} +function webViewerScrollModeChanged(evt) { + if (PDFViewerApplication.isInitialViewSet && !PDFViewerApplication.pdfViewer.isInPresentationMode) { + PDFViewerApplication.store?.set("scrollMode", evt.mode).catch(() => {}); + } +} +function webViewerSpreadModeChanged(evt) { + if (PDFViewerApplication.isInitialViewSet && !PDFViewerApplication.pdfViewer.isInPresentationMode) { + PDFViewerApplication.store?.set("spreadMode", evt.mode).catch(() => {}); + } +} +function webViewerResize() { + const { + pdfDocument, + pdfViewer, + pdfRenderingQueue + } = PDFViewerApplication; + if (pdfRenderingQueue.printing && window.matchMedia("print").matches) { + return; + } + if (!pdfDocument) { + return; + } + const currentScaleValue = pdfViewer.currentScaleValue; + if (currentScaleValue === "auto" || currentScaleValue === "page-fit" || currentScaleValue === "page-width") { + pdfViewer.currentScaleValue = currentScaleValue; + } + pdfViewer.update(); +} +function webViewerHashchange(evt) { + const hash = evt.hash; + if (!hash) { + return; + } + if (!PDFViewerApplication.isInitialViewSet) { + PDFViewerApplication.initialBookmark = hash; + } else if (!PDFViewerApplication.pdfHistory?.popStateInProgress) { + PDFViewerApplication.pdfLinkService.setHash(hash); + } +} +{ + var webViewerFileInputChange = function (evt) { + if (PDFViewerApplication.pdfViewer?.isInPresentationMode) { + return; + } + const file = evt.fileInput.files[0]; + PDFViewerApplication.open({ + url: URL.createObjectURL(file), + originalUrl: file.name + }); + }; + var webViewerOpenFile = function (evt) { + const fileInput = PDFViewerApplication.appConfig.openFileInput; + fileInput.click(); + }; +} +function webViewerPresentationMode() { + PDFViewerApplication.requestPresentationMode(); +} +function webViewerSwitchAnnotationEditorMode(evt) { + PDFViewerApplication.pdfViewer.annotationEditorMode = evt.mode; +} +function webViewerSwitchAnnotationEditorParams(evt) { + PDFViewerApplication.pdfViewer.annotationEditorParams = evt; +} +function webViewerPrint() { + PDFViewerApplication.triggerPrinting(); +} +function webViewerDownload() { + PDFViewerApplication.downloadOrSave(); +} +function webViewerFirstPage() { + PDFViewerApplication.page = 1; +} +function webViewerLastPage() { + PDFViewerApplication.page = PDFViewerApplication.pagesCount; +} +function webViewerNextPage() { + PDFViewerApplication.pdfViewer.nextPage(); +} +function webViewerPreviousPage() { + PDFViewerApplication.pdfViewer.previousPage(); +} +function webViewerZoomIn() { + PDFViewerApplication.zoomIn(); +} +function webViewerZoomOut() { + PDFViewerApplication.zoomOut(); +} +function webViewerZoomReset() { + PDFViewerApplication.zoomReset(); +} +function webViewerPageNumberChanged(evt) { + const pdfViewer = PDFViewerApplication.pdfViewer; + if (evt.value !== "") { + PDFViewerApplication.pdfLinkService.goToPage(evt.value); + } + if (evt.value !== pdfViewer.currentPageNumber.toString() && evt.value !== pdfViewer.currentPageLabel) { + PDFViewerApplication.toolbar?.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel); + } +} +function webViewerScaleChanged(evt) { + PDFViewerApplication.pdfViewer.currentScaleValue = evt.value; +} +function webViewerRotateCw() { + PDFViewerApplication.rotatePages(90); +} +function webViewerRotateCcw() { + PDFViewerApplication.rotatePages(-90); +} +function webViewerOptionalContentConfig(evt) { + PDFViewerApplication.pdfViewer.optionalContentConfigPromise = evt.promise; +} +function webViewerSwitchScrollMode(evt) { + PDFViewerApplication.pdfViewer.scrollMode = evt.mode; +} +function webViewerSwitchSpreadMode(evt) { + PDFViewerApplication.pdfViewer.spreadMode = evt.mode; +} +function webViewerDocumentProperties() { + PDFViewerApplication.pdfDocumentProperties?.open(); +} +function webViewerFindFromUrlHash(evt) { + PDFViewerApplication.eventBus.dispatch("find", { + source: evt.source, + type: "", + query: evt.query, + phraseSearch: evt.phraseSearch, + caseSensitive: false, + entireWord: false, + highlightAll: true, + findPrevious: false, + matchDiacritics: true + }); +} +function webViewerUpdateFindMatchesCount({ + matchesCount +}) { + if (PDFViewerApplication.supportsIntegratedFind) { + PDFViewerApplication.externalServices.updateFindMatchesCount(matchesCount); + } else { + PDFViewerApplication.findBar.updateResultsCount(matchesCount); + } +} +function webViewerUpdateFindControlState({ + state, + previous, + matchesCount, + rawQuery +}) { + if (PDFViewerApplication.supportsIntegratedFind) { + PDFViewerApplication.externalServices.updateFindControlState({ + result: state, + findPrevious: previous, + matchesCount, + rawQuery + }); + } else { + PDFViewerApplication.findBar?.updateUIState(state, previous, matchesCount); + } +} +function webViewerScaleChanging(evt) { + PDFViewerApplication.toolbar?.setPageScale(evt.presetValue, evt.scale); + PDFViewerApplication.pdfViewer.update(); +} +function webViewerRotationChanging(evt) { + if (PDFViewerApplication.pdfThumbnailViewer) { + PDFViewerApplication.pdfThumbnailViewer.pagesRotation = evt.pagesRotation; + } + PDFViewerApplication.forceRendering(); + PDFViewerApplication.pdfViewer.currentPageNumber = evt.pageNumber; +} +function webViewerPageChanging({ + pageNumber, + pageLabel +}) { + PDFViewerApplication.toolbar?.setPageNumber(pageNumber, pageLabel); + PDFViewerApplication.secondaryToolbar?.setPageNumber(pageNumber); + if (PDFViewerApplication.pdfSidebar?.visibleView === _ui_utils.SidebarView.THUMBS) { + PDFViewerApplication.pdfThumbnailViewer?.scrollThumbnailIntoView(pageNumber); + } + const currentPage = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1); + PDFViewerApplication.toolbar?.updateLoadingIndicatorState(currentPage?.renderingState === _ui_utils.RenderingStates.RUNNING); +} +function webViewerResolutionChange(evt) { + PDFViewerApplication.pdfViewer.refresh(); +} +function webViewerVisibilityChange(evt) { + if (document.visibilityState === "visible") { + setZoomDisabledTimeout(); + } +} +let zoomDisabledTimeout = null; +function setZoomDisabledTimeout() { + if (zoomDisabledTimeout) { + clearTimeout(zoomDisabledTimeout); + } + zoomDisabledTimeout = setTimeout(function () { + zoomDisabledTimeout = null; + }, WHEEL_ZOOM_DISABLED_TIMEOUT); +} +function webViewerWheel(evt) { + const { + pdfViewer, + supportedMouseWheelZoomModifierKeys, + supportsPinchToZoom + } = PDFViewerApplication; + if (pdfViewer.isInPresentationMode) { + return; + } + const deltaMode = evt.deltaMode; + let scaleFactor = Math.exp(-evt.deltaY / 100); + const isBuiltInMac = false; + const isPinchToZoom = evt.ctrlKey && !PDFViewerApplication._isCtrlKeyDown && deltaMode === WheelEvent.DOM_DELTA_PIXEL && evt.deltaX === 0 && (Math.abs(scaleFactor - 1) < 0.05 || isBuiltInMac) && evt.deltaZ === 0; + if (isPinchToZoom || evt.ctrlKey && supportedMouseWheelZoomModifierKeys.ctrlKey || evt.metaKey && supportedMouseWheelZoomModifierKeys.metaKey) { + evt.preventDefault(); + if (zoomDisabledTimeout || document.visibilityState === "hidden") { + return; + } + const previousScale = pdfViewer.currentScale; + if (isPinchToZoom && supportsPinchToZoom) { + scaleFactor = PDFViewerApplication._accumulateFactor(previousScale, scaleFactor, "_wheelUnusedFactor"); + if (scaleFactor < 1) { + PDFViewerApplication.zoomOut(null, scaleFactor); + } else if (scaleFactor > 1) { + PDFViewerApplication.zoomIn(null, scaleFactor); + } else { + return; + } + } else { + const delta = (0, _ui_utils.normalizeWheelEventDirection)(evt); + let ticks = 0; + if (deltaMode === WheelEvent.DOM_DELTA_LINE || deltaMode === WheelEvent.DOM_DELTA_PAGE) { + if (Math.abs(delta) >= 1) { + ticks = Math.sign(delta); + } else { + ticks = PDFViewerApplication._accumulateTicks(delta, "_wheelUnusedTicks"); + } + } else { + const PIXELS_PER_LINE_SCALE = 30; + ticks = PDFViewerApplication._accumulateTicks(delta / PIXELS_PER_LINE_SCALE, "_wheelUnusedTicks"); + } + if (ticks < 0) { + PDFViewerApplication.zoomOut(-ticks); + } else if (ticks > 0) { + PDFViewerApplication.zoomIn(ticks); + } else { + return; + } + } + PDFViewerApplication._centerAtPos(previousScale, evt.clientX, evt.clientY); + } else { + setZoomDisabledTimeout(); + } +} +function webViewerTouchStart(evt) { + if (PDFViewerApplication.pdfViewer.isInPresentationMode || evt.touches.length < 2) { + return; + } + evt.preventDefault(); + if (evt.touches.length !== 2) { + PDFViewerApplication._touchInfo = null; + return; + } + let [touch0, touch1] = evt.touches; + if (touch0.identifier > touch1.identifier) { + [touch0, touch1] = [touch1, touch0]; + } + PDFViewerApplication._touchInfo = { + touch0X: touch0.pageX, + touch0Y: touch0.pageY, + touch1X: touch1.pageX, + touch1Y: touch1.pageY + }; +} +function webViewerTouchMove(evt) { + if (!PDFViewerApplication._touchInfo || evt.touches.length !== 2) { + return; + } + const { + pdfViewer, + _touchInfo, + supportsPinchToZoom + } = PDFViewerApplication; + let [touch0, touch1] = evt.touches; + if (touch0.identifier > touch1.identifier) { + [touch0, touch1] = [touch1, touch0]; + } + const { + pageX: page0X, + pageY: page0Y + } = touch0; + const { + pageX: page1X, + pageY: page1Y + } = touch1; + const { + touch0X: pTouch0X, + touch0Y: pTouch0Y, + touch1X: pTouch1X, + touch1Y: pTouch1Y + } = _touchInfo; + if (Math.abs(pTouch0X - page0X) <= 1 && Math.abs(pTouch0Y - page0Y) <= 1 && Math.abs(pTouch1X - page1X) <= 1 && Math.abs(pTouch1Y - page1Y) <= 1) { + return; + } + _touchInfo.touch0X = page0X; + _touchInfo.touch0Y = page0Y; + _touchInfo.touch1X = page1X; + _touchInfo.touch1Y = page1Y; + if (pTouch0X === page0X && pTouch0Y === page0Y) { + const v1X = pTouch1X - page0X; + const v1Y = pTouch1Y - page0Y; + const v2X = page1X - page0X; + const v2Y = page1Y - page0Y; + const det = v1X * v2Y - v1Y * v2X; + if (Math.abs(det) > 0.02 * Math.hypot(v1X, v1Y) * Math.hypot(v2X, v2Y)) { + return; + } + } else if (pTouch1X === page1X && pTouch1Y === page1Y) { + const v1X = pTouch0X - page1X; + const v1Y = pTouch0Y - page1Y; + const v2X = page0X - page1X; + const v2Y = page0Y - page1Y; + const det = v1X * v2Y - v1Y * v2X; + if (Math.abs(det) > 0.02 * Math.hypot(v1X, v1Y) * Math.hypot(v2X, v2Y)) { + return; + } + } else { + const diff0X = page0X - pTouch0X; + const diff1X = page1X - pTouch1X; + const diff0Y = page0Y - pTouch0Y; + const diff1Y = page1Y - pTouch1Y; + const dotProduct = diff0X * diff1X + diff0Y * diff1Y; + if (dotProduct >= 0) { + return; + } + } + evt.preventDefault(); + const distance = Math.hypot(page0X - page1X, page0Y - page1Y) || 1; + const pDistance = Math.hypot(pTouch0X - pTouch1X, pTouch0Y - pTouch1Y) || 1; + const previousScale = pdfViewer.currentScale; + if (supportsPinchToZoom) { + const newScaleFactor = PDFViewerApplication._accumulateFactor(previousScale, distance / pDistance, "_touchUnusedFactor"); + if (newScaleFactor < 1) { + PDFViewerApplication.zoomOut(null, newScaleFactor); + } else if (newScaleFactor > 1) { + PDFViewerApplication.zoomIn(null, newScaleFactor); + } else { + return; + } + } else { + const PIXELS_PER_LINE_SCALE = 30; + const ticks = PDFViewerApplication._accumulateTicks((distance - pDistance) / PIXELS_PER_LINE_SCALE, "_touchUnusedTicks"); + if (ticks < 0) { + PDFViewerApplication.zoomOut(-ticks); + } else if (ticks > 0) { + PDFViewerApplication.zoomIn(ticks); + } else { + return; + } + } + PDFViewerApplication._centerAtPos(previousScale, (page0X + page1X) / 2, (page0Y + page1Y) / 2); +} +function webViewerTouchEnd(evt) { + if (!PDFViewerApplication._touchInfo) { + return; + } + evt.preventDefault(); + PDFViewerApplication._touchInfo = null; + PDFViewerApplication._touchUnusedTicks = 0; + PDFViewerApplication._touchUnusedFactor = 1; +} +function webViewerClick(evt) { + if (!PDFViewerApplication.secondaryToolbar?.isOpen) { + return; + } + const appConfig = PDFViewerApplication.appConfig; + if (PDFViewerApplication.pdfViewer.containsElement(evt.target) || appConfig.toolbar?.container.contains(evt.target) && evt.target !== appConfig.secondaryToolbar?.toggleButton) { + PDFViewerApplication.secondaryToolbar.close(); + } +} +function webViewerKeyUp(evt) { + if (evt.key === "Control") { + PDFViewerApplication._isCtrlKeyDown = false; + } +} +function webViewerKeyDown(evt) { + PDFViewerApplication._isCtrlKeyDown = evt.key === "Control"; + if (PDFViewerApplication.overlayManager.active) { + return; + } + const { + eventBus, + pdfViewer + } = PDFViewerApplication; + const isViewerInPresentationMode = pdfViewer.isInPresentationMode; + let handled = false, + ensureViewerFocused = false; + const cmd = (evt.ctrlKey ? 1 : 0) | (evt.altKey ? 2 : 0) | (evt.shiftKey ? 4 : 0) | (evt.metaKey ? 8 : 0); + if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) { + switch (evt.keyCode) { + case 70: + if (!PDFViewerApplication.supportsIntegratedFind && !evt.shiftKey) { + PDFViewerApplication.findBar?.open(); + handled = true; + } + break; + case 71: + if (!PDFViewerApplication.supportsIntegratedFind) { + const { + state + } = PDFViewerApplication.findController; + if (state) { + const newState = { + source: window, + type: "again", + findPrevious: cmd === 5 || cmd === 12 + }; + eventBus.dispatch("find", { + ...state, + ...newState + }); + } + handled = true; + } + break; + case 61: + case 107: + case 187: + case 171: + PDFViewerApplication.zoomIn(); + handled = true; + break; + case 173: + case 109: + case 189: + PDFViewerApplication.zoomOut(); + handled = true; + break; + case 48: + case 96: + if (!isViewerInPresentationMode) { + setTimeout(function () { + PDFViewerApplication.zoomReset(); + }); + handled = false; + } + break; + case 38: + if (isViewerInPresentationMode || PDFViewerApplication.page > 1) { + PDFViewerApplication.page = 1; + handled = true; + ensureViewerFocused = true; + } + break; + case 40: + if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) { + PDFViewerApplication.page = PDFViewerApplication.pagesCount; + handled = true; + ensureViewerFocused = true; + } + break; + } + } + if (cmd === 1 || cmd === 8) { + switch (evt.keyCode) { + case 83: + eventBus.dispatch("download", { + source: window + }); + handled = true; + break; + case 79: + { + eventBus.dispatch("openfile", { + source: window + }); + handled = true; + } + break; + } + } + if (cmd === 3 || cmd === 10) { + switch (evt.keyCode) { + case 80: + PDFViewerApplication.requestPresentationMode(); + handled = true; + PDFViewerApplication.externalServices.reportTelemetry({ + type: "buttons", + data: { + id: "presentationModeKeyboard" + } + }); + break; + case 71: + if (PDFViewerApplication.appConfig.toolbar) { + PDFViewerApplication.appConfig.toolbar.pageNumber.select(); + handled = true; + } + break; + } + } + if (handled) { + if (ensureViewerFocused && !isViewerInPresentationMode) { + pdfViewer.focus(); + } + evt.preventDefault(); + return; + } + const curElement = (0, _ui_utils.getActiveOrFocusedElement)(); + const curElementTagName = curElement?.tagName.toUpperCase(); + if (curElementTagName === "INPUT" || curElementTagName === "TEXTAREA" || curElementTagName === "SELECT" || curElement?.isContentEditable) { + if (evt.keyCode !== 27) { + return; + } + } + if (cmd === 0) { + let turnPage = 0, + turnOnlyIfPageFit = false; + switch (evt.keyCode) { + case 38: + case 33: + if (pdfViewer.isVerticalScrollbarEnabled) { + turnOnlyIfPageFit = true; + } + turnPage = -1; + break; + case 8: + if (!isViewerInPresentationMode) { + turnOnlyIfPageFit = true; + } + turnPage = -1; + break; + case 37: + if (pdfViewer.isHorizontalScrollbarEnabled) { + turnOnlyIfPageFit = true; + } + case 75: + case 80: + turnPage = -1; + break; + case 27: + if (PDFViewerApplication.secondaryToolbar?.isOpen) { + PDFViewerApplication.secondaryToolbar.close(); + handled = true; + } + if (!PDFViewerApplication.supportsIntegratedFind && PDFViewerApplication.findBar?.opened) { + PDFViewerApplication.findBar.close(); + handled = true; + } + break; + case 40: + case 34: + if (pdfViewer.isVerticalScrollbarEnabled) { + turnOnlyIfPageFit = true; + } + turnPage = 1; + break; + case 13: + case 32: + if (!isViewerInPresentationMode) { + turnOnlyIfPageFit = true; + } + turnPage = 1; + break; + case 39: + if (pdfViewer.isHorizontalScrollbarEnabled) { + turnOnlyIfPageFit = true; + } + case 74: + case 78: + turnPage = 1; + break; + case 36: + if (isViewerInPresentationMode || PDFViewerApplication.page > 1) { + PDFViewerApplication.page = 1; + handled = true; + ensureViewerFocused = true; + } + break; + case 35: + if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) { + PDFViewerApplication.page = PDFViewerApplication.pagesCount; + handled = true; + ensureViewerFocused = true; + } + break; + case 83: + PDFViewerApplication.pdfCursorTools?.switchTool(_ui_utils.CursorTool.SELECT); + break; + case 72: + PDFViewerApplication.pdfCursorTools?.switchTool(_ui_utils.CursorTool.HAND); + break; + case 82: + PDFViewerApplication.rotatePages(90); + break; + case 115: + PDFViewerApplication.pdfSidebar?.toggle(); + break; + } + if (turnPage !== 0 && (!turnOnlyIfPageFit || pdfViewer.currentScaleValue === "page-fit")) { + if (turnPage > 0) { + pdfViewer.nextPage(); + } else { + pdfViewer.previousPage(); + } + handled = true; + } + } + if (cmd === 4) { + switch (evt.keyCode) { + case 13: + case 32: + if (!isViewerInPresentationMode && pdfViewer.currentScaleValue !== "page-fit") { + break; + } + pdfViewer.previousPage(); + handled = true; + break; + case 82: + PDFViewerApplication.rotatePages(-90); + break; + } + } + if (!handled && !isViewerInPresentationMode) { + if (evt.keyCode >= 33 && evt.keyCode <= 40 || evt.keyCode === 32 && curElementTagName !== "BUTTON") { + ensureViewerFocused = true; + } + } + if (ensureViewerFocused && !pdfViewer.containsElement(curElement)) { + pdfViewer.focus(); + } + if (handled) { + evt.preventDefault(); + } +} +function beforeUnload(evt) { + evt.preventDefault(); + evt.returnValue = ""; + return false; +} +function webViewerAnnotationEditorStatesChanged(data) { + PDFViewerApplication.externalServices.updateEditorStates(data); +} +const PDFPrintServiceFactory = { + instance: { + supportsPrinting: false, + createPrintService() { + throw new Error("Not implemented: createPrintService"); + } + } +}; +exports.PDFPrintServiceFactory = PDFPrintServiceFactory; + +/***/ }), +/* 3 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.animationStarted = exports.VERTICAL_PADDING = exports.UNKNOWN_SCALE = exports.TextLayerMode = exports.SpreadMode = exports.SidebarView = exports.ScrollMode = exports.SCROLLBAR_PADDING = exports.RenderingStates = exports.RendererType = exports.ProgressBar = exports.PresentationModeState = exports.OutputScale = exports.MIN_SCALE = exports.MAX_SCALE = exports.MAX_AUTO_SCALE = exports.DEFAULT_SCALE_VALUE = exports.DEFAULT_SCALE_DELTA = exports.DEFAULT_SCALE = exports.CursorTool = exports.AutoPrintRegExp = void 0; +exports.apiPageLayoutToViewerModes = apiPageLayoutToViewerModes; +exports.apiPageModeToSidebarView = apiPageModeToSidebarView; +exports.approximateFraction = approximateFraction; +exports.backtrackBeforeAllVisibleElements = backtrackBeforeAllVisibleElements; +exports.binarySearchFirstItem = binarySearchFirstItem; +exports.docStyle = void 0; +exports.getActiveOrFocusedElement = getActiveOrFocusedElement; +exports.getPageSizeInches = getPageSizeInches; +exports.getVisibleElements = getVisibleElements; +exports.isPortraitOrientation = isPortraitOrientation; +exports.isValidRotation = isValidRotation; +exports.isValidScrollMode = isValidScrollMode; +exports.isValidSpreadMode = isValidSpreadMode; +exports.noContextMenuHandler = noContextMenuHandler; +exports.normalizeWheelEventDelta = normalizeWheelEventDelta; +exports.normalizeWheelEventDirection = normalizeWheelEventDirection; +exports.parseQueryString = parseQueryString; +exports.removeNullCharacters = removeNullCharacters; +exports.roundToDivide = roundToDivide; +exports.scrollIntoView = scrollIntoView; +exports.watchScroll = watchScroll; +const DEFAULT_SCALE_VALUE = "auto"; +exports.DEFAULT_SCALE_VALUE = DEFAULT_SCALE_VALUE; +const DEFAULT_SCALE = 1.0; +exports.DEFAULT_SCALE = DEFAULT_SCALE; +const DEFAULT_SCALE_DELTA = 1.1; +exports.DEFAULT_SCALE_DELTA = DEFAULT_SCALE_DELTA; +const MIN_SCALE = 0.1; +exports.MIN_SCALE = MIN_SCALE; +const MAX_SCALE = 10.0; +exports.MAX_SCALE = MAX_SCALE; +const UNKNOWN_SCALE = 0; +exports.UNKNOWN_SCALE = UNKNOWN_SCALE; +const MAX_AUTO_SCALE = 1.25; +exports.MAX_AUTO_SCALE = MAX_AUTO_SCALE; +const SCROLLBAR_PADDING = 40; +exports.SCROLLBAR_PADDING = SCROLLBAR_PADDING; +const VERTICAL_PADDING = 5; +exports.VERTICAL_PADDING = VERTICAL_PADDING; +const RenderingStates = { + INITIAL: 0, + RUNNING: 1, + PAUSED: 2, + FINISHED: 3 +}; +exports.RenderingStates = RenderingStates; +const PresentationModeState = { + UNKNOWN: 0, + NORMAL: 1, + CHANGING: 2, + FULLSCREEN: 3 +}; +exports.PresentationModeState = PresentationModeState; +const SidebarView = { + UNKNOWN: -1, + NONE: 0, + THUMBS: 1, + OUTLINE: 2, + ATTACHMENTS: 3, + LAYERS: 4 +}; +exports.SidebarView = SidebarView; +const RendererType = { + CANVAS: "canvas", + SVG: "svg" +}; +exports.RendererType = RendererType; +const TextLayerMode = { + DISABLE: 0, + ENABLE: 1 +}; +exports.TextLayerMode = TextLayerMode; +const ScrollMode = { + UNKNOWN: -1, + VERTICAL: 0, + HORIZONTAL: 1, + WRAPPED: 2, + PAGE: 3 +}; +exports.ScrollMode = ScrollMode; +const SpreadMode = { + UNKNOWN: -1, + NONE: 0, + ODD: 1, + EVEN: 2 +}; +exports.SpreadMode = SpreadMode; +const CursorTool = { + SELECT: 0, + HAND: 1, + ZOOM: 2 +}; +exports.CursorTool = CursorTool; +const AutoPrintRegExp = /\bprint\s*\(/; +exports.AutoPrintRegExp = AutoPrintRegExp; +class OutputScale { + constructor() { + const pixelRatio = window.devicePixelRatio || 1; + this.sx = pixelRatio; + this.sy = pixelRatio; + } + get scaled() { + return this.sx !== 1 || this.sy !== 1; + } +} +exports.OutputScale = OutputScale; +function scrollIntoView(element, spot, scrollMatches = false) { + let parent = element.offsetParent; + if (!parent) { + console.error("offsetParent is not set -- cannot scroll"); + return; + } + let offsetY = element.offsetTop + element.clientTop; + let offsetX = element.offsetLeft + element.clientLeft; + while (parent.clientHeight === parent.scrollHeight && parent.clientWidth === parent.scrollWidth || scrollMatches && (parent.classList.contains("markedContent") || getComputedStyle(parent).overflow === "hidden")) { + offsetY += parent.offsetTop; + offsetX += parent.offsetLeft; + parent = parent.offsetParent; + if (!parent) { + return; + } + } + if (spot) { + if (spot.top !== undefined) { + offsetY += spot.top; + } + if (spot.left !== undefined) { + offsetX += spot.left; + parent.scrollLeft = offsetX; + } + } + parent.scrollTop = offsetY; +} +function watchScroll(viewAreaElement, callback) { + const debounceScroll = function (evt) { + if (rAF) { + return; + } + rAF = window.requestAnimationFrame(function viewAreaElementScrolled() { + rAF = null; + const currentX = viewAreaElement.scrollLeft; + const lastX = state.lastX; + if (currentX !== lastX) { + state.right = currentX > lastX; + } + state.lastX = currentX; + const currentY = viewAreaElement.scrollTop; + const lastY = state.lastY; + if (currentY !== lastY) { + state.down = currentY > lastY; + } + state.lastY = currentY; + callback(state); + }); + }; + const state = { + right: true, + down: true, + lastX: viewAreaElement.scrollLeft, + lastY: viewAreaElement.scrollTop, + _eventHandler: debounceScroll + }; + let rAF = null; + viewAreaElement.addEventListener("scroll", debounceScroll, true); + return state; +} +function parseQueryString(query) { + const params = new Map(); + for (const [key, value] of new URLSearchParams(query)) { + params.set(key.toLowerCase(), value); + } + return params; +} +const NullCharactersRegExp = /\x00/g; +const InvisibleCharactersRegExp = /[\x01-\x1F]/g; +function removeNullCharacters(str, replaceInvisible = false) { + if (typeof str !== "string") { + console.error(`The argument must be a string.`); + return str; + } + if (replaceInvisible) { + str = str.replace(InvisibleCharactersRegExp, " "); + } + return str.replace(NullCharactersRegExp, ""); +} +function binarySearchFirstItem(items, condition, start = 0) { + let minIndex = start; + let maxIndex = items.length - 1; + if (maxIndex < 0 || !condition(items[maxIndex])) { + return items.length; + } + if (condition(items[minIndex])) { + return minIndex; + } + while (minIndex < maxIndex) { + const currentIndex = minIndex + maxIndex >> 1; + const currentItem = items[currentIndex]; + if (condition(currentItem)) { + maxIndex = currentIndex; + } else { + minIndex = currentIndex + 1; + } + } + return minIndex; +} +function approximateFraction(x) { + if (Math.floor(x) === x) { + return [x, 1]; + } + const xinv = 1 / x; + const limit = 8; + if (xinv > limit) { + return [1, limit]; + } else if (Math.floor(xinv) === xinv) { + return [1, xinv]; + } + const x_ = x > 1 ? xinv : x; + let a = 0, + b = 1, + c = 1, + d = 1; + while (true) { + const p = a + c, + q = b + d; + if (q > limit) { + break; + } + if (x_ <= p / q) { + c = p; + d = q; + } else { + a = p; + b = q; + } + } + let result; + if (x_ - a / b < c / d - x_) { + result = x_ === x ? [a, b] : [b, a]; + } else { + result = x_ === x ? [c, d] : [d, c]; + } + return result; +} +function roundToDivide(x, div) { + const r = x % div; + return r === 0 ? x : Math.round(x - r + div); +} +function getPageSizeInches({ + view, + userUnit, + rotate +}) { + const [x1, y1, x2, y2] = view; + const changeOrientation = rotate % 180 !== 0; + const width = (x2 - x1) / 72 * userUnit; + const height = (y2 - y1) / 72 * userUnit; + return { + width: changeOrientation ? height : width, + height: changeOrientation ? width : height + }; +} +function backtrackBeforeAllVisibleElements(index, views, top) { + if (index < 2) { + return index; + } + let elt = views[index].div; + let pageTop = elt.offsetTop + elt.clientTop; + if (pageTop >= top) { + elt = views[index - 1].div; + pageTop = elt.offsetTop + elt.clientTop; + } + for (let i = index - 2; i >= 0; --i) { + elt = views[i].div; + if (elt.offsetTop + elt.clientTop + elt.clientHeight <= pageTop) { + break; + } + index = i; + } + return index; +} +function getVisibleElements({ + scrollEl, + views, + sortByVisibility = false, + horizontal = false, + rtl = false +}) { + const top = scrollEl.scrollTop, + bottom = top + scrollEl.clientHeight; + const left = scrollEl.scrollLeft, + right = left + scrollEl.clientWidth; + function isElementBottomAfterViewTop(view) { + const element = view.div; + const elementBottom = element.offsetTop + element.clientTop + element.clientHeight; + return elementBottom > top; + } + function isElementNextAfterViewHorizontally(view) { + const element = view.div; + const elementLeft = element.offsetLeft + element.clientLeft; + const elementRight = elementLeft + element.clientWidth; + return rtl ? elementLeft < right : elementRight > left; + } + const visible = [], + ids = new Set(), + numViews = views.length; + let firstVisibleElementInd = binarySearchFirstItem(views, horizontal ? isElementNextAfterViewHorizontally : isElementBottomAfterViewTop); + if (firstVisibleElementInd > 0 && firstVisibleElementInd < numViews && !horizontal) { + firstVisibleElementInd = backtrackBeforeAllVisibleElements(firstVisibleElementInd, views, top); + } + let lastEdge = horizontal ? right : -1; + for (let i = firstVisibleElementInd; i < numViews; i++) { + const view = views[i], + element = view.div; + const currentWidth = element.offsetLeft + element.clientLeft; + const currentHeight = element.offsetTop + element.clientTop; + const viewWidth = element.clientWidth, + viewHeight = element.clientHeight; + const viewRight = currentWidth + viewWidth; + const viewBottom = currentHeight + viewHeight; + if (lastEdge === -1) { + if (viewBottom >= bottom) { + lastEdge = viewBottom; + } + } else if ((horizontal ? currentWidth : currentHeight) > lastEdge) { + break; + } + if (viewBottom <= top || currentHeight >= bottom || viewRight <= left || currentWidth >= right) { + continue; + } + const hiddenHeight = Math.max(0, top - currentHeight) + Math.max(0, viewBottom - bottom); + const hiddenWidth = Math.max(0, left - currentWidth) + Math.max(0, viewRight - right); + const fractionHeight = (viewHeight - hiddenHeight) / viewHeight, + fractionWidth = (viewWidth - hiddenWidth) / viewWidth; + const percent = fractionHeight * fractionWidth * 100 | 0; + visible.push({ + id: view.id, + x: currentWidth, + y: currentHeight, + view, + percent, + widthPercent: fractionWidth * 100 | 0 + }); + ids.add(view.id); + } + const first = visible[0], + last = visible.at(-1); + if (sortByVisibility) { + visible.sort(function (a, b) { + const pc = a.percent - b.percent; + if (Math.abs(pc) > 0.001) { + return -pc; + } + return a.id - b.id; + }); + } + return { + first, + last, + views: visible, + ids + }; +} +function noContextMenuHandler(evt) { + evt.preventDefault(); +} +function normalizeWheelEventDirection(evt) { + let delta = Math.hypot(evt.deltaX, evt.deltaY); + const angle = Math.atan2(evt.deltaY, evt.deltaX); + if (-0.25 * Math.PI < angle && angle < 0.75 * Math.PI) { + delta = -delta; + } + return delta; +} +function normalizeWheelEventDelta(evt) { + const deltaMode = evt.deltaMode; + let delta = normalizeWheelEventDirection(evt); + const MOUSE_PIXELS_PER_LINE = 30; + const MOUSE_LINES_PER_PAGE = 30; + if (deltaMode === WheelEvent.DOM_DELTA_PIXEL) { + delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE; + } else if (deltaMode === WheelEvent.DOM_DELTA_LINE) { + delta /= MOUSE_LINES_PER_PAGE; + } + return delta; +} +function isValidRotation(angle) { + return Number.isInteger(angle) && angle % 90 === 0; +} +function isValidScrollMode(mode) { + return Number.isInteger(mode) && Object.values(ScrollMode).includes(mode) && mode !== ScrollMode.UNKNOWN; +} +function isValidSpreadMode(mode) { + return Number.isInteger(mode) && Object.values(SpreadMode).includes(mode) && mode !== SpreadMode.UNKNOWN; +} +function isPortraitOrientation(size) { + return size.width <= size.height; +} +const animationStarted = new Promise(function (resolve) { + window.requestAnimationFrame(resolve); +}); +exports.animationStarted = animationStarted; +const docStyle = document.documentElement.style; +exports.docStyle = docStyle; +function clamp(v, min, max) { + return Math.min(Math.max(v, min), max); +} +class ProgressBar { + #classList = null; + #disableAutoFetchTimeout = null; + #percent = 0; + #style = null; + #visible = true; + constructor(bar) { + this.#classList = bar.classList; + this.#style = bar.style; + } + get percent() { + return this.#percent; + } + set percent(val) { + this.#percent = clamp(val, 0, 100); + if (isNaN(val)) { + this.#classList.add("indeterminate"); + return; + } + this.#classList.remove("indeterminate"); + this.#style.setProperty("--progressBar-percent", `${this.#percent}%`); + } + setWidth(viewer) { + if (!viewer) { + return; + } + const container = viewer.parentNode; + const scrollbarWidth = container.offsetWidth - viewer.offsetWidth; + if (scrollbarWidth > 0) { + this.#style.setProperty("--progressBar-end-offset", `${scrollbarWidth}px`); + } + } + setDisableAutoFetch(delay = 5000) { + if (isNaN(this.#percent)) { + return; + } + if (this.#disableAutoFetchTimeout) { + clearTimeout(this.#disableAutoFetchTimeout); + } + this.show(); + this.#disableAutoFetchTimeout = setTimeout(() => { + this.#disableAutoFetchTimeout = null; + this.hide(); + }, delay); + } + hide() { + if (!this.#visible) { + return; + } + this.#visible = false; + this.#classList.add("hidden"); + } + show() { + if (this.#visible) { + return; + } + this.#visible = true; + this.#classList.remove("hidden"); + } +} +exports.ProgressBar = ProgressBar; +function getActiveOrFocusedElement() { + let curRoot = document; + let curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(":focus"); + while (curActiveOrFocused?.shadowRoot) { + curRoot = curActiveOrFocused.shadowRoot; + curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(":focus"); + } + return curActiveOrFocused; +} +function apiPageLayoutToViewerModes(layout) { + let scrollMode = ScrollMode.VERTICAL, + spreadMode = SpreadMode.NONE; + switch (layout) { + case "SinglePage": + scrollMode = ScrollMode.PAGE; + break; + case "OneColumn": + break; + case "TwoPageLeft": + scrollMode = ScrollMode.PAGE; + case "TwoColumnLeft": + spreadMode = SpreadMode.ODD; + break; + case "TwoPageRight": + scrollMode = ScrollMode.PAGE; + case "TwoColumnRight": + spreadMode = SpreadMode.EVEN; + break; + } + return { + scrollMode, + spreadMode + }; +} +function apiPageModeToSidebarView(mode) { + switch (mode) { + case "UseNone": + return SidebarView.NONE; + case "UseThumbs": + return SidebarView.THUMBS; + case "UseOutlines": + return SidebarView.OUTLINE; + case "UseAttachments": + return SidebarView.ATTACHMENTS; + case "UseOC": + return SidebarView.LAYERS; + } + return SidebarView.NONE; +} + +/***/ }), +/* 4 */ +/***/ ((module) => { + + + +let pdfjsLib; +if (typeof window !== "undefined" && window["pdfjs-dist/build/pdf"]) { + pdfjsLib = window["pdfjs-dist/build/pdf"]; +} else { + pdfjsLib = require("../build/pdf.js"); +} +module.exports = pdfjsLib; + +/***/ }), +/* 5 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.compatibilityParams = exports.OptionKind = exports.AppOptions = void 0; +const compatibilityParams = Object.create(null); +exports.compatibilityParams = compatibilityParams; +{ + const userAgent = navigator.userAgent || ""; + const platform = navigator.platform || ""; + const maxTouchPoints = navigator.maxTouchPoints || 1; + const isAndroid = /Android/.test(userAgent); + const isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) || platform === "MacIntel" && maxTouchPoints > 1; + (function checkCanvasSizeLimitation() { + if (isIOS || isAndroid) { + compatibilityParams.maxCanvasPixels = 5242880; + } + })(); +} +const OptionKind = { + VIEWER: 0x02, + API: 0x04, + WORKER: 0x08, + PREFERENCE: 0x80 +}; +exports.OptionKind = OptionKind; +const defaultOptions = { + annotationEditorMode: { + value: 0, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + annotationMode: { + value: 2, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + cursorToolOnLoad: { + value: 0, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + defaultZoomDelay: { + value: 400, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + defaultZoomValue: { + value: "", + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + disableHistory: { + value: false, + kind: OptionKind.VIEWER + }, + disablePageLabels: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + enablePermissions: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + enablePrintAutoRotate: { + value: true, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + enableScripting: { + value: true, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + externalLinkRel: { + value: "noopener noreferrer nofollow", + kind: OptionKind.VIEWER + }, + externalLinkTarget: { + value: 0, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + historyUpdateUrl: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + ignoreDestinationZoom: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + imageResourcesPath: { + value: "./images/", + kind: OptionKind.VIEWER + }, + maxCanvasPixels: { + value: 16777216, + kind: OptionKind.VIEWER + }, + forcePageColors: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + pageColorsBackground: { + value: "Canvas", + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + pageColorsForeground: { + value: "CanvasText", + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + pdfBugEnabled: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + printResolution: { + value: 150, + kind: OptionKind.VIEWER + }, + sidebarViewOnLoad: { + value: -1, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + scrollModeOnLoad: { + value: -1, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + spreadModeOnLoad: { + value: -1, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + textLayerMode: { + value: 1, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + useOnlyCssZoom: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + viewerCssTheme: { + value: 0, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + viewOnLoad: { + value: 0, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + cMapPacked: { + value: true, + kind: OptionKind.API + }, + cMapUrl: { + value: "../web/cmaps/", + kind: OptionKind.API + }, + disableAutoFetch: { + value: false, + kind: OptionKind.API + OptionKind.PREFERENCE + }, + disableFontFace: { + value: false, + kind: OptionKind.API + OptionKind.PREFERENCE + }, + disableRange: { + value: false, + kind: OptionKind.API + OptionKind.PREFERENCE + }, + disableStream: { + value: false, + kind: OptionKind.API + OptionKind.PREFERENCE + }, + docBaseUrl: { + value: "", + kind: OptionKind.API + }, + enableXfa: { + value: true, + kind: OptionKind.API + OptionKind.PREFERENCE + }, + fontExtraProperties: { + value: false, + kind: OptionKind.API + }, + isEvalSupported: { + value: true, + kind: OptionKind.API + }, + isOffscreenCanvasSupported: { + value: true, + kind: OptionKind.API + }, + maxImageSize: { + value: -1, + kind: OptionKind.API + }, + pdfBug: { + value: false, + kind: OptionKind.API + }, + standardFontDataUrl: { + value: "../web/standard_fonts/", + kind: OptionKind.API + }, + verbosity: { + value: 1, + kind: OptionKind.API + }, + workerPort: { + value: null, + kind: OptionKind.WORKER + }, + workerSrc: { + value: "../build/pdf.worker.js", + kind: OptionKind.WORKER + } +}; +{ + defaultOptions.defaultUrl = { + value: "compressed.tracemonkey-pldi-09.pdf", + kind: OptionKind.VIEWER + }; + defaultOptions.disablePreferences = { + value: false, + kind: OptionKind.VIEWER + }; + defaultOptions.locale = { + value: navigator.language || "en-US", + kind: OptionKind.VIEWER + }; + defaultOptions.renderer = { + value: "canvas", + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }; + defaultOptions.sandboxBundleSrc = { + value: "../build/pdf.sandbox.js", + kind: OptionKind.VIEWER + }; +} +const userOptions = Object.create(null); +class AppOptions { + constructor() { + throw new Error("Cannot initialize AppOptions."); + } + static get(name) { + const userOption = userOptions[name]; + if (userOption !== undefined) { + return userOption; + } + const defaultOption = defaultOptions[name]; + if (defaultOption !== undefined) { + return compatibilityParams[name] ?? defaultOption.value; + } + return undefined; + } + static getAll(kind = null) { + const options = Object.create(null); + for (const name in defaultOptions) { + const defaultOption = defaultOptions[name]; + if (kind) { + if ((kind & defaultOption.kind) === 0) { + continue; + } + if (kind === OptionKind.PREFERENCE) { + const value = defaultOption.value, + valueType = typeof value; + if (valueType === "boolean" || valueType === "string" || valueType === "number" && Number.isInteger(value)) { + options[name] = value; + continue; + } + throw new Error(`Invalid type for preference: ${name}`); + } + } + const userOption = userOptions[name]; + options[name] = userOption !== undefined ? userOption : compatibilityParams[name] ?? defaultOption.value; + } + return options; + } + static set(name, value) { + userOptions[name] = value; + } + static setAll(options) { + for (const name in options) { + userOptions[name] = options[name]; + } + } + static remove(name) { + delete userOptions[name]; + } +} +exports.AppOptions = AppOptions; +{ + AppOptions._hasUserOptions = function () { + return Object.keys(userOptions).length > 0; + }; +} + +/***/ }), +/* 6 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.WaitOnType = exports.EventBus = exports.AutomationEventBus = void 0; +exports.waitOnEventOrTimeout = waitOnEventOrTimeout; +const WaitOnType = { + EVENT: "event", + TIMEOUT: "timeout" +}; +exports.WaitOnType = WaitOnType; +function waitOnEventOrTimeout({ + target, + name, + delay = 0 +}) { + return new Promise(function (resolve, reject) { + if (typeof target !== "object" || !(name && typeof name === "string") || !(Number.isInteger(delay) && delay >= 0)) { + throw new Error("waitOnEventOrTimeout - invalid parameters."); + } + function handler(type) { + if (target instanceof EventBus) { + target._off(name, eventHandler); + } else { + target.removeEventListener(name, eventHandler); + } + if (timeout) { + clearTimeout(timeout); + } + resolve(type); + } + const eventHandler = handler.bind(null, WaitOnType.EVENT); + if (target instanceof EventBus) { + target._on(name, eventHandler); + } else { + target.addEventListener(name, eventHandler); + } + const timeoutHandler = handler.bind(null, WaitOnType.TIMEOUT); + const timeout = setTimeout(timeoutHandler, delay); + }); +} +class EventBus { + #listeners = Object.create(null); + on(eventName, listener, options = null) { + this._on(eventName, listener, { + external: true, + once: options?.once + }); + } + off(eventName, listener, options = null) { + this._off(eventName, listener, { + external: true, + once: options?.once + }); + } + dispatch(eventName, data) { + const eventListeners = this.#listeners[eventName]; + if (!eventListeners || eventListeners.length === 0) { + return; + } + let externalListeners; + for (const { + listener, + external, + once + } of eventListeners.slice(0)) { + if (once) { + this._off(eventName, listener); + } + if (external) { + (externalListeners ||= []).push(listener); + continue; + } + listener(data); + } + if (externalListeners) { + for (const listener of externalListeners) { + listener(data); + } + externalListeners = null; + } + } + _on(eventName, listener, options = null) { + const eventListeners = this.#listeners[eventName] ||= []; + eventListeners.push({ + listener, + external: options?.external === true, + once: options?.once === true + }); + } + _off(eventName, listener, options = null) { + const eventListeners = this.#listeners[eventName]; + if (!eventListeners) { + return; + } + for (let i = 0, ii = eventListeners.length; i < ii; i++) { + if (eventListeners[i].listener === listener) { + eventListeners.splice(i, 1); + return; + } + } + } +} +exports.EventBus = EventBus; +class AutomationEventBus extends EventBus { + dispatch(eventName, data) { + throw new Error("Not implemented: AutomationEventBus.dispatch"); + } +} +exports.AutomationEventBus = AutomationEventBus; + +/***/ }), +/* 7 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SimpleLinkService = exports.PDFLinkService = exports.LinkTarget = void 0; +var _ui_utils = __webpack_require__(3); +const DEFAULT_LINK_REL = "noopener noreferrer nofollow"; +const LinkTarget = { + NONE: 0, + SELF: 1, + BLANK: 2, + PARENT: 3, + TOP: 4 +}; +exports.LinkTarget = LinkTarget; +function addLinkAttributes(link, { + url, + target, + rel, + enabled = true +} = {}) { + if (!url || typeof url !== "string") { + throw new Error('A valid "url" parameter must provided.'); + } + const urlNullRemoved = (0, _ui_utils.removeNullCharacters)(url); + if (enabled) { + link.href = link.title = urlNullRemoved; + } else { + link.href = ""; + link.title = `Disabled: ${urlNullRemoved}`; + link.onclick = () => { + return false; + }; + } + let targetStr = ""; + switch (target) { + case LinkTarget.NONE: + break; + case LinkTarget.SELF: + targetStr = "_self"; + break; + case LinkTarget.BLANK: + targetStr = "_blank"; + break; + case LinkTarget.PARENT: + targetStr = "_parent"; + break; + case LinkTarget.TOP: + targetStr = "_top"; + break; + } + link.target = targetStr; + link.rel = typeof rel === "string" ? rel : DEFAULT_LINK_REL; +} +class PDFLinkService { + #pagesRefCache = new Map(); + constructor({ + eventBus, + externalLinkTarget = null, + externalLinkRel = null, + ignoreDestinationZoom = false + } = {}) { + this.eventBus = eventBus; + this.externalLinkTarget = externalLinkTarget; + this.externalLinkRel = externalLinkRel; + this.externalLinkEnabled = true; + this._ignoreDestinationZoom = ignoreDestinationZoom; + this.baseUrl = null; + this.pdfDocument = null; + this.pdfViewer = null; + this.pdfHistory = null; + } + setDocument(pdfDocument, baseUrl = null) { + this.baseUrl = baseUrl; + this.pdfDocument = pdfDocument; + this.#pagesRefCache.clear(); + } + setViewer(pdfViewer) { + this.pdfViewer = pdfViewer; + } + setHistory(pdfHistory) { + this.pdfHistory = pdfHistory; + } + get pagesCount() { + return this.pdfDocument ? this.pdfDocument.numPages : 0; + } + get page() { + return this.pdfViewer.currentPageNumber; + } + set page(value) { + this.pdfViewer.currentPageNumber = value; + } + get rotation() { + return this.pdfViewer.pagesRotation; + } + set rotation(value) { + this.pdfViewer.pagesRotation = value; + } + get isInPresentationMode() { + return this.pdfViewer.isInPresentationMode; + } + #goToDestinationHelper(rawDest, namedDest = null, explicitDest) { + const destRef = explicitDest[0]; + let pageNumber; + if (typeof destRef === "object" && destRef !== null) { + pageNumber = this._cachedPageNumber(destRef); + if (!pageNumber) { + this.pdfDocument.getPageIndex(destRef).then(pageIndex => { + this.cachePageRef(pageIndex + 1, destRef); + this.#goToDestinationHelper(rawDest, namedDest, explicitDest); + }).catch(() => { + console.error(`PDFLinkService.#goToDestinationHelper: "${destRef}" is not ` + `a valid page reference, for dest="${rawDest}".`); + }); + return; + } + } else if (Number.isInteger(destRef)) { + pageNumber = destRef + 1; + } else { + console.error(`PDFLinkService.#goToDestinationHelper: "${destRef}" is not ` + `a valid destination reference, for dest="${rawDest}".`); + return; + } + if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) { + console.error(`PDFLinkService.#goToDestinationHelper: "${pageNumber}" is not ` + `a valid page number, for dest="${rawDest}".`); + return; + } + if (this.pdfHistory) { + this.pdfHistory.pushCurrentPosition(); + this.pdfHistory.push({ + namedDest, + explicitDest, + pageNumber + }); + } + this.pdfViewer.scrollPageIntoView({ + pageNumber, + destArray: explicitDest, + ignoreDestinationZoom: this._ignoreDestinationZoom + }); + } + async goToDestination(dest) { + if (!this.pdfDocument) { + return; + } + let namedDest, explicitDest; + if (typeof dest === "string") { + namedDest = dest; + explicitDest = await this.pdfDocument.getDestination(dest); + } else { + namedDest = null; + explicitDest = await dest; + } + if (!Array.isArray(explicitDest)) { + console.error(`PDFLinkService.goToDestination: "${explicitDest}" is not ` + `a valid destination array, for dest="${dest}".`); + return; + } + this.#goToDestinationHelper(dest, namedDest, explicitDest); + } + goToPage(val) { + if (!this.pdfDocument) { + return; + } + const pageNumber = typeof val === "string" && this.pdfViewer.pageLabelToPageNumber(val) || val | 0; + if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) { + console.error(`PDFLinkService.goToPage: "${val}" is not a valid page.`); + return; + } + if (this.pdfHistory) { + this.pdfHistory.pushCurrentPosition(); + this.pdfHistory.pushPage(pageNumber); + } + this.pdfViewer.scrollPageIntoView({ + pageNumber + }); + } + addLinkAttributes(link, url, newWindow = false) { + addLinkAttributes(link, { + url, + target: newWindow ? LinkTarget.BLANK : this.externalLinkTarget, + rel: this.externalLinkRel, + enabled: this.externalLinkEnabled + }); + } + getDestinationHash(dest) { + if (typeof dest === "string") { + if (dest.length > 0) { + return this.getAnchorUrl("#" + escape(dest)); + } + } else if (Array.isArray(dest)) { + const str = JSON.stringify(dest); + if (str.length > 0) { + return this.getAnchorUrl("#" + escape(str)); + } + } + return this.getAnchorUrl(""); + } + getAnchorUrl(anchor) { + return (this.baseUrl || "") + anchor; + } + setHash(hash) { + if (!this.pdfDocument) { + return; + } + let pageNumber, dest; + if (hash.includes("=")) { + const params = (0, _ui_utils.parseQueryString)(hash); + if (params.has("search")) { + this.eventBus.dispatch("findfromurlhash", { + source: this, + query: params.get("search").replace(/"/g, ""), + phraseSearch: params.get("phrase") === "true" + }); + } + if (params.has("page")) { + pageNumber = params.get("page") | 0 || 1; + } + if (params.has("zoom")) { + const zoomArgs = params.get("zoom").split(","); + const zoomArg = zoomArgs[0]; + const zoomArgNumber = parseFloat(zoomArg); + if (!zoomArg.includes("Fit")) { + dest = [null, { + name: "XYZ" + }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null, zoomArgs.length > 2 ? zoomArgs[2] | 0 : null, zoomArgNumber ? zoomArgNumber / 100 : zoomArg]; + } else { + if (zoomArg === "Fit" || zoomArg === "FitB") { + dest = [null, { + name: zoomArg + }]; + } else if (zoomArg === "FitH" || zoomArg === "FitBH" || zoomArg === "FitV" || zoomArg === "FitBV") { + dest = [null, { + name: zoomArg + }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null]; + } else if (zoomArg === "FitR") { + if (zoomArgs.length !== 5) { + console.error('PDFLinkService.setHash: Not enough parameters for "FitR".'); + } else { + dest = [null, { + name: zoomArg + }, zoomArgs[1] | 0, zoomArgs[2] | 0, zoomArgs[3] | 0, zoomArgs[4] | 0]; + } + } else { + console.error(`PDFLinkService.setHash: "${zoomArg}" is not a valid zoom value.`); + } + } + } + if (dest) { + this.pdfViewer.scrollPageIntoView({ + pageNumber: pageNumber || this.page, + destArray: dest, + allowNegativeOffset: true + }); + } else if (pageNumber) { + this.page = pageNumber; + } + if (params.has("pagemode")) { + this.eventBus.dispatch("pagemode", { + source: this, + mode: params.get("pagemode") + }); + } + if (params.has("nameddest")) { + this.goToDestination(params.get("nameddest")); + } + } else { + dest = unescape(hash); + try { + dest = JSON.parse(dest); + if (!Array.isArray(dest)) { + dest = dest.toString(); + } + } catch (ex) {} + if (typeof dest === "string" || PDFLinkService.#isValidExplicitDestination(dest)) { + this.goToDestination(dest); + return; + } + console.error(`PDFLinkService.setHash: "${unescape(hash)}" is not a valid destination.`); + } + } + executeNamedAction(action) { + switch (action) { + case "GoBack": + this.pdfHistory?.back(); + break; + case "GoForward": + this.pdfHistory?.forward(); + break; + case "NextPage": + this.pdfViewer.nextPage(); + break; + case "PrevPage": + this.pdfViewer.previousPage(); + break; + case "LastPage": + this.page = this.pagesCount; + break; + case "FirstPage": + this.page = 1; + break; + default: + break; + } + this.eventBus.dispatch("namedaction", { + source: this, + action + }); + } + async executeSetOCGState(action) { + const pdfDocument = this.pdfDocument; + const optionalContentConfig = await this.pdfViewer.optionalContentConfigPromise; + if (pdfDocument !== this.pdfDocument) { + return; + } + let operator; + for (const elem of action.state) { + switch (elem) { + case "ON": + case "OFF": + case "Toggle": + operator = elem; + continue; + } + switch (operator) { + case "ON": + optionalContentConfig.setVisibility(elem, true); + break; + case "OFF": + optionalContentConfig.setVisibility(elem, false); + break; + case "Toggle": + const group = optionalContentConfig.getGroup(elem); + if (group) { + optionalContentConfig.setVisibility(elem, !group.visible); + } + break; + } + } + this.pdfViewer.optionalContentConfigPromise = Promise.resolve(optionalContentConfig); + } + cachePageRef(pageNum, pageRef) { + if (!pageRef) { + return; + } + const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`; + this.#pagesRefCache.set(refStr, pageNum); + } + _cachedPageNumber(pageRef) { + if (!pageRef) { + return null; + } + const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`; + return this.#pagesRefCache.get(refStr) || null; + } + isPageVisible(pageNumber) { + return this.pdfViewer.isPageVisible(pageNumber); + } + isPageCached(pageNumber) { + return this.pdfViewer.isPageCached(pageNumber); + } + static #isValidExplicitDestination(dest) { + if (!Array.isArray(dest)) { + return false; + } + const destLength = dest.length; + if (destLength < 2) { + return false; + } + const page = dest[0]; + if (!(typeof page === "object" && Number.isInteger(page.num) && Number.isInteger(page.gen)) && !(Number.isInteger(page) && page >= 0)) { + return false; + } + const zoom = dest[1]; + if (!(typeof zoom === "object" && typeof zoom.name === "string")) { + return false; + } + let allowNull = true; + switch (zoom.name) { + case "XYZ": + if (destLength !== 5) { + return false; + } + break; + case "Fit": + case "FitB": + return destLength === 2; + case "FitH": + case "FitBH": + case "FitV": + case "FitBV": + if (destLength !== 3) { + return false; + } + break; + case "FitR": + if (destLength !== 6) { + return false; + } + allowNull = false; + break; + default: + return false; + } + for (let i = 2; i < destLength; i++) { + const param = dest[i]; + if (!(typeof param === "number" || allowNull && param === null)) { + return false; + } + } + return true; + } +} +exports.PDFLinkService = PDFLinkService; +class SimpleLinkService { + constructor() { + this.externalLinkEnabled = true; + } + get pagesCount() { + return 0; + } + get page() { + return 0; + } + set page(value) {} + get rotation() { + return 0; + } + set rotation(value) {} + get isInPresentationMode() { + return false; + } + async goToDestination(dest) {} + goToPage(val) {} + addLinkAttributes(link, url, newWindow = false) { + addLinkAttributes(link, { + url, + enabled: this.externalLinkEnabled + }); + } + getDestinationHash(dest) { + return "#"; + } + getAnchorUrl(hash) { + return "#"; + } + setHash(hash) {} + executeNamedAction(action) {} + executeSetOCGState(action) {} + cachePageRef(pageNum, pageRef) {} + isPageVisible(pageNumber) { + return true; + } + isPageCached(pageNumber) { + return true; + } +} +exports.SimpleLinkService = SimpleLinkService; + +/***/ }), +/* 8 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationEditorParams = void 0; +var _pdfjsLib = __webpack_require__(4); +class AnnotationEditorParams { + constructor(options, eventBus) { + this.eventBus = eventBus; + this.#bindListeners(options); + } + #bindListeners({ + editorFreeTextFontSize, + editorFreeTextColor, + editorInkColor, + editorInkThickness, + editorInkOpacity + }) { + editorFreeTextFontSize.addEventListener("input", evt => { + this.eventBus.dispatch("switchannotationeditorparams", { + source: this, + type: _pdfjsLib.AnnotationEditorParamsType.FREETEXT_SIZE, + value: editorFreeTextFontSize.valueAsNumber + }); + }); + editorFreeTextColor.addEventListener("input", evt => { + this.eventBus.dispatch("switchannotationeditorparams", { + source: this, + type: _pdfjsLib.AnnotationEditorParamsType.FREETEXT_COLOR, + value: editorFreeTextColor.value + }); + }); + editorInkColor.addEventListener("input", evt => { + this.eventBus.dispatch("switchannotationeditorparams", { + source: this, + type: _pdfjsLib.AnnotationEditorParamsType.INK_COLOR, + value: editorInkColor.value + }); + }); + editorInkThickness.addEventListener("input", evt => { + this.eventBus.dispatch("switchannotationeditorparams", { + source: this, + type: _pdfjsLib.AnnotationEditorParamsType.INK_THICKNESS, + value: editorInkThickness.valueAsNumber + }); + }); + editorInkOpacity.addEventListener("input", evt => { + this.eventBus.dispatch("switchannotationeditorparams", { + source: this, + type: _pdfjsLib.AnnotationEditorParamsType.INK_OPACITY, + value: editorInkOpacity.valueAsNumber + }); + }); + this.eventBus._on("annotationeditorparamschanged", evt => { + for (const [type, value] of evt.details) { + switch (type) { + case _pdfjsLib.AnnotationEditorParamsType.FREETEXT_SIZE: + editorFreeTextFontSize.value = value; + break; + case _pdfjsLib.AnnotationEditorParamsType.FREETEXT_COLOR: + editorFreeTextColor.value = value; + break; + case _pdfjsLib.AnnotationEditorParamsType.INK_COLOR: + editorInkColor.value = value; + break; + case _pdfjsLib.AnnotationEditorParamsType.INK_THICKNESS: + editorInkThickness.value = value; + break; + case _pdfjsLib.AnnotationEditorParamsType.INK_OPACITY: + editorInkOpacity.value = value; + break; + } + } + }); + } +} +exports.AnnotationEditorParams = AnnotationEditorParams; + +/***/ }), +/* 9 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.OverlayManager = void 0; +class OverlayManager { + #overlays = new WeakMap(); + #active = null; + get active() { + return this.#active; + } + async register(dialog, canForceClose = false) { + if (typeof dialog !== "object") { + throw new Error("Not enough parameters."); + } else if (this.#overlays.has(dialog)) { + throw new Error("The overlay is already registered."); + } + this.#overlays.set(dialog, { + canForceClose + }); + dialog.addEventListener("cancel", evt => { + this.#active = null; + }); + } + async unregister(dialog) { + if (!this.#overlays.has(dialog)) { + throw new Error("The overlay does not exist."); + } else if (this.#active === dialog) { + throw new Error("The overlay cannot be removed while it is active."); + } + this.#overlays.delete(dialog); + } + async open(dialog) { + if (!this.#overlays.has(dialog)) { + throw new Error("The overlay does not exist."); + } else if (this.#active) { + if (this.#active === dialog) { + throw new Error("The overlay is already active."); + } else if (this.#overlays.get(dialog).canForceClose) { + await this.close(); + } else { + throw new Error("Another overlay is currently active."); + } + } + this.#active = dialog; + dialog.showModal(); + } + async close(dialog = this.#active) { + if (!this.#overlays.has(dialog)) { + throw new Error("The overlay does not exist."); + } else if (!this.#active) { + throw new Error("The overlay is currently not active."); + } else if (this.#active !== dialog) { + throw new Error("Another overlay is currently active."); + } + dialog.close(); + this.#active = null; + } +} +exports.OverlayManager = OverlayManager; + +/***/ }), +/* 10 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PasswordPrompt = void 0; +var _pdfjsLib = __webpack_require__(4); +class PasswordPrompt { + #activeCapability = null; + #updateCallback = null; + #reason = null; + constructor(options, overlayManager, l10n, isViewerEmbedded = false) { + this.dialog = options.dialog; + this.label = options.label; + this.input = options.input; + this.submitButton = options.submitButton; + this.cancelButton = options.cancelButton; + this.overlayManager = overlayManager; + this.l10n = l10n; + this._isViewerEmbedded = isViewerEmbedded; + this.submitButton.addEventListener("click", this.#verify.bind(this)); + this.cancelButton.addEventListener("click", this.close.bind(this)); + this.input.addEventListener("keydown", e => { + if (e.keyCode === 13) { + this.#verify(); + } + }); + this.overlayManager.register(this.dialog, true); + this.dialog.addEventListener("close", this.#cancel.bind(this)); + } + async open() { + if (this.#activeCapability) { + await this.#activeCapability.promise; + } + this.#activeCapability = (0, _pdfjsLib.createPromiseCapability)(); + try { + await this.overlayManager.open(this.dialog); + } catch (ex) { + this.#activeCapability = null; + throw ex; + } + const passwordIncorrect = this.#reason === _pdfjsLib.PasswordResponses.INCORRECT_PASSWORD; + if (!this._isViewerEmbedded || passwordIncorrect) { + this.input.focus(); + } + this.label.textContent = await this.l10n.get(`password_${passwordIncorrect ? "invalid" : "label"}`); + } + async close() { + if (this.overlayManager.active === this.dialog) { + this.overlayManager.close(this.dialog); + } + } + #verify() { + const password = this.input.value; + if (password?.length > 0) { + this.#invokeCallback(password); + } + } + #cancel() { + this.#invokeCallback(new Error("PasswordPrompt cancelled.")); + this.#activeCapability.resolve(); + } + #invokeCallback(password) { + if (!this.#updateCallback) { + return; + } + this.close(); + this.input.value = ""; + this.#updateCallback(password); + this.#updateCallback = null; + } + async setUpdateCallback(updateCallback, reason) { + if (this.#activeCapability) { + await this.#activeCapability.promise; + } + this.#updateCallback = updateCallback; + this.#reason = reason; + } +} +exports.PasswordPrompt = PasswordPrompt; + +/***/ }), +/* 11 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFAttachmentViewer = void 0; +var _pdfjsLib = __webpack_require__(4); +var _base_tree_viewer = __webpack_require__(12); +var _event_utils = __webpack_require__(6); +class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer { + constructor(options) { + super(options); + this.downloadManager = options.downloadManager; + this.eventBus._on("fileattachmentannotation", this.#appendAttachment.bind(this)); + } + reset(keepRenderedCapability = false) { + super.reset(); + this._attachments = null; + if (!keepRenderedCapability) { + this._renderedCapability = (0, _pdfjsLib.createPromiseCapability)(); + } + this._pendingDispatchEvent = false; + } + async _dispatchEvent(attachmentsCount) { + this._renderedCapability.resolve(); + if (attachmentsCount === 0 && !this._pendingDispatchEvent) { + this._pendingDispatchEvent = true; + await (0, _event_utils.waitOnEventOrTimeout)({ + target: this.eventBus, + name: "annotationlayerrendered", + delay: 1000 + }); + if (!this._pendingDispatchEvent) { + return; + } + } + this._pendingDispatchEvent = false; + this.eventBus.dispatch("attachmentsloaded", { + source: this, + attachmentsCount + }); + } + _bindLink(element, { + content, + filename + }) { + element.onclick = () => { + this.downloadManager.openOrDownloadData(element, content, filename); + return false; + }; + } + render({ + attachments, + keepRenderedCapability = false + }) { + if (this._attachments) { + this.reset(keepRenderedCapability); + } + this._attachments = attachments || null; + if (!attachments) { + this._dispatchEvent(0); + return; + } + const names = Object.keys(attachments).sort(function (a, b) { + return a.toLowerCase().localeCompare(b.toLowerCase()); + }); + const fragment = document.createDocumentFragment(); + let attachmentsCount = 0; + for (const name of names) { + const item = attachments[name]; + const content = item.content, + filename = (0, _pdfjsLib.getFilenameFromUrl)(item.filename, true); + const div = document.createElement("div"); + div.className = "treeItem"; + const element = document.createElement("a"); + this._bindLink(element, { + content, + filename + }); + element.textContent = this._normalizeTextContent(filename); + div.append(element); + fragment.append(div); + attachmentsCount++; + } + this._finishRendering(fragment, attachmentsCount); + } + #appendAttachment({ + filename, + content + }) { + const renderedPromise = this._renderedCapability.promise; + renderedPromise.then(() => { + if (renderedPromise !== this._renderedCapability.promise) { + return; + } + const attachments = this._attachments || Object.create(null); + for (const name in attachments) { + if (filename === name) { + return; + } + } + attachments[filename] = { + filename, + content + }; + this.render({ + attachments, + keepRenderedCapability: true + }); + }); + } +} +exports.PDFAttachmentViewer = PDFAttachmentViewer; + +/***/ }), +/* 12 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.BaseTreeViewer = void 0; +var _ui_utils = __webpack_require__(3); +const TREEITEM_OFFSET_TOP = -100; +const TREEITEM_SELECTED_CLASS = "selected"; +class BaseTreeViewer { + constructor(options) { + if (this.constructor === BaseTreeViewer) { + throw new Error("Cannot initialize BaseTreeViewer."); + } + this.container = options.container; + this.eventBus = options.eventBus; + this.reset(); + } + reset() { + this._pdfDocument = null; + this._lastToggleIsShow = true; + this._currentTreeItem = null; + this.container.textContent = ""; + this.container.classList.remove("treeWithDeepNesting"); + } + _dispatchEvent(count) { + throw new Error("Not implemented: _dispatchEvent"); + } + _bindLink(element, params) { + throw new Error("Not implemented: _bindLink"); + } + _normalizeTextContent(str) { + return (0, _ui_utils.removeNullCharacters)(str, true) || "\u2013"; + } + _addToggleButton(div, hidden = false) { + const toggler = document.createElement("div"); + toggler.className = "treeItemToggler"; + if (hidden) { + toggler.classList.add("treeItemsHidden"); + } + toggler.onclick = evt => { + evt.stopPropagation(); + toggler.classList.toggle("treeItemsHidden"); + if (evt.shiftKey) { + const shouldShowAll = !toggler.classList.contains("treeItemsHidden"); + this._toggleTreeItem(div, shouldShowAll); + } + }; + div.prepend(toggler); + } + _toggleTreeItem(root, show = false) { + this._lastToggleIsShow = show; + for (const toggler of root.querySelectorAll(".treeItemToggler")) { + toggler.classList.toggle("treeItemsHidden", !show); + } + } + _toggleAllTreeItems() { + this._toggleTreeItem(this.container, !this._lastToggleIsShow); + } + _finishRendering(fragment, count, hasAnyNesting = false) { + if (hasAnyNesting) { + this.container.classList.add("treeWithDeepNesting"); + this._lastToggleIsShow = !fragment.querySelector(".treeItemsHidden"); + } + this.container.append(fragment); + this._dispatchEvent(count); + } + render(params) { + throw new Error("Not implemented: render"); + } + _updateCurrentTreeItem(treeItem = null) { + if (this._currentTreeItem) { + this._currentTreeItem.classList.remove(TREEITEM_SELECTED_CLASS); + this._currentTreeItem = null; + } + if (treeItem) { + treeItem.classList.add(TREEITEM_SELECTED_CLASS); + this._currentTreeItem = treeItem; + } + } + _scrollToCurrentTreeItem(treeItem) { + if (!treeItem) { + return; + } + let currentNode = treeItem.parentNode; + while (currentNode && currentNode !== this.container) { + if (currentNode.classList.contains("treeItem")) { + const toggler = currentNode.firstElementChild; + toggler?.classList.remove("treeItemsHidden"); + } + currentNode = currentNode.parentNode; + } + this._updateCurrentTreeItem(treeItem); + this.container.scrollTo(treeItem.offsetLeft, treeItem.offsetTop + TREEITEM_OFFSET_TOP); + } +} +exports.BaseTreeViewer = BaseTreeViewer; + +/***/ }), +/* 13 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFCursorTools = void 0; +var _ui_utils = __webpack_require__(3); +var _pdfjsLib = __webpack_require__(4); +var _grab_to_pan = __webpack_require__(14); +class PDFCursorTools { + constructor({ + container, + eventBus, + cursorToolOnLoad = _ui_utils.CursorTool.SELECT + }) { + this.container = container; + this.eventBus = eventBus; + this.active = _ui_utils.CursorTool.SELECT; + this.previouslyActive = null; + this.handTool = new _grab_to_pan.GrabToPan({ + element: this.container + }); + this.#addEventListeners(); + Promise.resolve().then(() => { + this.switchTool(cursorToolOnLoad); + }); + } + get activeTool() { + return this.active; + } + switchTool(tool) { + if (this.previouslyActive !== null) { + return; + } + if (tool === this.active) { + return; + } + const disableActiveTool = () => { + switch (this.active) { + case _ui_utils.CursorTool.SELECT: + break; + case _ui_utils.CursorTool.HAND: + this.handTool.deactivate(); + break; + case _ui_utils.CursorTool.ZOOM: + } + }; + switch (tool) { + case _ui_utils.CursorTool.SELECT: + disableActiveTool(); + break; + case _ui_utils.CursorTool.HAND: + disableActiveTool(); + this.handTool.activate(); + break; + case _ui_utils.CursorTool.ZOOM: + default: + console.error(`switchTool: "${tool}" is an unsupported value.`); + return; + } + this.active = tool; + this.#dispatchEvent(); + } + #dispatchEvent() { + this.eventBus.dispatch("cursortoolchanged", { + source: this, + tool: this.active + }); + } + #addEventListeners() { + this.eventBus._on("switchcursortool", evt => { + this.switchTool(evt.tool); + }); + let annotationEditorMode = _pdfjsLib.AnnotationEditorType.NONE, + presentationModeState = _ui_utils.PresentationModeState.NORMAL; + const disableActive = () => { + const previouslyActive = this.active; + this.switchTool(_ui_utils.CursorTool.SELECT); + this.previouslyActive ??= previouslyActive; + }; + const enableActive = () => { + const previouslyActive = this.previouslyActive; + if (previouslyActive !== null && annotationEditorMode === _pdfjsLib.AnnotationEditorType.NONE && presentationModeState === _ui_utils.PresentationModeState.NORMAL) { + this.previouslyActive = null; + this.switchTool(previouslyActive); + } + }; + this.eventBus._on("secondarytoolbarreset", evt => { + if (this.previouslyActive !== null) { + annotationEditorMode = _pdfjsLib.AnnotationEditorType.NONE; + presentationModeState = _ui_utils.PresentationModeState.NORMAL; + enableActive(); + } + }); + this.eventBus._on("annotationeditormodechanged", ({ + mode + }) => { + annotationEditorMode = mode; + if (mode === _pdfjsLib.AnnotationEditorType.NONE) { + enableActive(); + } else { + disableActive(); + } + }); + this.eventBus._on("presentationmodechanged", ({ + state + }) => { + presentationModeState = state; + if (state === _ui_utils.PresentationModeState.NORMAL) { + enableActive(); + } else if (state === _ui_utils.PresentationModeState.FULLSCREEN) { + disableActive(); + } + }); + } +} +exports.PDFCursorTools = PDFCursorTools; + +/***/ }), +/* 14 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GrabToPan = void 0; +const CSS_CLASS_GRAB = "grab-to-pan-grab"; +class GrabToPan { + constructor(options) { + this.element = options.element; + this.document = options.element.ownerDocument; + if (typeof options.ignoreTarget === "function") { + this.ignoreTarget = options.ignoreTarget; + } + this.onActiveChanged = options.onActiveChanged; + this.activate = this.activate.bind(this); + this.deactivate = this.deactivate.bind(this); + this.toggle = this.toggle.bind(this); + this._onMouseDown = this.#onMouseDown.bind(this); + this._onMouseMove = this.#onMouseMove.bind(this); + this._endPan = this.#endPan.bind(this); + const overlay = this.overlay = document.createElement("div"); + overlay.className = "grab-to-pan-grabbing"; + } + activate() { + if (!this.active) { + this.active = true; + this.element.addEventListener("mousedown", this._onMouseDown, true); + this.element.classList.add(CSS_CLASS_GRAB); + this.onActiveChanged?.(true); + } + } + deactivate() { + if (this.active) { + this.active = false; + this.element.removeEventListener("mousedown", this._onMouseDown, true); + this._endPan(); + this.element.classList.remove(CSS_CLASS_GRAB); + this.onActiveChanged?.(false); + } + } + toggle() { + if (this.active) { + this.deactivate(); + } else { + this.activate(); + } + } + ignoreTarget(node) { + return node.matches("a[href], a[href] *, input, textarea, button, button *, select, option"); + } + #onMouseDown(event) { + if (event.button !== 0 || this.ignoreTarget(event.target)) { + return; + } + if (event.originalTarget) { + try { + event.originalTarget.tagName; + } catch (e) { + return; + } + } + this.scrollLeftStart = this.element.scrollLeft; + this.scrollTopStart = this.element.scrollTop; + this.clientXStart = event.clientX; + this.clientYStart = event.clientY; + this.document.addEventListener("mousemove", this._onMouseMove, true); + this.document.addEventListener("mouseup", this._endPan, true); + this.element.addEventListener("scroll", this._endPan, true); + event.preventDefault(); + event.stopPropagation(); + const focusedElement = document.activeElement; + if (focusedElement && !focusedElement.contains(event.target)) { + focusedElement.blur(); + } + } + #onMouseMove(event) { + this.element.removeEventListener("scroll", this._endPan, true); + if (!(event.buttons & 1)) { + this._endPan(); + return; + } + const xDiff = event.clientX - this.clientXStart; + const yDiff = event.clientY - this.clientYStart; + const scrollTop = this.scrollTopStart - yDiff; + const scrollLeft = this.scrollLeftStart - xDiff; + if (this.element.scrollTo) { + this.element.scrollTo({ + top: scrollTop, + left: scrollLeft, + behavior: "instant" + }); + } else { + this.element.scrollTop = scrollTop; + this.element.scrollLeft = scrollLeft; + } + if (!this.overlay.parentNode) { + document.body.append(this.overlay); + } + } + #endPan() { + this.element.removeEventListener("scroll", this._endPan, true); + this.document.removeEventListener("mousemove", this._onMouseMove, true); + this.document.removeEventListener("mouseup", this._endPan, true); + this.overlay.remove(); + } +} +exports.GrabToPan = GrabToPan; + +/***/ }), +/* 15 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFDocumentProperties = void 0; +var _pdfjsLib = __webpack_require__(4); +var _ui_utils = __webpack_require__(3); +const DEFAULT_FIELD_CONTENT = "-"; +const NON_METRIC_LOCALES = ["en-us", "en-lr", "my"]; +const US_PAGE_NAMES = { + "8.5x11": "Letter", + "8.5x14": "Legal" +}; +const METRIC_PAGE_NAMES = { + "297x420": "A3", + "210x297": "A4" +}; +function getPageName(size, isPortrait, pageNames) { + const width = isPortrait ? size.width : size.height; + const height = isPortrait ? size.height : size.width; + return pageNames[`${width}x${height}`]; +} +class PDFDocumentProperties { + #fieldData = null; + constructor({ + dialog, + fields, + closeButton + }, overlayManager, eventBus, l10n, fileNameLookup) { + this.dialog = dialog; + this.fields = fields; + this.overlayManager = overlayManager; + this.l10n = l10n; + this._fileNameLookup = fileNameLookup; + this.#reset(); + closeButton.addEventListener("click", this.close.bind(this)); + this.overlayManager.register(this.dialog); + eventBus._on("pagechanging", evt => { + this._currentPageNumber = evt.pageNumber; + }); + eventBus._on("rotationchanging", evt => { + this._pagesRotation = evt.pagesRotation; + }); + this._isNonMetricLocale = true; + l10n.getLanguage().then(locale => { + this._isNonMetricLocale = NON_METRIC_LOCALES.includes(locale); + }); + } + async open() { + await Promise.all([this.overlayManager.open(this.dialog), this._dataAvailableCapability.promise]); + const currentPageNumber = this._currentPageNumber; + const pagesRotation = this._pagesRotation; + if (this.#fieldData && currentPageNumber === this.#fieldData._currentPageNumber && pagesRotation === this.#fieldData._pagesRotation) { + this.#updateUI(); + return; + } + const { + info, + contentLength + } = await this.pdfDocument.getMetadata(); + const [fileName, fileSize, creationDate, modificationDate, pageSize, isLinearized] = await Promise.all([this._fileNameLookup(), this.#parseFileSize(contentLength), this.#parseDate(info.CreationDate), this.#parseDate(info.ModDate), this.pdfDocument.getPage(currentPageNumber).then(pdfPage => { + return this.#parsePageSize((0, _ui_utils.getPageSizeInches)(pdfPage), pagesRotation); + }), this.#parseLinearization(info.IsLinearized)]); + this.#fieldData = Object.freeze({ + fileName, + fileSize, + title: info.Title, + author: info.Author, + subject: info.Subject, + keywords: info.Keywords, + creationDate, + modificationDate, + creator: info.Creator, + producer: info.Producer, + version: info.PDFFormatVersion, + pageCount: this.pdfDocument.numPages, + pageSize, + linearized: isLinearized, + _currentPageNumber: currentPageNumber, + _pagesRotation: pagesRotation + }); + this.#updateUI(); + const { + length + } = await this.pdfDocument.getDownloadInfo(); + if (contentLength === length) { + return; + } + const data = Object.assign(Object.create(null), this.#fieldData); + data.fileSize = await this.#parseFileSize(length); + this.#fieldData = Object.freeze(data); + this.#updateUI(); + } + async close() { + this.overlayManager.close(this.dialog); + } + setDocument(pdfDocument) { + if (this.pdfDocument) { + this.#reset(); + this.#updateUI(true); + } + if (!pdfDocument) { + return; + } + this.pdfDocument = pdfDocument; + this._dataAvailableCapability.resolve(); + } + #reset() { + this.pdfDocument = null; + this.#fieldData = null; + this._dataAvailableCapability = (0, _pdfjsLib.createPromiseCapability)(); + this._currentPageNumber = 1; + this._pagesRotation = 0; + } + #updateUI(reset = false) { + if (reset || !this.#fieldData) { + for (const id in this.fields) { + this.fields[id].textContent = DEFAULT_FIELD_CONTENT; + } + return; + } + if (this.overlayManager.active !== this.dialog) { + return; + } + for (const id in this.fields) { + const content = this.#fieldData[id]; + this.fields[id].textContent = content || content === 0 ? content : DEFAULT_FIELD_CONTENT; + } + } + async #parseFileSize(fileSize = 0) { + const kb = fileSize / 1024, + mb = kb / 1024; + if (!kb) { + return undefined; + } + return this.l10n.get(`document_properties_${mb >= 1 ? "mb" : "kb"}`, { + size_mb: mb >= 1 && (+mb.toPrecision(3)).toLocaleString(), + size_kb: mb < 1 && (+kb.toPrecision(3)).toLocaleString(), + size_b: fileSize.toLocaleString() + }); + } + async #parsePageSize(pageSizeInches, pagesRotation) { + if (!pageSizeInches) { + return undefined; + } + if (pagesRotation % 180 !== 0) { + pageSizeInches = { + width: pageSizeInches.height, + height: pageSizeInches.width + }; + } + const isPortrait = (0, _ui_utils.isPortraitOrientation)(pageSizeInches); + let sizeInches = { + width: Math.round(pageSizeInches.width * 100) / 100, + height: Math.round(pageSizeInches.height * 100) / 100 + }; + let sizeMillimeters = { + width: Math.round(pageSizeInches.width * 25.4 * 10) / 10, + height: Math.round(pageSizeInches.height * 25.4 * 10) / 10 + }; + let rawName = getPageName(sizeInches, isPortrait, US_PAGE_NAMES) || getPageName(sizeMillimeters, isPortrait, METRIC_PAGE_NAMES); + if (!rawName && !(Number.isInteger(sizeMillimeters.width) && Number.isInteger(sizeMillimeters.height))) { + const exactMillimeters = { + width: pageSizeInches.width * 25.4, + height: pageSizeInches.height * 25.4 + }; + const intMillimeters = { + width: Math.round(sizeMillimeters.width), + height: Math.round(sizeMillimeters.height) + }; + if (Math.abs(exactMillimeters.width - intMillimeters.width) < 0.1 && Math.abs(exactMillimeters.height - intMillimeters.height) < 0.1) { + rawName = getPageName(intMillimeters, isPortrait, METRIC_PAGE_NAMES); + if (rawName) { + sizeInches = { + width: Math.round(intMillimeters.width / 25.4 * 100) / 100, + height: Math.round(intMillimeters.height / 25.4 * 100) / 100 + }; + sizeMillimeters = intMillimeters; + } + } + } + const [{ + width, + height + }, unit, name, orientation] = await Promise.all([this._isNonMetricLocale ? sizeInches : sizeMillimeters, this.l10n.get(`document_properties_page_size_unit_${this._isNonMetricLocale ? "inches" : "millimeters"}`), rawName && this.l10n.get(`document_properties_page_size_name_${rawName.toLowerCase()}`), this.l10n.get(`document_properties_page_size_orientation_${isPortrait ? "portrait" : "landscape"}`)]); + return this.l10n.get(`document_properties_page_size_dimension_${name ? "name_" : ""}string`, { + width: width.toLocaleString(), + height: height.toLocaleString(), + unit, + name, + orientation + }); + } + async #parseDate(inputDate) { + const dateObject = _pdfjsLib.PDFDateString.toDateObject(inputDate); + if (!dateObject) { + return undefined; + } + return this.l10n.get("document_properties_date_string", { + date: dateObject.toLocaleDateString(), + time: dateObject.toLocaleTimeString() + }); + } + #parseLinearization(isLinearized) { + return this.l10n.get(`document_properties_linearized_${isLinearized ? "yes" : "no"}`); + } +} +exports.PDFDocumentProperties = PDFDocumentProperties; + +/***/ }), +/* 16 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFFindBar = void 0; +var _pdf_find_controller = __webpack_require__(17); +const MATCHES_COUNT_LIMIT = 1000; +class PDFFindBar { + constructor(options, eventBus, l10n) { + this.opened = false; + this.bar = options.bar; + this.toggleButton = options.toggleButton; + this.findField = options.findField; + this.highlightAll = options.highlightAllCheckbox; + this.caseSensitive = options.caseSensitiveCheckbox; + this.matchDiacritics = options.matchDiacriticsCheckbox; + this.entireWord = options.entireWordCheckbox; + this.findMsg = options.findMsg; + this.findResultsCount = options.findResultsCount; + this.findPreviousButton = options.findPreviousButton; + this.findNextButton = options.findNextButton; + this.eventBus = eventBus; + this.l10n = l10n; + this.toggleButton.addEventListener("click", () => { + this.toggle(); + }); + this.findField.addEventListener("input", () => { + this.dispatchEvent(""); + }); + this.bar.addEventListener("keydown", e => { + switch (e.keyCode) { + case 13: + if (e.target === this.findField) { + this.dispatchEvent("again", e.shiftKey); + } + break; + case 27: + this.close(); + break; + } + }); + this.findPreviousButton.addEventListener("click", () => { + this.dispatchEvent("again", true); + }); + this.findNextButton.addEventListener("click", () => { + this.dispatchEvent("again", false); + }); + this.highlightAll.addEventListener("click", () => { + this.dispatchEvent("highlightallchange"); + }); + this.caseSensitive.addEventListener("click", () => { + this.dispatchEvent("casesensitivitychange"); + }); + this.entireWord.addEventListener("click", () => { + this.dispatchEvent("entirewordchange"); + }); + this.matchDiacritics.addEventListener("click", () => { + this.dispatchEvent("diacriticmatchingchange"); + }); + this.eventBus._on("resize", this.#adjustWidth.bind(this)); + } + reset() { + this.updateUIState(); + } + dispatchEvent(type, findPrev = false) { + this.eventBus.dispatch("find", { + source: this, + type, + query: this.findField.value, + phraseSearch: true, + caseSensitive: this.caseSensitive.checked, + entireWord: this.entireWord.checked, + highlightAll: this.highlightAll.checked, + findPrevious: findPrev, + matchDiacritics: this.matchDiacritics.checked + }); + } + updateUIState(state, previous, matchesCount) { + let findMsg = Promise.resolve(""); + let status = ""; + switch (state) { + case _pdf_find_controller.FindState.FOUND: + break; + case _pdf_find_controller.FindState.PENDING: + status = "pending"; + break; + case _pdf_find_controller.FindState.NOT_FOUND: + findMsg = this.l10n.get("find_not_found"); + status = "notFound"; + break; + case _pdf_find_controller.FindState.WRAPPED: + findMsg = this.l10n.get(`find_reached_${previous ? "top" : "bottom"}`); + break; + } + this.findField.setAttribute("data-status", status); + this.findField.setAttribute("aria-invalid", state === _pdf_find_controller.FindState.NOT_FOUND); + findMsg.then(msg => { + this.findMsg.textContent = msg; + this.#adjustWidth(); + }); + this.updateResultsCount(matchesCount); + } + updateResultsCount({ + current = 0, + total = 0 + } = {}) { + const limit = MATCHES_COUNT_LIMIT; + let matchCountMsg = Promise.resolve(""); + if (total > 0) { + if (total > limit) { + let key = "find_match_count_limit"; + matchCountMsg = this.l10n.get(key, { + limit + }); + } else { + let key = "find_match_count"; + matchCountMsg = this.l10n.get(key, { + current, + total + }); + } + } + matchCountMsg.then(msg => { + this.findResultsCount.textContent = msg; + this.#adjustWidth(); + }); + } + open() { + if (!this.opened) { + this.opened = true; + this.toggleButton.classList.add("toggled"); + this.toggleButton.setAttribute("aria-expanded", "true"); + this.bar.classList.remove("hidden"); + } + this.findField.select(); + this.findField.focus(); + this.#adjustWidth(); + } + close() { + if (!this.opened) { + return; + } + this.opened = false; + this.toggleButton.classList.remove("toggled"); + this.toggleButton.setAttribute("aria-expanded", "false"); + this.bar.classList.add("hidden"); + this.eventBus.dispatch("findbarclose", { + source: this + }); + } + toggle() { + if (this.opened) { + this.close(); + } else { + this.open(); + } + } + #adjustWidth() { + if (!this.opened) { + return; + } + this.bar.classList.remove("wrapContainers"); + const findbarHeight = this.bar.clientHeight; + const inputContainerHeight = this.bar.firstElementChild.clientHeight; + if (findbarHeight > inputContainerHeight) { + this.bar.classList.add("wrapContainers"); + } + } +} +exports.PDFFindBar = PDFFindBar; + +/***/ }), +/* 17 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFFindController = exports.FindState = void 0; +var _ui_utils = __webpack_require__(3); +var _pdfjsLib = __webpack_require__(4); +var _pdf_find_utils = __webpack_require__(18); +const FindState = { + FOUND: 0, + NOT_FOUND: 1, + WRAPPED: 2, + PENDING: 3 +}; +exports.FindState = FindState; +const FIND_TIMEOUT = 250; +const MATCH_SCROLL_OFFSET_TOP = -50; +const MATCH_SCROLL_OFFSET_LEFT = -400; +const CHARACTERS_TO_NORMALIZE = { + "\u2010": "-", + "\u2018": "'", + "\u2019": "'", + "\u201A": "'", + "\u201B": "'", + "\u201C": '"', + "\u201D": '"', + "\u201E": '"', + "\u201F": '"', + "\u00BC": "1/4", + "\u00BD": "1/2", + "\u00BE": "3/4" +}; +const DIACRITICS_EXCEPTION = new Set([0x3099, 0x309a, 0x094d, 0x09cd, 0x0a4d, 0x0acd, 0x0b4d, 0x0bcd, 0x0c4d, 0x0ccd, 0x0d3b, 0x0d3c, 0x0d4d, 0x0dca, 0x0e3a, 0x0eba, 0x0f84, 0x1039, 0x103a, 0x1714, 0x1734, 0x17d2, 0x1a60, 0x1b44, 0x1baa, 0x1bab, 0x1bf2, 0x1bf3, 0x2d7f, 0xa806, 0xa82c, 0xa8c4, 0xa953, 0xa9c0, 0xaaf6, 0xabed, 0x0c56, 0x0f71, 0x0f72, 0x0f7a, 0x0f7b, 0x0f7c, 0x0f7d, 0x0f80, 0x0f74]); +let DIACRITICS_EXCEPTION_STR; +const DIACRITICS_REG_EXP = /\p{M}+/gu; +const SPECIAL_CHARS_REG_EXP = /([.*+?^${}()|[\]\\])|(\p{P})|(\s+)|(\p{M})|(\p{L})/gu; +const NOT_DIACRITIC_FROM_END_REG_EXP = /([^\p{M}])\p{M}*$/u; +const NOT_DIACRITIC_FROM_START_REG_EXP = /^\p{M}*([^\p{M}])/u; +const SYLLABLES_REG_EXP = /[\uAC00-\uD7AF\uFA6C\uFACF-\uFAD1\uFAD5-\uFAD7]+/g; +const SYLLABLES_LENGTHS = new Map(); +const FIRST_CHAR_SYLLABLES_REG_EXP = "[\\u1100-\\u1112\\ud7a4-\\ud7af\\ud84a\\ud84c\\ud850\\ud854\\ud857\\ud85f]"; +const NFKC_CHARS_TO_NORMALIZE = new Map(); +let noSyllablesRegExp = null; +let withSyllablesRegExp = null; +function normalize(text) { + const syllablePositions = []; + let m; + while ((m = SYLLABLES_REG_EXP.exec(text)) !== null) { + let { + index + } = m; + for (const char of m[0]) { + let len = SYLLABLES_LENGTHS.get(char); + if (!len) { + len = char.normalize("NFD").length; + SYLLABLES_LENGTHS.set(char, len); + } + syllablePositions.push([len, index++]); + } + } + let normalizationRegex; + if (syllablePositions.length === 0 && noSyllablesRegExp) { + normalizationRegex = noSyllablesRegExp; + } else if (syllablePositions.length > 0 && withSyllablesRegExp) { + normalizationRegex = withSyllablesRegExp; + } else { + const replace = Object.keys(CHARACTERS_TO_NORMALIZE).join(""); + const toNormalizeWithNFKC = "\u2460-\u2473" + "\u24b6-\u24ff" + "\u3244-\u32bf" + "\u32d0-\u32fe" + "\uff00-\uffef"; + const CJK = "(?:\\p{Ideographic}|[\u3040-\u30FF])"; + const HKDiacritics = "(?:\u3099|\u309A)"; + const regexp = `([${replace}])|([${toNormalizeWithNFKC}])|(${HKDiacritics}\\n)|(\\p{M}+(?:-\\n)?)|(\\S-\\n)|(${CJK}\\n)|(\\n)`; + if (syllablePositions.length === 0) { + normalizationRegex = noSyllablesRegExp = new RegExp(regexp + "|(\\u0000)", "gum"); + } else { + normalizationRegex = withSyllablesRegExp = new RegExp(regexp + `|(${FIRST_CHAR_SYLLABLES_REG_EXP})`, "gum"); + } + } + const rawDiacriticsPositions = []; + while ((m = DIACRITICS_REG_EXP.exec(text)) !== null) { + rawDiacriticsPositions.push([m[0].length, m.index]); + } + let normalized = text.normalize("NFD"); + const positions = [[0, 0]]; + let rawDiacriticsIndex = 0; + let syllableIndex = 0; + let shift = 0; + let shiftOrigin = 0; + let eol = 0; + let hasDiacritics = false; + normalized = normalized.replace(normalizationRegex, (match, p1, p2, p3, p4, p5, p6, p7, p8, i) => { + i -= shiftOrigin; + if (p1) { + const replacement = CHARACTERS_TO_NORMALIZE[p1]; + const jj = replacement.length; + for (let j = 1; j < jj; j++) { + positions.push([i - shift + j, shift - j]); + } + shift -= jj - 1; + return replacement; + } + if (p2) { + let replacement = NFKC_CHARS_TO_NORMALIZE.get(p2); + if (!replacement) { + replacement = p2.normalize("NFKC"); + NFKC_CHARS_TO_NORMALIZE.set(p2, replacement); + } + const jj = replacement.length; + for (let j = 1; j < jj; j++) { + positions.push([i - shift + j, shift - j]); + } + shift -= jj - 1; + return replacement; + } + if (p3) { + hasDiacritics = true; + if (i + eol === rawDiacriticsPositions[rawDiacriticsIndex]?.[1]) { + ++rawDiacriticsIndex; + } else { + positions.push([i - 1 - shift + 1, shift - 1]); + shift -= 1; + shiftOrigin += 1; + } + positions.push([i - shift + 1, shift]); + shiftOrigin += 1; + eol += 1; + return p3.charAt(0); + } + if (p4) { + const hasTrailingDashEOL = p4.endsWith("\n"); + const len = hasTrailingDashEOL ? p4.length - 2 : p4.length; + hasDiacritics = true; + let jj = len; + if (i + eol === rawDiacriticsPositions[rawDiacriticsIndex]?.[1]) { + jj -= rawDiacriticsPositions[rawDiacriticsIndex][0]; + ++rawDiacriticsIndex; + } + for (let j = 1; j <= jj; j++) { + positions.push([i - 1 - shift + j, shift - j]); + } + shift -= jj; + shiftOrigin += jj; + if (hasTrailingDashEOL) { + i += len - 1; + positions.push([i - shift + 1, 1 + shift]); + shift += 1; + shiftOrigin += 1; + eol += 1; + return p4.slice(0, len); + } + return p4; + } + if (p5) { + positions.push([i - shift + 1, 1 + shift]); + shift += 1; + shiftOrigin += 1; + eol += 1; + return p5.charAt(0); + } + if (p6) { + positions.push([i - shift + 1, shift]); + shiftOrigin += 1; + eol += 1; + return p6.charAt(0); + } + if (p7) { + positions.push([i - shift + 1, shift - 1]); + shift -= 1; + shiftOrigin += 1; + eol += 1; + return " "; + } + if (i + eol === syllablePositions[syllableIndex]?.[1]) { + const newCharLen = syllablePositions[syllableIndex][0] - 1; + ++syllableIndex; + for (let j = 1; j <= newCharLen; j++) { + positions.push([i - (shift - j), shift - j]); + } + shift -= newCharLen; + shiftOrigin += newCharLen; + } + return p8; + }); + positions.push([normalized.length, shift]); + return [normalized, positions, hasDiacritics]; +} +function getOriginalIndex(diffs, pos, len) { + if (!diffs) { + return [pos, len]; + } + const start = pos; + const end = pos + len; + let i = (0, _ui_utils.binarySearchFirstItem)(diffs, x => x[0] >= start); + if (diffs[i][0] > start) { + --i; + } + let j = (0, _ui_utils.binarySearchFirstItem)(diffs, x => x[0] >= end, i); + if (diffs[j][0] > end) { + --j; + } + return [start + diffs[i][1], len + diffs[j][1] - diffs[i][1]]; +} +class PDFFindController { + #updateMatchesCountOnProgress = true; + #visitedPagesCount = 0; + constructor({ + linkService, + eventBus, + updateMatchesCountOnProgress = true + }) { + this._linkService = linkService; + this._eventBus = eventBus; + this.#updateMatchesCountOnProgress = updateMatchesCountOnProgress; + this.#reset(); + eventBus._on("find", this.#onFind.bind(this)); + eventBus._on("findbarclose", this.#onFindBarClose.bind(this)); + } + get highlightMatches() { + return this._highlightMatches; + } + get pageMatches() { + return this._pageMatches; + } + get pageMatchesLength() { + return this._pageMatchesLength; + } + get selected() { + return this._selected; + } + get state() { + return this._state; + } + setDocument(pdfDocument) { + if (this._pdfDocument) { + this.#reset(); + } + if (!pdfDocument) { + return; + } + this._pdfDocument = pdfDocument; + this._firstPageCapability.resolve(); + } + #onFind(state) { + if (!state) { + return; + } + const pdfDocument = this._pdfDocument; + const { + type + } = state; + if (this._state === null || this.#shouldDirtyMatch(state)) { + this._dirtyMatch = true; + } + this._state = state; + if (type !== "highlightallchange") { + this.#updateUIState(FindState.PENDING); + } + this._firstPageCapability.promise.then(() => { + if (!this._pdfDocument || pdfDocument && this._pdfDocument !== pdfDocument) { + return; + } + this.#extractText(); + const findbarClosed = !this._highlightMatches; + const pendingTimeout = !!this._findTimeout; + if (this._findTimeout) { + clearTimeout(this._findTimeout); + this._findTimeout = null; + } + if (!type) { + this._findTimeout = setTimeout(() => { + this.#nextMatch(); + this._findTimeout = null; + }, FIND_TIMEOUT); + } else if (this._dirtyMatch) { + this.#nextMatch(); + } else if (type === "again") { + this.#nextMatch(); + if (findbarClosed && this._state.highlightAll) { + this.#updateAllPages(); + } + } else if (type === "highlightallchange") { + if (pendingTimeout) { + this.#nextMatch(); + } else { + this._highlightMatches = true; + } + this.#updateAllPages(); + } else { + this.#nextMatch(); + } + }); + } + scrollMatchIntoView({ + element = null, + selectedLeft = 0, + pageIndex = -1, + matchIndex = -1 + }) { + if (!this._scrollMatches || !element) { + return; + } else if (matchIndex === -1 || matchIndex !== this._selected.matchIdx) { + return; + } else if (pageIndex === -1 || pageIndex !== this._selected.pageIdx) { + return; + } + this._scrollMatches = false; + const spot = { + top: MATCH_SCROLL_OFFSET_TOP, + left: selectedLeft + MATCH_SCROLL_OFFSET_LEFT + }; + (0, _ui_utils.scrollIntoView)(element, spot, true); + } + #reset() { + this._highlightMatches = false; + this._scrollMatches = false; + this._pdfDocument = null; + this._pageMatches = []; + this._pageMatchesLength = []; + this.#visitedPagesCount = 0; + this._state = null; + this._selected = { + pageIdx: -1, + matchIdx: -1 + }; + this._offset = { + pageIdx: null, + matchIdx: null, + wrapped: false + }; + this._extractTextPromises = []; + this._pageContents = []; + this._pageDiffs = []; + this._hasDiacritics = []; + this._matchesCountTotal = 0; + this._pagesToSearch = null; + this._pendingFindMatches = new Set(); + this._resumePageIdx = null; + this._dirtyMatch = false; + clearTimeout(this._findTimeout); + this._findTimeout = null; + this._firstPageCapability = (0, _pdfjsLib.createPromiseCapability)(); + } + get #query() { + if (this._state.query !== this._rawQuery) { + this._rawQuery = this._state.query; + [this._normalizedQuery] = normalize(this._state.query); + } + return this._normalizedQuery; + } + #shouldDirtyMatch(state) { + if (state.query !== this._state.query) { + return true; + } + switch (state.type) { + case "again": + const pageNumber = this._selected.pageIdx + 1; + const linkService = this._linkService; + if (pageNumber >= 1 && pageNumber <= linkService.pagesCount && pageNumber !== linkService.page && !linkService.isPageVisible(pageNumber)) { + return true; + } + return false; + case "highlightallchange": + return false; + } + return true; + } + #isEntireWord(content, startIdx, length) { + let match = content.slice(0, startIdx).match(NOT_DIACRITIC_FROM_END_REG_EXP); + if (match) { + const first = content.charCodeAt(startIdx); + const limit = match[1].charCodeAt(0); + if ((0, _pdf_find_utils.getCharacterType)(first) === (0, _pdf_find_utils.getCharacterType)(limit)) { + return false; + } + } + match = content.slice(startIdx + length).match(NOT_DIACRITIC_FROM_START_REG_EXP); + if (match) { + const last = content.charCodeAt(startIdx + length - 1); + const limit = match[1].charCodeAt(0); + if ((0, _pdf_find_utils.getCharacterType)(last) === (0, _pdf_find_utils.getCharacterType)(limit)) { + return false; + } + } + return true; + } + #calculateRegExpMatch(query, entireWord, pageIndex, pageContent) { + const matches = this._pageMatches[pageIndex] = []; + const matchesLength = this._pageMatchesLength[pageIndex] = []; + if (!query) { + return; + } + const diffs = this._pageDiffs[pageIndex]; + let match; + while ((match = query.exec(pageContent)) !== null) { + if (entireWord && !this.#isEntireWord(pageContent, match.index, match[0].length)) { + continue; + } + const [matchPos, matchLen] = getOriginalIndex(diffs, match.index, match[0].length); + if (matchLen) { + matches.push(matchPos); + matchesLength.push(matchLen); + } + } + } + #convertToRegExpString(query, hasDiacritics) { + const { + matchDiacritics + } = this._state; + let isUnicode = false; + query = query.replace(SPECIAL_CHARS_REG_EXP, (match, p1, p2, p3, p4, p5) => { + if (p1) { + return `[ ]*\\${p1}[ ]*`; + } + if (p2) { + return `[ ]*${p2}[ ]*`; + } + if (p3) { + return "[ ]+"; + } + if (matchDiacritics) { + return p4 || p5; + } + if (p4) { + return DIACRITICS_EXCEPTION.has(p4.charCodeAt(0)) ? p4 : ""; + } + if (hasDiacritics) { + isUnicode = true; + return `${p5}\\p{M}*`; + } + return p5; + }); + const trailingSpaces = "[ ]*"; + if (query.endsWith(trailingSpaces)) { + query = query.slice(0, query.length - trailingSpaces.length); + } + if (matchDiacritics) { + if (hasDiacritics) { + DIACRITICS_EXCEPTION_STR ||= String.fromCharCode(...DIACRITICS_EXCEPTION); + isUnicode = true; + query = `${query}(?=[${DIACRITICS_EXCEPTION_STR}]|[^\\p{M}]|$)`; + } + } + return [isUnicode, query]; + } + #calculateMatch(pageIndex) { + let query = this.#query; + if (!query) { + return; + } + const { + caseSensitive, + entireWord, + phraseSearch + } = this._state; + const pageContent = this._pageContents[pageIndex]; + const hasDiacritics = this._hasDiacritics[pageIndex]; + let isUnicode = false; + if (phraseSearch) { + [isUnicode, query] = this.#convertToRegExpString(query, hasDiacritics); + } else { + const match = query.match(/\S+/g); + if (match) { + query = match.sort().reverse().map(q => { + const [isUnicodePart, queryPart] = this.#convertToRegExpString(q, hasDiacritics); + isUnicode ||= isUnicodePart; + return `(${queryPart})`; + }).join("|"); + } + } + const flags = `g${isUnicode ? "u" : ""}${caseSensitive ? "" : "i"}`; + query = query ? new RegExp(query, flags) : null; + this.#calculateRegExpMatch(query, entireWord, pageIndex, pageContent); + if (this._state.highlightAll) { + this.#updatePage(pageIndex); + } + if (this._resumePageIdx === pageIndex) { + this._resumePageIdx = null; + this.#nextPageMatch(); + } + const pageMatchesCount = this._pageMatches[pageIndex].length; + this._matchesCountTotal += pageMatchesCount; + if (this.#updateMatchesCountOnProgress) { + if (pageMatchesCount > 0) { + this.#updateUIResultsCount(); + } + } else if (++this.#visitedPagesCount === this._linkService.pagesCount) { + this.#updateUIResultsCount(); + } + } + #extractText() { + if (this._extractTextPromises.length > 0) { + return; + } + let promise = Promise.resolve(); + for (let i = 0, ii = this._linkService.pagesCount; i < ii; i++) { + const extractTextCapability = (0, _pdfjsLib.createPromiseCapability)(); + this._extractTextPromises[i] = extractTextCapability.promise; + promise = promise.then(() => { + return this._pdfDocument.getPage(i + 1).then(pdfPage => { + return pdfPage.getTextContent(); + }).then(textContent => { + const strBuf = []; + for (const textItem of textContent.items) { + strBuf.push(textItem.str); + if (textItem.hasEOL) { + strBuf.push("\n"); + } + } + [this._pageContents[i], this._pageDiffs[i], this._hasDiacritics[i]] = normalize(strBuf.join("")); + extractTextCapability.resolve(); + }, reason => { + console.error(`Unable to get text content for page ${i + 1}`, reason); + this._pageContents[i] = ""; + this._pageDiffs[i] = null; + this._hasDiacritics[i] = false; + extractTextCapability.resolve(); + }); + }); + } + } + #updatePage(index) { + if (this._scrollMatches && this._selected.pageIdx === index) { + this._linkService.page = index + 1; + } + this._eventBus.dispatch("updatetextlayermatches", { + source: this, + pageIndex: index + }); + } + #updateAllPages() { + this._eventBus.dispatch("updatetextlayermatches", { + source: this, + pageIndex: -1 + }); + } + #nextMatch() { + const previous = this._state.findPrevious; + const currentPageIndex = this._linkService.page - 1; + const numPages = this._linkService.pagesCount; + this._highlightMatches = true; + if (this._dirtyMatch) { + this._dirtyMatch = false; + this._selected.pageIdx = this._selected.matchIdx = -1; + this._offset.pageIdx = currentPageIndex; + this._offset.matchIdx = null; + this._offset.wrapped = false; + this._resumePageIdx = null; + this._pageMatches.length = 0; + this._pageMatchesLength.length = 0; + this.#visitedPagesCount = 0; + this._matchesCountTotal = 0; + this.#updateAllPages(); + for (let i = 0; i < numPages; i++) { + if (this._pendingFindMatches.has(i)) { + continue; + } + this._pendingFindMatches.add(i); + this._extractTextPromises[i].then(() => { + this._pendingFindMatches.delete(i); + this.#calculateMatch(i); + }); + } + } + if (!this.#query) { + this.#updateUIState(FindState.FOUND); + return; + } + if (this._resumePageIdx) { + return; + } + const offset = this._offset; + this._pagesToSearch = numPages; + if (offset.matchIdx !== null) { + const numPageMatches = this._pageMatches[offset.pageIdx].length; + if (!previous && offset.matchIdx + 1 < numPageMatches || previous && offset.matchIdx > 0) { + offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1; + this.#updateMatch(true); + return; + } + this.#advanceOffsetPage(previous); + } + this.#nextPageMatch(); + } + #matchesReady(matches) { + const offset = this._offset; + const numMatches = matches.length; + const previous = this._state.findPrevious; + if (numMatches) { + offset.matchIdx = previous ? numMatches - 1 : 0; + this.#updateMatch(true); + return true; + } + this.#advanceOffsetPage(previous); + if (offset.wrapped) { + offset.matchIdx = null; + if (this._pagesToSearch < 0) { + this.#updateMatch(false); + return true; + } + } + return false; + } + #nextPageMatch() { + if (this._resumePageIdx !== null) { + console.error("There can only be one pending page."); + } + let matches = null; + do { + const pageIdx = this._offset.pageIdx; + matches = this._pageMatches[pageIdx]; + if (!matches) { + this._resumePageIdx = pageIdx; + break; + } + } while (!this.#matchesReady(matches)); + } + #advanceOffsetPage(previous) { + const offset = this._offset; + const numPages = this._linkService.pagesCount; + offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1; + offset.matchIdx = null; + this._pagesToSearch--; + if (offset.pageIdx >= numPages || offset.pageIdx < 0) { + offset.pageIdx = previous ? numPages - 1 : 0; + offset.wrapped = true; + } + } + #updateMatch(found = false) { + let state = FindState.NOT_FOUND; + const wrapped = this._offset.wrapped; + this._offset.wrapped = false; + if (found) { + const previousPage = this._selected.pageIdx; + this._selected.pageIdx = this._offset.pageIdx; + this._selected.matchIdx = this._offset.matchIdx; + state = wrapped ? FindState.WRAPPED : FindState.FOUND; + if (previousPage !== -1 && previousPage !== this._selected.pageIdx) { + this.#updatePage(previousPage); + } + } + this.#updateUIState(state, this._state.findPrevious); + if (this._selected.pageIdx !== -1) { + this._scrollMatches = true; + this.#updatePage(this._selected.pageIdx); + } + } + #onFindBarClose(evt) { + const pdfDocument = this._pdfDocument; + this._firstPageCapability.promise.then(() => { + if (!this._pdfDocument || pdfDocument && this._pdfDocument !== pdfDocument) { + return; + } + if (this._findTimeout) { + clearTimeout(this._findTimeout); + this._findTimeout = null; + } + if (this._resumePageIdx) { + this._resumePageIdx = null; + this._dirtyMatch = true; + } + this.#updateUIState(FindState.FOUND); + this._highlightMatches = false; + this.#updateAllPages(); + }); + } + #requestMatchesCount() { + const { + pageIdx, + matchIdx + } = this._selected; + let current = 0, + total = this._matchesCountTotal; + if (matchIdx !== -1) { + for (let i = 0; i < pageIdx; i++) { + current += this._pageMatches[i]?.length || 0; + } + current += matchIdx + 1; + } + if (current < 1 || current > total) { + current = total = 0; + } + return { + current, + total + }; + } + #updateUIResultsCount() { + this._eventBus.dispatch("updatefindmatchescount", { + source: this, + matchesCount: this.#requestMatchesCount() + }); + } + #updateUIState(state, previous = false) { + if (!this.#updateMatchesCountOnProgress && (this.#visitedPagesCount !== this._linkService.pagesCount || state === FindState.PENDING)) { + return; + } + this._eventBus.dispatch("updatefindcontrolstate", { + source: this, + state, + previous, + matchesCount: this.#requestMatchesCount(), + rawQuery: this._state?.query ?? null + }); + } +} +exports.PDFFindController = PDFFindController; + +/***/ }), +/* 18 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.CharacterType = void 0; +exports.getCharacterType = getCharacterType; +const CharacterType = { + SPACE: 0, + ALPHA_LETTER: 1, + PUNCT: 2, + HAN_LETTER: 3, + KATAKANA_LETTER: 4, + HIRAGANA_LETTER: 5, + HALFWIDTH_KATAKANA_LETTER: 6, + THAI_LETTER: 7 +}; +exports.CharacterType = CharacterType; +function isAlphabeticalScript(charCode) { + return charCode < 0x2e80; +} +function isAscii(charCode) { + return (charCode & 0xff80) === 0; +} +function isAsciiAlpha(charCode) { + return charCode >= 0x61 && charCode <= 0x7a || charCode >= 0x41 && charCode <= 0x5a; +} +function isAsciiDigit(charCode) { + return charCode >= 0x30 && charCode <= 0x39; +} +function isAsciiSpace(charCode) { + return charCode === 0x20 || charCode === 0x09 || charCode === 0x0d || charCode === 0x0a; +} +function isHan(charCode) { + return charCode >= 0x3400 && charCode <= 0x9fff || charCode >= 0xf900 && charCode <= 0xfaff; +} +function isKatakana(charCode) { + return charCode >= 0x30a0 && charCode <= 0x30ff; +} +function isHiragana(charCode) { + return charCode >= 0x3040 && charCode <= 0x309f; +} +function isHalfwidthKatakana(charCode) { + return charCode >= 0xff60 && charCode <= 0xff9f; +} +function isThai(charCode) { + return (charCode & 0xff80) === 0x0e00; +} +function getCharacterType(charCode) { + if (isAlphabeticalScript(charCode)) { + if (isAscii(charCode)) { + if (isAsciiSpace(charCode)) { + return CharacterType.SPACE; + } else if (isAsciiAlpha(charCode) || isAsciiDigit(charCode) || charCode === 0x5f) { + return CharacterType.ALPHA_LETTER; + } + return CharacterType.PUNCT; + } else if (isThai(charCode)) { + return CharacterType.THAI_LETTER; + } else if (charCode === 0xa0) { + return CharacterType.SPACE; + } + return CharacterType.ALPHA_LETTER; + } + if (isHan(charCode)) { + return CharacterType.HAN_LETTER; + } else if (isKatakana(charCode)) { + return CharacterType.KATAKANA_LETTER; + } else if (isHiragana(charCode)) { + return CharacterType.HIRAGANA_LETTER; + } else if (isHalfwidthKatakana(charCode)) { + return CharacterType.HALFWIDTH_KATAKANA_LETTER; + } + return CharacterType.ALPHA_LETTER; +} + +/***/ }), +/* 19 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFHistory = void 0; +exports.isDestArraysEqual = isDestArraysEqual; +exports.isDestHashesEqual = isDestHashesEqual; +var _ui_utils = __webpack_require__(3); +var _event_utils = __webpack_require__(6); +const HASH_CHANGE_TIMEOUT = 1000; +const POSITION_UPDATED_THRESHOLD = 50; +const UPDATE_VIEWAREA_TIMEOUT = 1000; +function getCurrentHash() { + return document.location.hash; +} +class PDFHistory { + constructor({ + linkService, + eventBus + }) { + this.linkService = linkService; + this.eventBus = eventBus; + this._initialized = false; + this._fingerprint = ""; + this.reset(); + this._boundEvents = null; + this.eventBus._on("pagesinit", () => { + this._isPagesLoaded = false; + this.eventBus._on("pagesloaded", evt => { + this._isPagesLoaded = !!evt.pagesCount; + }, { + once: true + }); + }); + } + initialize({ + fingerprint, + resetHistory = false, + updateUrl = false + }) { + if (!fingerprint || typeof fingerprint !== "string") { + console.error('PDFHistory.initialize: The "fingerprint" must be a non-empty string.'); + return; + } + if (this._initialized) { + this.reset(); + } + const reInitialized = this._fingerprint !== "" && this._fingerprint !== fingerprint; + this._fingerprint = fingerprint; + this._updateUrl = updateUrl === true; + this._initialized = true; + this._bindEvents(); + const state = window.history.state; + this._popStateInProgress = false; + this._blockHashChange = 0; + this._currentHash = getCurrentHash(); + this._numPositionUpdates = 0; + this._uid = this._maxUid = 0; + this._destination = null; + this._position = null; + if (!this._isValidState(state, true) || resetHistory) { + const { + hash, + page, + rotation + } = this._parseCurrentHash(true); + if (!hash || reInitialized || resetHistory) { + this._pushOrReplaceState(null, true); + return; + } + this._pushOrReplaceState({ + hash, + page, + rotation + }, true); + return; + } + const destination = state.destination; + this._updateInternalState(destination, state.uid, true); + if (destination.rotation !== undefined) { + this._initialRotation = destination.rotation; + } + if (destination.dest) { + this._initialBookmark = JSON.stringify(destination.dest); + this._destination.page = null; + } else if (destination.hash) { + this._initialBookmark = destination.hash; + } else if (destination.page) { + this._initialBookmark = `page=${destination.page}`; + } + } + reset() { + if (this._initialized) { + this._pageHide(); + this._initialized = false; + this._unbindEvents(); + } + if (this._updateViewareaTimeout) { + clearTimeout(this._updateViewareaTimeout); + this._updateViewareaTimeout = null; + } + this._initialBookmark = null; + this._initialRotation = null; + } + push({ + namedDest = null, + explicitDest, + pageNumber + }) { + if (!this._initialized) { + return; + } + if (namedDest && typeof namedDest !== "string") { + console.error("PDFHistory.push: " + `"${namedDest}" is not a valid namedDest parameter.`); + return; + } else if (!Array.isArray(explicitDest)) { + console.error("PDFHistory.push: " + `"${explicitDest}" is not a valid explicitDest parameter.`); + return; + } else if (!this._isValidPage(pageNumber)) { + if (pageNumber !== null || this._destination) { + console.error("PDFHistory.push: " + `"${pageNumber}" is not a valid pageNumber parameter.`); + return; + } + } + const hash = namedDest || JSON.stringify(explicitDest); + if (!hash) { + return; + } + let forceReplace = false; + if (this._destination && (isDestHashesEqual(this._destination.hash, hash) || isDestArraysEqual(this._destination.dest, explicitDest))) { + if (this._destination.page) { + return; + } + forceReplace = true; + } + if (this._popStateInProgress && !forceReplace) { + return; + } + this._pushOrReplaceState({ + dest: explicitDest, + hash, + page: pageNumber, + rotation: this.linkService.rotation + }, forceReplace); + if (!this._popStateInProgress) { + this._popStateInProgress = true; + Promise.resolve().then(() => { + this._popStateInProgress = false; + }); + } + } + pushPage(pageNumber) { + if (!this._initialized) { + return; + } + if (!this._isValidPage(pageNumber)) { + console.error(`PDFHistory.pushPage: "${pageNumber}" is not a valid page number.`); + return; + } + if (this._destination?.page === pageNumber) { + return; + } + if (this._popStateInProgress) { + return; + } + this._pushOrReplaceState({ + dest: null, + hash: `page=${pageNumber}`, + page: pageNumber, + rotation: this.linkService.rotation + }); + if (!this._popStateInProgress) { + this._popStateInProgress = true; + Promise.resolve().then(() => { + this._popStateInProgress = false; + }); + } + } + pushCurrentPosition() { + if (!this._initialized || this._popStateInProgress) { + return; + } + this._tryPushCurrentPosition(); + } + back() { + if (!this._initialized || this._popStateInProgress) { + return; + } + const state = window.history.state; + if (this._isValidState(state) && state.uid > 0) { + window.history.back(); + } + } + forward() { + if (!this._initialized || this._popStateInProgress) { + return; + } + const state = window.history.state; + if (this._isValidState(state) && state.uid < this._maxUid) { + window.history.forward(); + } + } + get popStateInProgress() { + return this._initialized && (this._popStateInProgress || this._blockHashChange > 0); + } + get initialBookmark() { + return this._initialized ? this._initialBookmark : null; + } + get initialRotation() { + return this._initialized ? this._initialRotation : null; + } + _pushOrReplaceState(destination, forceReplace = false) { + const shouldReplace = forceReplace || !this._destination; + const newState = { + fingerprint: this._fingerprint, + uid: shouldReplace ? this._uid : this._uid + 1, + destination + }; + this._updateInternalState(destination, newState.uid); + let newUrl; + if (this._updateUrl && destination?.hash) { + const baseUrl = document.location.href.split("#")[0]; + if (!baseUrl.startsWith("file://")) { + newUrl = `${baseUrl}#${destination.hash}`; + } + } + if (shouldReplace) { + window.history.replaceState(newState, "", newUrl); + } else { + window.history.pushState(newState, "", newUrl); + } + } + _tryPushCurrentPosition(temporary = false) { + if (!this._position) { + return; + } + let position = this._position; + if (temporary) { + position = Object.assign(Object.create(null), this._position); + position.temporary = true; + } + if (!this._destination) { + this._pushOrReplaceState(position); + return; + } + if (this._destination.temporary) { + this._pushOrReplaceState(position, true); + return; + } + if (this._destination.hash === position.hash) { + return; + } + if (!this._destination.page && (POSITION_UPDATED_THRESHOLD <= 0 || this._numPositionUpdates <= POSITION_UPDATED_THRESHOLD)) { + return; + } + let forceReplace = false; + if (this._destination.page >= position.first && this._destination.page <= position.page) { + if (this._destination.dest !== undefined || !this._destination.first) { + return; + } + forceReplace = true; + } + this._pushOrReplaceState(position, forceReplace); + } + _isValidPage(val) { + return Number.isInteger(val) && val > 0 && val <= this.linkService.pagesCount; + } + _isValidState(state, checkReload = false) { + if (!state) { + return false; + } + if (state.fingerprint !== this._fingerprint) { + if (checkReload) { + if (typeof state.fingerprint !== "string" || state.fingerprint.length !== this._fingerprint.length) { + return false; + } + const [perfEntry] = performance.getEntriesByType("navigation"); + if (perfEntry?.type !== "reload") { + return false; + } + } else { + return false; + } + } + if (!Number.isInteger(state.uid) || state.uid < 0) { + return false; + } + if (state.destination === null || typeof state.destination !== "object") { + return false; + } + return true; + } + _updateInternalState(destination, uid, removeTemporary = false) { + if (this._updateViewareaTimeout) { + clearTimeout(this._updateViewareaTimeout); + this._updateViewareaTimeout = null; + } + if (removeTemporary && destination?.temporary) { + delete destination.temporary; + } + this._destination = destination; + this._uid = uid; + this._maxUid = Math.max(this._maxUid, uid); + this._numPositionUpdates = 0; + } + _parseCurrentHash(checkNameddest = false) { + const hash = unescape(getCurrentHash()).substring(1); + const params = (0, _ui_utils.parseQueryString)(hash); + const nameddest = params.get("nameddest") || ""; + let page = params.get("page") | 0; + if (!this._isValidPage(page) || checkNameddest && nameddest.length > 0) { + page = null; + } + return { + hash, + page, + rotation: this.linkService.rotation + }; + } + _updateViewarea({ + location + }) { + if (this._updateViewareaTimeout) { + clearTimeout(this._updateViewareaTimeout); + this._updateViewareaTimeout = null; + } + this._position = { + hash: location.pdfOpenParams.substring(1), + page: this.linkService.page, + first: location.pageNumber, + rotation: location.rotation + }; + if (this._popStateInProgress) { + return; + } + if (POSITION_UPDATED_THRESHOLD > 0 && this._isPagesLoaded && this._destination && !this._destination.page) { + this._numPositionUpdates++; + } + if (UPDATE_VIEWAREA_TIMEOUT > 0) { + this._updateViewareaTimeout = setTimeout(() => { + if (!this._popStateInProgress) { + this._tryPushCurrentPosition(true); + } + this._updateViewareaTimeout = null; + }, UPDATE_VIEWAREA_TIMEOUT); + } + } + _popState({ + state + }) { + const newHash = getCurrentHash(), + hashChanged = this._currentHash !== newHash; + this._currentHash = newHash; + if (!state) { + this._uid++; + const { + hash, + page, + rotation + } = this._parseCurrentHash(); + this._pushOrReplaceState({ + hash, + page, + rotation + }, true); + return; + } + if (!this._isValidState(state)) { + return; + } + this._popStateInProgress = true; + if (hashChanged) { + this._blockHashChange++; + (0, _event_utils.waitOnEventOrTimeout)({ + target: window, + name: "hashchange", + delay: HASH_CHANGE_TIMEOUT + }).then(() => { + this._blockHashChange--; + }); + } + const destination = state.destination; + this._updateInternalState(destination, state.uid, true); + if ((0, _ui_utils.isValidRotation)(destination.rotation)) { + this.linkService.rotation = destination.rotation; + } + if (destination.dest) { + this.linkService.goToDestination(destination.dest); + } else if (destination.hash) { + this.linkService.setHash(destination.hash); + } else if (destination.page) { + this.linkService.page = destination.page; + } + Promise.resolve().then(() => { + this._popStateInProgress = false; + }); + } + _pageHide() { + if (!this._destination || this._destination.temporary) { + this._tryPushCurrentPosition(); + } + } + _bindEvents() { + if (this._boundEvents) { + return; + } + this._boundEvents = { + updateViewarea: this._updateViewarea.bind(this), + popState: this._popState.bind(this), + pageHide: this._pageHide.bind(this) + }; + this.eventBus._on("updateviewarea", this._boundEvents.updateViewarea); + window.addEventListener("popstate", this._boundEvents.popState); + window.addEventListener("pagehide", this._boundEvents.pageHide); + } + _unbindEvents() { + if (!this._boundEvents) { + return; + } + this.eventBus._off("updateviewarea", this._boundEvents.updateViewarea); + window.removeEventListener("popstate", this._boundEvents.popState); + window.removeEventListener("pagehide", this._boundEvents.pageHide); + this._boundEvents = null; + } +} +exports.PDFHistory = PDFHistory; +function isDestHashesEqual(destHash, pushHash) { + if (typeof destHash !== "string" || typeof pushHash !== "string") { + return false; + } + if (destHash === pushHash) { + return true; + } + const nameddest = (0, _ui_utils.parseQueryString)(destHash).get("nameddest"); + if (nameddest === pushHash) { + return true; + } + return false; +} +function isDestArraysEqual(firstDest, secondDest) { + function isEntryEqual(first, second) { + if (typeof first !== typeof second) { + return false; + } + if (Array.isArray(first) || Array.isArray(second)) { + return false; + } + if (first !== null && typeof first === "object" && second !== null) { + if (Object.keys(first).length !== Object.keys(second).length) { + return false; + } + for (const key in first) { + if (!isEntryEqual(first[key], second[key])) { + return false; + } + } + return true; + } + return first === second || Number.isNaN(first) && Number.isNaN(second); + } + if (!(Array.isArray(firstDest) && Array.isArray(secondDest))) { + return false; + } + if (firstDest.length !== secondDest.length) { + return false; + } + for (let i = 0, ii = firstDest.length; i < ii; i++) { + if (!isEntryEqual(firstDest[i], secondDest[i])) { + return false; + } + } + return true; +} + +/***/ }), +/* 20 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFLayerViewer = void 0; +var _base_tree_viewer = __webpack_require__(12); +class PDFLayerViewer extends _base_tree_viewer.BaseTreeViewer { + constructor(options) { + super(options); + this.l10n = options.l10n; + this.eventBus._on("optionalcontentconfigchanged", evt => { + this.#updateLayers(evt.promise); + }); + this.eventBus._on("resetlayers", () => { + this.#updateLayers(); + }); + this.eventBus._on("togglelayerstree", this._toggleAllTreeItems.bind(this)); + } + reset() { + super.reset(); + this._optionalContentConfig = null; + this._optionalContentHash = null; + } + _dispatchEvent(layersCount) { + this.eventBus.dispatch("layersloaded", { + source: this, + layersCount + }); + } + _bindLink(element, { + groupId, + input + }) { + const setVisibility = () => { + this._optionalContentConfig.setVisibility(groupId, input.checked); + this._optionalContentHash = this._optionalContentConfig.getHash(); + this.eventBus.dispatch("optionalcontentconfig", { + source: this, + promise: Promise.resolve(this._optionalContentConfig) + }); + }; + element.onclick = evt => { + if (evt.target === input) { + setVisibility(); + return true; + } else if (evt.target !== element) { + return true; + } + input.checked = !input.checked; + setVisibility(); + return false; + }; + } + async _setNestedName(element, { + name = null + }) { + if (typeof name === "string") { + element.textContent = this._normalizeTextContent(name); + return; + } + element.textContent = await this.l10n.get("additional_layers"); + element.style.fontStyle = "italic"; + } + _addToggleButton(div, { + name = null + }) { + super._addToggleButton(div, name === null); + } + _toggleAllTreeItems() { + if (!this._optionalContentConfig) { + return; + } + super._toggleAllTreeItems(); + } + render({ + optionalContentConfig, + pdfDocument + }) { + if (this._optionalContentConfig) { + this.reset(); + } + this._optionalContentConfig = optionalContentConfig || null; + this._pdfDocument = pdfDocument || null; + const groups = optionalContentConfig?.getOrder(); + if (!groups) { + this._dispatchEvent(0); + return; + } + this._optionalContentHash = optionalContentConfig.getHash(); + const fragment = document.createDocumentFragment(), + queue = [{ + parent: fragment, + groups + }]; + let layersCount = 0, + hasAnyNesting = false; + while (queue.length > 0) { + const levelData = queue.shift(); + for (const groupId of levelData.groups) { + const div = document.createElement("div"); + div.className = "treeItem"; + const element = document.createElement("a"); + div.append(element); + if (typeof groupId === "object") { + hasAnyNesting = true; + this._addToggleButton(div, groupId); + this._setNestedName(element, groupId); + const itemsDiv = document.createElement("div"); + itemsDiv.className = "treeItems"; + div.append(itemsDiv); + queue.push({ + parent: itemsDiv, + groups: groupId.order + }); + } else { + const group = optionalContentConfig.getGroup(groupId); + const input = document.createElement("input"); + this._bindLink(element, { + groupId, + input + }); + input.type = "checkbox"; + input.checked = group.visible; + const label = document.createElement("label"); + label.textContent = this._normalizeTextContent(group.name); + label.append(input); + element.append(label); + layersCount++; + } + levelData.parent.append(div); + } + } + this._finishRendering(fragment, layersCount, hasAnyNesting); + } + async #updateLayers(promise = null) { + if (!this._optionalContentConfig) { + return; + } + const pdfDocument = this._pdfDocument; + const optionalContentConfig = await (promise || pdfDocument.getOptionalContentConfig()); + if (pdfDocument !== this._pdfDocument) { + return; + } + if (promise) { + if (optionalContentConfig.getHash() === this._optionalContentHash) { + return; + } + } else { + this.eventBus.dispatch("optionalcontentconfig", { + source: this, + promise: Promise.resolve(optionalContentConfig) + }); + } + this.render({ + optionalContentConfig, + pdfDocument: this._pdfDocument + }); + } +} +exports.PDFLayerViewer = PDFLayerViewer; + +/***/ }), +/* 21 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFOutlineViewer = void 0; +var _base_tree_viewer = __webpack_require__(12); +var _pdfjsLib = __webpack_require__(4); +var _ui_utils = __webpack_require__(3); +class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer { + constructor(options) { + super(options); + this.linkService = options.linkService; + this.downloadManager = options.downloadManager; + this.eventBus._on("toggleoutlinetree", this._toggleAllTreeItems.bind(this)); + this.eventBus._on("currentoutlineitem", this._currentOutlineItem.bind(this)); + this.eventBus._on("pagechanging", evt => { + this._currentPageNumber = evt.pageNumber; + }); + this.eventBus._on("pagesloaded", evt => { + this._isPagesLoaded = !!evt.pagesCount; + if (this._currentOutlineItemCapability && !this._currentOutlineItemCapability.settled) { + this._currentOutlineItemCapability.resolve(this._isPagesLoaded); + } + }); + this.eventBus._on("sidebarviewchanged", evt => { + this._sidebarView = evt.view; + }); + } + reset() { + super.reset(); + this._outline = null; + this._pageNumberToDestHashCapability = null; + this._currentPageNumber = 1; + this._isPagesLoaded = null; + if (this._currentOutlineItemCapability && !this._currentOutlineItemCapability.settled) { + this._currentOutlineItemCapability.resolve(false); + } + this._currentOutlineItemCapability = null; + } + _dispatchEvent(outlineCount) { + this._currentOutlineItemCapability = (0, _pdfjsLib.createPromiseCapability)(); + if (outlineCount === 0 || this._pdfDocument?.loadingParams.disableAutoFetch) { + this._currentOutlineItemCapability.resolve(false); + } else if (this._isPagesLoaded !== null) { + this._currentOutlineItemCapability.resolve(this._isPagesLoaded); + } + this.eventBus.dispatch("outlineloaded", { + source: this, + outlineCount, + currentOutlineItemPromise: this._currentOutlineItemCapability.promise + }); + } + _bindLink(element, { + url, + newWindow, + action, + attachment, + dest, + setOCGState + }) { + const { + linkService + } = this; + if (url) { + linkService.addLinkAttributes(element, url, newWindow); + return; + } + if (action) { + element.href = linkService.getAnchorUrl(""); + element.onclick = () => { + linkService.executeNamedAction(action); + return false; + }; + return; + } + if (attachment) { + element.href = linkService.getAnchorUrl(""); + element.onclick = () => { + this.downloadManager.openOrDownloadData(element, attachment.content, attachment.filename); + return false; + }; + return; + } + if (setOCGState) { + element.href = linkService.getAnchorUrl(""); + element.onclick = () => { + linkService.executeSetOCGState(setOCGState); + return false; + }; + return; + } + element.href = linkService.getDestinationHash(dest); + element.onclick = evt => { + this._updateCurrentTreeItem(evt.target.parentNode); + if (dest) { + linkService.goToDestination(dest); + } + return false; + }; + } + _setStyles(element, { + bold, + italic + }) { + if (bold) { + element.style.fontWeight = "bold"; + } + if (italic) { + element.style.fontStyle = "italic"; + } + } + _addToggleButton(div, { + count, + items + }) { + let hidden = false; + if (count < 0) { + let totalCount = items.length; + if (totalCount > 0) { + const queue = [...items]; + while (queue.length > 0) { + const { + count: nestedCount, + items: nestedItems + } = queue.shift(); + if (nestedCount > 0 && nestedItems.length > 0) { + totalCount += nestedItems.length; + queue.push(...nestedItems); + } + } + } + if (Math.abs(count) === totalCount) { + hidden = true; + } + } + super._addToggleButton(div, hidden); + } + _toggleAllTreeItems() { + if (!this._outline) { + return; + } + super._toggleAllTreeItems(); + } + render({ + outline, + pdfDocument + }) { + if (this._outline) { + this.reset(); + } + this._outline = outline || null; + this._pdfDocument = pdfDocument || null; + if (!outline) { + this._dispatchEvent(0); + return; + } + const fragment = document.createDocumentFragment(); + const queue = [{ + parent: fragment, + items: outline + }]; + let outlineCount = 0, + hasAnyNesting = false; + while (queue.length > 0) { + const levelData = queue.shift(); + for (const item of levelData.items) { + const div = document.createElement("div"); + div.className = "treeItem"; + const element = document.createElement("a"); + this._bindLink(element, item); + this._setStyles(element, item); + element.textContent = this._normalizeTextContent(item.title); + div.append(element); + if (item.items.length > 0) { + hasAnyNesting = true; + this._addToggleButton(div, item); + const itemsDiv = document.createElement("div"); + itemsDiv.className = "treeItems"; + div.append(itemsDiv); + queue.push({ + parent: itemsDiv, + items: item.items + }); + } + levelData.parent.append(div); + outlineCount++; + } + } + this._finishRendering(fragment, outlineCount, hasAnyNesting); + } + async _currentOutlineItem() { + if (!this._isPagesLoaded) { + throw new Error("_currentOutlineItem: All pages have not been loaded."); + } + if (!this._outline || !this._pdfDocument) { + return; + } + const pageNumberToDestHash = await this._getPageNumberToDestHash(this._pdfDocument); + if (!pageNumberToDestHash) { + return; + } + this._updateCurrentTreeItem(null); + if (this._sidebarView !== _ui_utils.SidebarView.OUTLINE) { + return; + } + for (let i = this._currentPageNumber; i > 0; i--) { + const destHash = pageNumberToDestHash.get(i); + if (!destHash) { + continue; + } + const linkElement = this.container.querySelector(`a[href="${destHash}"]`); + if (!linkElement) { + continue; + } + this._scrollToCurrentTreeItem(linkElement.parentNode); + break; + } + } + async _getPageNumberToDestHash(pdfDocument) { + if (this._pageNumberToDestHashCapability) { + return this._pageNumberToDestHashCapability.promise; + } + this._pageNumberToDestHashCapability = (0, _pdfjsLib.createPromiseCapability)(); + const pageNumberToDestHash = new Map(), + pageNumberNesting = new Map(); + const queue = [{ + nesting: 0, + items: this._outline + }]; + while (queue.length > 0) { + const levelData = queue.shift(), + currentNesting = levelData.nesting; + for (const { + dest, + items + } of levelData.items) { + let explicitDest, pageNumber; + if (typeof dest === "string") { + explicitDest = await pdfDocument.getDestination(dest); + if (pdfDocument !== this._pdfDocument) { + return null; + } + } else { + explicitDest = dest; + } + if (Array.isArray(explicitDest)) { + const [destRef] = explicitDest; + if (typeof destRef === "object" && destRef !== null) { + pageNumber = this.linkService._cachedPageNumber(destRef); + if (!pageNumber) { + try { + pageNumber = (await pdfDocument.getPageIndex(destRef)) + 1; + if (pdfDocument !== this._pdfDocument) { + return null; + } + this.linkService.cachePageRef(pageNumber, destRef); + } catch (ex) {} + } + } else if (Number.isInteger(destRef)) { + pageNumber = destRef + 1; + } + if (Number.isInteger(pageNumber) && (!pageNumberToDestHash.has(pageNumber) || currentNesting > pageNumberNesting.get(pageNumber))) { + const destHash = this.linkService.getDestinationHash(dest); + pageNumberToDestHash.set(pageNumber, destHash); + pageNumberNesting.set(pageNumber, currentNesting); + } + } + if (items.length > 0) { + queue.push({ + nesting: currentNesting + 1, + items + }); + } + } + } + this._pageNumberToDestHashCapability.resolve(pageNumberToDestHash.size > 0 ? pageNumberToDestHash : null); + return this._pageNumberToDestHashCapability.promise; + } +} +exports.PDFOutlineViewer = PDFOutlineViewer; + +/***/ }), +/* 22 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFPresentationMode = void 0; +var _ui_utils = __webpack_require__(3); +var _pdfjsLib = __webpack_require__(4); +const DELAY_BEFORE_HIDING_CONTROLS = 3000; +const ACTIVE_SELECTOR = "pdfPresentationMode"; +const CONTROLS_SELECTOR = "pdfPresentationModeControls"; +const MOUSE_SCROLL_COOLDOWN_TIME = 50; +const PAGE_SWITCH_THRESHOLD = 0.1; +const SWIPE_MIN_DISTANCE_THRESHOLD = 50; +const SWIPE_ANGLE_THRESHOLD = Math.PI / 6; +class PDFPresentationMode { + #state = _ui_utils.PresentationModeState.UNKNOWN; + #args = null; + constructor({ + container, + pdfViewer, + eventBus + }) { + this.container = container; + this.pdfViewer = pdfViewer; + this.eventBus = eventBus; + this.contextMenuOpen = false; + this.mouseScrollTimeStamp = 0; + this.mouseScrollDelta = 0; + this.touchSwipeState = null; + } + async request() { + const { + container, + pdfViewer + } = this; + if (this.active || !pdfViewer.pagesCount || !container.requestFullscreen) { + return false; + } + this.#addFullscreenChangeListeners(); + this.#notifyStateChange(_ui_utils.PresentationModeState.CHANGING); + const promise = container.requestFullscreen(); + this.#args = { + pageNumber: pdfViewer.currentPageNumber, + scaleValue: pdfViewer.currentScaleValue, + scrollMode: pdfViewer.scrollMode, + spreadMode: null, + annotationEditorMode: null + }; + if (pdfViewer.spreadMode !== _ui_utils.SpreadMode.NONE && !(pdfViewer.pageViewsReady && pdfViewer.hasEqualPageSizes)) { + console.warn("Ignoring Spread modes when entering PresentationMode, " + "since the document may contain varying page sizes."); + this.#args.spreadMode = pdfViewer.spreadMode; + } + if (pdfViewer.annotationEditorMode !== _pdfjsLib.AnnotationEditorType.DISABLE) { + this.#args.annotationEditorMode = pdfViewer.annotationEditorMode; + } + try { + await promise; + pdfViewer.focus(); + return true; + } catch (reason) { + this.#removeFullscreenChangeListeners(); + this.#notifyStateChange(_ui_utils.PresentationModeState.NORMAL); + } + return false; + } + get active() { + return this.#state === _ui_utils.PresentationModeState.CHANGING || this.#state === _ui_utils.PresentationModeState.FULLSCREEN; + } + #mouseWheel(evt) { + if (!this.active) { + return; + } + evt.preventDefault(); + const delta = (0, _ui_utils.normalizeWheelEventDelta)(evt); + const currentTime = Date.now(); + const storedTime = this.mouseScrollTimeStamp; + if (currentTime > storedTime && currentTime - storedTime < MOUSE_SCROLL_COOLDOWN_TIME) { + return; + } + if (this.mouseScrollDelta > 0 && delta < 0 || this.mouseScrollDelta < 0 && delta > 0) { + this.#resetMouseScrollState(); + } + this.mouseScrollDelta += delta; + if (Math.abs(this.mouseScrollDelta) >= PAGE_SWITCH_THRESHOLD) { + const totalDelta = this.mouseScrollDelta; + this.#resetMouseScrollState(); + const success = totalDelta > 0 ? this.pdfViewer.previousPage() : this.pdfViewer.nextPage(); + if (success) { + this.mouseScrollTimeStamp = currentTime; + } + } + } + #notifyStateChange(state) { + this.#state = state; + this.eventBus.dispatch("presentationmodechanged", { + source: this, + state + }); + } + #enter() { + this.#notifyStateChange(_ui_utils.PresentationModeState.FULLSCREEN); + this.container.classList.add(ACTIVE_SELECTOR); + setTimeout(() => { + this.pdfViewer.scrollMode = _ui_utils.ScrollMode.PAGE; + if (this.#args.spreadMode !== null) { + this.pdfViewer.spreadMode = _ui_utils.SpreadMode.NONE; + } + this.pdfViewer.currentPageNumber = this.#args.pageNumber; + this.pdfViewer.currentScaleValue = "page-fit"; + if (this.#args.annotationEditorMode !== null) { + this.pdfViewer.annotationEditorMode = _pdfjsLib.AnnotationEditorType.NONE; + } + }, 0); + this.#addWindowListeners(); + this.#showControls(); + this.contextMenuOpen = false; + window.getSelection().removeAllRanges(); + } + #exit() { + const pageNumber = this.pdfViewer.currentPageNumber; + this.container.classList.remove(ACTIVE_SELECTOR); + setTimeout(() => { + this.#removeFullscreenChangeListeners(); + this.#notifyStateChange(_ui_utils.PresentationModeState.NORMAL); + this.pdfViewer.scrollMode = this.#args.scrollMode; + if (this.#args.spreadMode !== null) { + this.pdfViewer.spreadMode = this.#args.spreadMode; + } + this.pdfViewer.currentScaleValue = this.#args.scaleValue; + this.pdfViewer.currentPageNumber = pageNumber; + if (this.#args.annotationEditorMode !== null) { + this.pdfViewer.annotationEditorMode = this.#args.annotationEditorMode; + } + this.#args = null; + }, 0); + this.#removeWindowListeners(); + this.#hideControls(); + this.#resetMouseScrollState(); + this.contextMenuOpen = false; + } + #mouseDown(evt) { + if (this.contextMenuOpen) { + this.contextMenuOpen = false; + evt.preventDefault(); + return; + } + if (evt.button !== 0) { + return; + } + if (evt.target.href && evt.target.parentNode?.hasAttribute("data-internal-link")) { + return; + } + evt.preventDefault(); + if (evt.shiftKey) { + this.pdfViewer.previousPage(); + } else { + this.pdfViewer.nextPage(); + } + } + #contextMenu() { + this.contextMenuOpen = true; + } + #showControls() { + if (this.controlsTimeout) { + clearTimeout(this.controlsTimeout); + } else { + this.container.classList.add(CONTROLS_SELECTOR); + } + this.controlsTimeout = setTimeout(() => { + this.container.classList.remove(CONTROLS_SELECTOR); + delete this.controlsTimeout; + }, DELAY_BEFORE_HIDING_CONTROLS); + } + #hideControls() { + if (!this.controlsTimeout) { + return; + } + clearTimeout(this.controlsTimeout); + this.container.classList.remove(CONTROLS_SELECTOR); + delete this.controlsTimeout; + } + #resetMouseScrollState() { + this.mouseScrollTimeStamp = 0; + this.mouseScrollDelta = 0; + } + #touchSwipe(evt) { + if (!this.active) { + return; + } + if (evt.touches.length > 1) { + this.touchSwipeState = null; + return; + } + switch (evt.type) { + case "touchstart": + this.touchSwipeState = { + startX: evt.touches[0].pageX, + startY: evt.touches[0].pageY, + endX: evt.touches[0].pageX, + endY: evt.touches[0].pageY + }; + break; + case "touchmove": + if (this.touchSwipeState === null) { + return; + } + this.touchSwipeState.endX = evt.touches[0].pageX; + this.touchSwipeState.endY = evt.touches[0].pageY; + evt.preventDefault(); + break; + case "touchend": + if (this.touchSwipeState === null) { + return; + } + let delta = 0; + const dx = this.touchSwipeState.endX - this.touchSwipeState.startX; + const dy = this.touchSwipeState.endY - this.touchSwipeState.startY; + const absAngle = Math.abs(Math.atan2(dy, dx)); + if (Math.abs(dx) > SWIPE_MIN_DISTANCE_THRESHOLD && (absAngle <= SWIPE_ANGLE_THRESHOLD || absAngle >= Math.PI - SWIPE_ANGLE_THRESHOLD)) { + delta = dx; + } else if (Math.abs(dy) > SWIPE_MIN_DISTANCE_THRESHOLD && Math.abs(absAngle - Math.PI / 2) <= SWIPE_ANGLE_THRESHOLD) { + delta = dy; + } + if (delta > 0) { + this.pdfViewer.previousPage(); + } else if (delta < 0) { + this.pdfViewer.nextPage(); + } + break; + } + } + #addWindowListeners() { + this.showControlsBind = this.#showControls.bind(this); + this.mouseDownBind = this.#mouseDown.bind(this); + this.mouseWheelBind = this.#mouseWheel.bind(this); + this.resetMouseScrollStateBind = this.#resetMouseScrollState.bind(this); + this.contextMenuBind = this.#contextMenu.bind(this); + this.touchSwipeBind = this.#touchSwipe.bind(this); + window.addEventListener("mousemove", this.showControlsBind); + window.addEventListener("mousedown", this.mouseDownBind); + window.addEventListener("wheel", this.mouseWheelBind, { + passive: false + }); + window.addEventListener("keydown", this.resetMouseScrollStateBind); + window.addEventListener("contextmenu", this.contextMenuBind); + window.addEventListener("touchstart", this.touchSwipeBind); + window.addEventListener("touchmove", this.touchSwipeBind); + window.addEventListener("touchend", this.touchSwipeBind); + } + #removeWindowListeners() { + window.removeEventListener("mousemove", this.showControlsBind); + window.removeEventListener("mousedown", this.mouseDownBind); + window.removeEventListener("wheel", this.mouseWheelBind, { + passive: false + }); + window.removeEventListener("keydown", this.resetMouseScrollStateBind); + window.removeEventListener("contextmenu", this.contextMenuBind); + window.removeEventListener("touchstart", this.touchSwipeBind); + window.removeEventListener("touchmove", this.touchSwipeBind); + window.removeEventListener("touchend", this.touchSwipeBind); + delete this.showControlsBind; + delete this.mouseDownBind; + delete this.mouseWheelBind; + delete this.resetMouseScrollStateBind; + delete this.contextMenuBind; + delete this.touchSwipeBind; + } + #fullscreenChange() { + if (document.fullscreenElement) { + this.#enter(); + } else { + this.#exit(); + } + } + #addFullscreenChangeListeners() { + this.fullscreenChangeBind = this.#fullscreenChange.bind(this); + window.addEventListener("fullscreenchange", this.fullscreenChangeBind); + } + #removeFullscreenChangeListeners() { + window.removeEventListener("fullscreenchange", this.fullscreenChangeBind); + delete this.fullscreenChangeBind; + } +} +exports.PDFPresentationMode = PDFPresentationMode; + +/***/ }), +/* 23 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFRenderingQueue = void 0; +var _pdfjsLib = __webpack_require__(4); +var _ui_utils = __webpack_require__(3); +const CLEANUP_TIMEOUT = 30000; +class PDFRenderingQueue { + constructor() { + this.pdfViewer = null; + this.pdfThumbnailViewer = null; + this.onIdle = null; + this.highestPriorityPage = null; + this.idleTimeout = null; + this.printing = false; + this.isThumbnailViewEnabled = false; + } + setViewer(pdfViewer) { + this.pdfViewer = pdfViewer; + } + setThumbnailViewer(pdfThumbnailViewer) { + this.pdfThumbnailViewer = pdfThumbnailViewer; + } + isHighestPriority(view) { + return this.highestPriorityPage === view.renderingId; + } + hasViewer() { + return !!this.pdfViewer; + } + renderHighestPriority(currentlyVisiblePages) { + if (this.idleTimeout) { + clearTimeout(this.idleTimeout); + this.idleTimeout = null; + } + if (this.pdfViewer.forceRendering(currentlyVisiblePages)) { + return; + } + if (this.isThumbnailViewEnabled && this.pdfThumbnailViewer?.forceRendering()) { + return; + } + if (this.printing) { + return; + } + if (this.onIdle) { + this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT); + } + } + getHighestPriority(visible, views, scrolledDown, preRenderExtra = false) { + const visibleViews = visible.views, + numVisible = visibleViews.length; + if (numVisible === 0) { + return null; + } + for (let i = 0; i < numVisible; i++) { + const view = visibleViews[i].view; + if (!this.isViewFinished(view)) { + return view; + } + } + const firstId = visible.first.id, + lastId = visible.last.id; + if (lastId - firstId + 1 > numVisible) { + const visibleIds = visible.ids; + for (let i = 1, ii = lastId - firstId; i < ii; i++) { + const holeId = scrolledDown ? firstId + i : lastId - i; + if (visibleIds.has(holeId)) { + continue; + } + const holeView = views[holeId - 1]; + if (!this.isViewFinished(holeView)) { + return holeView; + } + } + } + let preRenderIndex = scrolledDown ? lastId : firstId - 2; + let preRenderView = views[preRenderIndex]; + if (preRenderView && !this.isViewFinished(preRenderView)) { + return preRenderView; + } + if (preRenderExtra) { + preRenderIndex += scrolledDown ? 1 : -1; + preRenderView = views[preRenderIndex]; + if (preRenderView && !this.isViewFinished(preRenderView)) { + return preRenderView; + } + } + return null; + } + isViewFinished(view) { + return view.renderingState === _ui_utils.RenderingStates.FINISHED; + } + renderView(view) { + switch (view.renderingState) { + case _ui_utils.RenderingStates.FINISHED: + return false; + case _ui_utils.RenderingStates.PAUSED: + this.highestPriorityPage = view.renderingId; + view.resume(); + break; + case _ui_utils.RenderingStates.RUNNING: + this.highestPriorityPage = view.renderingId; + break; + case _ui_utils.RenderingStates.INITIAL: + this.highestPriorityPage = view.renderingId; + view.draw().finally(() => { + this.renderHighestPriority(); + }).catch(reason => { + if (reason instanceof _pdfjsLib.RenderingCancelledException) { + return; + } + console.error(`renderView: "${reason}"`); + }); + break; + } + return true; + } +} +exports.PDFRenderingQueue = PDFRenderingQueue; + +/***/ }), +/* 24 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFScriptingManager = void 0; +var _ui_utils = __webpack_require__(3); +var _pdfjsLib = __webpack_require__(4); +class PDFScriptingManager { + constructor({ + eventBus, + sandboxBundleSrc = null, + scriptingFactory = null, + docPropertiesLookup = null + }) { + this._pdfDocument = null; + this._pdfViewer = null; + this._closeCapability = null; + this._destroyCapability = null; + this._scripting = null; + this._ready = false; + this._eventBus = eventBus; + this._sandboxBundleSrc = sandboxBundleSrc; + this._scriptingFactory = scriptingFactory; + this._docPropertiesLookup = docPropertiesLookup; + } + setViewer(pdfViewer) { + this._pdfViewer = pdfViewer; + } + async setDocument(pdfDocument) { + if (this._pdfDocument) { + await this._destroyScripting(); + } + this._pdfDocument = pdfDocument; + if (!pdfDocument) { + return; + } + const [objects, calculationOrder, docActions] = await Promise.all([pdfDocument.getFieldObjects(), pdfDocument.getCalculationOrderIds(), pdfDocument.getJSActions()]); + if (!objects && !docActions) { + await this._destroyScripting(); + return; + } + if (pdfDocument !== this._pdfDocument) { + return; + } + try { + this._scripting = this._createScripting(); + } catch (error) { + console.error(`PDFScriptingManager.setDocument: "${error?.message}".`); + await this._destroyScripting(); + return; + } + this._internalEvents.set("updatefromsandbox", event => { + if (event?.source !== window) { + return; + } + this._updateFromSandbox(event.detail); + }); + this._internalEvents.set("dispatcheventinsandbox", event => { + this._scripting?.dispatchEventInSandbox(event.detail); + }); + this._internalEvents.set("pagechanging", ({ + pageNumber, + previous + }) => { + if (pageNumber === previous) { + return; + } + this._dispatchPageClose(previous); + this._dispatchPageOpen(pageNumber); + }); + this._internalEvents.set("pagerendered", ({ + pageNumber + }) => { + if (!this._pageOpenPending.has(pageNumber)) { + return; + } + if (pageNumber !== this._pdfViewer.currentPageNumber) { + return; + } + this._dispatchPageOpen(pageNumber); + }); + this._internalEvents.set("pagesdestroy", async event => { + await this._dispatchPageClose(this._pdfViewer.currentPageNumber); + await this._scripting?.dispatchEventInSandbox({ + id: "doc", + name: "WillClose" + }); + this._closeCapability?.resolve(); + }); + for (const [name, listener] of this._internalEvents) { + this._eventBus._on(name, listener); + } + try { + const docProperties = await this._getDocProperties(); + if (pdfDocument !== this._pdfDocument) { + return; + } + await this._scripting.createSandbox({ + objects, + calculationOrder, + appInfo: { + platform: navigator.platform, + language: navigator.language + }, + docInfo: { + ...docProperties, + actions: docActions + } + }); + this._eventBus.dispatch("sandboxcreated", { + source: this + }); + } catch (error) { + console.error(`PDFScriptingManager.setDocument: "${error?.message}".`); + await this._destroyScripting(); + return; + } + await this._scripting?.dispatchEventInSandbox({ + id: "doc", + name: "Open" + }); + await this._dispatchPageOpen(this._pdfViewer.currentPageNumber, true); + Promise.resolve().then(() => { + if (pdfDocument === this._pdfDocument) { + this._ready = true; + } + }); + } + async dispatchWillSave(detail) { + return this._scripting?.dispatchEventInSandbox({ + id: "doc", + name: "WillSave" + }); + } + async dispatchDidSave(detail) { + return this._scripting?.dispatchEventInSandbox({ + id: "doc", + name: "DidSave" + }); + } + async dispatchWillPrint(detail) { + return this._scripting?.dispatchEventInSandbox({ + id: "doc", + name: "WillPrint" + }); + } + async dispatchDidPrint(detail) { + return this._scripting?.dispatchEventInSandbox({ + id: "doc", + name: "DidPrint" + }); + } + get destroyPromise() { + return this._destroyCapability?.promise || null; + } + get ready() { + return this._ready; + } + get _internalEvents() { + return (0, _pdfjsLib.shadow)(this, "_internalEvents", new Map()); + } + get _pageOpenPending() { + return (0, _pdfjsLib.shadow)(this, "_pageOpenPending", new Set()); + } + get _visitedPages() { + return (0, _pdfjsLib.shadow)(this, "_visitedPages", new Map()); + } + async _updateFromSandbox(detail) { + const isInPresentationMode = this._pdfViewer.isInPresentationMode || this._pdfViewer.isChangingPresentationMode; + const { + id, + siblings, + command, + value + } = detail; + if (!id) { + switch (command) { + case "clear": + console.clear(); + break; + case "error": + console.error(value); + break; + case "layout": + { + if (isInPresentationMode) { + return; + } + const modes = (0, _ui_utils.apiPageLayoutToViewerModes)(value); + this._pdfViewer.spreadMode = modes.spreadMode; + break; + } + case "page-num": + this._pdfViewer.currentPageNumber = value + 1; + break; + case "print": + await this._pdfViewer.pagesPromise; + this._eventBus.dispatch("print", { + source: this + }); + break; + case "println": + console.log(value); + break; + case "zoom": + if (isInPresentationMode) { + return; + } + this._pdfViewer.currentScaleValue = value; + break; + case "SaveAs": + this._eventBus.dispatch("download", { + source: this + }); + break; + case "FirstPage": + this._pdfViewer.currentPageNumber = 1; + break; + case "LastPage": + this._pdfViewer.currentPageNumber = this._pdfViewer.pagesCount; + break; + case "NextPage": + this._pdfViewer.nextPage(); + break; + case "PrevPage": + this._pdfViewer.previousPage(); + break; + case "ZoomViewIn": + if (isInPresentationMode) { + return; + } + this._pdfViewer.increaseScale(); + break; + case "ZoomViewOut": + if (isInPresentationMode) { + return; + } + this._pdfViewer.decreaseScale(); + break; + } + return; + } + if (isInPresentationMode) { + if (detail.focus) { + return; + } + } + delete detail.id; + delete detail.siblings; + const ids = siblings ? [id, ...siblings] : [id]; + for (const elementId of ids) { + const element = document.querySelector(`[data-element-id="${elementId}"]`); + if (element) { + element.dispatchEvent(new CustomEvent("updatefromsandbox", { + detail + })); + } else { + this._pdfDocument?.annotationStorage.setValue(elementId, detail); + } + } + } + async _dispatchPageOpen(pageNumber, initialize = false) { + const pdfDocument = this._pdfDocument, + visitedPages = this._visitedPages; + if (initialize) { + this._closeCapability = (0, _pdfjsLib.createPromiseCapability)(); + } + if (!this._closeCapability) { + return; + } + const pageView = this._pdfViewer.getPageView(pageNumber - 1); + if (pageView?.renderingState !== _ui_utils.RenderingStates.FINISHED) { + this._pageOpenPending.add(pageNumber); + return; + } + this._pageOpenPending.delete(pageNumber); + const actionsPromise = (async () => { + const actions = await (!visitedPages.has(pageNumber) ? pageView.pdfPage?.getJSActions() : null); + if (pdfDocument !== this._pdfDocument) { + return; + } + await this._scripting?.dispatchEventInSandbox({ + id: "page", + name: "PageOpen", + pageNumber, + actions + }); + })(); + visitedPages.set(pageNumber, actionsPromise); + } + async _dispatchPageClose(pageNumber) { + const pdfDocument = this._pdfDocument, + visitedPages = this._visitedPages; + if (!this._closeCapability) { + return; + } + if (this._pageOpenPending.has(pageNumber)) { + return; + } + const actionsPromise = visitedPages.get(pageNumber); + if (!actionsPromise) { + return; + } + visitedPages.set(pageNumber, null); + await actionsPromise; + if (pdfDocument !== this._pdfDocument) { + return; + } + await this._scripting?.dispatchEventInSandbox({ + id: "page", + name: "PageClose", + pageNumber + }); + } + async _getDocProperties() { + if (this._docPropertiesLookup) { + return this._docPropertiesLookup(this._pdfDocument); + } + throw new Error("_getDocProperties: Unable to lookup properties."); + } + _createScripting() { + this._destroyCapability = (0, _pdfjsLib.createPromiseCapability)(); + if (this._scripting) { + throw new Error("_createScripting: Scripting already exists."); + } + if (this._scriptingFactory) { + return this._scriptingFactory.createScripting({ + sandboxBundleSrc: this._sandboxBundleSrc + }); + } + throw new Error("_createScripting: Cannot create scripting."); + } + async _destroyScripting() { + if (!this._scripting) { + this._pdfDocument = null; + this._destroyCapability?.resolve(); + return; + } + if (this._closeCapability) { + await Promise.race([this._closeCapability.promise, new Promise(resolve => { + setTimeout(resolve, 1000); + })]).catch(reason => {}); + this._closeCapability = null; + } + this._pdfDocument = null; + try { + await this._scripting.destroySandbox(); + } catch (ex) {} + for (const [name, listener] of this._internalEvents) { + this._eventBus._off(name, listener); + } + this._internalEvents.clear(); + this._pageOpenPending.clear(); + this._visitedPages.clear(); + this._scripting = null; + this._ready = false; + this._destroyCapability?.resolve(); + } +} +exports.PDFScriptingManager = PDFScriptingManager; + +/***/ }), +/* 25 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFSidebar = void 0; +var _ui_utils = __webpack_require__(3); +const UI_NOTIFICATION_CLASS = "pdfSidebarNotification"; +class PDFSidebar { + constructor({ + elements, + pdfViewer, + pdfThumbnailViewer, + eventBus, + l10n + }) { + this.isOpen = false; + this.active = _ui_utils.SidebarView.THUMBS; + this.isInitialViewSet = false; + this.isInitialEventDispatched = false; + this.onToggled = null; + this.pdfViewer = pdfViewer; + this.pdfThumbnailViewer = pdfThumbnailViewer; + this.outerContainer = elements.outerContainer; + this.sidebarContainer = elements.sidebarContainer; + this.toggleButton = elements.toggleButton; + this.thumbnailButton = elements.thumbnailButton; + this.outlineButton = elements.outlineButton; + this.attachmentsButton = elements.attachmentsButton; + this.layersButton = elements.layersButton; + this.thumbnailView = elements.thumbnailView; + this.outlineView = elements.outlineView; + this.attachmentsView = elements.attachmentsView; + this.layersView = elements.layersView; + this._outlineOptionsContainer = elements.outlineOptionsContainer; + this._currentOutlineItemButton = elements.currentOutlineItemButton; + this.eventBus = eventBus; + this.l10n = l10n; + this.#addEventListeners(); + } + reset() { + this.isInitialViewSet = false; + this.isInitialEventDispatched = false; + this.#hideUINotification(true); + this.switchView(_ui_utils.SidebarView.THUMBS); + this.outlineButton.disabled = false; + this.attachmentsButton.disabled = false; + this.layersButton.disabled = false; + this._currentOutlineItemButton.disabled = true; + } + get visibleView() { + return this.isOpen ? this.active : _ui_utils.SidebarView.NONE; + } + setInitialView(view = _ui_utils.SidebarView.NONE) { + if (this.isInitialViewSet) { + return; + } + this.isInitialViewSet = true; + if (view === _ui_utils.SidebarView.NONE || view === _ui_utils.SidebarView.UNKNOWN) { + this.#dispatchEvent(); + return; + } + this.switchView(view, true); + if (!this.isInitialEventDispatched) { + this.#dispatchEvent(); + } + } + switchView(view, forceOpen = false) { + const isViewChanged = view !== this.active; + let shouldForceRendering = false; + switch (view) { + case _ui_utils.SidebarView.NONE: + if (this.isOpen) { + this.close(); + } + return; + case _ui_utils.SidebarView.THUMBS: + if (this.isOpen && isViewChanged) { + shouldForceRendering = true; + } + break; + case _ui_utils.SidebarView.OUTLINE: + if (this.outlineButton.disabled) { + return; + } + break; + case _ui_utils.SidebarView.ATTACHMENTS: + if (this.attachmentsButton.disabled) { + return; + } + break; + case _ui_utils.SidebarView.LAYERS: + if (this.layersButton.disabled) { + return; + } + break; + default: + console.error(`PDFSidebar.switchView: "${view}" is not a valid view.`); + return; + } + this.active = view; + const isThumbs = view === _ui_utils.SidebarView.THUMBS, + isOutline = view === _ui_utils.SidebarView.OUTLINE, + isAttachments = view === _ui_utils.SidebarView.ATTACHMENTS, + isLayers = view === _ui_utils.SidebarView.LAYERS; + this.thumbnailButton.classList.toggle("toggled", isThumbs); + this.outlineButton.classList.toggle("toggled", isOutline); + this.attachmentsButton.classList.toggle("toggled", isAttachments); + this.layersButton.classList.toggle("toggled", isLayers); + this.thumbnailButton.setAttribute("aria-checked", isThumbs); + this.outlineButton.setAttribute("aria-checked", isOutline); + this.attachmentsButton.setAttribute("aria-checked", isAttachments); + this.layersButton.setAttribute("aria-checked", isLayers); + this.thumbnailView.classList.toggle("hidden", !isThumbs); + this.outlineView.classList.toggle("hidden", !isOutline); + this.attachmentsView.classList.toggle("hidden", !isAttachments); + this.layersView.classList.toggle("hidden", !isLayers); + this._outlineOptionsContainer.classList.toggle("hidden", !isOutline); + if (forceOpen && !this.isOpen) { + this.open(); + return; + } + if (shouldForceRendering) { + this.#updateThumbnailViewer(); + this.#forceRendering(); + } + if (isViewChanged) { + this.#dispatchEvent(); + } + } + open() { + if (this.isOpen) { + return; + } + this.isOpen = true; + this.toggleButton.classList.add("toggled"); + this.toggleButton.setAttribute("aria-expanded", "true"); + this.outerContainer.classList.add("sidebarMoving", "sidebarOpen"); + if (this.active === _ui_utils.SidebarView.THUMBS) { + this.#updateThumbnailViewer(); + } + this.#forceRendering(); + this.#dispatchEvent(); + this.#hideUINotification(); + } + close() { + if (!this.isOpen) { + return; + } + this.isOpen = false; + this.toggleButton.classList.remove("toggled"); + this.toggleButton.setAttribute("aria-expanded", "false"); + this.outerContainer.classList.add("sidebarMoving"); + this.outerContainer.classList.remove("sidebarOpen"); + this.#forceRendering(); + this.#dispatchEvent(); + } + toggle() { + if (this.isOpen) { + this.close(); + } else { + this.open(); + } + } + #dispatchEvent() { + if (this.isInitialViewSet && !this.isInitialEventDispatched) { + this.isInitialEventDispatched = true; + } + this.eventBus.dispatch("sidebarviewchanged", { + source: this, + view: this.visibleView + }); + } + #forceRendering() { + if (this.onToggled) { + this.onToggled(); + } else { + this.pdfViewer.forceRendering(); + this.pdfThumbnailViewer.forceRendering(); + } + } + #updateThumbnailViewer() { + const { + pdfViewer, + pdfThumbnailViewer + } = this; + const pagesCount = pdfViewer.pagesCount; + for (let pageIndex = 0; pageIndex < pagesCount; pageIndex++) { + const pageView = pdfViewer.getPageView(pageIndex); + if (pageView?.renderingState === _ui_utils.RenderingStates.FINISHED) { + const thumbnailView = pdfThumbnailViewer.getThumbnail(pageIndex); + thumbnailView.setImage(pageView); + } + } + pdfThumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber); + } + #showUINotification() { + this.toggleButton.setAttribute("data-l10n-id", "toggle_sidebar_notification2"); + this.l10n.translate(this.toggleButton); + if (!this.isOpen) { + this.toggleButton.classList.add(UI_NOTIFICATION_CLASS); + } + } + #hideUINotification(reset = false) { + if (this.isOpen || reset) { + this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS); + } + if (reset) { + this.toggleButton.setAttribute("data-l10n-id", "toggle_sidebar"); + this.l10n.translate(this.toggleButton); + } + } + #addEventListeners() { + this.sidebarContainer.addEventListener("transitionend", evt => { + if (evt.target === this.sidebarContainer) { + this.outerContainer.classList.remove("sidebarMoving"); + } + }); + this.toggleButton.addEventListener("click", () => { + this.toggle(); + }); + this.thumbnailButton.addEventListener("click", () => { + this.switchView(_ui_utils.SidebarView.THUMBS); + }); + this.outlineButton.addEventListener("click", () => { + this.switchView(_ui_utils.SidebarView.OUTLINE); + }); + this.outlineButton.addEventListener("dblclick", () => { + this.eventBus.dispatch("toggleoutlinetree", { + source: this + }); + }); + this.attachmentsButton.addEventListener("click", () => { + this.switchView(_ui_utils.SidebarView.ATTACHMENTS); + }); + this.layersButton.addEventListener("click", () => { + this.switchView(_ui_utils.SidebarView.LAYERS); + }); + this.layersButton.addEventListener("dblclick", () => { + this.eventBus.dispatch("resetlayers", { + source: this + }); + }); + this._currentOutlineItemButton.addEventListener("click", () => { + this.eventBus.dispatch("currentoutlineitem", { + source: this + }); + }); + const onTreeLoaded = (count, button, view) => { + button.disabled = !count; + if (count) { + this.#showUINotification(); + } else if (this.active === view) { + this.switchView(_ui_utils.SidebarView.THUMBS); + } + }; + this.eventBus._on("outlineloaded", evt => { + onTreeLoaded(evt.outlineCount, this.outlineButton, _ui_utils.SidebarView.OUTLINE); + evt.currentOutlineItemPromise.then(enabled => { + if (!this.isInitialViewSet) { + return; + } + this._currentOutlineItemButton.disabled = !enabled; + }); + }); + this.eventBus._on("attachmentsloaded", evt => { + onTreeLoaded(evt.attachmentsCount, this.attachmentsButton, _ui_utils.SidebarView.ATTACHMENTS); + }); + this.eventBus._on("layersloaded", evt => { + onTreeLoaded(evt.layersCount, this.layersButton, _ui_utils.SidebarView.LAYERS); + }); + this.eventBus._on("presentationmodechanged", evt => { + if (evt.state === _ui_utils.PresentationModeState.NORMAL && this.visibleView === _ui_utils.SidebarView.THUMBS) { + this.#updateThumbnailViewer(); + } + }); + } +} +exports.PDFSidebar = PDFSidebar; + +/***/ }), +/* 26 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFSidebarResizer = void 0; +var _ui_utils = __webpack_require__(3); +const SIDEBAR_WIDTH_VAR = "--sidebar-width"; +const SIDEBAR_MIN_WIDTH = 200; +const SIDEBAR_RESIZING_CLASS = "sidebarResizing"; +class PDFSidebarResizer { + constructor(options, eventBus, l10n) { + this.isRTL = false; + this.sidebarOpen = false; + this._width = null; + this._outerContainerWidth = null; + this._boundEvents = Object.create(null); + this.outerContainer = options.outerContainer; + this.resizer = options.resizer; + this.eventBus = eventBus; + l10n.getDirection().then(dir => { + this.isRTL = dir === "rtl"; + }); + this._addEventListeners(); + } + get outerContainerWidth() { + return this._outerContainerWidth ||= this.outerContainer.clientWidth; + } + _updateWidth(width = 0) { + const maxWidth = Math.floor(this.outerContainerWidth / 2); + if (width > maxWidth) { + width = maxWidth; + } + if (width < SIDEBAR_MIN_WIDTH) { + width = SIDEBAR_MIN_WIDTH; + } + if (width === this._width) { + return false; + } + this._width = width; + _ui_utils.docStyle.setProperty(SIDEBAR_WIDTH_VAR, `${width}px`); + return true; + } + _mouseMove(evt) { + let width = evt.clientX; + if (this.isRTL) { + width = this.outerContainerWidth - width; + } + this._updateWidth(width); + } + _mouseUp(evt) { + this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS); + this.eventBus.dispatch("resize", { + source: this + }); + const _boundEvents = this._boundEvents; + window.removeEventListener("mousemove", _boundEvents.mouseMove); + window.removeEventListener("mouseup", _boundEvents.mouseUp); + } + _addEventListeners() { + const _boundEvents = this._boundEvents; + _boundEvents.mouseMove = this._mouseMove.bind(this); + _boundEvents.mouseUp = this._mouseUp.bind(this); + this.resizer.addEventListener("mousedown", evt => { + if (evt.button !== 0) { + return; + } + this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS); + window.addEventListener("mousemove", _boundEvents.mouseMove); + window.addEventListener("mouseup", _boundEvents.mouseUp); + }); + this.eventBus._on("sidebarviewchanged", evt => { + this.sidebarOpen = !!evt?.view; + }); + this.eventBus._on("resize", evt => { + if (evt?.source !== window) { + return; + } + this._outerContainerWidth = null; + if (!this._width) { + return; + } + if (!this.sidebarOpen) { + this._updateWidth(this._width); + return; + } + this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS); + const updated = this._updateWidth(this._width); + Promise.resolve().then(() => { + this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS); + if (updated) { + this.eventBus.dispatch("resize", { + source: this + }); + } + }); + }); + } +} +exports.PDFSidebarResizer = PDFSidebarResizer; + +/***/ }), +/* 27 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFThumbnailViewer = void 0; +var _ui_utils = __webpack_require__(3); +var _pdf_thumbnail_view = __webpack_require__(28); +const THUMBNAIL_SCROLL_MARGIN = -19; +const THUMBNAIL_SELECTED_CLASS = "selected"; +class PDFThumbnailViewer { + constructor({ + container, + linkService, + renderingQueue, + l10n, + pageColors + }) { + this.container = container; + this.linkService = linkService; + this.renderingQueue = renderingQueue; + this.l10n = l10n; + this.pageColors = pageColors || null; + if (this.pageColors && !(CSS.supports("color", this.pageColors.background) && CSS.supports("color", this.pageColors.foreground))) { + if (this.pageColors.background || this.pageColors.foreground) { + console.warn("PDFThumbnailViewer: Ignoring `pageColors`-option, since the browser doesn't support the values used."); + } + this.pageColors = null; + } + this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdated.bind(this)); + this._resetView(); + } + _scrollUpdated() { + this.renderingQueue.renderHighestPriority(); + } + getThumbnail(index) { + return this._thumbnails[index]; + } + _getVisibleThumbs() { + return (0, _ui_utils.getVisibleElements)({ + scrollEl: this.container, + views: this._thumbnails + }); + } + scrollThumbnailIntoView(pageNumber) { + if (!this.pdfDocument) { + return; + } + const thumbnailView = this._thumbnails[pageNumber - 1]; + if (!thumbnailView) { + console.error('scrollThumbnailIntoView: Invalid "pageNumber" parameter.'); + return; + } + if (pageNumber !== this._currentPageNumber) { + const prevThumbnailView = this._thumbnails[this._currentPageNumber - 1]; + prevThumbnailView.div.classList.remove(THUMBNAIL_SELECTED_CLASS); + thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS); + } + const { + first, + last, + views + } = this._getVisibleThumbs(); + if (views.length > 0) { + let shouldScroll = false; + if (pageNumber <= first.id || pageNumber >= last.id) { + shouldScroll = true; + } else { + for (const { + id, + percent + } of views) { + if (id !== pageNumber) { + continue; + } + shouldScroll = percent < 100; + break; + } + } + if (shouldScroll) { + (0, _ui_utils.scrollIntoView)(thumbnailView.div, { + top: THUMBNAIL_SCROLL_MARGIN + }); + } + } + this._currentPageNumber = pageNumber; + } + get pagesRotation() { + return this._pagesRotation; + } + set pagesRotation(rotation) { + if (!(0, _ui_utils.isValidRotation)(rotation)) { + throw new Error("Invalid thumbnails rotation angle."); + } + if (!this.pdfDocument) { + return; + } + if (this._pagesRotation === rotation) { + return; + } + this._pagesRotation = rotation; + const updateArgs = { + rotation + }; + for (const thumbnail of this._thumbnails) { + thumbnail.update(updateArgs); + } + } + cleanup() { + for (const thumbnail of this._thumbnails) { + if (thumbnail.renderingState !== _ui_utils.RenderingStates.FINISHED) { + thumbnail.reset(); + } + } + _pdf_thumbnail_view.TempImageFactory.destroyCanvas(); + } + _resetView() { + this._thumbnails = []; + this._currentPageNumber = 1; + this._pageLabels = null; + this._pagesRotation = 0; + this.container.textContent = ""; + } + setDocument(pdfDocument) { + if (this.pdfDocument) { + this._cancelRendering(); + this._resetView(); + } + this.pdfDocument = pdfDocument; + if (!pdfDocument) { + return; + } + const firstPagePromise = pdfDocument.getPage(1); + const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig(); + firstPagePromise.then(firstPdfPage => { + const pagesCount = pdfDocument.numPages; + const viewport = firstPdfPage.getViewport({ + scale: 1 + }); + for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) { + const thumbnail = new _pdf_thumbnail_view.PDFThumbnailView({ + container: this.container, + id: pageNum, + defaultViewport: viewport.clone(), + optionalContentConfigPromise, + linkService: this.linkService, + renderingQueue: this.renderingQueue, + l10n: this.l10n, + pageColors: this.pageColors + }); + this._thumbnails.push(thumbnail); + } + this._thumbnails[0]?.setPdfPage(firstPdfPage); + const thumbnailView = this._thumbnails[this._currentPageNumber - 1]; + thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS); + }).catch(reason => { + console.error("Unable to initialize thumbnail viewer", reason); + }); + } + _cancelRendering() { + for (const thumbnail of this._thumbnails) { + thumbnail.cancelRendering(); + } + } + setPageLabels(labels) { + if (!this.pdfDocument) { + return; + } + if (!labels) { + this._pageLabels = null; + } else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) { + this._pageLabels = null; + console.error("PDFThumbnailViewer_setPageLabels: Invalid page labels."); + } else { + this._pageLabels = labels; + } + for (let i = 0, ii = this._thumbnails.length; i < ii; i++) { + this._thumbnails[i].setPageLabel(this._pageLabels?.[i] ?? null); + } + } + async #ensurePdfPageLoaded(thumbView) { + if (thumbView.pdfPage) { + return thumbView.pdfPage; + } + try { + const pdfPage = await this.pdfDocument.getPage(thumbView.id); + if (!thumbView.pdfPage) { + thumbView.setPdfPage(pdfPage); + } + return pdfPage; + } catch (reason) { + console.error("Unable to get page for thumb view", reason); + return null; + } + } + #getScrollAhead(visible) { + if (visible.first?.id === 1) { + return true; + } else if (visible.last?.id === this._thumbnails.length) { + return false; + } + return this.scroll.down; + } + forceRendering() { + const visibleThumbs = this._getVisibleThumbs(); + const scrollAhead = this.#getScrollAhead(visibleThumbs); + const thumbView = this.renderingQueue.getHighestPriority(visibleThumbs, this._thumbnails, scrollAhead); + if (thumbView) { + this.#ensurePdfPageLoaded(thumbView).then(() => { + this.renderingQueue.renderView(thumbView); + }); + return true; + } + return false; + } +} +exports.PDFThumbnailViewer = PDFThumbnailViewer; + +/***/ }), +/* 28 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TempImageFactory = exports.PDFThumbnailView = void 0; +var _ui_utils = __webpack_require__(3); +var _pdfjsLib = __webpack_require__(4); +const DRAW_UPSCALE_FACTOR = 2; +const MAX_NUM_SCALING_STEPS = 3; +const THUMBNAIL_CANVAS_BORDER_WIDTH = 1; +const THUMBNAIL_WIDTH = 98; +class TempImageFactory { + static #tempCanvas = null; + static getCanvas(width, height) { + const tempCanvas = this.#tempCanvas ||= document.createElement("canvas"); + tempCanvas.width = width; + tempCanvas.height = height; + const ctx = tempCanvas.getContext("2d", { + alpha: false + }); + ctx.save(); + ctx.fillStyle = "rgb(255, 255, 255)"; + ctx.fillRect(0, 0, width, height); + ctx.restore(); + return [tempCanvas, tempCanvas.getContext("2d")]; + } + static destroyCanvas() { + const tempCanvas = this.#tempCanvas; + if (tempCanvas) { + tempCanvas.width = 0; + tempCanvas.height = 0; + } + this.#tempCanvas = null; + } +} +exports.TempImageFactory = TempImageFactory; +class PDFThumbnailView { + constructor({ + container, + id, + defaultViewport, + optionalContentConfigPromise, + linkService, + renderingQueue, + l10n, + pageColors + }) { + this.id = id; + this.renderingId = "thumbnail" + id; + this.pageLabel = null; + this.pdfPage = null; + this.rotation = 0; + this.viewport = defaultViewport; + this.pdfPageRotate = defaultViewport.rotation; + this._optionalContentConfigPromise = optionalContentConfigPromise || null; + this.pageColors = pageColors || null; + this.linkService = linkService; + this.renderingQueue = renderingQueue; + this.renderTask = null; + this.renderingState = _ui_utils.RenderingStates.INITIAL; + this.resume = null; + const pageWidth = this.viewport.width, + pageHeight = this.viewport.height, + pageRatio = pageWidth / pageHeight; + this.canvasWidth = THUMBNAIL_WIDTH; + this.canvasHeight = this.canvasWidth / pageRatio | 0; + this.scale = this.canvasWidth / pageWidth; + this.l10n = l10n; + const anchor = document.createElement("a"); + anchor.href = linkService.getAnchorUrl("#page=" + id); + this._thumbPageTitle.then(msg => { + anchor.title = msg; + }); + anchor.onclick = function () { + linkService.goToPage(id); + return false; + }; + this.anchor = anchor; + const div = document.createElement("div"); + div.className = "thumbnail"; + div.setAttribute("data-page-number", this.id); + this.div = div; + const ring = document.createElement("div"); + ring.className = "thumbnailSelectionRing"; + const borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH; + ring.style.width = this.canvasWidth + borderAdjustment + "px"; + ring.style.height = this.canvasHeight + borderAdjustment + "px"; + this.ring = ring; + div.append(ring); + anchor.append(div); + container.append(anchor); + } + setPdfPage(pdfPage) { + this.pdfPage = pdfPage; + this.pdfPageRotate = pdfPage.rotate; + const totalRotation = (this.rotation + this.pdfPageRotate) % 360; + this.viewport = pdfPage.getViewport({ + scale: 1, + rotation: totalRotation + }); + this.reset(); + } + reset() { + this.cancelRendering(); + this.renderingState = _ui_utils.RenderingStates.INITIAL; + const pageWidth = this.viewport.width, + pageHeight = this.viewport.height, + pageRatio = pageWidth / pageHeight; + this.canvasHeight = this.canvasWidth / pageRatio | 0; + this.scale = this.canvasWidth / pageWidth; + this.div.removeAttribute("data-loaded"); + const ring = this.ring; + ring.textContent = ""; + const borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH; + ring.style.width = this.canvasWidth + borderAdjustment + "px"; + ring.style.height = this.canvasHeight + borderAdjustment + "px"; + if (this.canvas) { + this.canvas.width = 0; + this.canvas.height = 0; + delete this.canvas; + } + if (this.image) { + this.image.removeAttribute("src"); + delete this.image; + } + } + update({ + rotation = null + }) { + if (typeof rotation === "number") { + this.rotation = rotation; + } + const totalRotation = (this.rotation + this.pdfPageRotate) % 360; + this.viewport = this.viewport.clone({ + scale: 1, + rotation: totalRotation + }); + this.reset(); + } + cancelRendering() { + if (this.renderTask) { + this.renderTask.cancel(); + this.renderTask = null; + } + this.resume = null; + } + _getPageDrawContext(upscaleFactor = 1) { + const canvas = document.createElement("canvas"); + const ctx = canvas.getContext("2d", { + alpha: false + }); + const outputScale = new _ui_utils.OutputScale(); + canvas.width = upscaleFactor * this.canvasWidth * outputScale.sx | 0; + canvas.height = upscaleFactor * this.canvasHeight * outputScale.sy | 0; + const transform = outputScale.scaled ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0] : null; + return { + ctx, + canvas, + transform + }; + } + _convertCanvasToImage(canvas) { + if (this.renderingState !== _ui_utils.RenderingStates.FINISHED) { + throw new Error("_convertCanvasToImage: Rendering has not finished."); + } + const reducedCanvas = this._reduceImage(canvas); + const image = document.createElement("img"); + image.className = "thumbnailImage"; + this._thumbPageCanvas.then(msg => { + image.setAttribute("aria-label", msg); + }); + image.style.width = this.canvasWidth + "px"; + image.style.height = this.canvasHeight + "px"; + image.src = reducedCanvas.toDataURL(); + this.image = image; + this.div.setAttribute("data-loaded", true); + this.ring.append(image); + reducedCanvas.width = 0; + reducedCanvas.height = 0; + } + draw() { + if (this.renderingState !== _ui_utils.RenderingStates.INITIAL) { + console.error("Must be in new state before drawing"); + return Promise.resolve(); + } + const { + pdfPage + } = this; + if (!pdfPage) { + this.renderingState = _ui_utils.RenderingStates.FINISHED; + return Promise.reject(new Error("pdfPage is not loaded")); + } + this.renderingState = _ui_utils.RenderingStates.RUNNING; + const finishRenderTask = async (error = null) => { + if (renderTask === this.renderTask) { + this.renderTask = null; + } + if (error instanceof _pdfjsLib.RenderingCancelledException) { + return; + } + this.renderingState = _ui_utils.RenderingStates.FINISHED; + this._convertCanvasToImage(canvas); + if (error) { + throw error; + } + }; + const { + ctx, + canvas, + transform + } = this._getPageDrawContext(DRAW_UPSCALE_FACTOR); + const drawViewport = this.viewport.clone({ + scale: DRAW_UPSCALE_FACTOR * this.scale + }); + const renderContinueCallback = cont => { + if (!this.renderingQueue.isHighestPriority(this)) { + this.renderingState = _ui_utils.RenderingStates.PAUSED; + this.resume = () => { + this.renderingState = _ui_utils.RenderingStates.RUNNING; + cont(); + }; + return; + } + cont(); + }; + const renderContext = { + canvasContext: ctx, + transform, + viewport: drawViewport, + optionalContentConfigPromise: this._optionalContentConfigPromise, + pageColors: this.pageColors + }; + const renderTask = this.renderTask = pdfPage.render(renderContext); + renderTask.onContinue = renderContinueCallback; + const resultPromise = renderTask.promise.then(function () { + return finishRenderTask(null); + }, function (error) { + return finishRenderTask(error); + }); + resultPromise.finally(() => { + canvas.width = 0; + canvas.height = 0; + const pageCached = this.linkService.isPageCached(this.id); + if (!pageCached) { + this.pdfPage?.cleanup(); + } + }); + return resultPromise; + } + setImage(pageView) { + if (this.renderingState !== _ui_utils.RenderingStates.INITIAL) { + return; + } + const { + thumbnailCanvas: canvas, + pdfPage, + scale + } = pageView; + if (!canvas) { + return; + } + if (!this.pdfPage) { + this.setPdfPage(pdfPage); + } + if (scale < this.scale) { + return; + } + this.renderingState = _ui_utils.RenderingStates.FINISHED; + this._convertCanvasToImage(canvas); + } + _reduceImage(img) { + const { + ctx, + canvas + } = this._getPageDrawContext(); + if (img.width <= 2 * canvas.width) { + ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, canvas.width, canvas.height); + return canvas; + } + let reducedWidth = canvas.width << MAX_NUM_SCALING_STEPS; + let reducedHeight = canvas.height << MAX_NUM_SCALING_STEPS; + const [reducedImage, reducedImageCtx] = TempImageFactory.getCanvas(reducedWidth, reducedHeight); + while (reducedWidth > img.width || reducedHeight > img.height) { + reducedWidth >>= 1; + reducedHeight >>= 1; + } + reducedImageCtx.drawImage(img, 0, 0, img.width, img.height, 0, 0, reducedWidth, reducedHeight); + while (reducedWidth > 2 * canvas.width) { + reducedImageCtx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, reducedWidth >> 1, reducedHeight >> 1); + reducedWidth >>= 1; + reducedHeight >>= 1; + } + ctx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, canvas.width, canvas.height); + return canvas; + } + get _thumbPageTitle() { + return this.l10n.get("thumb_page_title", { + page: this.pageLabel ?? this.id + }); + } + get _thumbPageCanvas() { + return this.l10n.get("thumb_page_canvas", { + page: this.pageLabel ?? this.id + }); + } + setPageLabel(label) { + this.pageLabel = typeof label === "string" ? label : null; + this._thumbPageTitle.then(msg => { + this.anchor.title = msg; + }); + if (this.renderingState !== _ui_utils.RenderingStates.FINISHED) { + return; + } + this._thumbPageCanvas.then(msg => { + this.image?.setAttribute("aria-label", msg); + }); + } +} +exports.PDFThumbnailView = PDFThumbnailView; + +/***/ }), +/* 29 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PagesCountLimit = exports.PDFViewer = exports.PDFPageViewBuffer = void 0; +var _pdfjsLib = __webpack_require__(4); +var _ui_utils = __webpack_require__(3); +var _l10n_utils = __webpack_require__(30); +var _pdf_page_view = __webpack_require__(31); +var _pdf_rendering_queue = __webpack_require__(23); +var _pdf_link_service = __webpack_require__(7); +const DEFAULT_CACHE_SIZE = 10; +const ENABLE_PERMISSIONS_CLASS = "enablePermissions"; +const PagesCountLimit = { + FORCE_SCROLL_MODE_PAGE: 15000, + FORCE_LAZY_PAGE_INIT: 7500, + PAUSE_EAGER_PAGE_INIT: 250 +}; +exports.PagesCountLimit = PagesCountLimit; +function isValidAnnotationEditorMode(mode) { + return Object.values(_pdfjsLib.AnnotationEditorType).includes(mode) && mode !== _pdfjsLib.AnnotationEditorType.DISABLE; +} +class PDFPageViewBuffer { + #buf = new Set(); + #size = 0; + constructor(size) { + this.#size = size; + } + push(view) { + const buf = this.#buf; + if (buf.has(view)) { + buf.delete(view); + } + buf.add(view); + if (buf.size > this.#size) { + this.#destroyFirstView(); + } + } + resize(newSize, idsToKeep = null) { + this.#size = newSize; + const buf = this.#buf; + if (idsToKeep) { + const ii = buf.size; + let i = 1; + for (const view of buf) { + if (idsToKeep.has(view.id)) { + buf.delete(view); + buf.add(view); + } + if (++i > ii) { + break; + } + } + } + while (buf.size > this.#size) { + this.#destroyFirstView(); + } + } + has(view) { + return this.#buf.has(view); + } + [Symbol.iterator]() { + return this.#buf.keys(); + } + #destroyFirstView() { + const firstView = this.#buf.keys().next().value; + firstView?.destroy(); + this.#buf.delete(firstView); + } +} +exports.PDFPageViewBuffer = PDFPageViewBuffer; +class PDFViewer { + #buffer = null; + #annotationEditorMode = _pdfjsLib.AnnotationEditorType.NONE; + #annotationEditorUIManager = null; + #annotationMode = _pdfjsLib.AnnotationMode.ENABLE_FORMS; + #containerTopLeft = null; + #enablePermissions = false; + #previousContainerHeight = 0; + #resizeObserver = new ResizeObserver(this.#resizeObserverCallback.bind(this)); + #scrollModePageState = null; + #onVisibilityChange = null; + #scaleTimeoutId = null; + constructor(options) { + const viewerVersion = '3.4.120'; + if (_pdfjsLib.version !== viewerVersion) { + throw new Error(`The API version "${_pdfjsLib.version}" does not match the Viewer version "${viewerVersion}".`); + } + this.container = options.container; + this.viewer = options.viewer || options.container.firstElementChild; + if (this.container?.tagName !== "DIV" || this.viewer?.tagName !== "DIV") { + throw new Error("Invalid `container` and/or `viewer` option."); + } + if (this.container.offsetParent && getComputedStyle(this.container).position !== "absolute") { + throw new Error("The `container` must be absolutely positioned."); + } + this.#resizeObserver.observe(this.container); + this.eventBus = options.eventBus; + this.linkService = options.linkService || new _pdf_link_service.SimpleLinkService(); + this.downloadManager = options.downloadManager || null; + this.findController = options.findController || null; + this._scriptingManager = options.scriptingManager || null; + this.textLayerMode = options.textLayerMode ?? _ui_utils.TextLayerMode.ENABLE; + this.#annotationMode = options.annotationMode ?? _pdfjsLib.AnnotationMode.ENABLE_FORMS; + this.#annotationEditorMode = options.annotationEditorMode ?? _pdfjsLib.AnnotationEditorType.NONE; + this.imageResourcesPath = options.imageResourcesPath || ""; + this.enablePrintAutoRotate = options.enablePrintAutoRotate || false; + this.removePageBorders = options.removePageBorders || false; + this.renderer = options.renderer || _ui_utils.RendererType.CANVAS; + this.useOnlyCssZoom = options.useOnlyCssZoom || false; + this.isOffscreenCanvasSupported = options.isOffscreenCanvasSupported ?? true; + this.maxCanvasPixels = options.maxCanvasPixels; + this.l10n = options.l10n || _l10n_utils.NullL10n; + this.#enablePermissions = options.enablePermissions || false; + this.pageColors = options.pageColors || null; + if (this.pageColors && !(CSS.supports("color", this.pageColors.background) && CSS.supports("color", this.pageColors.foreground))) { + if (this.pageColors.background || this.pageColors.foreground) { + console.warn("PDFViewer: Ignoring `pageColors`-option, since the browser doesn't support the values used."); + } + this.pageColors = null; + } + this.defaultRenderingQueue = !options.renderingQueue; + if (this.defaultRenderingQueue) { + this.renderingQueue = new _pdf_rendering_queue.PDFRenderingQueue(); + this.renderingQueue.setViewer(this); + } else { + this.renderingQueue = options.renderingQueue; + } + this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdate.bind(this)); + this.presentationModeState = _ui_utils.PresentationModeState.UNKNOWN; + this._onBeforeDraw = this._onAfterDraw = null; + this._resetView(); + if (this.removePageBorders) { + this.viewer.classList.add("removePageBorders"); + } + this.#updateContainerHeightCss(); + } + get pagesCount() { + return this._pages.length; + } + getPageView(index) { + return this._pages[index]; + } + get pageViewsReady() { + if (!this._pagesCapability.settled) { + return false; + } + return this._pages.every(function (pageView) { + return pageView?.pdfPage; + }); + } + get renderForms() { + return this.#annotationMode === _pdfjsLib.AnnotationMode.ENABLE_FORMS; + } + get enableScripting() { + return !!this._scriptingManager; + } + get currentPageNumber() { + return this._currentPageNumber; + } + set currentPageNumber(val) { + if (!Number.isInteger(val)) { + throw new Error("Invalid page number."); + } + if (!this.pdfDocument) { + return; + } + if (!this._setCurrentPageNumber(val, true)) { + console.error(`currentPageNumber: "${val}" is not a valid page.`); + } + } + _setCurrentPageNumber(val, resetCurrentPageView = false) { + if (this._currentPageNumber === val) { + if (resetCurrentPageView) { + this.#resetCurrentPageView(); + } + return true; + } + if (!(0 < val && val <= this.pagesCount)) { + return false; + } + const previous = this._currentPageNumber; + this._currentPageNumber = val; + this.eventBus.dispatch("pagechanging", { + source: this, + pageNumber: val, + pageLabel: this._pageLabels?.[val - 1] ?? null, + previous + }); + if (resetCurrentPageView) { + this.#resetCurrentPageView(); + } + return true; + } + get currentPageLabel() { + return this._pageLabels?.[this._currentPageNumber - 1] ?? null; + } + set currentPageLabel(val) { + if (!this.pdfDocument) { + return; + } + let page = val | 0; + if (this._pageLabels) { + const i = this._pageLabels.indexOf(val); + if (i >= 0) { + page = i + 1; + } + } + if (!this._setCurrentPageNumber(page, true)) { + console.error(`currentPageLabel: "${val}" is not a valid page.`); + } + } + get currentScale() { + return this._currentScale !== _ui_utils.UNKNOWN_SCALE ? this._currentScale : _ui_utils.DEFAULT_SCALE; + } + set currentScale(val) { + if (isNaN(val)) { + throw new Error("Invalid numeric scale."); + } + if (!this.pdfDocument) { + return; + } + this._setScale(val, { + noScroll: false + }); + } + get currentScaleValue() { + return this._currentScaleValue; + } + set currentScaleValue(val) { + if (!this.pdfDocument) { + return; + } + this._setScale(val, { + noScroll: false + }); + } + get pagesRotation() { + return this._pagesRotation; + } + set pagesRotation(rotation) { + if (!(0, _ui_utils.isValidRotation)(rotation)) { + throw new Error("Invalid pages rotation angle."); + } + if (!this.pdfDocument) { + return; + } + rotation %= 360; + if (rotation < 0) { + rotation += 360; + } + if (this._pagesRotation === rotation) { + return; + } + this._pagesRotation = rotation; + const pageNumber = this._currentPageNumber; + this.refresh(true, { + rotation + }); + if (this._currentScaleValue) { + this._setScale(this._currentScaleValue, { + noScroll: true + }); + } + this.eventBus.dispatch("rotationchanging", { + source: this, + pagesRotation: rotation, + pageNumber + }); + if (this.defaultRenderingQueue) { + this.update(); + } + } + get firstPagePromise() { + return this.pdfDocument ? this._firstPageCapability.promise : null; + } + get onePageRendered() { + return this.pdfDocument ? this._onePageRenderedCapability.promise : null; + } + get pagesPromise() { + return this.pdfDocument ? this._pagesCapability.promise : null; + } + #layerProperties() { + const self = this; + return { + get annotationEditorUIManager() { + return self.#annotationEditorUIManager; + }, + get annotationStorage() { + return self.pdfDocument?.annotationStorage; + }, + get downloadManager() { + return self.downloadManager; + }, + get enableScripting() { + return !!self._scriptingManager; + }, + get fieldObjectsPromise() { + return self.pdfDocument?.getFieldObjects(); + }, + get findController() { + return self.findController; + }, + get hasJSActionsPromise() { + return self.pdfDocument?.hasJSActions(); + }, + get linkService() { + return self.linkService; + } + }; + } + #initializePermissions(permissions) { + const params = { + annotationEditorMode: this.#annotationEditorMode, + annotationMode: this.#annotationMode, + textLayerMode: this.textLayerMode + }; + if (!permissions) { + return params; + } + if (!permissions.includes(_pdfjsLib.PermissionFlag.COPY)) { + this.viewer.classList.add(ENABLE_PERMISSIONS_CLASS); + } + if (!permissions.includes(_pdfjsLib.PermissionFlag.MODIFY_CONTENTS)) { + params.annotationEditorMode = _pdfjsLib.AnnotationEditorType.DISABLE; + } + if (!permissions.includes(_pdfjsLib.PermissionFlag.MODIFY_ANNOTATIONS) && !permissions.includes(_pdfjsLib.PermissionFlag.FILL_INTERACTIVE_FORMS) && this.#annotationMode === _pdfjsLib.AnnotationMode.ENABLE_FORMS) { + params.annotationMode = _pdfjsLib.AnnotationMode.ENABLE; + } + return params; + } + #onePageRenderedOrForceFetch() { + if (document.visibilityState === "hidden" || !this.container.offsetParent || this._getVisiblePages().views.length === 0) { + return Promise.resolve(); + } + const visibilityChangePromise = new Promise(resolve => { + this.#onVisibilityChange = () => { + if (document.visibilityState !== "hidden") { + return; + } + resolve(); + document.removeEventListener("visibilitychange", this.#onVisibilityChange); + this.#onVisibilityChange = null; + }; + document.addEventListener("visibilitychange", this.#onVisibilityChange); + }); + return Promise.race([this._onePageRenderedCapability.promise, visibilityChangePromise]); + } + setDocument(pdfDocument) { + if (this.pdfDocument) { + this.eventBus.dispatch("pagesdestroy", { + source: this + }); + this._cancelRendering(); + this._resetView(); + this.findController?.setDocument(null); + this._scriptingManager?.setDocument(null); + if (this.#annotationEditorUIManager) { + this.#annotationEditorUIManager.destroy(); + this.#annotationEditorUIManager = null; + } + } + this.pdfDocument = pdfDocument; + if (!pdfDocument) { + return; + } + const pagesCount = pdfDocument.numPages; + const firstPagePromise = pdfDocument.getPage(1); + const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig(); + const permissionsPromise = this.#enablePermissions ? pdfDocument.getPermissions() : Promise.resolve(); + if (pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE) { + console.warn("Forcing PAGE-scrolling for performance reasons, given the length of the document."); + const mode = this._scrollMode = _ui_utils.ScrollMode.PAGE; + this.eventBus.dispatch("scrollmodechanged", { + source: this, + mode + }); + } + this._pagesCapability.promise.then(() => { + this.eventBus.dispatch("pagesloaded", { + source: this, + pagesCount + }); + }, () => {}); + this._onBeforeDraw = evt => { + const pageView = this._pages[evt.pageNumber - 1]; + if (!pageView) { + return; + } + this.#buffer.push(pageView); + }; + this.eventBus._on("pagerender", this._onBeforeDraw); + this._onAfterDraw = evt => { + if (evt.cssTransform || this._onePageRenderedCapability.settled) { + return; + } + this._onePageRenderedCapability.resolve({ + timestamp: evt.timestamp + }); + this.eventBus._off("pagerendered", this._onAfterDraw); + this._onAfterDraw = null; + if (this.#onVisibilityChange) { + document.removeEventListener("visibilitychange", this.#onVisibilityChange); + this.#onVisibilityChange = null; + } + }; + this.eventBus._on("pagerendered", this._onAfterDraw); + Promise.all([firstPagePromise, permissionsPromise]).then(([firstPdfPage, permissions]) => { + if (pdfDocument !== this.pdfDocument) { + return; + } + this._firstPageCapability.resolve(firstPdfPage); + this._optionalContentConfigPromise = optionalContentConfigPromise; + const { + annotationEditorMode, + annotationMode, + textLayerMode + } = this.#initializePermissions(permissions); + if (annotationEditorMode !== _pdfjsLib.AnnotationEditorType.DISABLE) { + const mode = annotationEditorMode; + if (pdfDocument.isPureXfa) { + console.warn("Warning: XFA-editing is not implemented."); + } else if (isValidAnnotationEditorMode(mode)) { + this.#annotationEditorUIManager = new _pdfjsLib.AnnotationEditorUIManager(this.container, this.eventBus, pdfDocument?.annotationStorage); + if (mode !== _pdfjsLib.AnnotationEditorType.NONE) { + this.#annotationEditorUIManager.updateMode(mode); + } + } else { + console.error(`Invalid AnnotationEditor mode: ${mode}`); + } + } + const layerProperties = this.#layerProperties.bind(this); + const viewerElement = this._scrollMode === _ui_utils.ScrollMode.PAGE ? null : this.viewer; + const scale = this.currentScale; + const viewport = firstPdfPage.getViewport({ + scale: scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS + }); + this.viewer.style.setProperty("--scale-factor", viewport.scale); + for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) { + const pageView = new _pdf_page_view.PDFPageView({ + container: viewerElement, + eventBus: this.eventBus, + id: pageNum, + scale, + defaultViewport: viewport.clone(), + optionalContentConfigPromise, + renderingQueue: this.renderingQueue, + textLayerMode, + annotationMode, + imageResourcesPath: this.imageResourcesPath, + renderer: this.renderer, + useOnlyCssZoom: this.useOnlyCssZoom, + isOffscreenCanvasSupported: this.isOffscreenCanvasSupported, + maxCanvasPixels: this.maxCanvasPixels, + pageColors: this.pageColors, + l10n: this.l10n, + layerProperties + }); + this._pages.push(pageView); + } + const firstPageView = this._pages[0]; + if (firstPageView) { + firstPageView.setPdfPage(firstPdfPage); + this.linkService.cachePageRef(1, firstPdfPage.ref); + } + if (this._scrollMode === _ui_utils.ScrollMode.PAGE) { + this.#ensurePageViewVisible(); + } else if (this._spreadMode !== _ui_utils.SpreadMode.NONE) { + this._updateSpreadMode(); + } + this.#onePageRenderedOrForceFetch().then(async () => { + this.findController?.setDocument(pdfDocument); + this._scriptingManager?.setDocument(pdfDocument); + if (this.#annotationEditorUIManager) { + this.eventBus.dispatch("annotationeditormodechanged", { + source: this, + mode: this.#annotationEditorMode + }); + } + if (pdfDocument.loadingParams.disableAutoFetch || pagesCount > PagesCountLimit.FORCE_LAZY_PAGE_INIT) { + this._pagesCapability.resolve(); + return; + } + let getPagesLeft = pagesCount - 1; + if (getPagesLeft <= 0) { + this._pagesCapability.resolve(); + return; + } + for (let pageNum = 2; pageNum <= pagesCount; ++pageNum) { + const promise = pdfDocument.getPage(pageNum).then(pdfPage => { + const pageView = this._pages[pageNum - 1]; + if (!pageView.pdfPage) { + pageView.setPdfPage(pdfPage); + } + this.linkService.cachePageRef(pageNum, pdfPage.ref); + if (--getPagesLeft === 0) { + this._pagesCapability.resolve(); + } + }, reason => { + console.error(`Unable to get page ${pageNum} to initialize viewer`, reason); + if (--getPagesLeft === 0) { + this._pagesCapability.resolve(); + } + }); + if (pageNum % PagesCountLimit.PAUSE_EAGER_PAGE_INIT === 0) { + await promise; + } + } + }); + this.eventBus.dispatch("pagesinit", { + source: this + }); + pdfDocument.getMetadata().then(({ + info + }) => { + if (pdfDocument !== this.pdfDocument) { + return; + } + if (info.Language) { + this.viewer.lang = info.Language; + } + }); + if (this.defaultRenderingQueue) { + this.update(); + } + }).catch(reason => { + console.error("Unable to initialize viewer", reason); + this._pagesCapability.reject(reason); + }); + } + setPageLabels(labels) { + if (!this.pdfDocument) { + return; + } + if (!labels) { + this._pageLabels = null; + } else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) { + this._pageLabels = null; + console.error(`setPageLabels: Invalid page labels.`); + } else { + this._pageLabels = labels; + } + for (let i = 0, ii = this._pages.length; i < ii; i++) { + this._pages[i].setPageLabel(this._pageLabels?.[i] ?? null); + } + } + _resetView() { + this._pages = []; + this._currentPageNumber = 1; + this._currentScale = _ui_utils.UNKNOWN_SCALE; + this._currentScaleValue = null; + this._pageLabels = null; + this.#buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE); + this._location = null; + this._pagesRotation = 0; + this._optionalContentConfigPromise = null; + this._firstPageCapability = (0, _pdfjsLib.createPromiseCapability)(); + this._onePageRenderedCapability = (0, _pdfjsLib.createPromiseCapability)(); + this._pagesCapability = (0, _pdfjsLib.createPromiseCapability)(); + this._scrollMode = _ui_utils.ScrollMode.VERTICAL; + this._previousScrollMode = _ui_utils.ScrollMode.UNKNOWN; + this._spreadMode = _ui_utils.SpreadMode.NONE; + this.#scrollModePageState = { + previousPageNumber: 1, + scrollDown: true, + pages: [] + }; + if (this._onBeforeDraw) { + this.eventBus._off("pagerender", this._onBeforeDraw); + this._onBeforeDraw = null; + } + if (this._onAfterDraw) { + this.eventBus._off("pagerendered", this._onAfterDraw); + this._onAfterDraw = null; + } + if (this.#onVisibilityChange) { + document.removeEventListener("visibilitychange", this.#onVisibilityChange); + this.#onVisibilityChange = null; + } + this.viewer.textContent = ""; + this._updateScrollMode(); + this.viewer.removeAttribute("lang"); + this.viewer.classList.remove(ENABLE_PERMISSIONS_CLASS); + } + #ensurePageViewVisible() { + if (this._scrollMode !== _ui_utils.ScrollMode.PAGE) { + throw new Error("#ensurePageViewVisible: Invalid scrollMode value."); + } + const pageNumber = this._currentPageNumber, + state = this.#scrollModePageState, + viewer = this.viewer; + viewer.textContent = ""; + state.pages.length = 0; + if (this._spreadMode === _ui_utils.SpreadMode.NONE && !this.isInPresentationMode) { + const pageView = this._pages[pageNumber - 1]; + viewer.append(pageView.div); + state.pages.push(pageView); + } else { + const pageIndexSet = new Set(), + parity = this._spreadMode - 1; + if (parity === -1) { + pageIndexSet.add(pageNumber - 1); + } else if (pageNumber % 2 !== parity) { + pageIndexSet.add(pageNumber - 1); + pageIndexSet.add(pageNumber); + } else { + pageIndexSet.add(pageNumber - 2); + pageIndexSet.add(pageNumber - 1); + } + const spread = document.createElement("div"); + spread.className = "spread"; + if (this.isInPresentationMode) { + const dummyPage = document.createElement("div"); + dummyPage.className = "dummyPage"; + spread.append(dummyPage); + } + for (const i of pageIndexSet) { + const pageView = this._pages[i]; + if (!pageView) { + continue; + } + spread.append(pageView.div); + state.pages.push(pageView); + } + viewer.append(spread); + } + state.scrollDown = pageNumber >= state.previousPageNumber; + state.previousPageNumber = pageNumber; + } + _scrollUpdate() { + if (this.pagesCount === 0) { + return; + } + this.update(); + } + #scrollIntoView(pageView, pageSpot = null) { + const { + div, + id + } = pageView; + if (this._currentPageNumber !== id) { + this._setCurrentPageNumber(id); + } + if (this._scrollMode === _ui_utils.ScrollMode.PAGE) { + this.#ensurePageViewVisible(); + this.update(); + } + if (!pageSpot && !this.isInPresentationMode) { + const left = div.offsetLeft + div.clientLeft, + right = left + div.clientWidth; + const { + scrollLeft, + clientWidth + } = this.container; + if (this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL || left < scrollLeft || right > scrollLeft + clientWidth) { + pageSpot = { + left: 0, + top: 0 + }; + } + } + (0, _ui_utils.scrollIntoView)(div, pageSpot); + if (!this._currentScaleValue && this._location) { + this._location = null; + } + } + #isSameScale(newScale) { + return newScale === this._currentScale || Math.abs(newScale - this._currentScale) < 1e-15; + } + _setScaleUpdatePages(newScale, newValue, { + noScroll = false, + preset = false, + drawingDelay = -1 + }) { + this._currentScaleValue = newValue.toString(); + if (this.#isSameScale(newScale)) { + if (preset) { + this.eventBus.dispatch("scalechanging", { + source: this, + scale: newScale, + presetValue: newValue + }); + } + return; + } + this.viewer.style.setProperty("--scale-factor", newScale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS); + const postponeDrawing = drawingDelay >= 0 && drawingDelay < 1000; + this.refresh(true, { + scale: newScale, + drawingDelay: postponeDrawing ? drawingDelay : -1 + }); + if (postponeDrawing) { + this.#scaleTimeoutId = setTimeout(() => { + this.#scaleTimeoutId = null; + this.refresh(); + }, drawingDelay); + } + this._currentScale = newScale; + if (!noScroll) { + let page = this._currentPageNumber, + dest; + if (this._location && !(this.isInPresentationMode || this.isChangingPresentationMode)) { + page = this._location.pageNumber; + dest = [null, { + name: "XYZ" + }, this._location.left, this._location.top, null]; + } + this.scrollPageIntoView({ + pageNumber: page, + destArray: dest, + allowNegativeOffset: true + }); + } + this.eventBus.dispatch("scalechanging", { + source: this, + scale: newScale, + presetValue: preset ? newValue : undefined + }); + if (this.defaultRenderingQueue) { + this.update(); + } + } + get _pageWidthScaleFactor() { + if (this._spreadMode !== _ui_utils.SpreadMode.NONE && this._scrollMode !== _ui_utils.ScrollMode.HORIZONTAL) { + return 2; + } + return 1; + } + _setScale(value, options) { + let scale = parseFloat(value); + if (scale > 0) { + options.preset = false; + this._setScaleUpdatePages(scale, value, options); + } else { + const currentPage = this._pages[this._currentPageNumber - 1]; + if (!currentPage) { + return; + } + let hPadding = _ui_utils.SCROLLBAR_PADDING, + vPadding = _ui_utils.VERTICAL_PADDING; + if (this.isInPresentationMode) { + hPadding = vPadding = 4; + if (this._spreadMode !== _ui_utils.SpreadMode.NONE) { + hPadding *= 2; + } + } else if (this.removePageBorders) { + hPadding = vPadding = 0; + } else if (this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL) { + [hPadding, vPadding] = [vPadding, hPadding]; + } + const pageWidthScale = (this.container.clientWidth - hPadding) / currentPage.width * currentPage.scale / this._pageWidthScaleFactor; + const pageHeightScale = (this.container.clientHeight - vPadding) / currentPage.height * currentPage.scale; + switch (value) { + case "page-actual": + scale = 1; + break; + case "page-width": + scale = pageWidthScale; + break; + case "page-height": + scale = pageHeightScale; + break; + case "page-fit": + scale = Math.min(pageWidthScale, pageHeightScale); + break; + case "auto": + const horizontalScale = (0, _ui_utils.isPortraitOrientation)(currentPage) ? pageWidthScale : Math.min(pageHeightScale, pageWidthScale); + scale = Math.min(_ui_utils.MAX_AUTO_SCALE, horizontalScale); + break; + default: + console.error(`_setScale: "${value}" is an unknown zoom value.`); + return; + } + options.preset = true; + this._setScaleUpdatePages(scale, value, options); + } + } + #resetCurrentPageView() { + const pageView = this._pages[this._currentPageNumber - 1]; + if (this.isInPresentationMode) { + this._setScale(this._currentScaleValue, { + noScroll: true + }); + } + this.#scrollIntoView(pageView); + } + pageLabelToPageNumber(label) { + if (!this._pageLabels) { + return null; + } + const i = this._pageLabels.indexOf(label); + if (i < 0) { + return null; + } + return i + 1; + } + scrollPageIntoView({ + pageNumber, + destArray = null, + allowNegativeOffset = false, + ignoreDestinationZoom = false + }) { + if (!this.pdfDocument) { + return; + } + const pageView = Number.isInteger(pageNumber) && this._pages[pageNumber - 1]; + if (!pageView) { + console.error(`scrollPageIntoView: "${pageNumber}" is not a valid pageNumber parameter.`); + return; + } + if (this.isInPresentationMode || !destArray) { + this._setCurrentPageNumber(pageNumber, true); + return; + } + let x = 0, + y = 0; + let width = 0, + height = 0, + widthScale, + heightScale; + const changeOrientation = pageView.rotation % 180 !== 0; + const pageWidth = (changeOrientation ? pageView.height : pageView.width) / pageView.scale / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS; + const pageHeight = (changeOrientation ? pageView.width : pageView.height) / pageView.scale / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS; + let scale = 0; + switch (destArray[1].name) { + case "XYZ": + x = destArray[2]; + y = destArray[3]; + scale = destArray[4]; + x = x !== null ? x : 0; + y = y !== null ? y : pageHeight; + break; + case "Fit": + case "FitB": + scale = "page-fit"; + break; + case "FitH": + case "FitBH": + y = destArray[2]; + scale = "page-width"; + if (y === null && this._location) { + x = this._location.left; + y = this._location.top; + } else if (typeof y !== "number" || y < 0) { + y = pageHeight; + } + break; + case "FitV": + case "FitBV": + x = destArray[2]; + width = pageWidth; + height = pageHeight; + scale = "page-height"; + break; + case "FitR": + x = destArray[2]; + y = destArray[3]; + width = destArray[4] - x; + height = destArray[5] - y; + let hPadding = _ui_utils.SCROLLBAR_PADDING, + vPadding = _ui_utils.VERTICAL_PADDING; + if (this.removePageBorders) { + hPadding = vPadding = 0; + } + widthScale = (this.container.clientWidth - hPadding) / width / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS; + heightScale = (this.container.clientHeight - vPadding) / height / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS; + scale = Math.min(Math.abs(widthScale), Math.abs(heightScale)); + break; + default: + console.error(`scrollPageIntoView: "${destArray[1].name}" is not a valid destination type.`); + return; + } + if (!ignoreDestinationZoom) { + if (scale && scale !== this._currentScale) { + this.currentScaleValue = scale; + } else if (this._currentScale === _ui_utils.UNKNOWN_SCALE) { + this.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; + } + } + if (scale === "page-fit" && !destArray[4]) { + this.#scrollIntoView(pageView); + return; + } + const boundingRect = [pageView.viewport.convertToViewportPoint(x, y), pageView.viewport.convertToViewportPoint(x + width, y + height)]; + let left = Math.min(boundingRect[0][0], boundingRect[1][0]); + let top = Math.min(boundingRect[0][1], boundingRect[1][1]); + if (!allowNegativeOffset) { + left = Math.max(left, 0); + top = Math.max(top, 0); + } + this.#scrollIntoView(pageView, { + left, + top + }); + } + _updateLocation(firstPage) { + const currentScale = this._currentScale; + const currentScaleValue = this._currentScaleValue; + const normalizedScaleValue = parseFloat(currentScaleValue) === currentScale ? Math.round(currentScale * 10000) / 100 : currentScaleValue; + const pageNumber = firstPage.id; + const currentPageView = this._pages[pageNumber - 1]; + const container = this.container; + const topLeft = currentPageView.getPagePoint(container.scrollLeft - firstPage.x, container.scrollTop - firstPage.y); + const intLeft = Math.round(topLeft[0]); + const intTop = Math.round(topLeft[1]); + let pdfOpenParams = `#page=${pageNumber}`; + if (!this.isInPresentationMode) { + pdfOpenParams += `&zoom=${normalizedScaleValue},${intLeft},${intTop}`; + } + this._location = { + pageNumber, + scale: normalizedScaleValue, + top: intTop, + left: intLeft, + rotation: this._pagesRotation, + pdfOpenParams + }; + } + update() { + const visible = this._getVisiblePages(); + const visiblePages = visible.views, + numVisiblePages = visiblePages.length; + if (numVisiblePages === 0) { + return; + } + const newCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * numVisiblePages + 1); + this.#buffer.resize(newCacheSize, visible.ids); + this.renderingQueue.renderHighestPriority(visible); + const isSimpleLayout = this._spreadMode === _ui_utils.SpreadMode.NONE && (this._scrollMode === _ui_utils.ScrollMode.PAGE || this._scrollMode === _ui_utils.ScrollMode.VERTICAL); + const currentId = this._currentPageNumber; + let stillFullyVisible = false; + for (const page of visiblePages) { + if (page.percent < 100) { + break; + } + if (page.id === currentId && isSimpleLayout) { + stillFullyVisible = true; + break; + } + } + this._setCurrentPageNumber(stillFullyVisible ? currentId : visiblePages[0].id); + this._updateLocation(visible.first); + this.eventBus.dispatch("updateviewarea", { + source: this, + location: this._location + }); + } + containsElement(element) { + return this.container.contains(element); + } + focus() { + this.container.focus(); + } + get _isContainerRtl() { + return getComputedStyle(this.container).direction === "rtl"; + } + get isInPresentationMode() { + return this.presentationModeState === _ui_utils.PresentationModeState.FULLSCREEN; + } + get isChangingPresentationMode() { + return this.presentationModeState === _ui_utils.PresentationModeState.CHANGING; + } + get isHorizontalScrollbarEnabled() { + return this.isInPresentationMode ? false : this.container.scrollWidth > this.container.clientWidth; + } + get isVerticalScrollbarEnabled() { + return this.isInPresentationMode ? false : this.container.scrollHeight > this.container.clientHeight; + } + _getVisiblePages() { + const views = this._scrollMode === _ui_utils.ScrollMode.PAGE ? this.#scrollModePageState.pages : this._pages, + horizontal = this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL, + rtl = horizontal && this._isContainerRtl; + return (0, _ui_utils.getVisibleElements)({ + scrollEl: this.container, + views, + sortByVisibility: true, + horizontal, + rtl + }); + } + isPageVisible(pageNumber) { + if (!this.pdfDocument) { + return false; + } + if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) { + console.error(`isPageVisible: "${pageNumber}" is not a valid page.`); + return false; + } + return this._getVisiblePages().ids.has(pageNumber); + } + isPageCached(pageNumber) { + if (!this.pdfDocument) { + return false; + } + if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) { + console.error(`isPageCached: "${pageNumber}" is not a valid page.`); + return false; + } + const pageView = this._pages[pageNumber - 1]; + return this.#buffer.has(pageView); + } + cleanup() { + for (const pageView of this._pages) { + if (pageView.renderingState !== _ui_utils.RenderingStates.FINISHED) { + pageView.reset(); + } + } + } + _cancelRendering() { + for (const pageView of this._pages) { + pageView.cancelRendering(); + } + } + async #ensurePdfPageLoaded(pageView) { + if (pageView.pdfPage) { + return pageView.pdfPage; + } + try { + const pdfPage = await this.pdfDocument.getPage(pageView.id); + if (!pageView.pdfPage) { + pageView.setPdfPage(pdfPage); + } + if (!this.linkService._cachedPageNumber?.(pdfPage.ref)) { + this.linkService.cachePageRef(pageView.id, pdfPage.ref); + } + return pdfPage; + } catch (reason) { + console.error("Unable to get page for page view", reason); + return null; + } + } + #getScrollAhead(visible) { + if (visible.first?.id === 1) { + return true; + } else if (visible.last?.id === this.pagesCount) { + return false; + } + switch (this._scrollMode) { + case _ui_utils.ScrollMode.PAGE: + return this.#scrollModePageState.scrollDown; + case _ui_utils.ScrollMode.HORIZONTAL: + return this.scroll.right; + } + return this.scroll.down; + } + forceRendering(currentlyVisiblePages) { + const visiblePages = currentlyVisiblePages || this._getVisiblePages(); + const scrollAhead = this.#getScrollAhead(visiblePages); + const preRenderExtra = this._spreadMode !== _ui_utils.SpreadMode.NONE && this._scrollMode !== _ui_utils.ScrollMode.HORIZONTAL; + const pageView = this.renderingQueue.getHighestPriority(visiblePages, this._pages, scrollAhead, preRenderExtra); + if (pageView) { + this.#ensurePdfPageLoaded(pageView).then(() => { + this.renderingQueue.renderView(pageView); + }); + return true; + } + return false; + } + get hasEqualPageSizes() { + const firstPageView = this._pages[0]; + for (let i = 1, ii = this._pages.length; i < ii; ++i) { + const pageView = this._pages[i]; + if (pageView.width !== firstPageView.width || pageView.height !== firstPageView.height) { + return false; + } + } + return true; + } + getPagesOverview() { + return this._pages.map(pageView => { + const viewport = pageView.pdfPage.getViewport({ + scale: 1 + }); + if (!this.enablePrintAutoRotate || (0, _ui_utils.isPortraitOrientation)(viewport)) { + return { + width: viewport.width, + height: viewport.height, + rotation: viewport.rotation + }; + } + return { + width: viewport.height, + height: viewport.width, + rotation: (viewport.rotation - 90) % 360 + }; + }); + } + get optionalContentConfigPromise() { + if (!this.pdfDocument) { + return Promise.resolve(null); + } + if (!this._optionalContentConfigPromise) { + console.error("optionalContentConfigPromise: Not initialized yet."); + return this.pdfDocument.getOptionalContentConfig(); + } + return this._optionalContentConfigPromise; + } + set optionalContentConfigPromise(promise) { + if (!(promise instanceof Promise)) { + throw new Error(`Invalid optionalContentConfigPromise: ${promise}`); + } + if (!this.pdfDocument) { + return; + } + if (!this._optionalContentConfigPromise) { + return; + } + this._optionalContentConfigPromise = promise; + this.refresh(false, { + optionalContentConfigPromise: promise + }); + this.eventBus.dispatch("optionalcontentconfigchanged", { + source: this, + promise + }); + } + get scrollMode() { + return this._scrollMode; + } + set scrollMode(mode) { + if (this._scrollMode === mode) { + return; + } + if (!(0, _ui_utils.isValidScrollMode)(mode)) { + throw new Error(`Invalid scroll mode: ${mode}`); + } + if (this.pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE) { + return; + } + this._previousScrollMode = this._scrollMode; + this._scrollMode = mode; + this.eventBus.dispatch("scrollmodechanged", { + source: this, + mode + }); + this._updateScrollMode(this._currentPageNumber); + } + _updateScrollMode(pageNumber = null) { + const scrollMode = this._scrollMode, + viewer = this.viewer; + viewer.classList.toggle("scrollHorizontal", scrollMode === _ui_utils.ScrollMode.HORIZONTAL); + viewer.classList.toggle("scrollWrapped", scrollMode === _ui_utils.ScrollMode.WRAPPED); + if (!this.pdfDocument || !pageNumber) { + return; + } + if (scrollMode === _ui_utils.ScrollMode.PAGE) { + this.#ensurePageViewVisible(); + } else if (this._previousScrollMode === _ui_utils.ScrollMode.PAGE) { + this._updateSpreadMode(); + } + if (this._currentScaleValue && isNaN(this._currentScaleValue)) { + this._setScale(this._currentScaleValue, { + noScroll: true + }); + } + this._setCurrentPageNumber(pageNumber, true); + this.update(); + } + get spreadMode() { + return this._spreadMode; + } + set spreadMode(mode) { + if (this._spreadMode === mode) { + return; + } + if (!(0, _ui_utils.isValidSpreadMode)(mode)) { + throw new Error(`Invalid spread mode: ${mode}`); + } + this._spreadMode = mode; + this.eventBus.dispatch("spreadmodechanged", { + source: this, + mode + }); + this._updateSpreadMode(this._currentPageNumber); + } + _updateSpreadMode(pageNumber = null) { + if (!this.pdfDocument) { + return; + } + const viewer = this.viewer, + pages = this._pages; + if (this._scrollMode === _ui_utils.ScrollMode.PAGE) { + this.#ensurePageViewVisible(); + } else { + viewer.textContent = ""; + if (this._spreadMode === _ui_utils.SpreadMode.NONE) { + for (const pageView of this._pages) { + viewer.append(pageView.div); + } + } else { + const parity = this._spreadMode - 1; + let spread = null; + for (let i = 0, ii = pages.length; i < ii; ++i) { + if (spread === null) { + spread = document.createElement("div"); + spread.className = "spread"; + viewer.append(spread); + } else if (i % 2 === parity) { + spread = spread.cloneNode(false); + viewer.append(spread); + } + spread.append(pages[i].div); + } + } + } + if (!pageNumber) { + return; + } + if (this._currentScaleValue && isNaN(this._currentScaleValue)) { + this._setScale(this._currentScaleValue, { + noScroll: true + }); + } + this._setCurrentPageNumber(pageNumber, true); + this.update(); + } + _getPageAdvance(currentPageNumber, previous = false) { + switch (this._scrollMode) { + case _ui_utils.ScrollMode.WRAPPED: + { + const { + views + } = this._getVisiblePages(), + pageLayout = new Map(); + for (const { + id, + y, + percent, + widthPercent + } of views) { + if (percent === 0 || widthPercent < 100) { + continue; + } + let yArray = pageLayout.get(y); + if (!yArray) { + pageLayout.set(y, yArray ||= []); + } + yArray.push(id); + } + for (const yArray of pageLayout.values()) { + const currentIndex = yArray.indexOf(currentPageNumber); + if (currentIndex === -1) { + continue; + } + const numPages = yArray.length; + if (numPages === 1) { + break; + } + if (previous) { + for (let i = currentIndex - 1, ii = 0; i >= ii; i--) { + const currentId = yArray[i], + expectedId = yArray[i + 1] - 1; + if (currentId < expectedId) { + return currentPageNumber - expectedId; + } + } + } else { + for (let i = currentIndex + 1, ii = numPages; i < ii; i++) { + const currentId = yArray[i], + expectedId = yArray[i - 1] + 1; + if (currentId > expectedId) { + return expectedId - currentPageNumber; + } + } + } + if (previous) { + const firstId = yArray[0]; + if (firstId < currentPageNumber) { + return currentPageNumber - firstId + 1; + } + } else { + const lastId = yArray[numPages - 1]; + if (lastId > currentPageNumber) { + return lastId - currentPageNumber + 1; + } + } + break; + } + break; + } + case _ui_utils.ScrollMode.HORIZONTAL: + { + break; + } + case _ui_utils.ScrollMode.PAGE: + case _ui_utils.ScrollMode.VERTICAL: + { + if (this._spreadMode === _ui_utils.SpreadMode.NONE) { + break; + } + const parity = this._spreadMode - 1; + if (previous && currentPageNumber % 2 !== parity) { + break; + } else if (!previous && currentPageNumber % 2 === parity) { + break; + } + const { + views + } = this._getVisiblePages(), + expectedId = previous ? currentPageNumber - 1 : currentPageNumber + 1; + for (const { + id, + percent, + widthPercent + } of views) { + if (id !== expectedId) { + continue; + } + if (percent > 0 && widthPercent === 100) { + return 2; + } + break; + } + break; + } + } + return 1; + } + nextPage() { + const currentPageNumber = this._currentPageNumber, + pagesCount = this.pagesCount; + if (currentPageNumber >= pagesCount) { + return false; + } + const advance = this._getPageAdvance(currentPageNumber, false) || 1; + this.currentPageNumber = Math.min(currentPageNumber + advance, pagesCount); + return true; + } + previousPage() { + const currentPageNumber = this._currentPageNumber; + if (currentPageNumber <= 1) { + return false; + } + const advance = this._getPageAdvance(currentPageNumber, true) || 1; + this.currentPageNumber = Math.max(currentPageNumber - advance, 1); + return true; + } + increaseScale(options = null) { + if (typeof options === "number") { + console.error("The `increaseScale` method-signature was updated, please use an object instead."); + options = { + steps: options + }; + } + if (!this.pdfDocument) { + return; + } + options ||= Object.create(null); + let newScale = this._currentScale; + if (options.scaleFactor > 1) { + newScale = Math.min(_ui_utils.MAX_SCALE, Math.round(newScale * options.scaleFactor * 100) / 100); + } else { + let steps = options.steps ?? 1; + do { + newScale = (newScale * _ui_utils.DEFAULT_SCALE_DELTA).toFixed(2); + newScale = Math.ceil(newScale * 10) / 10; + newScale = Math.min(_ui_utils.MAX_SCALE, newScale); + } while (--steps > 0 && newScale < _ui_utils.MAX_SCALE); + } + options.noScroll = false; + this._setScale(newScale, options); + } + decreaseScale(options = null) { + if (typeof options === "number") { + console.error("The `decreaseScale` method-signature was updated, please use an object instead."); + options = { + steps: options + }; + } + if (!this.pdfDocument) { + return; + } + options ||= Object.create(null); + let newScale = this._currentScale; + if (options.scaleFactor > 0 && options.scaleFactor < 1) { + newScale = Math.max(_ui_utils.MIN_SCALE, Math.round(newScale * options.scaleFactor * 100) / 100); + } else { + let steps = options.steps ?? 1; + do { + newScale = (newScale / _ui_utils.DEFAULT_SCALE_DELTA).toFixed(2); + newScale = Math.floor(newScale * 10) / 10; + newScale = Math.max(_ui_utils.MIN_SCALE, newScale); + } while (--steps > 0 && newScale > _ui_utils.MIN_SCALE); + } + options.noScroll = false; + this._setScale(newScale, options); + } + #updateContainerHeightCss(height = this.container.clientHeight) { + if (height !== this.#previousContainerHeight) { + this.#previousContainerHeight = height; + _ui_utils.docStyle.setProperty("--viewer-container-height", `${height}px`); + } + } + #resizeObserverCallback(entries) { + for (const entry of entries) { + if (entry.target === this.container) { + this.#updateContainerHeightCss(Math.floor(entry.borderBoxSize[0].blockSize)); + this.#containerTopLeft = null; + break; + } + } + } + get containerTopLeft() { + return this.#containerTopLeft ||= [this.container.offsetTop, this.container.offsetLeft]; + } + get annotationEditorMode() { + return this.#annotationEditorUIManager ? this.#annotationEditorMode : _pdfjsLib.AnnotationEditorType.DISABLE; + } + set annotationEditorMode(mode) { + if (!this.#annotationEditorUIManager) { + throw new Error(`The AnnotationEditor is not enabled.`); + } + if (this.#annotationEditorMode === mode) { + return; + } + if (!isValidAnnotationEditorMode(mode)) { + throw new Error(`Invalid AnnotationEditor mode: ${mode}`); + } + if (!this.pdfDocument) { + return; + } + this.#annotationEditorMode = mode; + this.eventBus.dispatch("annotationeditormodechanged", { + source: this, + mode + }); + this.#annotationEditorUIManager.updateMode(mode); + } + set annotationEditorParams({ + type, + value + }) { + if (!this.#annotationEditorUIManager) { + throw new Error(`The AnnotationEditor is not enabled.`); + } + this.#annotationEditorUIManager.updateParams(type, value); + } + refresh(noUpdate = false, updateArgs = Object.create(null)) { + if (!this.pdfDocument) { + return; + } + for (const pageView of this._pages) { + pageView.update(updateArgs); + } + if (this.#scaleTimeoutId !== null) { + clearTimeout(this.#scaleTimeoutId); + this.#scaleTimeoutId = null; + } + if (!noUpdate) { + this.update(); + } + } +} +exports.PDFViewer = PDFViewer; + +/***/ }), +/* 30 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.NullL10n = void 0; +exports.fixupLangCode = fixupLangCode; +exports.getL10nFallback = getL10nFallback; +const DEFAULT_L10N_STRINGS = { + of_pages: "of {{pagesCount}}", + page_of_pages: "({{pageNumber}} of {{pagesCount}})", + document_properties_kb: "{{size_kb}} KB ({{size_b}} bytes)", + document_properties_mb: "{{size_mb}} MB ({{size_b}} bytes)", + document_properties_date_string: "{{date}}, {{time}}", + document_properties_page_size_unit_inches: "in", + document_properties_page_size_unit_millimeters: "mm", + document_properties_page_size_orientation_portrait: "portrait", + document_properties_page_size_orientation_landscape: "landscape", + document_properties_page_size_name_a3: "A3", + document_properties_page_size_name_a4: "A4", + document_properties_page_size_name_letter: "Letter", + document_properties_page_size_name_legal: "Legal", + document_properties_page_size_dimension_string: "{{width}} × {{height}} {{unit}} ({{orientation}})", + document_properties_page_size_dimension_name_string: "{{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})", + document_properties_linearized_yes: "Yes", + document_properties_linearized_no: "No", + additional_layers: "Additional Layers", + page_landmark: "Page {{page}}", + thumb_page_title: "Page {{page}}", + thumb_page_canvas: "Thumbnail of Page {{page}}", + find_reached_top: "Reached top of document, continued from bottom", + find_reached_bottom: "Reached end of document, continued from top", + "find_match_count[one]": "{{current}} of {{total}} match", + "find_match_count[other]": "{{current}} of {{total}} matches", + "find_match_count_limit[one]": "More than {{limit}} match", + "find_match_count_limit[other]": "More than {{limit}} matches", + find_not_found: "Phrase not found", + page_scale_width: "Page Width", + page_scale_fit: "Page Fit", + page_scale_auto: "Automatic Zoom", + page_scale_actual: "Actual Size", + page_scale_percent: "{{scale}}%", + loading_error: "An error occurred while loading the PDF.", + invalid_file_error: "Invalid or corrupted PDF file.", + missing_file_error: "Missing PDF file.", + unexpected_response_error: "Unexpected server response.", + rendering_error: "An error occurred while rendering the page.", + printing_not_supported: "Warning: Printing is not fully supported by this browser.", + printing_not_ready: "Warning: The PDF is not fully loaded for printing.", + web_fonts_disabled: "Web fonts are disabled: unable to use embedded PDF fonts.", + free_text2_default_content: "Start typing…", + editor_free_text2_aria_label: "Text Editor", + editor_ink2_aria_label: "Draw Editor", + editor_ink_canvas_aria_label: "User-created image" +}; +{ + DEFAULT_L10N_STRINGS.print_progress_percent = "{{progress}}%"; +} +function getL10nFallback(key, args) { + switch (key) { + case "find_match_count": + key = `find_match_count[${args.total === 1 ? "one" : "other"}]`; + break; + case "find_match_count_limit": + key = `find_match_count_limit[${args.limit === 1 ? "one" : "other"}]`; + break; + } + return DEFAULT_L10N_STRINGS[key] || ""; +} +const PARTIAL_LANG_CODES = { + en: "en-US", + es: "es-ES", + fy: "fy-NL", + ga: "ga-IE", + gu: "gu-IN", + hi: "hi-IN", + hy: "hy-AM", + nb: "nb-NO", + ne: "ne-NP", + nn: "nn-NO", + pa: "pa-IN", + pt: "pt-PT", + sv: "sv-SE", + zh: "zh-CN" +}; +function fixupLangCode(langCode) { + return PARTIAL_LANG_CODES[langCode?.toLowerCase()] || langCode; +} +function formatL10nValue(text, args) { + if (!args) { + return text; + } + return text.replace(/\{\{\s*(\w+)\s*\}\}/g, (all, name) => { + return name in args ? args[name] : "{{" + name + "}}"; + }); +} +const NullL10n = { + async getLanguage() { + return "en-us"; + }, + async getDirection() { + return "ltr"; + }, + async get(key, args = null, fallback = getL10nFallback(key, args)) { + return formatL10nValue(fallback, args); + }, + async translate(element) {} +}; +exports.NullL10n = NullL10n; + +/***/ }), +/* 31 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFPageView = void 0; +var _pdfjsLib = __webpack_require__(4); +var _ui_utils = __webpack_require__(3); +var _annotation_editor_layer_builder = __webpack_require__(32); +var _annotation_layer_builder = __webpack_require__(33); +var _app_options = __webpack_require__(5); +var _l10n_utils = __webpack_require__(30); +var _pdf_link_service = __webpack_require__(7); +var _struct_tree_layer_builder = __webpack_require__(34); +var _text_accessibility = __webpack_require__(35); +var _text_highlighter = __webpack_require__(36); +var _text_layer_builder = __webpack_require__(37); +var _xfa_layer_builder = __webpack_require__(38); +const MAX_CANVAS_PIXELS = _app_options.compatibilityParams.maxCanvasPixels || 16777216; +const DEFAULT_LAYER_PROPERTIES = () => { + return null; +}; +class PDFPageView { + #annotationMode = _pdfjsLib.AnnotationMode.ENABLE_FORMS; + #layerProperties = null; + #loadingId = null; + #previousRotation = null; + #renderingState = _ui_utils.RenderingStates.INITIAL; + #useThumbnailCanvas = { + initialOptionalContent: true, + regularAnnotations: true + }; + constructor(options) { + const container = options.container; + const defaultViewport = options.defaultViewport; + this.id = options.id; + this.renderingId = "page" + this.id; + this.#layerProperties = options.layerProperties || DEFAULT_LAYER_PROPERTIES; + this.pdfPage = null; + this.pageLabel = null; + this.rotation = 0; + this.scale = options.scale || _ui_utils.DEFAULT_SCALE; + this.viewport = defaultViewport; + this.pdfPageRotate = defaultViewport.rotation; + this._optionalContentConfigPromise = options.optionalContentConfigPromise || null; + this.hasRestrictedScaling = false; + this.textLayerMode = options.textLayerMode ?? _ui_utils.TextLayerMode.ENABLE; + this.#annotationMode = options.annotationMode ?? _pdfjsLib.AnnotationMode.ENABLE_FORMS; + this.imageResourcesPath = options.imageResourcesPath || ""; + this.useOnlyCssZoom = options.useOnlyCssZoom || false; + this.isOffscreenCanvasSupported = options.isOffscreenCanvasSupported ?? true; + this.maxCanvasPixels = options.maxCanvasPixels || MAX_CANVAS_PIXELS; + this.pageColors = options.pageColors || null; + this.eventBus = options.eventBus; + this.renderingQueue = options.renderingQueue; + this.renderer = options.renderer || _ui_utils.RendererType.CANVAS; + this.l10n = options.l10n || _l10n_utils.NullL10n; + this.paintTask = null; + this.paintedViewportMap = new WeakMap(); + this.resume = null; + this._renderError = null; + this._isStandalone = !this.renderingQueue?.hasViewer(); + this._annotationCanvasMap = null; + this.annotationLayer = null; + this.annotationEditorLayer = null; + this.textLayer = null; + this.zoomLayer = null; + this.xfaLayer = null; + this.structTreeLayer = null; + const div = document.createElement("div"); + div.className = "page"; + div.setAttribute("data-page-number", this.id); + div.setAttribute("role", "region"); + this.l10n.get("page_landmark", { + page: this.id + }).then(msg => { + div.setAttribute("aria-label", msg); + }); + this.div = div; + this.#setDimensions(); + container?.append(div); + if (this._isStandalone) { + container?.style.setProperty("--scale-factor", this.scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS); + const { + optionalContentConfigPromise + } = options; + if (optionalContentConfigPromise) { + optionalContentConfigPromise.then(optionalContentConfig => { + if (optionalContentConfigPromise !== this._optionalContentConfigPromise) { + return; + } + this.#useThumbnailCanvas.initialOptionalContent = optionalContentConfig.hasInitialVisibility; + }); + } + } + } + get renderingState() { + return this.#renderingState; + } + set renderingState(state) { + if (state === this.#renderingState) { + return; + } + this.#renderingState = state; + if (this.#loadingId) { + clearTimeout(this.#loadingId); + this.#loadingId = null; + } + switch (state) { + case _ui_utils.RenderingStates.PAUSED: + this.div.classList.remove("loading"); + break; + case _ui_utils.RenderingStates.RUNNING: + this.div.classList.add("loadingIcon"); + this.#loadingId = setTimeout(() => { + this.div.classList.add("loading"); + this.#loadingId = null; + }, 0); + break; + case _ui_utils.RenderingStates.INITIAL: + case _ui_utils.RenderingStates.FINISHED: + this.div.classList.remove("loadingIcon", "loading"); + break; + } + } + #setDimensions() { + const { + viewport + } = this; + if (this.pdfPage) { + if (this.#previousRotation === viewport.rotation) { + return; + } + this.#previousRotation = viewport.rotation; + } + (0, _pdfjsLib.setLayerDimensions)(this.div, viewport, true, false); + } + setPdfPage(pdfPage) { + this.pdfPage = pdfPage; + this.pdfPageRotate = pdfPage.rotate; + const totalRotation = (this.rotation + this.pdfPageRotate) % 360; + this.viewport = pdfPage.getViewport({ + scale: this.scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS, + rotation: totalRotation + }); + this.#setDimensions(); + this.reset(); + } + destroy() { + this.reset(); + this.pdfPage?.cleanup(); + } + get _textHighlighter() { + return (0, _pdfjsLib.shadow)(this, "_textHighlighter", new _text_highlighter.TextHighlighter({ + pageIndex: this.id - 1, + eventBus: this.eventBus, + findController: this.#layerProperties().findController + })); + } + async #renderAnnotationLayer() { + let error = null; + try { + await this.annotationLayer.render(this.viewport, "display"); + } catch (ex) { + console.error(`#renderAnnotationLayer: "${ex}".`); + error = ex; + } finally { + this.eventBus.dispatch("annotationlayerrendered", { + source: this, + pageNumber: this.id, + error + }); + } + } + async #renderAnnotationEditorLayer() { + let error = null; + try { + await this.annotationEditorLayer.render(this.viewport, "display"); + } catch (ex) { + console.error(`#renderAnnotationEditorLayer: "${ex}".`); + error = ex; + } finally { + this.eventBus.dispatch("annotationeditorlayerrendered", { + source: this, + pageNumber: this.id, + error + }); + } + } + async #renderXfaLayer() { + let error = null; + try { + const result = await this.xfaLayer.render(this.viewport, "display"); + if (result?.textDivs && this._textHighlighter) { + this.#buildXfaTextContentItems(result.textDivs); + } + } catch (ex) { + console.error(`#renderXfaLayer: "${ex}".`); + error = ex; + } finally { + this.eventBus.dispatch("xfalayerrendered", { + source: this, + pageNumber: this.id, + error + }); + } + } + async #renderTextLayer() { + const { + pdfPage, + textLayer, + viewport + } = this; + if (!textLayer) { + return; + } + let error = null; + try { + if (!textLayer.renderingDone) { + const readableStream = pdfPage.streamTextContent({ + includeMarkedContent: true + }); + textLayer.setTextContentSource(readableStream); + } + await textLayer.render(viewport); + } catch (ex) { + if (ex instanceof _pdfjsLib.AbortException) { + return; + } + console.error(`#renderTextLayer: "${ex}".`); + error = ex; + } + this.eventBus.dispatch("textlayerrendered", { + source: this, + pageNumber: this.id, + numTextDivs: textLayer.numTextDivs, + error + }); + this.#renderStructTreeLayer(); + } + async #renderStructTreeLayer() { + if (!this.textLayer) { + return; + } + this.structTreeLayer ||= new _struct_tree_layer_builder.StructTreeLayerBuilder(); + const tree = await (!this.structTreeLayer.renderingDone ? this.pdfPage.getStructTree() : null); + const treeDom = this.structTreeLayer?.render(tree); + if (treeDom) { + this.canvas?.append(treeDom); + } + this.structTreeLayer?.show(); + } + async #buildXfaTextContentItems(textDivs) { + const text = await this.pdfPage.getTextContent(); + const items = []; + for (const item of text.items) { + items.push(item.str); + } + this._textHighlighter.setTextMapping(textDivs, items); + this._textHighlighter.enable(); + } + _resetZoomLayer(removeFromDOM = false) { + if (!this.zoomLayer) { + return; + } + const zoomLayerCanvas = this.zoomLayer.firstChild; + this.paintedViewportMap.delete(zoomLayerCanvas); + zoomLayerCanvas.width = 0; + zoomLayerCanvas.height = 0; + if (removeFromDOM) { + this.zoomLayer.remove(); + } + this.zoomLayer = null; + } + reset({ + keepZoomLayer = false, + keepAnnotationLayer = false, + keepAnnotationEditorLayer = false, + keepXfaLayer = false, + keepTextLayer = false + } = {}) { + this.cancelRendering({ + keepAnnotationLayer, + keepAnnotationEditorLayer, + keepXfaLayer, + keepTextLayer + }); + this.renderingState = _ui_utils.RenderingStates.INITIAL; + const div = this.div; + const childNodes = div.childNodes, + zoomLayerNode = keepZoomLayer && this.zoomLayer || null, + annotationLayerNode = keepAnnotationLayer && this.annotationLayer?.div || null, + annotationEditorLayerNode = keepAnnotationEditorLayer && this.annotationEditorLayer?.div || null, + xfaLayerNode = keepXfaLayer && this.xfaLayer?.div || null, + textLayerNode = keepTextLayer && this.textLayer?.div || null; + for (let i = childNodes.length - 1; i >= 0; i--) { + const node = childNodes[i]; + switch (node) { + case zoomLayerNode: + case annotationLayerNode: + case annotationEditorLayerNode: + case xfaLayerNode: + case textLayerNode: + continue; + } + node.remove(); + } + div.removeAttribute("data-loaded"); + if (annotationLayerNode) { + this.annotationLayer.hide(); + } + if (annotationEditorLayerNode) { + this.annotationEditorLayer.hide(); + } + if (xfaLayerNode) { + this.xfaLayer.hide(); + } + if (textLayerNode) { + this.textLayer.hide(); + } + this.structTreeLayer?.hide(); + if (!zoomLayerNode) { + if (this.canvas) { + this.paintedViewportMap.delete(this.canvas); + this.canvas.width = 0; + this.canvas.height = 0; + delete this.canvas; + } + this._resetZoomLayer(); + } + if (this.svg) { + this.paintedViewportMap.delete(this.svg); + delete this.svg; + } + } + update({ + scale = 0, + rotation = null, + optionalContentConfigPromise = null, + drawingDelay = -1 + }) { + this.scale = scale || this.scale; + if (typeof rotation === "number") { + this.rotation = rotation; + } + if (optionalContentConfigPromise instanceof Promise) { + this._optionalContentConfigPromise = optionalContentConfigPromise; + optionalContentConfigPromise.then(optionalContentConfig => { + if (optionalContentConfigPromise !== this._optionalContentConfigPromise) { + return; + } + this.#useThumbnailCanvas.initialOptionalContent = optionalContentConfig.hasInitialVisibility; + }); + } + const totalRotation = (this.rotation + this.pdfPageRotate) % 360; + this.viewport = this.viewport.clone({ + scale: this.scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS, + rotation: totalRotation + }); + this.#setDimensions(); + if (this._isStandalone) { + this.div.parentNode?.style.setProperty("--scale-factor", this.viewport.scale); + } + if (this.svg) { + this.cssTransform({ + target: this.svg, + redrawAnnotationLayer: true, + redrawAnnotationEditorLayer: true, + redrawXfaLayer: true, + redrawTextLayer: true + }); + this.eventBus.dispatch("pagerendered", { + source: this, + pageNumber: this.id, + cssTransform: true, + timestamp: performance.now(), + error: this._renderError + }); + return; + } + let isScalingRestricted = false; + if (this.canvas && this.maxCanvasPixels > 0) { + const outputScale = this.outputScale; + if ((Math.floor(this.viewport.width) * outputScale.sx | 0) * (Math.floor(this.viewport.height) * outputScale.sy | 0) > this.maxCanvasPixels) { + isScalingRestricted = true; + } + } + const postponeDrawing = drawingDelay >= 0 && drawingDelay < 1000; + if (this.canvas) { + if (postponeDrawing || this.useOnlyCssZoom || this.hasRestrictedScaling && isScalingRestricted) { + if (postponeDrawing && this.renderingState !== _ui_utils.RenderingStates.FINISHED) { + this.cancelRendering({ + keepZoomLayer: true, + keepAnnotationLayer: true, + keepAnnotationEditorLayer: true, + keepXfaLayer: true, + keepTextLayer: true, + cancelExtraDelay: drawingDelay + }); + this.renderingState = _ui_utils.RenderingStates.FINISHED; + } + this.cssTransform({ + target: this.canvas, + redrawAnnotationLayer: true, + redrawAnnotationEditorLayer: true, + redrawXfaLayer: true, + redrawTextLayer: !postponeDrawing, + hideTextLayer: postponeDrawing + }); + this.eventBus.dispatch("pagerendered", { + source: this, + pageNumber: this.id, + cssTransform: true, + timestamp: performance.now(), + error: this._renderError + }); + return; + } + if (!this.zoomLayer && !this.canvas.hidden) { + this.zoomLayer = this.canvas.parentNode; + this.zoomLayer.style.position = "absolute"; + } + } + if (this.zoomLayer) { + this.cssTransform({ + target: this.zoomLayer.firstChild + }); + } + this.reset({ + keepZoomLayer: true, + keepAnnotationLayer: true, + keepAnnotationEditorLayer: true, + keepXfaLayer: true, + keepTextLayer: true + }); + } + cancelRendering({ + keepAnnotationLayer = false, + keepAnnotationEditorLayer = false, + keepXfaLayer = false, + keepTextLayer = false, + cancelExtraDelay = 0 + } = {}) { + if (this.paintTask) { + this.paintTask.cancel(cancelExtraDelay); + this.paintTask = null; + } + this.resume = null; + if (this.textLayer && (!keepTextLayer || !this.textLayer.div)) { + this.textLayer.cancel(); + this.textLayer = null; + } + if (this.structTreeLayer && !this.textLayer) { + this.structTreeLayer = null; + } + if (this.annotationLayer && (!keepAnnotationLayer || !this.annotationLayer.div)) { + this.annotationLayer.cancel(); + this.annotationLayer = null; + this._annotationCanvasMap = null; + } + if (this.annotationEditorLayer && (!keepAnnotationEditorLayer || !this.annotationEditorLayer.div)) { + this.annotationEditorLayer.cancel(); + this.annotationEditorLayer = null; + } + if (this.xfaLayer && (!keepXfaLayer || !this.xfaLayer.div)) { + this.xfaLayer.cancel(); + this.xfaLayer = null; + this._textHighlighter?.disable(); + } + } + cssTransform({ + target, + redrawAnnotationLayer = false, + redrawAnnotationEditorLayer = false, + redrawXfaLayer = false, + redrawTextLayer = false, + hideTextLayer = false + }) { + if (target instanceof HTMLCanvasElement) { + if (!target.hasAttribute("zooming")) { + target.setAttribute("zooming", true); + const { + style + } = target; + style.width = style.height = ""; + } + } else { + const div = this.div; + const { + width, + height + } = this.viewport; + target.style.width = target.parentNode.style.width = div.style.width = Math.floor(width) + "px"; + target.style.height = target.parentNode.style.height = div.style.height = Math.floor(height) + "px"; + } + const originalViewport = this.paintedViewportMap.get(target); + if (this.viewport !== originalViewport) { + const relativeRotation = this.viewport.rotation - originalViewport.rotation; + const absRotation = Math.abs(relativeRotation); + let scaleX = 1, + scaleY = 1; + if (absRotation === 90 || absRotation === 270) { + const { + width, + height + } = this.viewport; + scaleX = height / width; + scaleY = width / height; + } + if (absRotation !== 0) { + target.style.transform = `rotate(${relativeRotation}deg) scale(${scaleX}, ${scaleY})`; + } + } + if (redrawAnnotationLayer && this.annotationLayer) { + this.#renderAnnotationLayer(); + } + if (redrawAnnotationEditorLayer && this.annotationEditorLayer) { + this.#renderAnnotationEditorLayer(); + } + if (redrawXfaLayer && this.xfaLayer) { + this.#renderXfaLayer(); + } + if (this.textLayer) { + if (hideTextLayer) { + this.textLayer.hide(); + this.structTreeLayer?.hide(); + } else if (redrawTextLayer) { + this.#renderTextLayer(); + } + } + } + get width() { + return this.viewport.width; + } + get height() { + return this.viewport.height; + } + getPagePoint(x, y) { + return this.viewport.convertToPdfPoint(x, y); + } + draw() { + if (this.renderingState !== _ui_utils.RenderingStates.INITIAL) { + console.error("Must be in new state before drawing"); + this.reset(); + } + const { + div, + pdfPage + } = this; + if (!pdfPage) { + this.renderingState = _ui_utils.RenderingStates.FINISHED; + return Promise.reject(new Error("pdfPage is not loaded")); + } + this.renderingState = _ui_utils.RenderingStates.RUNNING; + const canvasWrapper = document.createElement("div"); + canvasWrapper.classList.add("canvasWrapper"); + div.append(canvasWrapper); + if (!this.textLayer && this.textLayerMode !== _ui_utils.TextLayerMode.DISABLE && !pdfPage.isPureXfa) { + this._accessibilityManager ||= new _text_accessibility.TextAccessibilityManager(); + this.textLayer = new _text_layer_builder.TextLayerBuilder({ + highlighter: this._textHighlighter, + accessibilityManager: this._accessibilityManager, + isOffscreenCanvasSupported: this.isOffscreenCanvasSupported + }); + div.append(this.textLayer.div); + } + if (!this.annotationLayer && this.#annotationMode !== _pdfjsLib.AnnotationMode.DISABLE) { + const { + annotationStorage, + downloadManager, + enableScripting, + fieldObjectsPromise, + hasJSActionsPromise, + linkService + } = this.#layerProperties(); + this._annotationCanvasMap ||= new Map(); + this.annotationLayer = new _annotation_layer_builder.AnnotationLayerBuilder({ + pageDiv: div, + pdfPage, + annotationStorage, + imageResourcesPath: this.imageResourcesPath, + renderForms: this.#annotationMode === _pdfjsLib.AnnotationMode.ENABLE_FORMS, + linkService, + downloadManager, + l10n: this.l10n, + enableScripting, + hasJSActionsPromise, + fieldObjectsPromise, + annotationCanvasMap: this._annotationCanvasMap, + accessibilityManager: this._accessibilityManager + }); + } + let renderContinueCallback = null; + if (this.renderingQueue) { + renderContinueCallback = cont => { + if (!this.renderingQueue.isHighestPriority(this)) { + this.renderingState = _ui_utils.RenderingStates.PAUSED; + this.resume = () => { + this.renderingState = _ui_utils.RenderingStates.RUNNING; + cont(); + }; + return; + } + cont(); + }; + } + const finishPaintTask = async (error = null) => { + if (paintTask === this.paintTask) { + this.paintTask = null; + } + if (error instanceof _pdfjsLib.RenderingCancelledException) { + this._renderError = null; + return; + } + this._renderError = error; + this.renderingState = _ui_utils.RenderingStates.FINISHED; + this._resetZoomLayer(true); + this.#useThumbnailCanvas.regularAnnotations = !paintTask.separateAnnots; + this.eventBus.dispatch("pagerendered", { + source: this, + pageNumber: this.id, + cssTransform: false, + timestamp: performance.now(), + error: this._renderError + }); + if (error) { + throw error; + } + }; + const paintTask = this.renderer === _ui_utils.RendererType.SVG ? this.paintOnSvg(canvasWrapper) : this.paintOnCanvas(canvasWrapper); + paintTask.onRenderContinue = renderContinueCallback; + this.paintTask = paintTask; + const resultPromise = paintTask.promise.then(() => { + return finishPaintTask(null).then(async () => { + this.#renderTextLayer(); + if (this.annotationLayer) { + await this.#renderAnnotationLayer(); + } + if (!this.annotationEditorLayer) { + const { + annotationEditorUIManager + } = this.#layerProperties(); + if (!annotationEditorUIManager) { + return; + } + this.annotationEditorLayer = new _annotation_editor_layer_builder.AnnotationEditorLayerBuilder({ + uiManager: annotationEditorUIManager, + pageDiv: div, + pdfPage, + l10n: this.l10n, + accessibilityManager: this._accessibilityManager + }); + } + this.#renderAnnotationEditorLayer(); + }); + }, function (reason) { + return finishPaintTask(reason); + }); + if (pdfPage.isPureXfa) { + if (!this.xfaLayer) { + const { + annotationStorage, + linkService + } = this.#layerProperties(); + this.xfaLayer = new _xfa_layer_builder.XfaLayerBuilder({ + pageDiv: div, + pdfPage, + annotationStorage, + linkService + }); + } else if (this.xfaLayer.div) { + div.append(this.xfaLayer.div); + } + this.#renderXfaLayer(); + } + div.setAttribute("data-loaded", true); + this.eventBus.dispatch("pagerender", { + source: this, + pageNumber: this.id + }); + return resultPromise; + } + paintOnCanvas(canvasWrapper) { + const renderCapability = (0, _pdfjsLib.createPromiseCapability)(); + const result = { + promise: renderCapability.promise, + onRenderContinue(cont) { + cont(); + }, + cancel(extraDelay = 0) { + renderTask.cancel(extraDelay); + }, + get separateAnnots() { + return renderTask.separateAnnots; + } + }; + const viewport = this.viewport; + const { + width, + height + } = viewport; + const canvas = document.createElement("canvas"); + canvas.setAttribute("role", "presentation"); + canvas.hidden = true; + let isCanvasHidden = true; + const showCanvas = function () { + if (isCanvasHidden) { + canvas.hidden = false; + isCanvasHidden = false; + } + }; + canvasWrapper.append(canvas); + this.canvas = canvas; + const ctx = canvas.getContext("2d", { + alpha: false + }); + const outputScale = this.outputScale = new _ui_utils.OutputScale(); + if (this.useOnlyCssZoom) { + const actualSizeViewport = viewport.clone({ + scale: _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS + }); + outputScale.sx *= actualSizeViewport.width / width; + outputScale.sy *= actualSizeViewport.height / height; + } + if (this.maxCanvasPixels > 0) { + const pixelsInViewport = width * height; + const maxScale = Math.sqrt(this.maxCanvasPixels / pixelsInViewport); + if (outputScale.sx > maxScale || outputScale.sy > maxScale) { + outputScale.sx = maxScale; + outputScale.sy = maxScale; + this.hasRestrictedScaling = true; + } else { + this.hasRestrictedScaling = false; + } + } + const sfx = (0, _ui_utils.approximateFraction)(outputScale.sx); + const sfy = (0, _ui_utils.approximateFraction)(outputScale.sy); + canvas.width = (0, _ui_utils.roundToDivide)(viewport.width * outputScale.sx, sfx[0]); + canvas.height = (0, _ui_utils.roundToDivide)(viewport.height * outputScale.sy, sfy[0]); + const { + style + } = canvas; + style.width = (0, _ui_utils.roundToDivide)(viewport.width, sfx[1]) + "px"; + style.height = (0, _ui_utils.roundToDivide)(viewport.height, sfy[1]) + "px"; + this.paintedViewportMap.set(canvas, viewport); + const transform = outputScale.scaled ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0] : null; + const renderContext = { + canvasContext: ctx, + transform, + viewport, + annotationMode: this.#annotationMode, + optionalContentConfigPromise: this._optionalContentConfigPromise, + annotationCanvasMap: this._annotationCanvasMap, + pageColors: this.pageColors + }; + const renderTask = this.pdfPage.render(renderContext); + renderTask.onContinue = function (cont) { + showCanvas(); + if (result.onRenderContinue) { + result.onRenderContinue(cont); + } else { + cont(); + } + }; + renderTask.promise.then(function () { + showCanvas(); + renderCapability.resolve(); + }, function (error) { + if (!(error instanceof _pdfjsLib.RenderingCancelledException)) { + showCanvas(); + } + renderCapability.reject(error); + }); + return result; + } + paintOnSvg(wrapper) { + let cancelled = false; + const ensureNotCancelled = () => { + if (cancelled) { + throw new _pdfjsLib.RenderingCancelledException(`Rendering cancelled, page ${this.id}`, "svg"); + } + }; + const pdfPage = this.pdfPage; + const actualSizeViewport = this.viewport.clone({ + scale: _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS + }); + const promise = pdfPage.getOperatorList({ + annotationMode: this.#annotationMode + }).then(opList => { + ensureNotCancelled(); + const svgGfx = new _pdfjsLib.SVGGraphics(pdfPage.commonObjs, pdfPage.objs); + return svgGfx.getSVG(opList, actualSizeViewport).then(svg => { + ensureNotCancelled(); + this.svg = svg; + this.paintedViewportMap.set(svg, actualSizeViewport); + svg.style.width = wrapper.style.width; + svg.style.height = wrapper.style.height; + this.renderingState = _ui_utils.RenderingStates.FINISHED; + wrapper.append(svg); + }); + }); + return { + promise, + onRenderContinue(cont) { + cont(); + }, + cancel() { + cancelled = true; + }, + get separateAnnots() { + return false; + } + }; + } + setPageLabel(label) { + this.pageLabel = typeof label === "string" ? label : null; + if (this.pageLabel !== null) { + this.div.setAttribute("data-page-label", this.pageLabel); + } else { + this.div.removeAttribute("data-page-label"); + } + } + get thumbnailCanvas() { + const { + initialOptionalContent, + regularAnnotations + } = this.#useThumbnailCanvas; + return initialOptionalContent && regularAnnotations ? this.canvas : null; + } +} +exports.PDFPageView = PDFPageView; + +/***/ }), +/* 32 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationEditorLayerBuilder = void 0; +var _pdfjsLib = __webpack_require__(4); +var _l10n_utils = __webpack_require__(30); +class AnnotationEditorLayerBuilder { + #uiManager; + constructor(options) { + this.pageDiv = options.pageDiv; + this.pdfPage = options.pdfPage; + this.accessibilityManager = options.accessibilityManager; + this.l10n = options.l10n || _l10n_utils.NullL10n; + this.annotationEditorLayer = null; + this.div = null; + this._cancelled = false; + this.#uiManager = options.uiManager; + } + async render(viewport, intent = "display") { + if (intent !== "display") { + return; + } + if (this._cancelled) { + return; + } + const clonedViewport = viewport.clone({ + dontFlip: true + }); + if (this.div) { + this.annotationEditorLayer.update({ + viewport: clonedViewport + }); + this.show(); + return; + } + const div = this.div = document.createElement("div"); + div.className = "annotationEditorLayer"; + div.tabIndex = 0; + div.hidden = true; + this.pageDiv.append(div); + this.annotationEditorLayer = new _pdfjsLib.AnnotationEditorLayer({ + uiManager: this.#uiManager, + div, + accessibilityManager: this.accessibilityManager, + pageIndex: this.pdfPage.pageNumber - 1, + l10n: this.l10n, + viewport: clonedViewport + }); + const parameters = { + viewport: clonedViewport, + div, + annotations: null, + intent + }; + this.annotationEditorLayer.render(parameters); + this.show(); + } + cancel() { + this._cancelled = true; + if (!this.div) { + return; + } + this.pageDiv = null; + this.annotationEditorLayer.destroy(); + this.div.remove(); + } + hide() { + if (!this.div) { + return; + } + this.div.hidden = true; + } + show() { + if (!this.div || this.annotationEditorLayer.isEmpty) { + return; + } + this.div.hidden = false; + } +} +exports.AnnotationEditorLayerBuilder = AnnotationEditorLayerBuilder; + +/***/ }), +/* 33 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationLayerBuilder = void 0; +var _pdfjsLib = __webpack_require__(4); +var _l10n_utils = __webpack_require__(30); +var _ui_utils = __webpack_require__(3); +class AnnotationLayerBuilder { + #numAnnotations = 0; + #onPresentationModeChanged = null; + constructor({ + pageDiv, + pdfPage, + linkService, + downloadManager, + annotationStorage = null, + imageResourcesPath = "", + renderForms = true, + l10n = _l10n_utils.NullL10n, + enableScripting = false, + hasJSActionsPromise = null, + fieldObjectsPromise = null, + annotationCanvasMap = null, + accessibilityManager = null + }) { + this.pageDiv = pageDiv; + this.pdfPage = pdfPage; + this.linkService = linkService; + this.downloadManager = downloadManager; + this.imageResourcesPath = imageResourcesPath; + this.renderForms = renderForms; + this.l10n = l10n; + this.annotationStorage = annotationStorage; + this.enableScripting = enableScripting; + this._hasJSActionsPromise = hasJSActionsPromise || Promise.resolve(false); + this._fieldObjectsPromise = fieldObjectsPromise || Promise.resolve(null); + this._annotationCanvasMap = annotationCanvasMap; + this._accessibilityManager = accessibilityManager; + this.div = null; + this._cancelled = false; + this._eventBus = linkService.eventBus; + } + async render(viewport, intent = "display") { + if (this.div) { + if (this._cancelled || this.#numAnnotations === 0) { + return; + } + _pdfjsLib.AnnotationLayer.update({ + viewport: viewport.clone({ + dontFlip: true + }), + div: this.div, + annotationCanvasMap: this._annotationCanvasMap + }); + return; + } + const [annotations, hasJSActions, fieldObjects] = await Promise.all([this.pdfPage.getAnnotations({ + intent + }), this._hasJSActionsPromise, this._fieldObjectsPromise]); + if (this._cancelled) { + return; + } + this.#numAnnotations = annotations.length; + this.div = document.createElement("div"); + this.div.className = "annotationLayer"; + this.pageDiv.append(this.div); + if (this.#numAnnotations === 0) { + this.hide(); + return; + } + _pdfjsLib.AnnotationLayer.render({ + viewport: viewport.clone({ + dontFlip: true + }), + div: this.div, + annotations, + page: this.pdfPage, + imageResourcesPath: this.imageResourcesPath, + renderForms: this.renderForms, + linkService: this.linkService, + downloadManager: this.downloadManager, + annotationStorage: this.annotationStorage, + enableScripting: this.enableScripting, + hasJSActions, + fieldObjects, + annotationCanvasMap: this._annotationCanvasMap, + accessibilityManager: this._accessibilityManager + }); + this.l10n.translate(this.div); + if (this.linkService.isInPresentationMode) { + this.#updatePresentationModeState(_ui_utils.PresentationModeState.FULLSCREEN); + } + if (!this.#onPresentationModeChanged) { + this.#onPresentationModeChanged = evt => { + this.#updatePresentationModeState(evt.state); + }; + this._eventBus?._on("presentationmodechanged", this.#onPresentationModeChanged); + } + } + cancel() { + this._cancelled = true; + if (this.#onPresentationModeChanged) { + this._eventBus?._off("presentationmodechanged", this.#onPresentationModeChanged); + this.#onPresentationModeChanged = null; + } + } + hide() { + if (!this.div) { + return; + } + this.div.hidden = true; + } + #updatePresentationModeState(state) { + if (!this.div) { + return; + } + let disableFormElements = false; + switch (state) { + case _ui_utils.PresentationModeState.FULLSCREEN: + disableFormElements = true; + break; + case _ui_utils.PresentationModeState.NORMAL: + break; + default: + return; + } + for (const section of this.div.childNodes) { + if (section.hasAttribute("data-internal-link")) { + continue; + } + section.inert = disableFormElements; + } + } +} +exports.AnnotationLayerBuilder = AnnotationLayerBuilder; + +/***/ }), +/* 34 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.StructTreeLayerBuilder = void 0; +const PDF_ROLE_TO_HTML_ROLE = { + Document: null, + DocumentFragment: null, + Part: "group", + Sect: "group", + Div: "group", + Aside: "note", + NonStruct: "none", + P: null, + H: "heading", + Title: null, + FENote: "note", + Sub: "group", + Lbl: null, + Span: null, + Em: null, + Strong: null, + Link: "link", + Annot: "note", + Form: "form", + Ruby: null, + RB: null, + RT: null, + RP: null, + Warichu: null, + WT: null, + WP: null, + L: "list", + LI: "listitem", + LBody: null, + Table: "table", + TR: "row", + TH: "columnheader", + TD: "cell", + THead: "columnheader", + TBody: null, + TFoot: null, + Caption: null, + Figure: "figure", + Formula: null, + Artifact: null +}; +const HEADING_PATTERN = /^H(\d+)$/; +class StructTreeLayerBuilder { + #treeDom = undefined; + get renderingDone() { + return this.#treeDom !== undefined; + } + render(structTree) { + if (this.#treeDom !== undefined) { + return this.#treeDom; + } + const treeDom = this.#walk(structTree); + treeDom?.classList.add("structTree"); + return this.#treeDom = treeDom; + } + hide() { + if (this.#treeDom && !this.#treeDom.hidden) { + this.#treeDom.hidden = true; + } + } + show() { + if (this.#treeDom?.hidden) { + this.#treeDom.hidden = false; + } + } + #setAttributes(structElement, htmlElement) { + if (structElement.alt !== undefined) { + htmlElement.setAttribute("aria-label", structElement.alt); + } + if (structElement.id !== undefined) { + htmlElement.setAttribute("aria-owns", structElement.id); + } + if (structElement.lang !== undefined) { + htmlElement.setAttribute("lang", structElement.lang); + } + } + #walk(node) { + if (!node) { + return null; + } + const element = document.createElement("span"); + if ("role" in node) { + const { + role + } = node; + const match = role.match(HEADING_PATTERN); + if (match) { + element.setAttribute("role", "heading"); + element.setAttribute("aria-level", match[1]); + } else if (PDF_ROLE_TO_HTML_ROLE[role]) { + element.setAttribute("role", PDF_ROLE_TO_HTML_ROLE[role]); + } + } + this.#setAttributes(node, element); + if (node.children) { + if (node.children.length === 1 && "id" in node.children[0]) { + this.#setAttributes(node.children[0], element); + } else { + for (const kid of node.children) { + element.append(this.#walk(kid)); + } + } + } + return element; + } +} +exports.StructTreeLayerBuilder = StructTreeLayerBuilder; + +/***/ }), +/* 35 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TextAccessibilityManager = void 0; +var _ui_utils = __webpack_require__(3); +class TextAccessibilityManager { + #enabled = false; + #textChildren = null; + #textNodes = new Map(); + #waitingElements = new Map(); + setTextMapping(textDivs) { + this.#textChildren = textDivs; + } + static #compareElementPositions(e1, e2) { + const rect1 = e1.getBoundingClientRect(); + const rect2 = e2.getBoundingClientRect(); + if (rect1.width === 0 && rect1.height === 0) { + return +1; + } + if (rect2.width === 0 && rect2.height === 0) { + return -1; + } + const top1 = rect1.y; + const bot1 = rect1.y + rect1.height; + const mid1 = rect1.y + rect1.height / 2; + const top2 = rect2.y; + const bot2 = rect2.y + rect2.height; + const mid2 = rect2.y + rect2.height / 2; + if (mid1 <= top2 && mid2 >= bot1) { + return -1; + } + if (mid2 <= top1 && mid1 >= bot2) { + return +1; + } + const centerX1 = rect1.x + rect1.width / 2; + const centerX2 = rect2.x + rect2.width / 2; + return centerX1 - centerX2; + } + enable() { + if (this.#enabled) { + throw new Error("TextAccessibilityManager is already enabled."); + } + if (!this.#textChildren) { + throw new Error("Text divs and strings have not been set."); + } + this.#enabled = true; + this.#textChildren = this.#textChildren.slice(); + this.#textChildren.sort(TextAccessibilityManager.#compareElementPositions); + if (this.#textNodes.size > 0) { + const textChildren = this.#textChildren; + for (const [id, nodeIndex] of this.#textNodes) { + const element = document.getElementById(id); + if (!element) { + this.#textNodes.delete(id); + continue; + } + this.#addIdToAriaOwns(id, textChildren[nodeIndex]); + } + } + for (const [element, isRemovable] of this.#waitingElements) { + this.addPointerInTextLayer(element, isRemovable); + } + this.#waitingElements.clear(); + } + disable() { + if (!this.#enabled) { + return; + } + this.#waitingElements.clear(); + this.#textChildren = null; + this.#enabled = false; + } + removePointerInTextLayer(element) { + if (!this.#enabled) { + this.#waitingElements.delete(element); + return; + } + const children = this.#textChildren; + if (!children || children.length === 0) { + return; + } + const { + id + } = element; + const nodeIndex = this.#textNodes.get(id); + if (nodeIndex === undefined) { + return; + } + const node = children[nodeIndex]; + this.#textNodes.delete(id); + let owns = node.getAttribute("aria-owns"); + if (owns?.includes(id)) { + owns = owns.split(" ").filter(x => x !== id).join(" "); + if (owns) { + node.setAttribute("aria-owns", owns); + } else { + node.removeAttribute("aria-owns"); + node.setAttribute("role", "presentation"); + } + } + } + #addIdToAriaOwns(id, node) { + const owns = node.getAttribute("aria-owns"); + if (!owns?.includes(id)) { + node.setAttribute("aria-owns", owns ? `${owns} ${id}` : id); + } + node.removeAttribute("role"); + } + addPointerInTextLayer(element, isRemovable) { + const { + id + } = element; + if (!id) { + return; + } + if (!this.#enabled) { + this.#waitingElements.set(element, isRemovable); + return; + } + if (isRemovable) { + this.removePointerInTextLayer(element); + } + const children = this.#textChildren; + if (!children || children.length === 0) { + return; + } + const index = (0, _ui_utils.binarySearchFirstItem)(children, node => TextAccessibilityManager.#compareElementPositions(element, node) < 0); + const nodeIndex = Math.max(0, index - 1); + this.#addIdToAriaOwns(id, children[nodeIndex]); + this.#textNodes.set(id, nodeIndex); + } + moveElementInDOM(container, element, contentElement, isRemovable) { + this.addPointerInTextLayer(contentElement, isRemovable); + if (!container.hasChildNodes()) { + container.append(element); + return; + } + const children = Array.from(container.childNodes).filter(node => node !== element); + if (children.length === 0) { + return; + } + const elementToCompare = contentElement || element; + const index = (0, _ui_utils.binarySearchFirstItem)(children, node => TextAccessibilityManager.#compareElementPositions(elementToCompare, node) < 0); + if (index === 0) { + children[0].before(element); + } else { + children[index - 1].after(element); + } + } +} +exports.TextAccessibilityManager = TextAccessibilityManager; + +/***/ }), +/* 36 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TextHighlighter = void 0; +class TextHighlighter { + constructor({ + findController, + eventBus, + pageIndex + }) { + this.findController = findController; + this.matches = []; + this.eventBus = eventBus; + this.pageIdx = pageIndex; + this._onUpdateTextLayerMatches = null; + this.textDivs = null; + this.textContentItemsStr = null; + this.enabled = false; + } + setTextMapping(divs, texts) { + this.textDivs = divs; + this.textContentItemsStr = texts; + } + enable() { + if (!this.textDivs || !this.textContentItemsStr) { + throw new Error("Text divs and strings have not been set."); + } + if (this.enabled) { + throw new Error("TextHighlighter is already enabled."); + } + this.enabled = true; + if (!this._onUpdateTextLayerMatches) { + this._onUpdateTextLayerMatches = evt => { + if (evt.pageIndex === this.pageIdx || evt.pageIndex === -1) { + this._updateMatches(); + } + }; + this.eventBus._on("updatetextlayermatches", this._onUpdateTextLayerMatches); + } + this._updateMatches(); + } + disable() { + if (!this.enabled) { + return; + } + this.enabled = false; + if (this._onUpdateTextLayerMatches) { + this.eventBus._off("updatetextlayermatches", this._onUpdateTextLayerMatches); + this._onUpdateTextLayerMatches = null; + } + this._updateMatches(true); + } + _convertMatches(matches, matchesLength) { + if (!matches) { + return []; + } + const { + textContentItemsStr + } = this; + let i = 0, + iIndex = 0; + const end = textContentItemsStr.length - 1; + const result = []; + for (let m = 0, mm = matches.length; m < mm; m++) { + let matchIdx = matches[m]; + while (i !== end && matchIdx >= iIndex + textContentItemsStr[i].length) { + iIndex += textContentItemsStr[i].length; + i++; + } + if (i === textContentItemsStr.length) { + console.error("Could not find a matching mapping"); + } + const match = { + begin: { + divIdx: i, + offset: matchIdx - iIndex + } + }; + matchIdx += matchesLength[m]; + while (i !== end && matchIdx > iIndex + textContentItemsStr[i].length) { + iIndex += textContentItemsStr[i].length; + i++; + } + match.end = { + divIdx: i, + offset: matchIdx - iIndex + }; + result.push(match); + } + return result; + } + _renderMatches(matches) { + if (matches.length === 0) { + return; + } + const { + findController, + pageIdx + } = this; + const { + textContentItemsStr, + textDivs + } = this; + const isSelectedPage = pageIdx === findController.selected.pageIdx; + const selectedMatchIdx = findController.selected.matchIdx; + const highlightAll = findController.state.highlightAll; + let prevEnd = null; + const infinity = { + divIdx: -1, + offset: undefined + }; + function beginText(begin, className) { + const divIdx = begin.divIdx; + textDivs[divIdx].textContent = ""; + return appendTextToDiv(divIdx, 0, begin.offset, className); + } + function appendTextToDiv(divIdx, fromOffset, toOffset, className) { + let div = textDivs[divIdx]; + if (div.nodeType === Node.TEXT_NODE) { + const span = document.createElement("span"); + div.before(span); + span.append(div); + textDivs[divIdx] = span; + div = span; + } + const content = textContentItemsStr[divIdx].substring(fromOffset, toOffset); + const node = document.createTextNode(content); + if (className) { + const span = document.createElement("span"); + span.className = `${className} appended`; + span.append(node); + div.append(span); + return className.includes("selected") ? span.offsetLeft : 0; + } + div.append(node); + return 0; + } + let i0 = selectedMatchIdx, + i1 = i0 + 1; + if (highlightAll) { + i0 = 0; + i1 = matches.length; + } else if (!isSelectedPage) { + return; + } + for (let i = i0; i < i1; i++) { + const match = matches[i]; + const begin = match.begin; + const end = match.end; + const isSelected = isSelectedPage && i === selectedMatchIdx; + const highlightSuffix = isSelected ? " selected" : ""; + let selectedLeft = 0; + if (!prevEnd || begin.divIdx !== prevEnd.divIdx) { + if (prevEnd !== null) { + appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset); + } + beginText(begin); + } else { + appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset); + } + if (begin.divIdx === end.divIdx) { + selectedLeft = appendTextToDiv(begin.divIdx, begin.offset, end.offset, "highlight" + highlightSuffix); + } else { + selectedLeft = appendTextToDiv(begin.divIdx, begin.offset, infinity.offset, "highlight begin" + highlightSuffix); + for (let n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) { + textDivs[n0].className = "highlight middle" + highlightSuffix; + } + beginText(end, "highlight end" + highlightSuffix); + } + prevEnd = end; + if (isSelected) { + findController.scrollMatchIntoView({ + element: textDivs[begin.divIdx], + selectedLeft, + pageIndex: pageIdx, + matchIndex: selectedMatchIdx + }); + } + } + if (prevEnd) { + appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset); + } + } + _updateMatches(reset = false) { + if (!this.enabled && !reset) { + return; + } + const { + findController, + matches, + pageIdx + } = this; + const { + textContentItemsStr, + textDivs + } = this; + let clearedUntilDivIdx = -1; + for (const match of matches) { + const begin = Math.max(clearedUntilDivIdx, match.begin.divIdx); + for (let n = begin, end = match.end.divIdx; n <= end; n++) { + const div = textDivs[n]; + div.textContent = textContentItemsStr[n]; + div.className = ""; + } + clearedUntilDivIdx = match.end.divIdx + 1; + } + if (!findController?.highlightMatches || reset) { + return; + } + const pageMatches = findController.pageMatches[pageIdx] || null; + const pageMatchesLength = findController.pageMatchesLength[pageIdx] || null; + this.matches = this._convertMatches(pageMatches, pageMatchesLength); + this._renderMatches(this.matches); + } +} +exports.TextHighlighter = TextHighlighter; + +/***/ }), +/* 37 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TextLayerBuilder = void 0; +var _pdfjsLib = __webpack_require__(4); +class TextLayerBuilder { + #rotation = 0; + #scale = 0; + #textContentSource = null; + constructor({ + highlighter = null, + accessibilityManager = null, + isOffscreenCanvasSupported = true + }) { + this.textContentItemsStr = []; + this.renderingDone = false; + this.textDivs = []; + this.textDivProperties = new WeakMap(); + this.textLayerRenderTask = null; + this.highlighter = highlighter; + this.accessibilityManager = accessibilityManager; + this.isOffscreenCanvasSupported = isOffscreenCanvasSupported; + this.div = document.createElement("div"); + this.div.className = "textLayer"; + this.hide(); + } + #finishRendering() { + this.renderingDone = true; + const endOfContent = document.createElement("div"); + endOfContent.className = "endOfContent"; + this.div.append(endOfContent); + this.#bindMouse(); + } + get numTextDivs() { + return this.textDivs.length; + } + async render(viewport) { + if (!this.#textContentSource) { + throw new Error('No "textContentSource" parameter specified.'); + } + const scale = viewport.scale * (globalThis.devicePixelRatio || 1); + const { + rotation + } = viewport; + if (this.renderingDone) { + const mustRotate = rotation !== this.#rotation; + const mustRescale = scale !== this.#scale; + if (mustRotate || mustRescale) { + this.hide(); + (0, _pdfjsLib.updateTextLayer)({ + container: this.div, + viewport, + textDivs: this.textDivs, + textDivProperties: this.textDivProperties, + isOffscreenCanvasSupported: this.isOffscreenCanvasSupported, + mustRescale, + mustRotate + }); + this.#scale = scale; + this.#rotation = rotation; + } + this.show(); + return; + } + this.cancel(); + this.highlighter?.setTextMapping(this.textDivs, this.textContentItemsStr); + this.accessibilityManager?.setTextMapping(this.textDivs); + this.textLayerRenderTask = (0, _pdfjsLib.renderTextLayer)({ + textContentSource: this.#textContentSource, + container: this.div, + viewport, + textDivs: this.textDivs, + textDivProperties: this.textDivProperties, + textContentItemsStr: this.textContentItemsStr, + isOffscreenCanvasSupported: this.isOffscreenCanvasSupported + }); + await this.textLayerRenderTask.promise; + this.#finishRendering(); + this.#scale = scale; + this.#rotation = rotation; + this.show(); + this.accessibilityManager?.enable(); + } + hide() { + if (!this.div.hidden) { + this.highlighter?.disable(); + this.div.hidden = true; + } + } + show() { + if (this.div.hidden && this.renderingDone) { + this.div.hidden = false; + this.highlighter?.enable(); + } + } + cancel() { + if (this.textLayerRenderTask) { + this.textLayerRenderTask.cancel(); + this.textLayerRenderTask = null; + } + this.highlighter?.disable(); + this.accessibilityManager?.disable(); + this.textContentItemsStr.length = 0; + this.textDivs.length = 0; + this.textDivProperties = new WeakMap(); + } + setTextContentSource(source) { + this.cancel(); + this.#textContentSource = source; + } + #bindMouse() { + const { + div + } = this; + div.addEventListener("mousedown", evt => { + const end = div.querySelector(".endOfContent"); + if (!end) { + return; + } + let adjustTop = evt.target !== div; + adjustTop &&= getComputedStyle(end).getPropertyValue("-moz-user-select") !== "none"; + if (adjustTop) { + const divBounds = div.getBoundingClientRect(); + const r = Math.max(0, (evt.pageY - divBounds.top) / divBounds.height); + end.style.top = (r * 100).toFixed(2) + "%"; + } + end.classList.add("active"); + }); + div.addEventListener("mouseup", () => { + const end = div.querySelector(".endOfContent"); + if (!end) { + return; + } + end.style.top = ""; + end.classList.remove("active"); + }); + } +} +exports.TextLayerBuilder = TextLayerBuilder; + +/***/ }), +/* 38 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XfaLayerBuilder = void 0; +var _pdfjsLib = __webpack_require__(4); +class XfaLayerBuilder { + constructor({ + pageDiv, + pdfPage, + annotationStorage = null, + linkService, + xfaHtml = null + }) { + this.pageDiv = pageDiv; + this.pdfPage = pdfPage; + this.annotationStorage = annotationStorage; + this.linkService = linkService; + this.xfaHtml = xfaHtml; + this.div = null; + this._cancelled = false; + } + async render(viewport, intent = "display") { + if (intent === "print") { + const parameters = { + viewport: viewport.clone({ + dontFlip: true + }), + div: this.div, + xfaHtml: this.xfaHtml, + annotationStorage: this.annotationStorage, + linkService: this.linkService, + intent + }; + const div = document.createElement("div"); + this.pageDiv.append(div); + parameters.div = div; + return _pdfjsLib.XfaLayer.render(parameters); + } + const xfaHtml = await this.pdfPage.getXfa(); + if (this._cancelled || !xfaHtml) { + return { + textDivs: [] + }; + } + const parameters = { + viewport: viewport.clone({ + dontFlip: true + }), + div: this.div, + xfaHtml, + annotationStorage: this.annotationStorage, + linkService: this.linkService, + intent + }; + if (this.div) { + return _pdfjsLib.XfaLayer.update(parameters); + } + this.div = document.createElement("div"); + this.pageDiv.append(this.div); + parameters.div = this.div; + return _pdfjsLib.XfaLayer.render(parameters); + } + cancel() { + this._cancelled = true; + } + hide() { + if (!this.div) { + return; + } + this.div.hidden = true; + } +} +exports.XfaLayerBuilder = XfaLayerBuilder; + +/***/ }), +/* 39 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SecondaryToolbar = void 0; +var _ui_utils = __webpack_require__(3); +var _pdf_viewer = __webpack_require__(29); +class SecondaryToolbar { + constructor(options, eventBus, externalServices) { + this.toolbar = options.toolbar; + this.toggleButton = options.toggleButton; + this.buttons = [{ + element: options.presentationModeButton, + eventName: "presentationmode", + close: true + }, { + element: options.printButton, + eventName: "print", + close: true + }, { + element: options.downloadButton, + eventName: "download", + close: true + }, { + element: options.viewBookmarkButton, + eventName: null, + close: true + }, { + element: options.firstPageButton, + eventName: "firstpage", + close: true + }, { + element: options.lastPageButton, + eventName: "lastpage", + close: true + }, { + element: options.pageRotateCwButton, + eventName: "rotatecw", + close: false + }, { + element: options.pageRotateCcwButton, + eventName: "rotateccw", + close: false + }, { + element: options.cursorSelectToolButton, + eventName: "switchcursortool", + eventDetails: { + tool: _ui_utils.CursorTool.SELECT + }, + close: true + }, { + element: options.cursorHandToolButton, + eventName: "switchcursortool", + eventDetails: { + tool: _ui_utils.CursorTool.HAND + }, + close: true + }, { + element: options.scrollPageButton, + eventName: "switchscrollmode", + eventDetails: { + mode: _ui_utils.ScrollMode.PAGE + }, + close: true + }, { + element: options.scrollVerticalButton, + eventName: "switchscrollmode", + eventDetails: { + mode: _ui_utils.ScrollMode.VERTICAL + }, + close: true + }, { + element: options.scrollHorizontalButton, + eventName: "switchscrollmode", + eventDetails: { + mode: _ui_utils.ScrollMode.HORIZONTAL + }, + close: true + }, { + element: options.scrollWrappedButton, + eventName: "switchscrollmode", + eventDetails: { + mode: _ui_utils.ScrollMode.WRAPPED + }, + close: true + }, { + element: options.spreadNoneButton, + eventName: "switchspreadmode", + eventDetails: { + mode: _ui_utils.SpreadMode.NONE + }, + close: true + }, { + element: options.spreadOddButton, + eventName: "switchspreadmode", + eventDetails: { + mode: _ui_utils.SpreadMode.ODD + }, + close: true + }, { + element: options.spreadEvenButton, + eventName: "switchspreadmode", + eventDetails: { + mode: _ui_utils.SpreadMode.EVEN + }, + close: true + }, { + element: options.documentPropertiesButton, + eventName: "documentproperties", + close: true + }]; + this.buttons.push({ + element: options.openFileButton, + eventName: "openfile", + close: true + }); + this.items = { + firstPage: options.firstPageButton, + lastPage: options.lastPageButton, + pageRotateCw: options.pageRotateCwButton, + pageRotateCcw: options.pageRotateCcwButton + }; + this.eventBus = eventBus; + this.externalServices = externalServices; + this.opened = false; + this.#bindClickListeners(); + this.#bindCursorToolsListener(options); + this.#bindScrollModeListener(options); + this.#bindSpreadModeListener(options); + this.reset(); + } + get isOpen() { + return this.opened; + } + setPageNumber(pageNumber) { + this.pageNumber = pageNumber; + this.#updateUIState(); + } + setPagesCount(pagesCount) { + this.pagesCount = pagesCount; + this.#updateUIState(); + } + reset() { + this.pageNumber = 0; + this.pagesCount = 0; + this.#updateUIState(); + this.eventBus.dispatch("secondarytoolbarreset", { + source: this + }); + } + #updateUIState() { + this.items.firstPage.disabled = this.pageNumber <= 1; + this.items.lastPage.disabled = this.pageNumber >= this.pagesCount; + this.items.pageRotateCw.disabled = this.pagesCount === 0; + this.items.pageRotateCcw.disabled = this.pagesCount === 0; + } + #bindClickListeners() { + this.toggleButton.addEventListener("click", this.toggle.bind(this)); + for (const { + element, + eventName, + close, + eventDetails + } of this.buttons) { + element.addEventListener("click", evt => { + if (eventName !== null) { + const details = { + source: this + }; + for (const property in eventDetails) { + details[property] = eventDetails[property]; + } + this.eventBus.dispatch(eventName, details); + } + if (close) { + this.close(); + } + this.externalServices.reportTelemetry({ + type: "buttons", + data: { + id: element.id + } + }); + }); + } + } + #bindCursorToolsListener({ + cursorSelectToolButton, + cursorHandToolButton + }) { + this.eventBus._on("cursortoolchanged", function ({ + tool + }) { + const isSelect = tool === _ui_utils.CursorTool.SELECT, + isHand = tool === _ui_utils.CursorTool.HAND; + cursorSelectToolButton.classList.toggle("toggled", isSelect); + cursorHandToolButton.classList.toggle("toggled", isHand); + cursorSelectToolButton.setAttribute("aria-checked", isSelect); + cursorHandToolButton.setAttribute("aria-checked", isHand); + }); + } + #bindScrollModeListener({ + scrollPageButton, + scrollVerticalButton, + scrollHorizontalButton, + scrollWrappedButton, + spreadNoneButton, + spreadOddButton, + spreadEvenButton + }) { + const scrollModeChanged = ({ + mode + }) => { + const isPage = mode === _ui_utils.ScrollMode.PAGE, + isVertical = mode === _ui_utils.ScrollMode.VERTICAL, + isHorizontal = mode === _ui_utils.ScrollMode.HORIZONTAL, + isWrapped = mode === _ui_utils.ScrollMode.WRAPPED; + scrollPageButton.classList.toggle("toggled", isPage); + scrollVerticalButton.classList.toggle("toggled", isVertical); + scrollHorizontalButton.classList.toggle("toggled", isHorizontal); + scrollWrappedButton.classList.toggle("toggled", isWrapped); + scrollPageButton.setAttribute("aria-checked", isPage); + scrollVerticalButton.setAttribute("aria-checked", isVertical); + scrollHorizontalButton.setAttribute("aria-checked", isHorizontal); + scrollWrappedButton.setAttribute("aria-checked", isWrapped); + const forceScrollModePage = this.pagesCount > _pdf_viewer.PagesCountLimit.FORCE_SCROLL_MODE_PAGE; + scrollPageButton.disabled = forceScrollModePage; + scrollVerticalButton.disabled = forceScrollModePage; + scrollHorizontalButton.disabled = forceScrollModePage; + scrollWrappedButton.disabled = forceScrollModePage; + spreadNoneButton.disabled = isHorizontal; + spreadOddButton.disabled = isHorizontal; + spreadEvenButton.disabled = isHorizontal; + }; + this.eventBus._on("scrollmodechanged", scrollModeChanged); + this.eventBus._on("secondarytoolbarreset", evt => { + if (evt.source === this) { + scrollModeChanged({ + mode: _ui_utils.ScrollMode.VERTICAL + }); + } + }); + } + #bindSpreadModeListener({ + spreadNoneButton, + spreadOddButton, + spreadEvenButton + }) { + function spreadModeChanged({ + mode + }) { + const isNone = mode === _ui_utils.SpreadMode.NONE, + isOdd = mode === _ui_utils.SpreadMode.ODD, + isEven = mode === _ui_utils.SpreadMode.EVEN; + spreadNoneButton.classList.toggle("toggled", isNone); + spreadOddButton.classList.toggle("toggled", isOdd); + spreadEvenButton.classList.toggle("toggled", isEven); + spreadNoneButton.setAttribute("aria-checked", isNone); + spreadOddButton.setAttribute("aria-checked", isOdd); + spreadEvenButton.setAttribute("aria-checked", isEven); + } + this.eventBus._on("spreadmodechanged", spreadModeChanged); + this.eventBus._on("secondarytoolbarreset", evt => { + if (evt.source === this) { + spreadModeChanged({ + mode: _ui_utils.SpreadMode.NONE + }); + } + }); + } + open() { + if (this.opened) { + return; + } + this.opened = true; + this.toggleButton.classList.add("toggled"); + this.toggleButton.setAttribute("aria-expanded", "true"); + this.toolbar.classList.remove("hidden"); + } + close() { + if (!this.opened) { + return; + } + this.opened = false; + this.toolbar.classList.add("hidden"); + this.toggleButton.classList.remove("toggled"); + this.toggleButton.setAttribute("aria-expanded", "false"); + } + toggle() { + if (this.opened) { + this.close(); + } else { + this.open(); + } + } +} +exports.SecondaryToolbar = SecondaryToolbar; + +/***/ }), +/* 40 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Toolbar = void 0; +var _ui_utils = __webpack_require__(3); +var _pdfjsLib = __webpack_require__(4); +const PAGE_NUMBER_LOADING_INDICATOR = "visiblePageIsLoading"; +class Toolbar { + #wasLocalized = false; + constructor(options, eventBus, l10n) { + this.toolbar = options.container; + this.eventBus = eventBus; + this.l10n = l10n; + this.buttons = [{ + element: options.previous, + eventName: "previouspage" + }, { + element: options.next, + eventName: "nextpage" + }, { + element: options.zoomIn, + eventName: "zoomin" + }, { + element: options.zoomOut, + eventName: "zoomout" + }, { + element: options.print, + eventName: "print" + }, { + element: options.download, + eventName: "download" + }, { + element: options.editorFreeTextButton, + eventName: "switchannotationeditormode", + eventDetails: { + get mode() { + const { + classList + } = options.editorFreeTextButton; + return classList.contains("toggled") ? _pdfjsLib.AnnotationEditorType.NONE : _pdfjsLib.AnnotationEditorType.FREETEXT; + } + } + }, { + element: options.editorInkButton, + eventName: "switchannotationeditormode", + eventDetails: { + get mode() { + const { + classList + } = options.editorInkButton; + return classList.contains("toggled") ? _pdfjsLib.AnnotationEditorType.NONE : _pdfjsLib.AnnotationEditorType.INK; + } + } + }]; + this.buttons.push({ + element: options.openFile, + eventName: "openfile" + }); + this.items = { + numPages: options.numPages, + pageNumber: options.pageNumber, + scaleSelect: options.scaleSelect, + customScaleOption: options.customScaleOption, + previous: options.previous, + next: options.next, + zoomIn: options.zoomIn, + zoomOut: options.zoomOut + }; + this.#bindListeners(options); + this.reset(); + } + setPageNumber(pageNumber, pageLabel) { + this.pageNumber = pageNumber; + this.pageLabel = pageLabel; + this.#updateUIState(false); + } + setPagesCount(pagesCount, hasPageLabels) { + this.pagesCount = pagesCount; + this.hasPageLabels = hasPageLabels; + this.#updateUIState(true); + } + setPageScale(pageScaleValue, pageScale) { + this.pageScaleValue = (pageScaleValue || pageScale).toString(); + this.pageScale = pageScale; + this.#updateUIState(false); + } + reset() { + this.pageNumber = 0; + this.pageLabel = null; + this.hasPageLabels = false; + this.pagesCount = 0; + this.pageScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; + this.pageScale = _ui_utils.DEFAULT_SCALE; + this.#updateUIState(true); + this.updateLoadingIndicatorState(); + this.eventBus.dispatch("toolbarreset", { + source: this + }); + } + #bindListeners(options) { + const { + pageNumber, + scaleSelect + } = this.items; + const self = this; + for (const { + element, + eventName, + eventDetails + } of this.buttons) { + element.addEventListener("click", evt => { + if (eventName !== null) { + const details = { + source: this + }; + if (eventDetails) { + for (const property in eventDetails) { + details[property] = eventDetails[property]; + } + } + this.eventBus.dispatch(eventName, details); + } + }); + } + pageNumber.addEventListener("click", function () { + this.select(); + }); + pageNumber.addEventListener("change", function () { + self.eventBus.dispatch("pagenumberchanged", { + source: self, + value: this.value + }); + }); + scaleSelect.addEventListener("change", function () { + if (this.value === "custom") { + return; + } + self.eventBus.dispatch("scalechanged", { + source: self, + value: this.value + }); + }); + scaleSelect.addEventListener("click", function (evt) { + const target = evt.target; + if (this.value === self.pageScaleValue && target.tagName.toUpperCase() === "OPTION") { + this.blur(); + } + }); + scaleSelect.oncontextmenu = _ui_utils.noContextMenuHandler; + this.eventBus._on("localized", () => { + this.#wasLocalized = true; + this.#adjustScaleWidth(); + this.#updateUIState(true); + }); + this.#bindEditorToolsListener(options); + } + #bindEditorToolsListener({ + editorFreeTextButton, + editorFreeTextParamsToolbar, + editorInkButton, + editorInkParamsToolbar + }) { + const editorModeChanged = (evt, disableButtons = false) => { + const editorButtons = [{ + mode: _pdfjsLib.AnnotationEditorType.FREETEXT, + button: editorFreeTextButton, + toolbar: editorFreeTextParamsToolbar + }, { + mode: _pdfjsLib.AnnotationEditorType.INK, + button: editorInkButton, + toolbar: editorInkParamsToolbar + }]; + for (const { + mode, + button, + toolbar + } of editorButtons) { + const checked = mode === evt.mode; + button.classList.toggle("toggled", checked); + button.setAttribute("aria-checked", checked); + button.disabled = disableButtons; + toolbar?.classList.toggle("hidden", !checked); + } + }; + this.eventBus._on("annotationeditormodechanged", editorModeChanged); + this.eventBus._on("toolbarreset", evt => { + if (evt.source === this) { + editorModeChanged({ + mode: _pdfjsLib.AnnotationEditorType.NONE + }, true); + } + }); + } + #updateUIState(resetNumPages = false) { + if (!this.#wasLocalized) { + return; + } + const { + pageNumber, + pagesCount, + pageScaleValue, + pageScale, + items + } = this; + if (resetNumPages) { + if (this.hasPageLabels) { + items.pageNumber.type = "text"; + } else { + items.pageNumber.type = "number"; + this.l10n.get("of_pages", { + pagesCount + }).then(msg => { + items.numPages.textContent = msg; + }); + } + items.pageNumber.max = pagesCount; + } + if (this.hasPageLabels) { + items.pageNumber.value = this.pageLabel; + this.l10n.get("page_of_pages", { + pageNumber, + pagesCount + }).then(msg => { + items.numPages.textContent = msg; + }); + } else { + items.pageNumber.value = pageNumber; + } + items.previous.disabled = pageNumber <= 1; + items.next.disabled = pageNumber >= pagesCount; + items.zoomOut.disabled = pageScale <= _ui_utils.MIN_SCALE; + items.zoomIn.disabled = pageScale >= _ui_utils.MAX_SCALE; + this.l10n.get("page_scale_percent", { + scale: Math.round(pageScale * 10000) / 100 + }).then(msg => { + let predefinedValueFound = false; + for (const option of items.scaleSelect.options) { + if (option.value !== pageScaleValue) { + option.selected = false; + continue; + } + option.selected = true; + predefinedValueFound = true; + } + if (!predefinedValueFound) { + items.customScaleOption.textContent = msg; + items.customScaleOption.selected = true; + } + }); + } + updateLoadingIndicatorState(loading = false) { + const { + pageNumber + } = this.items; + pageNumber.classList.toggle(PAGE_NUMBER_LOADING_INDICATOR, loading); + } + async #adjustScaleWidth() { + const { + items, + l10n + } = this; + const predefinedValuesPromise = Promise.all([l10n.get("page_scale_auto"), l10n.get("page_scale_actual"), l10n.get("page_scale_fit"), l10n.get("page_scale_width")]); + await _ui_utils.animationStarted; + const style = getComputedStyle(items.scaleSelect); + const scaleSelectWidth = parseFloat(style.getPropertyValue("--scale-select-width")); + const canvas = document.createElement("canvas"); + const ctx = canvas.getContext("2d", { + alpha: false + }); + ctx.font = `${style.fontSize} ${style.fontFamily}`; + let maxWidth = 0; + for (const predefinedValue of await predefinedValuesPromise) { + const { + width + } = ctx.measureText(predefinedValue); + if (width > maxWidth) { + maxWidth = width; + } + } + maxWidth += 0.3 * scaleSelectWidth; + if (maxWidth > scaleSelectWidth) { + const container = items.scaleSelect.parentNode; + container.style.setProperty("--scale-select-width", `${maxWidth}px`); + } + canvas.width = 0; + canvas.height = 0; + } +} +exports.Toolbar = Toolbar; + +/***/ }), +/* 41 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ViewHistory = void 0; +const DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20; +class ViewHistory { + constructor(fingerprint, cacheSize = DEFAULT_VIEW_HISTORY_CACHE_SIZE) { + this.fingerprint = fingerprint; + this.cacheSize = cacheSize; + this._initializedPromise = this._readFromStorage().then(databaseStr => { + const database = JSON.parse(databaseStr || "{}"); + let index = -1; + if (!Array.isArray(database.files)) { + database.files = []; + } else { + while (database.files.length >= this.cacheSize) { + database.files.shift(); + } + for (let i = 0, ii = database.files.length; i < ii; i++) { + const branch = database.files[i]; + if (branch.fingerprint === this.fingerprint) { + index = i; + break; + } + } + } + if (index === -1) { + index = database.files.push({ + fingerprint: this.fingerprint + }) - 1; + } + this.file = database.files[index]; + this.database = database; + }); + } + async _writeToStorage() { + const databaseStr = JSON.stringify(this.database); + localStorage.setItem("pdfjs.history", databaseStr); + } + async _readFromStorage() { + return localStorage.getItem("pdfjs.history"); + } + async set(name, val) { + await this._initializedPromise; + this.file[name] = val; + return this._writeToStorage(); + } + async setMultiple(properties) { + await this._initializedPromise; + for (const name in properties) { + this.file[name] = properties[name]; + } + return this._writeToStorage(); + } + async get(name, defaultValue) { + await this._initializedPromise; + const val = this.file[name]; + return val !== undefined ? val : defaultValue; + } + async getMultiple(properties) { + await this._initializedPromise; + const values = Object.create(null); + for (const name in properties) { + const val = this.file[name]; + values[name] = val !== undefined ? val : properties[name]; + } + return values; + } +} +exports.ViewHistory = ViewHistory; + +/***/ }), +/* 42 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.BasePreferences = void 0; +var _app_options = __webpack_require__(5); +class BasePreferences { + #defaults = Object.freeze({ + "annotationEditorMode": 0, + "annotationMode": 2, + "cursorToolOnLoad": 0, + "defaultZoomDelay": 400, + "defaultZoomValue": "", + "disablePageLabels": false, + "enablePermissions": false, + "enablePrintAutoRotate": true, + "enableScripting": true, + "externalLinkTarget": 0, + "historyUpdateUrl": false, + "ignoreDestinationZoom": false, + "forcePageColors": false, + "pageColorsBackground": "Canvas", + "pageColorsForeground": "CanvasText", + "pdfBugEnabled": false, + "sidebarViewOnLoad": -1, + "scrollModeOnLoad": -1, + "spreadModeOnLoad": -1, + "textLayerMode": 1, + "useOnlyCssZoom": false, + "viewerCssTheme": 0, + "viewOnLoad": 0, + "disableAutoFetch": false, + "disableFontFace": false, + "disableRange": false, + "disableStream": false, + "enableXfa": true, + "renderer": "canvas" + }); + #prefs = Object.create(null); + #initializedPromise = null; + constructor() { + if (this.constructor === BasePreferences) { + throw new Error("Cannot initialize BasePreferences."); + } + this.#initializedPromise = this._readFromStorage(this.#defaults).then(prefs => { + for (const name in this.#defaults) { + const prefValue = prefs?.[name]; + if (typeof prefValue === typeof this.#defaults[name]) { + this.#prefs[name] = prefValue; + } + } + }); + } + async _writeToStorage(prefObj) { + throw new Error("Not implemented: _writeToStorage"); + } + async _readFromStorage(prefObj) { + throw new Error("Not implemented: _readFromStorage"); + } + async reset() { + await this.#initializedPromise; + const prefs = this.#prefs; + this.#prefs = Object.create(null); + return this._writeToStorage(this.#defaults).catch(reason => { + this.#prefs = prefs; + throw reason; + }); + } + async set(name, value) { + await this.#initializedPromise; + const defaultValue = this.#defaults[name], + prefs = this.#prefs; + if (defaultValue === undefined) { + throw new Error(`Set preference: "${name}" is undefined.`); + } else if (value === undefined) { + throw new Error("Set preference: no value is specified."); + } + const valueType = typeof value, + defaultType = typeof defaultValue; + if (valueType !== defaultType) { + if (valueType === "number" && defaultType === "string") { + value = value.toString(); + } else { + throw new Error(`Set preference: "${value}" is a ${valueType}, expected a ${defaultType}.`); + } + } else { + if (valueType === "number" && !Number.isInteger(value)) { + throw new Error(`Set preference: "${value}" must be an integer.`); + } + } + this.#prefs[name] = value; + return this._writeToStorage(this.#prefs).catch(reason => { + this.#prefs = prefs; + throw reason; + }); + } + async get(name) { + await this.#initializedPromise; + const defaultValue = this.#defaults[name]; + if (defaultValue === undefined) { + throw new Error(`Get preference: "${name}" is undefined.`); + } + return this.#prefs[name] ?? defaultValue; + } + async getAll() { + await this.#initializedPromise; + const obj = Object.create(null); + for (const name in this.#defaults) { + obj[name] = this.#prefs[name] ?? this.#defaults[name]; + } + return obj; + } +} +exports.BasePreferences = BasePreferences; + +/***/ }), +/* 43 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.DownloadManager = void 0; +var _pdfjsLib = __webpack_require__(4); +; +function download(blobUrl, filename) { + const a = document.createElement("a"); + if (!a.click) { + throw new Error('DownloadManager: "a.click()" is not supported.'); + } + a.href = blobUrl; + a.target = "_parent"; + if ("download" in a) { + a.download = filename; + } + (document.body || document.documentElement).append(a); + a.click(); + a.remove(); +} +class DownloadManager { + #openBlobUrls = new WeakMap(); + downloadUrl(url, filename) { + if (!(0, _pdfjsLib.createValidAbsoluteUrl)(url, "http://example.com")) { + console.error(`downloadUrl - not a valid URL: ${url}`); + return; + } + download(url + "#pdfjs.action=download", filename); + } + downloadData(data, filename, contentType) { + const blobUrl = URL.createObjectURL(new Blob([data], { + type: contentType + })); + download(blobUrl, filename); + } + openOrDownloadData(element, data, filename) { + const isPdfData = (0, _pdfjsLib.isPdfFile)(filename); + const contentType = isPdfData ? "application/pdf" : ""; + if (isPdfData) { + let blobUrl = this.#openBlobUrls.get(element); + if (!blobUrl) { + blobUrl = URL.createObjectURL(new Blob([data], { + type: contentType + })); + this.#openBlobUrls.set(element, blobUrl); + } + let viewerUrl; + viewerUrl = "?file=" + encodeURIComponent(blobUrl + "#" + filename); + try { + window.open(viewerUrl); + return true; + } catch (ex) { + console.error(`openOrDownloadData: ${ex}`); + URL.revokeObjectURL(blobUrl); + this.#openBlobUrls.delete(element); + } + } + this.downloadData(data, filename, contentType); + return false; + } + download(blob, url, filename) { + const blobUrl = URL.createObjectURL(blob); + download(blobUrl, filename); + } +} +exports.DownloadManager = DownloadManager; + +/***/ }), +/* 44 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GenericL10n = void 0; +__webpack_require__(45); +var _l10n_utils = __webpack_require__(30); +const webL10n = document.webL10n; +class GenericL10n { + constructor(lang) { + this._lang = lang; + this._ready = new Promise((resolve, reject) => { + webL10n.setLanguage((0, _l10n_utils.fixupLangCode)(lang), () => { + resolve(webL10n); + }); + }); + } + async getLanguage() { + const l10n = await this._ready; + return l10n.getLanguage(); + } + async getDirection() { + const l10n = await this._ready; + return l10n.getDirection(); + } + async get(key, args = null, fallback = (0, _l10n_utils.getL10nFallback)(key, args)) { + const l10n = await this._ready; + return l10n.get(key, args, fallback); + } + async translate(element) { + const l10n = await this._ready; + return l10n.translate(element); + } +} +exports.GenericL10n = GenericL10n; + +/***/ }), +/* 45 */ +/***/ (() => { + + + +document.webL10n = function (window, document, undefined) { + var gL10nData = {}; + var gTextData = ''; + var gTextProp = 'textContent'; + var gLanguage = ''; + var gMacros = {}; + var gReadyState = 'loading'; + var gAsyncResourceLoading = true; + function getL10nResourceLinks() { + return document.querySelectorAll('link[type="application/l10n"]'); + } + function getL10nDictionary() { + var script = document.querySelector('script[type="application/l10n"]'); + return script ? JSON.parse(script.innerHTML) : null; + } + function getTranslatableChildren(element) { + return element ? element.querySelectorAll('*[data-l10n-id]') : []; + } + function getL10nAttributes(element) { + if (!element) return {}; + var l10nId = element.getAttribute('data-l10n-id'); + var l10nArgs = element.getAttribute('data-l10n-args'); + var args = {}; + if (l10nArgs) { + try { + args = JSON.parse(l10nArgs); + } catch (e) { + console.warn('could not parse arguments for #' + l10nId); + } + } + return { + id: l10nId, + args: args + }; + } + function xhrLoadText(url, onSuccess, onFailure) { + onSuccess = onSuccess || function _onSuccess(data) {}; + onFailure = onFailure || function _onFailure() {}; + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, gAsyncResourceLoading); + if (xhr.overrideMimeType) { + xhr.overrideMimeType('text/plain; charset=utf-8'); + } + xhr.onreadystatechange = function () { + if (xhr.readyState == 4) { + if (xhr.status == 200 || xhr.status === 0) { + onSuccess(xhr.responseText); + } else { + onFailure(); + } + } + }; + xhr.onerror = onFailure; + xhr.ontimeout = onFailure; + try { + xhr.send(null); + } catch (e) { + onFailure(); + } + } + function parseResource(href, lang, successCallback, failureCallback) { + var baseURL = href.replace(/[^\/]*$/, '') || './'; + function evalString(text) { + if (text.lastIndexOf('\\') < 0) return text; + return text.replace(/\\\\/g, '\\').replace(/\\n/g, '\n').replace(/\\r/g, '\r').replace(/\\t/g, '\t').replace(/\\b/g, '\b').replace(/\\f/g, '\f').replace(/\\{/g, '{').replace(/\\}/g, '}').replace(/\\"/g, '"').replace(/\\'/g, "'"); + } + function parseProperties(text, parsedPropertiesCallback) { + var dictionary = {}; + var reBlank = /^\s*|\s*$/; + var reComment = /^\s*#|^\s*$/; + var reSection = /^\s*\[(.*)\]\s*$/; + var reImport = /^\s*@import\s+url\((.*)\)\s*$/i; + var reSplit = /^([^=\s]*)\s*=\s*(.+)$/; + function parseRawLines(rawText, extendedSyntax, parsedRawLinesCallback) { + var entries = rawText.replace(reBlank, '').split(/[\r\n]+/); + var currentLang = '*'; + var genericLang = lang.split('-', 1)[0]; + var skipLang = false; + var match = ''; + function nextEntry() { + while (true) { + if (!entries.length) { + parsedRawLinesCallback(); + return; + } + var line = entries.shift(); + if (reComment.test(line)) continue; + if (extendedSyntax) { + match = reSection.exec(line); + if (match) { + currentLang = match[1].toLowerCase(); + skipLang = currentLang !== '*' && currentLang !== lang && currentLang !== genericLang; + continue; + } else if (skipLang) { + continue; + } + match = reImport.exec(line); + if (match) { + loadImport(baseURL + match[1], nextEntry); + return; + } + } + var tmp = line.match(reSplit); + if (tmp && tmp.length == 3) { + dictionary[tmp[1]] = evalString(tmp[2]); + } + } + } + nextEntry(); + } + function loadImport(url, callback) { + xhrLoadText(url, function (content) { + parseRawLines(content, false, callback); + }, function () { + console.warn(url + ' not found.'); + callback(); + }); + } + parseRawLines(text, true, function () { + parsedPropertiesCallback(dictionary); + }); + } + xhrLoadText(href, function (response) { + gTextData += response; + parseProperties(response, function (data) { + for (var key in data) { + var id, + prop, + index = key.lastIndexOf('.'); + if (index > 0) { + id = key.substring(0, index); + prop = key.substring(index + 1); + } else { + id = key; + prop = gTextProp; + } + if (!gL10nData[id]) { + gL10nData[id] = {}; + } + gL10nData[id][prop] = data[key]; + } + if (successCallback) { + successCallback(); + } + }); + }, failureCallback); + } + function loadLocale(lang, callback) { + if (lang) { + lang = lang.toLowerCase(); + } + callback = callback || function _callback() {}; + clear(); + gLanguage = lang; + var langLinks = getL10nResourceLinks(); + var langCount = langLinks.length; + if (langCount === 0) { + var dict = getL10nDictionary(); + if (dict && dict.locales && dict.default_locale) { + console.log('using the embedded JSON directory, early way out'); + gL10nData = dict.locales[lang]; + if (!gL10nData) { + var defaultLocale = dict.default_locale.toLowerCase(); + for (var anyCaseLang in dict.locales) { + anyCaseLang = anyCaseLang.toLowerCase(); + if (anyCaseLang === lang) { + gL10nData = dict.locales[lang]; + break; + } else if (anyCaseLang === defaultLocale) { + gL10nData = dict.locales[defaultLocale]; + } + } + } + callback(); + } else { + console.log('no resource to load, early way out'); + } + gReadyState = 'complete'; + return; + } + var onResourceLoaded = null; + var gResourceCount = 0; + onResourceLoaded = function () { + gResourceCount++; + if (gResourceCount >= langCount) { + callback(); + gReadyState = 'complete'; + } + }; + function L10nResourceLink(link) { + var href = link.href; + this.load = function (lang, callback) { + parseResource(href, lang, callback, function () { + console.warn(href + ' not found.'); + console.warn('"' + lang + '" resource not found'); + gLanguage = ''; + callback(); + }); + }; + } + for (var i = 0; i < langCount; i++) { + var resource = new L10nResourceLink(langLinks[i]); + resource.load(lang, onResourceLoaded); + } + } + function clear() { + gL10nData = {}; + gTextData = ''; + gLanguage = ''; + } + function getPluralRules(lang) { + var locales2rules = { + 'af': 3, + 'ak': 4, + 'am': 4, + 'ar': 1, + 'asa': 3, + 'az': 0, + 'be': 11, + 'bem': 3, + 'bez': 3, + 'bg': 3, + 'bh': 4, + 'bm': 0, + 'bn': 3, + 'bo': 0, + 'br': 20, + 'brx': 3, + 'bs': 11, + 'ca': 3, + 'cgg': 3, + 'chr': 3, + 'cs': 12, + 'cy': 17, + 'da': 3, + 'de': 3, + 'dv': 3, + 'dz': 0, + 'ee': 3, + 'el': 3, + 'en': 3, + 'eo': 3, + 'es': 3, + 'et': 3, + 'eu': 3, + 'fa': 0, + 'ff': 5, + 'fi': 3, + 'fil': 4, + 'fo': 3, + 'fr': 5, + 'fur': 3, + 'fy': 3, + 'ga': 8, + 'gd': 24, + 'gl': 3, + 'gsw': 3, + 'gu': 3, + 'guw': 4, + 'gv': 23, + 'ha': 3, + 'haw': 3, + 'he': 2, + 'hi': 4, + 'hr': 11, + 'hu': 0, + 'id': 0, + 'ig': 0, + 'ii': 0, + 'is': 3, + 'it': 3, + 'iu': 7, + 'ja': 0, + 'jmc': 3, + 'jv': 0, + 'ka': 0, + 'kab': 5, + 'kaj': 3, + 'kcg': 3, + 'kde': 0, + 'kea': 0, + 'kk': 3, + 'kl': 3, + 'km': 0, + 'kn': 0, + 'ko': 0, + 'ksb': 3, + 'ksh': 21, + 'ku': 3, + 'kw': 7, + 'lag': 18, + 'lb': 3, + 'lg': 3, + 'ln': 4, + 'lo': 0, + 'lt': 10, + 'lv': 6, + 'mas': 3, + 'mg': 4, + 'mk': 16, + 'ml': 3, + 'mn': 3, + 'mo': 9, + 'mr': 3, + 'ms': 0, + 'mt': 15, + 'my': 0, + 'nah': 3, + 'naq': 7, + 'nb': 3, + 'nd': 3, + 'ne': 3, + 'nl': 3, + 'nn': 3, + 'no': 3, + 'nr': 3, + 'nso': 4, + 'ny': 3, + 'nyn': 3, + 'om': 3, + 'or': 3, + 'pa': 3, + 'pap': 3, + 'pl': 13, + 'ps': 3, + 'pt': 3, + 'rm': 3, + 'ro': 9, + 'rof': 3, + 'ru': 11, + 'rwk': 3, + 'sah': 0, + 'saq': 3, + 'se': 7, + 'seh': 3, + 'ses': 0, + 'sg': 0, + 'sh': 11, + 'shi': 19, + 'sk': 12, + 'sl': 14, + 'sma': 7, + 'smi': 7, + 'smj': 7, + 'smn': 7, + 'sms': 7, + 'sn': 3, + 'so': 3, + 'sq': 3, + 'sr': 11, + 'ss': 3, + 'ssy': 3, + 'st': 3, + 'sv': 3, + 'sw': 3, + 'syr': 3, + 'ta': 3, + 'te': 3, + 'teo': 3, + 'th': 0, + 'ti': 4, + 'tig': 3, + 'tk': 3, + 'tl': 4, + 'tn': 3, + 'to': 0, + 'tr': 0, + 'ts': 3, + 'tzm': 22, + 'uk': 11, + 'ur': 3, + 've': 3, + 'vi': 0, + 'vun': 3, + 'wa': 4, + 'wae': 3, + 'wo': 0, + 'xh': 3, + 'xog': 3, + 'yo': 0, + 'zh': 0, + 'zu': 3 + }; + function isIn(n, list) { + return list.indexOf(n) !== -1; + } + function isBetween(n, start, end) { + return start <= n && n <= end; + } + var pluralRules = { + '0': function (n) { + return 'other'; + }, + '1': function (n) { + if (isBetween(n % 100, 3, 10)) return 'few'; + if (n === 0) return 'zero'; + if (isBetween(n % 100, 11, 99)) return 'many'; + if (n == 2) return 'two'; + if (n == 1) return 'one'; + return 'other'; + }, + '2': function (n) { + if (n !== 0 && n % 10 === 0) return 'many'; + if (n == 2) return 'two'; + if (n == 1) return 'one'; + return 'other'; + }, + '3': function (n) { + if (n == 1) return 'one'; + return 'other'; + }, + '4': function (n) { + if (isBetween(n, 0, 1)) return 'one'; + return 'other'; + }, + '5': function (n) { + if (isBetween(n, 0, 2) && n != 2) return 'one'; + return 'other'; + }, + '6': function (n) { + if (n === 0) return 'zero'; + if (n % 10 == 1 && n % 100 != 11) return 'one'; + return 'other'; + }, + '7': function (n) { + if (n == 2) return 'two'; + if (n == 1) return 'one'; + return 'other'; + }, + '8': function (n) { + if (isBetween(n, 3, 6)) return 'few'; + if (isBetween(n, 7, 10)) return 'many'; + if (n == 2) return 'two'; + if (n == 1) return 'one'; + return 'other'; + }, + '9': function (n) { + if (n === 0 || n != 1 && isBetween(n % 100, 1, 19)) return 'few'; + if (n == 1) return 'one'; + return 'other'; + }, + '10': function (n) { + if (isBetween(n % 10, 2, 9) && !isBetween(n % 100, 11, 19)) return 'few'; + if (n % 10 == 1 && !isBetween(n % 100, 11, 19)) return 'one'; + return 'other'; + }, + '11': function (n) { + if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few'; + if (n % 10 === 0 || isBetween(n % 10, 5, 9) || isBetween(n % 100, 11, 14)) return 'many'; + if (n % 10 == 1 && n % 100 != 11) return 'one'; + return 'other'; + }, + '12': function (n) { + if (isBetween(n, 2, 4)) return 'few'; + if (n == 1) return 'one'; + return 'other'; + }, + '13': function (n) { + if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few'; + if (n != 1 && isBetween(n % 10, 0, 1) || isBetween(n % 10, 5, 9) || isBetween(n % 100, 12, 14)) return 'many'; + if (n == 1) return 'one'; + return 'other'; + }, + '14': function (n) { + if (isBetween(n % 100, 3, 4)) return 'few'; + if (n % 100 == 2) return 'two'; + if (n % 100 == 1) return 'one'; + return 'other'; + }, + '15': function (n) { + if (n === 0 || isBetween(n % 100, 2, 10)) return 'few'; + if (isBetween(n % 100, 11, 19)) return 'many'; + if (n == 1) return 'one'; + return 'other'; + }, + '16': function (n) { + if (n % 10 == 1 && n != 11) return 'one'; + return 'other'; + }, + '17': function (n) { + if (n == 3) return 'few'; + if (n === 0) return 'zero'; + if (n == 6) return 'many'; + if (n == 2) return 'two'; + if (n == 1) return 'one'; + return 'other'; + }, + '18': function (n) { + if (n === 0) return 'zero'; + if (isBetween(n, 0, 2) && n !== 0 && n != 2) return 'one'; + return 'other'; + }, + '19': function (n) { + if (isBetween(n, 2, 10)) return 'few'; + if (isBetween(n, 0, 1)) return 'one'; + return 'other'; + }, + '20': function (n) { + if ((isBetween(n % 10, 3, 4) || n % 10 == 9) && !(isBetween(n % 100, 10, 19) || isBetween(n % 100, 70, 79) || isBetween(n % 100, 90, 99))) return 'few'; + if (n % 1000000 === 0 && n !== 0) return 'many'; + if (n % 10 == 2 && !isIn(n % 100, [12, 72, 92])) return 'two'; + if (n % 10 == 1 && !isIn(n % 100, [11, 71, 91])) return 'one'; + return 'other'; + }, + '21': function (n) { + if (n === 0) return 'zero'; + if (n == 1) return 'one'; + return 'other'; + }, + '22': function (n) { + if (isBetween(n, 0, 1) || isBetween(n, 11, 99)) return 'one'; + return 'other'; + }, + '23': function (n) { + if (isBetween(n % 10, 1, 2) || n % 20 === 0) return 'one'; + return 'other'; + }, + '24': function (n) { + if (isBetween(n, 3, 10) || isBetween(n, 13, 19)) return 'few'; + if (isIn(n, [2, 12])) return 'two'; + if (isIn(n, [1, 11])) return 'one'; + return 'other'; + } + }; + var index = locales2rules[lang.replace(/-.*$/, '')]; + if (!(index in pluralRules)) { + console.warn('plural form unknown for [' + lang + ']'); + return function () { + return 'other'; + }; + } + return pluralRules[index]; + } + gMacros.plural = function (str, param, key, prop) { + var n = parseFloat(param); + if (isNaN(n)) return str; + if (prop != gTextProp) return str; + if (!gMacros._pluralRules) { + gMacros._pluralRules = getPluralRules(gLanguage); + } + var index = '[' + gMacros._pluralRules(n) + ']'; + if (n === 0 && key + '[zero]' in gL10nData) { + str = gL10nData[key + '[zero]'][prop]; + } else if (n == 1 && key + '[one]' in gL10nData) { + str = gL10nData[key + '[one]'][prop]; + } else if (n == 2 && key + '[two]' in gL10nData) { + str = gL10nData[key + '[two]'][prop]; + } else if (key + index in gL10nData) { + str = gL10nData[key + index][prop]; + } else if (key + '[other]' in gL10nData) { + str = gL10nData[key + '[other]'][prop]; + } + return str; + }; + function getL10nData(key, args, fallback) { + var data = gL10nData[key]; + if (!data) { + console.warn('#' + key + ' is undefined.'); + if (!fallback) { + return null; + } + data = fallback; + } + var rv = {}; + for (var prop in data) { + var str = data[prop]; + str = substIndexes(str, args, key, prop); + str = substArguments(str, args, key); + rv[prop] = str; + } + return rv; + } + function substIndexes(str, args, key, prop) { + var reIndex = /\{\[\s*([a-zA-Z]+)\(([a-zA-Z]+)\)\s*\]\}/; + var reMatch = reIndex.exec(str); + if (!reMatch || !reMatch.length) return str; + var macroName = reMatch[1]; + var paramName = reMatch[2]; + var param; + if (args && paramName in args) { + param = args[paramName]; + } else if (paramName in gL10nData) { + param = gL10nData[paramName]; + } + if (macroName in gMacros) { + var macro = gMacros[macroName]; + str = macro(str, param, key, prop); + } + return str; + } + function substArguments(str, args, key) { + var reArgs = /\{\{\s*(.+?)\s*\}\}/g; + return str.replace(reArgs, function (matched_text, arg) { + if (args && arg in args) { + return args[arg]; + } + if (arg in gL10nData) { + return gL10nData[arg]; + } + console.log('argument {{' + arg + '}} for #' + key + ' is undefined.'); + return matched_text; + }); + } + function translateElement(element) { + var l10n = getL10nAttributes(element); + if (!l10n.id) return; + var data = getL10nData(l10n.id, l10n.args); + if (!data) { + console.warn('#' + l10n.id + ' is undefined.'); + return; + } + if (data[gTextProp]) { + if (getChildElementCount(element) === 0) { + element[gTextProp] = data[gTextProp]; + } else { + var children = element.childNodes; + var found = false; + for (var i = 0, l = children.length; i < l; i++) { + if (children[i].nodeType === 3 && /\S/.test(children[i].nodeValue)) { + if (found) { + children[i].nodeValue = ''; + } else { + children[i].nodeValue = data[gTextProp]; + found = true; + } + } + } + if (!found) { + var textNode = document.createTextNode(data[gTextProp]); + element.prepend(textNode); + } + } + delete data[gTextProp]; + } + for (var k in data) { + element[k] = data[k]; + } + } + function getChildElementCount(element) { + if (element.children) { + return element.children.length; + } + if (typeof element.childElementCount !== 'undefined') { + return element.childElementCount; + } + var count = 0; + for (var i = 0; i < element.childNodes.length; i++) { + count += element.nodeType === 1 ? 1 : 0; + } + return count; + } + function translateFragment(element) { + element = element || document.documentElement; + var children = getTranslatableChildren(element); + var elementCount = children.length; + for (var i = 0; i < elementCount; i++) { + translateElement(children[i]); + } + translateElement(element); + } + return { + get: function (key, args, fallbackString) { + var index = key.lastIndexOf('.'); + var prop = gTextProp; + if (index > 0) { + prop = key.substring(index + 1); + key = key.substring(0, index); + } + var fallback; + if (fallbackString) { + fallback = {}; + fallback[prop] = fallbackString; + } + var data = getL10nData(key, args, fallback); + if (data && prop in data) { + return data[prop]; + } + return '{{' + key + '}}'; + }, + getData: function () { + return gL10nData; + }, + getText: function () { + return gTextData; + }, + getLanguage: function () { + return gLanguage; + }, + setLanguage: function (lang, callback) { + loadLocale(lang, function () { + if (callback) callback(); + }); + }, + getDirection: function () { + var rtlList = ['ar', 'he', 'fa', 'ps', 'ur']; + var shortCode = gLanguage.split('-', 1)[0]; + return rtlList.indexOf(shortCode) >= 0 ? 'rtl' : 'ltr'; + }, + translate: translateFragment, + getReadyState: function () { + return gReadyState; + }, + ready: function (callback) { + if (!callback) { + return; + } else if (gReadyState == 'complete' || gReadyState == 'interactive') { + window.setTimeout(function () { + callback(); + }); + } else if (document.addEventListener) { + document.addEventListener('localized', function once() { + document.removeEventListener('localized', once); + callback(); + }); + } + } + }; +}(window, document); + +/***/ }), +/* 46 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GenericScripting = void 0; +exports.docPropertiesLookup = docPropertiesLookup; +var _pdfjsLib = __webpack_require__(4); +async function docPropertiesLookup(pdfDocument) { + const url = "", + baseUrl = url.split("#")[0]; + let { + info, + metadata, + contentDispositionFilename, + contentLength + } = await pdfDocument.getMetadata(); + if (!contentLength) { + const { + length + } = await pdfDocument.getDownloadInfo(); + contentLength = length; + } + return { + ...info, + baseURL: baseUrl, + filesize: contentLength, + filename: contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(url), + metadata: metadata?.getRaw(), + authors: metadata?.get("dc:creator"), + numPages: pdfDocument.numPages, + URL: url + }; +} +class GenericScripting { + constructor(sandboxBundleSrc) { + this._ready = (0, _pdfjsLib.loadScript)(sandboxBundleSrc, true).then(() => { + return window.pdfjsSandbox.QuickJSSandbox(); + }); + } + async createSandbox(data) { + const sandbox = await this._ready; + sandbox.create(data); + } + async dispatchEventInSandbox(event) { + const sandbox = await this._ready; + setTimeout(() => sandbox.dispatchEvent(event), 0); + } + async destroySandbox() { + const sandbox = await this._ready; + sandbox.nukeSandbox(); + } +} +exports.GenericScripting = GenericScripting; + +/***/ }), +/* 47 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFPrintService = PDFPrintService; +var _pdfjsLib = __webpack_require__(4); +var _app = __webpack_require__(2); +var _print_utils = __webpack_require__(48); +let activeService = null; +let dialog = null; +let overlayManager = null; +function renderPage(activeServiceOnEntry, pdfDocument, pageNumber, size, printResolution, optionalContentConfigPromise, printAnnotationStoragePromise) { + const scratchCanvas = activeService.scratchCanvas; + const PRINT_UNITS = printResolution / _pdfjsLib.PixelsPerInch.PDF; + scratchCanvas.width = Math.floor(size.width * PRINT_UNITS); + scratchCanvas.height = Math.floor(size.height * PRINT_UNITS); + const ctx = scratchCanvas.getContext("2d"); + ctx.save(); + ctx.fillStyle = "rgb(255, 255, 255)"; + ctx.fillRect(0, 0, scratchCanvas.width, scratchCanvas.height); + ctx.restore(); + return Promise.all([pdfDocument.getPage(pageNumber), printAnnotationStoragePromise]).then(function ([pdfPage, printAnnotationStorage]) { + const renderContext = { + canvasContext: ctx, + transform: [PRINT_UNITS, 0, 0, PRINT_UNITS, 0, 0], + viewport: pdfPage.getViewport({ + scale: 1, + rotation: size.rotation + }), + intent: "print", + annotationMode: _pdfjsLib.AnnotationMode.ENABLE_STORAGE, + optionalContentConfigPromise, + printAnnotationStorage + }; + return pdfPage.render(renderContext).promise; + }); +} +function PDFPrintService(pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise = null, printAnnotationStoragePromise = null, l10n) { + this.pdfDocument = pdfDocument; + this.pagesOverview = pagesOverview; + this.printContainer = printContainer; + this._printResolution = printResolution || 150; + this._optionalContentConfigPromise = optionalContentConfigPromise || pdfDocument.getOptionalContentConfig(); + this._printAnnotationStoragePromise = printAnnotationStoragePromise || Promise.resolve(); + this.l10n = l10n; + this.currentPage = -1; + this.scratchCanvas = document.createElement("canvas"); +} +PDFPrintService.prototype = { + layout() { + this.throwIfInactive(); + const body = document.querySelector("body"); + body.setAttribute("data-pdfjsprinting", true); + const hasEqualPageSizes = this.pagesOverview.every(function (size) { + return size.width === this.pagesOverview[0].width && size.height === this.pagesOverview[0].height; + }, this); + if (!hasEqualPageSizes) { + console.warn("Not all pages have the same size. The printed " + "result may be incorrect!"); + } + this.pageStyleSheet = document.createElement("style"); + const pageSize = this.pagesOverview[0]; + this.pageStyleSheet.textContent = "@page { size: " + pageSize.width + "pt " + pageSize.height + "pt;}"; + body.append(this.pageStyleSheet); + }, + destroy() { + if (activeService !== this) { + return; + } + this.printContainer.textContent = ""; + const body = document.querySelector("body"); + body.removeAttribute("data-pdfjsprinting"); + if (this.pageStyleSheet) { + this.pageStyleSheet.remove(); + this.pageStyleSheet = null; + } + this.scratchCanvas.width = this.scratchCanvas.height = 0; + this.scratchCanvas = null; + activeService = null; + ensureOverlay().then(function () { + if (overlayManager.active === dialog) { + overlayManager.close(dialog); + } + }); + }, + renderPages() { + if (this.pdfDocument.isPureXfa) { + (0, _print_utils.getXfaHtmlForPrinting)(this.printContainer, this.pdfDocument); + return Promise.resolve(); + } + const pageCount = this.pagesOverview.length; + const renderNextPage = (resolve, reject) => { + this.throwIfInactive(); + if (++this.currentPage >= pageCount) { + renderProgress(pageCount, pageCount, this.l10n); + resolve(); + return; + } + const index = this.currentPage; + renderProgress(index, pageCount, this.l10n); + renderPage(this, this.pdfDocument, index + 1, this.pagesOverview[index], this._printResolution, this._optionalContentConfigPromise, this._printAnnotationStoragePromise).then(this.useRenderedPage.bind(this)).then(function () { + renderNextPage(resolve, reject); + }, reject); + }; + return new Promise(renderNextPage); + }, + useRenderedPage() { + this.throwIfInactive(); + const img = document.createElement("img"); + const scratchCanvas = this.scratchCanvas; + if ("toBlob" in scratchCanvas) { + scratchCanvas.toBlob(function (blob) { + img.src = URL.createObjectURL(blob); + }); + } else { + img.src = scratchCanvas.toDataURL(); + } + const wrapper = document.createElement("div"); + wrapper.className = "printedPage"; + wrapper.append(img); + this.printContainer.append(wrapper); + return new Promise(function (resolve, reject) { + img.onload = resolve; + img.onerror = reject; + }); + }, + performPrint() { + this.throwIfInactive(); + return new Promise(resolve => { + setTimeout(() => { + if (!this.active) { + resolve(); + return; + } + print.call(window); + setTimeout(resolve, 20); + }, 0); + }); + }, + get active() { + return this === activeService; + }, + throwIfInactive() { + if (!this.active) { + throw new Error("This print request was cancelled or completed."); + } + } +}; +const print = window.print; +window.print = function () { + if (activeService) { + console.warn("Ignored window.print() because of a pending print job."); + return; + } + ensureOverlay().then(function () { + if (activeService) { + overlayManager.open(dialog); + } + }); + try { + dispatchEvent("beforeprint"); + } finally { + if (!activeService) { + console.error("Expected print service to be initialized."); + ensureOverlay().then(function () { + if (overlayManager.active === dialog) { + overlayManager.close(dialog); + } + }); + return; + } + const activeServiceOnEntry = activeService; + activeService.renderPages().then(function () { + return activeServiceOnEntry.performPrint(); + }).catch(function () {}).then(function () { + if (activeServiceOnEntry.active) { + abort(); + } + }); + } +}; +function dispatchEvent(eventType) { + const event = document.createEvent("CustomEvent"); + event.initCustomEvent(eventType, false, false, "custom"); + window.dispatchEvent(event); +} +function abort() { + if (activeService) { + activeService.destroy(); + dispatchEvent("afterprint"); + } +} +function renderProgress(index, total, l10n) { + dialog ||= document.getElementById("printServiceDialog"); + const progress = Math.round(100 * index / total); + const progressBar = dialog.querySelector("progress"); + const progressPerc = dialog.querySelector(".relative-progress"); + progressBar.value = progress; + l10n.get("print_progress_percent", { + progress + }).then(msg => { + progressPerc.textContent = msg; + }); +} +window.addEventListener("keydown", function (event) { + if (event.keyCode === 80 && (event.ctrlKey || event.metaKey) && !event.altKey && (!event.shiftKey || window.chrome || window.opera)) { + window.print(); + event.preventDefault(); + event.stopImmediatePropagation(); + } +}, true); +if ("onbeforeprint" in window) { + const stopPropagationIfNeeded = function (event) { + if (event.detail !== "custom") { + event.stopImmediatePropagation(); + } + }; + window.addEventListener("beforeprint", stopPropagationIfNeeded); + window.addEventListener("afterprint", stopPropagationIfNeeded); +} +let overlayPromise; +function ensureOverlay() { + if (!overlayPromise) { + overlayManager = _app.PDFViewerApplication.overlayManager; + if (!overlayManager) { + throw new Error("The overlay manager has not yet been initialized."); + } + dialog ||= document.getElementById("printServiceDialog"); + overlayPromise = overlayManager.register(dialog, true); + document.getElementById("printCancel").onclick = abort; + dialog.addEventListener("close", abort); + } + return overlayPromise; +} +_app.PDFPrintServiceFactory.instance = { + supportsPrinting: true, + createPrintService(pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise, printAnnotationStoragePromise, l10n) { + if (activeService) { + throw new Error("The print service is created and active."); + } + activeService = new PDFPrintService(pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise, printAnnotationStoragePromise, l10n); + return activeService; + } +}; + +/***/ }), +/* 48 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getXfaHtmlForPrinting = getXfaHtmlForPrinting; +var _pdfjsLib = __webpack_require__(4); +var _pdf_link_service = __webpack_require__(7); +var _xfa_layer_builder = __webpack_require__(38); +function getXfaHtmlForPrinting(printContainer, pdfDocument) { + const xfaHtml = pdfDocument.allXfaHtml; + const linkService = new _pdf_link_service.SimpleLinkService(); + const scale = Math.round(_pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS * 100) / 100; + for (const xfaPage of xfaHtml.children) { + const page = document.createElement("div"); + page.className = "xfaPrintedPage"; + printContainer.append(page); + const builder = new _xfa_layer_builder.XfaLayerBuilder({ + pageDiv: page, + pdfPage: null, + annotationStorage: pdfDocument.annotationStorage, + linkService, + xfaHtml: xfaPage + }); + const viewport = (0, _pdfjsLib.getXfaPageViewport)(xfaPage, { + scale + }); + builder.render(viewport, "print"); + } +} + +/***/ }) +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. +(() => { +var exports = __webpack_exports__; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "PDFViewerApplication", ({ + enumerable: true, + get: function () { + return _app.PDFViewerApplication; + } +})); +exports.PDFViewerApplicationConstants = void 0; +Object.defineProperty(exports, "PDFViewerApplicationOptions", ({ + enumerable: true, + get: function () { + return _app_options.AppOptions; + } +})); +__webpack_require__(1); +__webpack_require__(47); +var _ui_utils = __webpack_require__(3); +var _app_options = __webpack_require__(5); +var _pdf_link_service = __webpack_require__(7); +var _app = __webpack_require__(2); +const pdfjsVersion = '3.4.120'; +const pdfjsBuild = 'af6414988'; +const AppConstants = { + LinkTarget: _pdf_link_service.LinkTarget, + RenderingStates: _ui_utils.RenderingStates, + ScrollMode: _ui_utils.ScrollMode, + SpreadMode: _ui_utils.SpreadMode +}; +exports.PDFViewerApplicationConstants = AppConstants; +window.PDFViewerApplication = _app.PDFViewerApplication; +window.PDFViewerApplicationConstants = AppConstants; +window.PDFViewerApplicationOptions = _app_options.AppOptions; +function getViewerConfiguration() { + return { + appContainer: document.body, + mainContainer: document.getElementById("viewerContainer"), + viewerContainer: document.getElementById("viewer"), + toolbar: { + container: document.getElementById("toolbarViewer"), + numPages: document.getElementById("numPages"), + pageNumber: document.getElementById("pageNumber"), + scaleSelect: document.getElementById("scaleSelect"), + customScaleOption: document.getElementById("customScaleOption"), + previous: document.getElementById("previous"), + next: document.getElementById("next"), + zoomIn: document.getElementById("zoomIn"), + zoomOut: document.getElementById("zoomOut"), + viewFind: document.getElementById("viewFind"), + openFile: document.getElementById("openFile"), + print: document.getElementById("print"), + editorFreeTextButton: document.getElementById("editorFreeText"), + editorFreeTextParamsToolbar: document.getElementById("editorFreeTextParamsToolbar"), + editorInkButton: document.getElementById("editorInk"), + editorInkParamsToolbar: document.getElementById("editorInkParamsToolbar"), + download: document.getElementById("download") + }, + secondaryToolbar: { + toolbar: document.getElementById("secondaryToolbar"), + toggleButton: document.getElementById("secondaryToolbarToggle"), + presentationModeButton: document.getElementById("presentationMode"), + openFileButton: document.getElementById("secondaryOpenFile"), + printButton: document.getElementById("secondaryPrint"), + downloadButton: document.getElementById("secondaryDownload"), + viewBookmarkButton: document.getElementById("viewBookmark"), + firstPageButton: document.getElementById("firstPage"), + lastPageButton: document.getElementById("lastPage"), + pageRotateCwButton: document.getElementById("pageRotateCw"), + pageRotateCcwButton: document.getElementById("pageRotateCcw"), + cursorSelectToolButton: document.getElementById("cursorSelectTool"), + cursorHandToolButton: document.getElementById("cursorHandTool"), + scrollPageButton: document.getElementById("scrollPage"), + scrollVerticalButton: document.getElementById("scrollVertical"), + scrollHorizontalButton: document.getElementById("scrollHorizontal"), + scrollWrappedButton: document.getElementById("scrollWrapped"), + spreadNoneButton: document.getElementById("spreadNone"), + spreadOddButton: document.getElementById("spreadOdd"), + spreadEvenButton: document.getElementById("spreadEven"), + documentPropertiesButton: document.getElementById("documentProperties") + }, + sidebar: { + outerContainer: document.getElementById("outerContainer"), + sidebarContainer: document.getElementById("sidebarContainer"), + toggleButton: document.getElementById("sidebarToggle"), + thumbnailButton: document.getElementById("viewThumbnail"), + outlineButton: document.getElementById("viewOutline"), + attachmentsButton: document.getElementById("viewAttachments"), + layersButton: document.getElementById("viewLayers"), + thumbnailView: document.getElementById("thumbnailView"), + outlineView: document.getElementById("outlineView"), + attachmentsView: document.getElementById("attachmentsView"), + layersView: document.getElementById("layersView"), + outlineOptionsContainer: document.getElementById("outlineOptionsContainer"), + currentOutlineItemButton: document.getElementById("currentOutlineItem") + }, + sidebarResizer: { + outerContainer: document.getElementById("outerContainer"), + resizer: document.getElementById("sidebarResizer") + }, + findBar: { + bar: document.getElementById("findbar"), + toggleButton: document.getElementById("viewFind"), + findField: document.getElementById("findInput"), + highlightAllCheckbox: document.getElementById("findHighlightAll"), + caseSensitiveCheckbox: document.getElementById("findMatchCase"), + matchDiacriticsCheckbox: document.getElementById("findMatchDiacritics"), + entireWordCheckbox: document.getElementById("findEntireWord"), + findMsg: document.getElementById("findMsg"), + findResultsCount: document.getElementById("findResultsCount"), + findPreviousButton: document.getElementById("findPrevious"), + findNextButton: document.getElementById("findNext") + }, + passwordOverlay: { + dialog: document.getElementById("passwordDialog"), + label: document.getElementById("passwordText"), + input: document.getElementById("password"), + submitButton: document.getElementById("passwordSubmit"), + cancelButton: document.getElementById("passwordCancel") + }, + documentProperties: { + dialog: document.getElementById("documentPropertiesDialog"), + closeButton: document.getElementById("documentPropertiesClose"), + fields: { + fileName: document.getElementById("fileNameField"), + fileSize: document.getElementById("fileSizeField"), + title: document.getElementById("titleField"), + author: document.getElementById("authorField"), + subject: document.getElementById("subjectField"), + keywords: document.getElementById("keywordsField"), + creationDate: document.getElementById("creationDateField"), + modificationDate: document.getElementById("modificationDateField"), + creator: document.getElementById("creatorField"), + producer: document.getElementById("producerField"), + version: document.getElementById("versionField"), + pageCount: document.getElementById("pageCountField"), + pageSize: document.getElementById("pageSizeField"), + linearized: document.getElementById("linearizedField") + } + }, + annotationEditorParams: { + editorFreeTextFontSize: document.getElementById("editorFreeTextFontSize"), + editorFreeTextColor: document.getElementById("editorFreeTextColor"), + editorInkColor: document.getElementById("editorInkColor"), + editorInkThickness: document.getElementById("editorInkThickness"), + editorInkOpacity: document.getElementById("editorInkOpacity") + }, + printContainer: document.getElementById("printContainer"), + openFileInput: document.getElementById("fileInput"), + debuggerScriptPath: "./debugger.js" + }; +} +function webViewerLoad() { + const config = getViewerConfiguration(); + const event = document.createEvent("CustomEvent"); + event.initCustomEvent("webviewerloaded", true, true, { + source: window + }); + try { + parent.document.dispatchEvent(event); + } catch (ex) { + console.error(`webviewerloaded: ${ex}`); + document.dispatchEvent(event); + } + _app.PDFViewerApplication.run(config); +} +document.blockUnblockOnload?.(true); +if (document.readyState === "interactive" || document.readyState === "complete") { + webViewerLoad(); +} else { + document.addEventListener("DOMContentLoaded", webViewerLoad, true); +} +})(); + +/******/ })() +; +//# sourceMappingURL=viewer.js.map \ No newline at end of file diff --git a/page/static/js/web/viewer.js.map b/page/static/js/web/viewer.js.map new file mode 100644 index 0000000..f5b6354 --- /dev/null +++ b/page/static/js/web/viewer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"viewer.js","mappings":"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","sources":["webpack://pdf.js/web/genericcom.js","webpack://pdf.js/web/app.js","webpack://pdf.js/web/ui_utils.js","webpack://pdf.js/web/pdfjs.js","webpack://pdf.js/web/app_options.js","webpack://pdf.js/web/event_utils.js","webpack://pdf.js/web/pdf_link_service.js","webpack://pdf.js/web/annotation_editor_params.js","webpack://pdf.js/web/overlay_manager.js","webpack://pdf.js/web/password_prompt.js","webpack://pdf.js/web/pdf_attachment_viewer.js","webpack://pdf.js/web/base_tree_viewer.js","webpack://pdf.js/web/pdf_cursor_tools.js","webpack://pdf.js/web/grab_to_pan.js","webpack://pdf.js/web/pdf_document_properties.js","webpack://pdf.js/web/pdf_find_bar.js","webpack://pdf.js/web/pdf_find_controller.js","webpack://pdf.js/web/pdf_find_utils.js","webpack://pdf.js/web/pdf_history.js","webpack://pdf.js/web/pdf_layer_viewer.js","webpack://pdf.js/web/pdf_outline_viewer.js","webpack://pdf.js/web/pdf_presentation_mode.js","webpack://pdf.js/web/pdf_rendering_queue.js","webpack://pdf.js/web/pdf_scripting_manager.js","webpack://pdf.js/web/pdf_sidebar.js","webpack://pdf.js/web/pdf_sidebar_resizer.js","webpack://pdf.js/web/pdf_thumbnail_viewer.js","webpack://pdf.js/web/pdf_thumbnail_view.js","webpack://pdf.js/web/pdf_viewer.js","webpack://pdf.js/web/l10n_utils.js","webpack://pdf.js/web/pdf_page_view.js","webpack://pdf.js/web/annotation_editor_layer_builder.js","webpack://pdf.js/web/annotation_layer_builder.js","webpack://pdf.js/web/struct_tree_layer_builder.js","webpack://pdf.js/web/text_accessibility.js","webpack://pdf.js/web/text_highlighter.js","webpack://pdf.js/web/text_layer_builder.js","webpack://pdf.js/web/xfa_layer_builder.js","webpack://pdf.js/web/secondary_toolbar.js","webpack://pdf.js/web/toolbar.js","webpack://pdf.js/web/view_history.js","webpack://pdf.js/web/preferences.js","webpack://pdf.js/web/download_manager.js","webpack://pdf.js/web/genericl10n.js","webpack://pdf.js/external/webL10n/l10n.js","webpack://pdf.js/web/generic_scripting.js","webpack://pdf.js/web/pdf_print_service.js","webpack://pdf.js/web/print_utils.js","webpack://pdf.js/webpack/bootstrap","webpack://pdf.js/web/viewer.js"],"sourcesContent":["/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DefaultExternalServices, PDFViewerApplication } from \"./app.js\";\nimport { BasePreferences } from \"./preferences.js\";\nimport { DownloadManager } from \"./download_manager.js\";\nimport { GenericL10n } from \"./genericl10n.js\";\nimport { GenericScripting } from \"./generic_scripting.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"GENERIC\")) {\n throw new Error(\n 'Module \"pdfjs-web/genericcom\" shall not be used outside GENERIC build.'\n );\n}\n\nconst GenericCom = {};\n\nclass GenericPreferences extends BasePreferences {\n async _writeToStorage(prefObj) {\n localStorage.setItem(\"pdfjs.preferences\", JSON.stringify(prefObj));\n }\n\n async _readFromStorage(prefObj) {\n return JSON.parse(localStorage.getItem(\"pdfjs.preferences\"));\n }\n}\n\nclass GenericExternalServices extends DefaultExternalServices {\n static createDownloadManager() {\n return new DownloadManager();\n }\n\n static createPreferences() {\n return new GenericPreferences();\n }\n\n static createL10n({ locale = \"en-US\" }) {\n return new GenericL10n(locale);\n }\n\n static createScripting({ sandboxBundleSrc }) {\n return new GenericScripting(sandboxBundleSrc);\n }\n}\nPDFViewerApplication.externalServices = GenericExternalServices;\n\nexport { GenericCom };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n animationStarted,\n apiPageLayoutToViewerModes,\n apiPageModeToSidebarView,\n AutoPrintRegExp,\n CursorTool,\n DEFAULT_SCALE_VALUE,\n getActiveOrFocusedElement,\n isValidRotation,\n isValidScrollMode,\n isValidSpreadMode,\n normalizeWheelEventDirection,\n parseQueryString,\n ProgressBar,\n RendererType,\n RenderingStates,\n ScrollMode,\n SidebarView,\n SpreadMode,\n TextLayerMode,\n} from \"./ui_utils.js\";\nimport {\n AnnotationEditorType,\n build,\n createPromiseCapability,\n FeatureTest,\n getDocument,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n GlobalWorkerOptions,\n InvalidPDFException,\n isDataScheme,\n isPdfFile,\n loadScript,\n MissingPDFException,\n OPS,\n PDFWorker,\n shadow,\n UnexpectedResponseException,\n version,\n} from \"pdfjs-lib\";\nimport { AppOptions, OptionKind } from \"./app_options.js\";\nimport { AutomationEventBus, EventBus } from \"./event_utils.js\";\nimport { LinkTarget, PDFLinkService } from \"./pdf_link_service.js\";\nimport { AnnotationEditorParams } from \"web-annotation_editor_params\";\nimport { OverlayManager } from \"./overlay_manager.js\";\nimport { PasswordPrompt } from \"./password_prompt.js\";\nimport { PDFAttachmentViewer } from \"web-pdf_attachment_viewer\";\nimport { PDFCursorTools } from \"web-pdf_cursor_tools\";\nimport { PDFDocumentProperties } from \"web-pdf_document_properties\";\nimport { PDFFindBar } from \"web-pdf_find_bar\";\nimport { PDFFindController } from \"./pdf_find_controller.js\";\nimport { PDFHistory } from \"./pdf_history.js\";\nimport { PDFLayerViewer } from \"web-pdf_layer_viewer\";\nimport { PDFOutlineViewer } from \"web-pdf_outline_viewer\";\nimport { PDFPresentationMode } from \"web-pdf_presentation_mode\";\nimport { PDFRenderingQueue } from \"./pdf_rendering_queue.js\";\nimport { PDFScriptingManager } from \"./pdf_scripting_manager.js\";\nimport { PDFSidebar } from \"web-pdf_sidebar\";\nimport { PDFSidebarResizer } from \"web-pdf_sidebar_resizer\";\nimport { PDFThumbnailViewer } from \"web-pdf_thumbnail_viewer\";\nimport { PDFViewer } from \"./pdf_viewer.js\";\nimport { SecondaryToolbar } from \"web-secondary_toolbar\";\nimport { Toolbar } from \"web-toolbar\";\nimport { ViewHistory } from \"./view_history.js\";\n\nconst FORCE_PAGES_LOADED_TIMEOUT = 10000; // ms\nconst WHEEL_ZOOM_DISABLED_TIMEOUT = 1000; // ms\n\nconst ViewOnLoad = {\n UNKNOWN: -1,\n PREVIOUS: 0, // Default value.\n INITIAL: 1,\n};\n\nconst ViewerCssTheme = {\n AUTOMATIC: 0, // Default value.\n LIGHT: 1,\n DARK: 2,\n};\n\nclass DefaultExternalServices {\n constructor() {\n throw new Error(\"Cannot initialize DefaultExternalServices.\");\n }\n\n static updateFindControlState(data) {}\n\n static updateFindMatchesCount(data) {}\n\n static initPassiveLoading(callbacks) {}\n\n static reportTelemetry(data) {}\n\n static createDownloadManager() {\n throw new Error(\"Not implemented: createDownloadManager\");\n }\n\n static createPreferences() {\n throw new Error(\"Not implemented: createPreferences\");\n }\n\n static createL10n(options) {\n throw new Error(\"Not implemented: createL10n\");\n }\n\n static createScripting(options) {\n throw new Error(\"Not implemented: createScripting\");\n }\n\n static get supportsPinchToZoom() {\n return shadow(this, \"supportsPinchToZoom\", true);\n }\n\n static get supportsIntegratedFind() {\n return shadow(this, \"supportsIntegratedFind\", false);\n }\n\n static get supportsDocumentFonts() {\n return shadow(this, \"supportsDocumentFonts\", true);\n }\n\n static get supportedMouseWheelZoomModifierKeys() {\n return shadow(this, \"supportedMouseWheelZoomModifierKeys\", {\n ctrlKey: true,\n metaKey: true,\n });\n }\n\n static get isInAutomation() {\n return shadow(this, \"isInAutomation\", false);\n }\n\n static updateEditorStates(data) {\n throw new Error(\"Not implemented: updateEditorStates\");\n }\n}\n\nconst PDFViewerApplication = {\n initialBookmark: document.location.hash.substring(1),\n _initializedCapability: createPromiseCapability(),\n appConfig: null,\n pdfDocument: null,\n pdfLoadingTask: null,\n printService: null,\n /** @type {PDFViewer} */\n pdfViewer: null,\n /** @type {PDFThumbnailViewer} */\n pdfThumbnailViewer: null,\n /** @type {PDFRenderingQueue} */\n pdfRenderingQueue: null,\n /** @type {PDFPresentationMode} */\n pdfPresentationMode: null,\n /** @type {PDFDocumentProperties} */\n pdfDocumentProperties: null,\n /** @type {PDFLinkService} */\n pdfLinkService: null,\n /** @type {PDFHistory} */\n pdfHistory: null,\n /** @type {PDFSidebar} */\n pdfSidebar: null,\n /** @type {PDFSidebarResizer} */\n pdfSidebarResizer: null,\n /** @type {PDFOutlineViewer} */\n pdfOutlineViewer: null,\n /** @type {PDFAttachmentViewer} */\n pdfAttachmentViewer: null,\n /** @type {PDFLayerViewer} */\n pdfLayerViewer: null,\n /** @type {PDFCursorTools} */\n pdfCursorTools: null,\n /** @type {PDFScriptingManager} */\n pdfScriptingManager: null,\n /** @type {ViewHistory} */\n store: null,\n /** @type {DownloadManager} */\n downloadManager: null,\n /** @type {OverlayManager} */\n overlayManager: null,\n /** @type {Preferences} */\n preferences: null,\n /** @type {Toolbar} */\n toolbar: null,\n /** @type {SecondaryToolbar} */\n secondaryToolbar: null,\n /** @type {EventBus} */\n eventBus: null,\n /** @type {IL10n} */\n l10n: null,\n /** @type {AnnotationEditorParams} */\n annotationEditorParams: null,\n isInitialViewSet: false,\n downloadComplete: false,\n isViewerEmbedded: window.parent !== window,\n url: \"\",\n baseUrl: \"\",\n _downloadUrl: \"\",\n externalServices: DefaultExternalServices,\n _boundEvents: Object.create(null),\n documentInfo: null,\n metadata: null,\n _contentDispositionFilename: null,\n _contentLength: null,\n _saveInProgress: false,\n _wheelUnusedTicks: 0,\n _wheelUnusedFactor: 1,\n _touchUnusedTicks: 0,\n _touchUnusedFactor: 1,\n _PDFBug: null,\n _hasAnnotationEditors: false,\n _title: document.title,\n _printAnnotationStoragePromise: null,\n _touchInfo: null,\n _isCtrlKeyDown: false,\n\n // Called once when the document is loaded.\n async initialize(appConfig) {\n this.preferences = this.externalServices.createPreferences();\n this.appConfig = appConfig;\n\n await this._initializeOptions();\n this._forceCssTheme();\n await this._initializeL10n();\n\n if (\n this.isViewerEmbedded &&\n AppOptions.get(\"externalLinkTarget\") === LinkTarget.NONE\n ) {\n // Prevent external links from \"replacing\" the viewer,\n // when it's embedded in e.g. an