Compare commits

..

472 Commits

Author SHA1 Message Date
El RIDO 19ca6d3dab incrementing version 2025-11-12 08:00:50 +01:00
El RIDO f48544978b apply StyleCI suggestion 2025-11-12 07:57:30 +01:00
El RIDO 4434dbf73a Merge commit from fork
Fix arbitrary PHP file inclusion when enabling template switching
2025-11-12 07:54:10 +01:00
El RIDO bddfb173da Merge branch 'master' into advisory-fix-1 2025-11-12 07:47:43 +01:00
El RIDO f9550e5133 Merge commit from fork
Insert drag and drop file names as a text, not html
2025-11-12 07:46:35 +01:00
El RIDO 5b85d63942 Merge branch 'master' into advisory-fix-1 2025-11-12 07:18:43 +01:00
El RIDO e427458cd0 Merge branch 'master' into advisory-fix-1 2025-11-11 22:00:09 +01:00
Mikhail Romanov 1fbaba732e Merge pull request #1702 from PrivateBin/create_cloned_paste_error
fix: error fetching attachments from blob
2025-11-11 20:15:00 +02:00
Ribas160 08b3244314 privatebin.js SRI and CHANGELOG.md updated 2025-11-11 20:13:10 +02:00
Mikhail Romanov ff5aee85b4 Insert file names as break-separated text nodes
Co-authored-by: El RIDO <elrido@gmx.net>
2025-11-11 20:05:32 +02:00
El RIDO 2e11b13464 remove dead code 2025-11-11 17:56:49 +01:00
El RIDO c35fc4f790 use more straight forward in_array check
kudos @Ribas160 for the suggestion
2025-11-11 17:53:50 +01:00
El RIDO f456fb576e ensure template cookie cannot be a path 2025-11-11 17:52:48 +01:00
Ribas160 9c71fbcc70 Use pure JavaScript to create a div element 2025-11-11 17:45:27 +02:00
El RIDO a371f5cab5 remove dead code 2025-11-11 12:49:37 +01:00
El RIDO 51bb637411 document the change 2025-11-11 11:00:19 +01:00
El RIDO 94a854faca do add the configured template to the available ones, if missing 2025-11-11 10:59:55 +01:00
El RIDO ea73300e15 don't always set the cookie, having to unset it later
but still unset it, if it currently should not be in use (templateselection = false)
2025-11-11 09:45:51 +01:00
El RIDO be6a3702fc simplify logic and improve readability
function was only used in one place and only indirectly tested, so it could be inlined, which also makes the test for null and the extra variable allocation unnecessary
2025-11-11 09:43:41 +01:00
El RIDO f2164353c3 use realpath and validate tpl directory contents
to ensure only php files inside the tpl dir can get used as templates
2025-11-11 09:34:54 +01:00
El RIDO dae5f7fd61 partially revert #1559
Instead of automatically adding custom templates, we log an error if
that template is missing in the available templates. Still mitigates
arbitrary file inclusion, as the string is now checked against a fixed
allow list.
2025-11-10 17:31:35 +01:00
Ribas160 14b68af528 Insert drag and drop file names as a text, not html 2025-11-10 17:59:18 +02:00
El RIDO a479d75405 belt and braces: reset the template cookie, if function is not enabled 2025-11-10 12:25:19 +01:00
El RIDO 17ff44037a prevent use of paths in template names, only file names inside tpl directory are allowed 2025-11-10 12:23:50 +01:00
El RIDO 13949349af improve readability of logic 2025-11-10 12:22:29 +01:00
El RIDO 5f6c2beb3b Unit test on escaping the template directory 2025-11-10 12:00:29 +01:00
El RIDO 591d2d40e1 Merge pull request #1708 from calvinbui/patch-1
Fix typo in Shlink config docs
2025-11-09 07:46:23 +01:00
Calvin Bui ec178e0c38 Fix typo in Shlink config docs 2025-11-09 10:00:48 +11:00
PrivateBin Translator Bot 697753ab91 New Crowdin updates (#1706)
* New translations en.json (Lithuanian)
2025-11-08 06:00:28 +01:00
Ribas160 a7b253a43a fix: error fetching attachments from blob 2025-11-05 17:33:08 +02:00
El RIDO 5e10469ffc Merge pull request #1700 from HariZalanPrivateBin/master
Update hu.json
2025-11-05 07:45:54 +01:00
HariZalanPrivateBin feeac849c4 Update hu.json
My own translations currently used at privbin.harizalan.hu, enhanced at various points
2025-11-05 06:29:42 +01:00
El RIDO 0dd275db5c Merge pull request #1699 from PrivateBin/crowdin-translation
New Crowdin updates
2025-11-02 08:09:09 +01:00
PrivateBin Translator Bot cadfe65bfa New translations en.json (Finnish) 2025-11-01 12:52:40 +01:00
El RIDO 9d7508f44f chore: prepare for next release 2025-10-28 16:54:42 +01:00
El RIDO 5018c963f9 chore: prepare for next release 2025-10-28 16:53:07 +01:00
El RIDO a91d0afebd ensure there is still a space between commenter icon and name 2025-10-28 16:35:58 +01:00
El RIDO 2f70456e9a incrementing version 2025-10-28 16:08:13 +01:00
El RIDO 392e160006 Merge pull request #1688 from PrivateBin/purify-3.3.0
update DOMpurify library from 3.2.7 to 3.3.0
2025-10-28 11:44:34 +01:00
El RIDO 8293d1fb5d apply ESLint recommendation 2025-10-28 11:33:47 +01:00
El RIDO 43cf8b53ac Merge branch 'master' into purify-3.3.0 2025-10-28 11:27:17 +01:00
El RIDO 2d8af1f31e Merge commit from fork
Sanitize file name in attachment file size hints
2025-10-28 11:24:11 +01:00
El RIDO 0a6e7ef4f7 Merge pull request #1692 from PrivateBin/dependabot/github_actions/actions/upload-artifact-5
Bump actions/upload-artifact from 4 to 5
2025-10-27 13:38:15 +01:00
dependabot[bot] 8526816468 Bump actions/upload-artifact from 4 to 5
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-27 12:00:40 +00:00
El RIDO 85ae5cf676 Merge pull request #1691 from PrivateBin/crowdin-translation
New Crowdin updates
2025-10-26 18:31:34 +01:00
El RIDO d27d63584f Merge branch 'master' into crowdin-translation 2025-10-26 18:26:06 +01:00
PrivateBin Translator Bot 99e0d5ca4e New translations en.json (Ukrainian) 2025-10-26 15:38:32 +01:00
PrivateBin Translator Bot 5a3125ff19 New translations en.json (Chinese Simplified) 2025-10-26 14:31:47 +01:00
El RIDO ca10d47da0 Merge pull request #1690 from nykula/master
Update Ukrainian translation
2025-10-26 14:28:01 +01:00
Denys Nykula 3522ec07ce Update Ukrainian translation 2025-10-26 11:45:10 +02:00
El RIDO c4f8482b30 Refactored jQuery DOM element creation
using plain JavaScript, to ensure text nodes are sanitized
2025-10-25 12:56:55 +02:00
El RIDO fd2c2ae0c5 update DOMpurify library from 3.2.7 to 3.3.0 2025-10-25 10:52:40 +02:00
El RIDO ca70c7555d Add tests of malicious file names 2025-10-24 15:00:56 +02:00
El RIDO 5c5fe333a0 Merge pull request #1679 from PrivateBin/opcache
Make OPcache optional
2025-10-22 06:50:38 +02:00
El RIDO 8c21a2275a Merge pull request #1684 from PrivateBin/doc-patch-readme
Fix links in doc/README.md
2025-10-22 06:49:46 +02:00
rugk ca1f0d092e Fix links in doc/README.md
* Fixing the last link, which was totally broken
* Updated links in README to use relative paths.
2025-10-21 22:46:54 +02:00
El RIDO 508904dfac Merge pull request #1681 from PrivateBin/dependabot/github_actions/actions/setup-node-6
Bump actions/setup-node from 5 to 6
2025-10-14 13:33:17 +02:00
dependabot[bot] 3b45d8fa79 Bump actions/setup-node from 5 to 6
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 5 to 6.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-14 11:05:10 +00:00
El RIDO b7286cf99a fix bootstrap template password peek display 2025-10-13 18:51:15 +02:00
El RIDO 0bfa300c59 apply StyleCI recommendation 2025-10-12 18:40:48 +02:00
El RIDO d76796adf3 deduplicate logic 2025-10-12 18:39:36 +02:00
El RIDO 60bab2badb make OPcache optional, resolves #1678 2025-10-12 18:19:46 +02:00
El RIDO a5d71d855f chore: prepare for next release 2025-10-12 12:03:07 +02:00
El RIDO 10cb5e132c do not increment unrelated versions in package lock file
revert accidental changes from commit 9b7daf5d0a and exclude package lock from version increment
2025-10-12 11:53:31 +02:00
El RIDO 6054e99849 ensure PHP opcache gets invalidated, when storing data in file parsed via PHP require 2025-10-12 11:39:58 +02:00
El RIDO 9b7daf5d0a incrementing version 2025-10-12 08:50:13 +02:00
El RIDO 4b8903cf86 Merge pull request #1676 from PrivateBin/workflow-permissions
Workflow permissions
2025-10-10 18:42:40 +02:00
El RIDO 8d98b9f1e1 unify workflow code styles 2025-10-10 15:08:35 +02:00
El RIDO 51eff47614 apply explicit permissions as per CodeQL suggestion
as per rule ID actions/missing-workflow-permissions
2025-10-10 15:07:44 +02:00
El RIDO 7779f1ac65 Merge pull request #1672 from PrivateBin/purify-3.2.7
Upgrading libraries to: bootstrap 5.3.8, DOMpurify 3.2.7 & ip-lib 1.21.0
2025-10-10 07:14:18 +02:00
El RIDO 2865aa1ede Merge pull request #1675 from PrivateBin/crowdin-translation
New Crowdin updates
2025-10-10 07:12:20 +02:00
PrivateBin Translator Bot f0b7bb2fe2 New translations en.json (Corsican) 2025-10-09 15:52:08 +02:00
El RIDO 1d1dc3c5bb Merge pull request #1671 from PrivateBin/crowdin-translation
New Crowdin updates
2025-10-09 13:45:45 +02:00
El RIDO eee5522f6c Merge pull request #1674 from PrivateBin/dependabot/github_actions/actions/checkout-5
Bump actions/checkout from 4 to 5
2025-10-09 13:41:47 +02:00
dependabot[bot] 317a0a09af Bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-09 11:36:44 +00:00
El RIDO 18dcfb45a5 Merge pull request #1673 from PrivateBin/dependabot/github_actions/actions/setup-node-5
Bump actions/setup-node from 4 to 5
2025-10-09 13:35:42 +02:00
dependabot[bot] ebc2365171 Bump actions/setup-node from 4 to 5
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 5.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-09 11:05:11 +00:00
PrivateBin Translator Bot 43eab0bc20 New translations en.json (Dutch) 2025-10-09 11:33:36 +02:00
PrivateBin Translator Bot 3df8a6728f New translations en.json (Italian) 2025-10-09 11:33:36 +02:00
PrivateBin Translator Bot b329327790 New translations en.json (German) 2025-10-09 11:33:34 +02:00
PrivateBin Translator Bot af53a071f9 New translations en.json (French) 2025-10-09 11:33:33 +02:00
El RIDO bcf549ed06 update ip-lib library from 1.20.0 to 1.21.0 2025-10-09 09:32:17 +02:00
El RIDO 06496a1b0e update bootstrap CSS library from 5.3.7 to 5.3.8 2025-10-09 09:24:08 +02:00
El RIDO ed9bdc4272 update DOMpurify library from 3.2.6 to 3.2.7 2025-10-09 08:57:20 +02:00
PrivateBin Translator Bot 65f80250bc New translations en.json (Spanish) 2025-10-09 05:08:48 +02:00
rugk a67c4e6e23 Merge pull request #1667 from PrivateBin/eslint
Run EsLint on PRs
2025-10-08 19:10:55 +02:00
El RIDO ac1b16e803 Potential fix for code scanning alert no. 59: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-10-08 19:09:49 +02:00
rugk 851befb39d Merge branch 'master' into eslint 2025-10-08 18:31:10 +02:00
El RIDO 0a26443161 Merge pull request #1661 from PrivateBin/karthikkasturi-master
Password peek 🫣 - take two
2025-10-08 18:18:02 +02:00
El RIDO 0d052d8ddb improve readability 2025-10-08 18:08:39 +02:00
El RIDO 7a916f1e31 Merge pull request #1668 from PrivateBin/codacy-action
Enable use of Codacy action
2025-10-08 17:35:39 +02:00
rugk d7add98e1d Merge pull request #1669 from PrivateBin/obsolete-badges
Remove broken & obsolete badges
2025-10-08 17:15:04 +02:00
El RIDO a8901e6d6e disable sarif generation, so we at least get a result 2025-10-08 13:58:40 +02:00
El RIDO 033f5a1126 remove broken & obsolete badges 2025-10-08 09:30:23 +02:00
El RIDO 2eb26aced4 disable upload of results due to github code scanning API change 2025-10-08 09:23:49 +02:00
El RIDO 081a469a11 remove folders causing errors in report 2025-10-08 09:14:35 +02:00
El RIDO d638b2dac4 correct version selector 2025-10-08 08:56:44 +02:00
El RIDO ee531a0b81 update codeql actions to release 4 (node 24) and enable github action scanning 2025-10-08 08:45:06 +02:00
El RIDO 020818d3fc move codacy action to workflows to get it to execute
we seem to have never noticed that it didn't ever run after adding it
2025-10-08 08:43:52 +02:00
El RIDO 70cb1cbc79 file got renamed & moved 2025-10-07 13:24:35 +02:00
El RIDO 5ae2ebcc77 revert to regex to address issue discovered by CodeQL 2025-10-07 00:44:53 +02:00
El RIDO e35894e4f8 address eslint errors 2025-10-07 00:31:11 +02:00
El RIDO 42b89a9300 address eslint errors 2025-10-07 00:29:16 +02:00
El RIDO e7c2aa4d60 address eslint errors 2025-10-07 00:11:49 +02:00
El RIDO 85962a537a fix php unit tests & SRI hash 2025-10-06 23:53:13 +02:00
El RIDO f0560bcc27 address eslint errors 2025-10-06 23:47:08 +02:00
El RIDO 51481656ba attempting to improve eslint config 2025-10-06 23:12:19 +02:00
El RIDO 2fd03475b4 Merge branch 'master' into karthikkasturi-master 2025-10-06 22:12:19 +02:00
El RIDO bef55b3bb1 Merge branch 'master' into karthikkasturi-master 2025-10-06 22:11:52 +02:00
El RIDO 23624d693c shorten show password message
as per suggestion of @rugk during review
2025-10-06 22:08:04 +02:00
El RIDO 63ef6f4358 order changelog 2025-10-06 22:01:31 +02:00
rugk cdbeaeb076 style(js): fix auto-fixable problems in JS test files 2025-10-06 17:29:52 +00:00
rugk c2c1f37885 fix: make EsLint run only for PrivateBin.js 2025-10-06 17:28:15 +00:00
rugk 1250c4009b style(js): fix auto-fixable problems in privatebin.js 2025-10-06 17:27:38 +00:00
rugk bcbd116040 style: move EsLint into correct directory 2025-10-06 17:20:17 +00:00
rugk dd17f1dcc3 Merge remote-tracking branch 'origin/js-unit-readability' into eslint 2025-10-06 17:09:04 +00:00
rugk 3b7347d589 chore: also run when dependencies are updated 2025-10-06 17:06:16 +00:00
rugk 38bc1a2590 chore: obviously also run if workflow file is adusted 2025-10-06 17:04:51 +00:00
rugk 57e40e4fcc chore: add EsLint to dev dependencies 2025-10-06 17:02:29 +00:00
rugk 6b5908b202 chore: run EsLint on PRs 2025-10-06 17:01:48 +00:00
El RIDO 7f93242279 upgrade eslint config and remove workaround for implicit globals
we seem to have used eslint through codeclimate in the past, but that service seems no longer integrated, possibly due to no longer being free
2025-10-06 18:30:19 +02:00
El RIDO ead315251f suppress noise from early initialization during unit tests
the tests still all passed, but the missing browser globals in the node environment could cause misleading messages in the mocha output
2025-10-06 17:38:09 +02:00
El RIDO d40dac4825 improve error reporting 2025-10-06 17:35:34 +02:00
El RIDO 2f903bb87e Merge pull request #1665 from PrivateBin/crowdin-translation
New Crowdin updates
2025-10-06 16:34:20 +02:00
PrivateBin Translator Bot c7516deb97 New translations en.json (Polish) 2025-10-06 16:18:00 +02:00
El RIDO b8037d869c stick to a single code style 2025-10-06 15:50:26 +02:00
PrivateBin Translator Bot 1d33e07dae New translations en.json (Polish) 2025-10-06 15:01:54 +02:00
El RIDO e853a934ea improve JS unit test readability & error reporting 2025-10-06 14:52:08 +02:00
PrivateBin Translator Bot 10b8f6e18a New translations en.json (German) 2025-10-06 14:02:21 +02:00
PrivateBin Translator Bot c6b6f56a29 New translations en.json (Polish) 2025-10-06 14:02:17 +02:00
El RIDO 06e95a0911 Merge branch 'Open-source-Contribution' 2025-10-06 12:28:12 +02:00
galindosarah 8c06cecf56 Added emailTemplateTest 2025-10-06 12:26:38 +02:00
El RIDO f481179a5a Merge branch 'KaminskiDaniell-patch-1' 2025-10-06 11:41:03 +02:00
El RIDO 4cd1770c76 fix indentation, tests & unify plural forms
command used was:
jq --indent 4 '(.. | select(type=="array")) |= . + [(.[-1:][] | sub("3rd";"4th")),(.[-1:][] | sub("3rd";"5th"))]' i18n/pl.json > /tmp/pl.json

test fix & plural unification was done manually, also cross-checking with online translation services
2025-10-06 11:40:28 +02:00
Daniel Kamiński d27f4fd2e4 Corrected pl translations 2025-10-05 23:16:24 +02:00
Daniel Kamiński 6df08f3e6c Fix errors in translation 2025-10-05 23:11:29 +02:00
Daniel Kamiński 9a5ddac5c4 Changed forms 2025-10-05 23:05:50 +02:00
Daniel Kamiński 1f86981a00 Fix 2025-10-05 23:01:56 +02:00
Daniel Kamiński 99324575c7 Hours fix 2025-10-05 22:57:22 +02:00
Daniel Kamiński 6c70fde86b Another fix ;) 2025-10-05 22:51:45 +02:00
Daniel Kamiński ca8ef80bab Fixed missing forms 2025-10-05 22:46:45 +02:00
Daniel Kamiński 8ec0e7f766 Coorected polish translation 2025-10-05 22:24:13 +02:00
El RIDO bbc0a34a14 Merge branch 'master' into Innobasque-git-master 2025-10-05 10:12:52 +02:00
El RIDO df81f6dc44 re-add missing message IDs, reusing YOURLs translations 2025-10-05 10:12:43 +02:00
Innobasque a0e5a13124 Traduccion al Castellano completa.... 2025-10-05 10:03:25 +02:00
El RIDO 2e5d6dddac Merge branch 'master' into karthikkasturi-master 2025-10-05 09:51:34 +02:00
El RIDO d50231a531 apply suggestions to use existing bootstrap icons
as per discussion in https://github.com/PrivateBin/PrivateBin/pull/1647#discussion_r2345917795
2025-10-05 09:47:39 +02:00
El RIDO 7ca49d1363 chore: update SRI hashes 2025-09-30 20:45:24 +02:00
El RIDO 9910b6f2a3 Merge pull request #1660 from PrivateBin/httpssecure
Make sure legacy check returns true only on HTTPS (not like ftp or whatever)
2025-09-30 20:40:28 +02:00
rugk a0c0d3d37b Make sure legacy check returns true only on HTTPS (not like ftp or whatever)
I am not sure why it was expressed so convoluted before?

Found that in https://github.com/orgs/PrivateBin/discussions/1657
2025-09-30 14:21:17 +02:00
El RIDO f03f2bf28d simplify cache breaker extraction 2025-09-25 22:06:38 +02:00
El RIDO 0befe7e3cc update SRI hash 2025-09-24 12:38:50 +02:00
El RIDO 2aa13d1980 Merge pull request #1651 from touchweb-vincent/patch-1
Fix FR translation + force refresh i18n json calls
2025-09-21 19:47:15 +02:00
TW - Vincent fd664dd577 Update Configuration.php 2025-09-21 19:02:49 +02:00
TW - Vincent 9b496acde5 Update privatebin.js 2025-09-21 19:02:12 +02:00
TW - Vincent b0df8e10f5 Update privatebin.js 2025-09-21 19:01:30 +02:00
TW - Vincent 493d848c83 Update fr.json 2025-09-21 18:37:52 +02:00
TW - Vincent 279d4d5c22 Update fr.json 2025-09-21 18:37:06 +02:00
TW - Vincent cb5ee94fe5 Update fr.json 2025-09-21 18:35:32 +02:00
TW - Vincent ba42cdbe62 Update Configuration.php 2025-09-21 18:34:06 +02:00
TW - Vincent 1967c05a88 Update privatebin.js 2025-09-21 18:31:54 +02:00
TW - Vincent 640d400a32 Update fr.json 2025-09-21 13:18:50 +02:00
TW - Vincent 656a56826d Update fr.json 2025-09-21 12:42:52 +02:00
TW - Vincent 23145e1463 Update fr.json 2025-09-21 12:31:00 +02:00
El RIDO 5bd550e61d Merge pull request #1648 from PrivateBin/workflows-for-collaborators
Workflows for collaborators
2025-09-14 07:59:38 +02:00
El RIDO e775647206 attempting to make the condition list more readable 2025-09-13 07:56:54 +02:00
El RIDO 5cca4be89a enable running tests on pull requests 2025-09-13 07:21:10 +02:00
El RIDO 86b1a4e9ac disable running snyk if triggering user doesn't have access to the secret 2025-09-13 07:20:25 +02:00
rugk 394b4cb33d Merge pull request #1639 from PrivateBin/urlshortener/url-vadility
Strengthen validation of URL in proxy services
2025-09-12 00:05:02 +02:00
Karthik Kasturi 8a8afb96da updated changelog 2025-09-11 21:38:17 +00:00
Karthik Kasturi f9c958da90 Password peek 🫣 2025-09-11 21:34:12 +00:00
El RIDO 2b8b5d71d2 Merge pull request #1645 from karthikkasturi/master
fix regex check for short url in response
2025-09-11 20:55:34 +02:00
Karthik Kasturi 24afa5a1d8 removed CSP tag from shortenerproxy.php 2025-09-11 18:17:30 +01:00
Karthik Kasturi 191ed63b04 fix regex check for short url in response 2025-09-10 16:02:06 +01:00
El RIDO 952e86b11c Merge pull request #1643 from PrivateBin/crowdin-translation
New Crowdin updates
2025-09-07 07:31:49 +02:00
PrivateBin Translator Bot 90d661db6f New translations en.json (Chinese Simplified) 2025-09-07 04:10:44 +02:00
El RIDO fc53db1559 Merge pull request #1642 from PrivateBin/dependabot/github_actions/actions/setup-node-5
Bump actions/setup-node from 4 to 5
2025-09-04 21:31:22 +02:00
dependabot[bot] ba5dfb2a08 Bump actions/setup-node from 4 to 5
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 5.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-04 13:21:14 +00:00
El RIDO bd61a3d021 enable tests to pass
The path is only optional when it is / and the very last element, otherwise it is required. As soon as it is in the middle of a URL it helps the parser to identify which part is the username and domain and what is path and GET parameters. The @ sign is legitimate, if unusual, in the latter two.
2025-09-03 20:13:33 +02:00
rugk a6034ace1b test: PHP considers this invalid 2025-09-03 14:25:04 +00:00
rugk 616635c66c style: scruintizer wants some trailing comma 2025-09-03 14:21:00 +00:00
rugk e4f2383dd8 test: more test cases for testForeignUrlUsingUsernameTrick 2025-09-03 14:20:03 +00:00
rugk 25dca0838e style(codespaces): comment PHP unit testing setup for now 2025-09-03 14:14:08 +00:00
rugk cfc687d62b style: fix indentation 2025-09-03 14:12:12 +00:00
rugk 168fed64b9 chore: apply Scruintizer diff 2025-09-03 14:11:35 +00:00
rugk 4f13d93af2 style: use explicit types 2025-09-03 13:53:51 +00:00
rugk f76704a88c refactor: simplify tests 2025-09-03 13:48:28 +00:00
rugk dbaa70ec11 test: move ftp example to rejected because of foreign URL 2025-09-03 13:45:30 +00:00
rugk 879b696f22 wipfix: correct contatenation of options 2025-09-03 13:43:57 +00:00
rugk 0a398d73f0 chore(codespace): install stuff for PHP unit testing 2025-09-03 12:57:55 +00:00
rugk fae7e233f3 test: write some tests for testing proxy ensurance 2025-09-03 12:38:44 +00:00
rugk 64165d9928 chore: always ignore composer PHP bin dir 2025-09-03 12:38:13 +00:00
rugk bdfe74c077 chore: fix Codespace COmposer/PHPUnit PATH 2025-09-03 12:37:55 +00:00
rugk 2c1a17a07f Strengthen validation of URL in proxy services
This should definitively rule out any circumstances, where invalid URLs could cause problems.

Both URL validity is checked before it is forwarded to the URL shortener proxy _and_ the host part is explicitly compared to make sure the domain is really the same one.

TOOD:
* [ ] some tests may be needed here (hmpff…)
2025-09-02 22:40:22 +02:00
El RIDO a72545c994 Merge pull request #1636 from PrivateBin/crowdin-translation
New Crowdin updates
2025-08-30 19:23:03 +02:00
PrivateBin Translator Bot e31027d71e New translations en.json (Corsican) 2025-08-30 17:54:07 +02:00
El RIDO 5cc963be1b deduplicate proxy view operations 2025-08-30 09:22:44 +02:00
El RIDO 5cc66bb29b Merge pull request #1629 from karthikkasturi/shlink
Added shlink integration
2025-08-30 09:19:41 +02:00
El RIDO a97af156a0 Merge pull request #1633 from PrivateBin/crowdin-translation
New Crowdin updates
2025-08-21 18:13:10 +02:00
PrivateBin Translator Bot 374f937418 New translations en.json (Czech) 2025-08-21 16:56:25 +02:00
PrivateBin Translator Bot 53cf3063b9 New translations en.json (Czech) 2025-08-21 15:18:24 +02:00
Karthik Kasturi 77395c147f updated test cases, added clarity in error messages 2025-08-20 01:23:06 +00:00
Karthik Kasturi 39e527915e Add test cases for shlink 2025-08-19 23:55:32 +00:00
Karthik Kasturi 0be1cef224 i18n updates 2025-08-19 21:39:16 +01:00
Karthik Kasturi 7ec8bc6ef1 chore: moved proxy classes to different folder and namespaces 2025-08-19 20:34:39 +01:00
El RIDO c317dc423b Merge pull request #1631 from PrivateBin/crowdin-translation
New Crowdin updates
2025-08-18 21:42:18 +02:00
PrivateBin Translator Bot 7380b3d5d4 New translations en.json (Corsican) 2025-08-18 19:21:45 +02:00
Karthik Kasturi 4a39a2ad0f refactor: added AbstractProxy base class for shortener proxies 2025-08-15 23:28:44 +01:00
Karthik Kasturi 714e455479 style fixes 2025-08-15 00:20:11 +01:00
Karthik Kasturi 0808052acf Added shlink integration 2025-08-15 00:07:51 +01:00
El RIDO ebe275d509 Merge pull request #1627 from karthikkasturi/auto-shorten-urls
Auto shorten urls
2025-08-14 07:56:35 +02:00
Karthik Kasturi 0460f18ca0 chore: added new translation 2025-08-14 01:21:49 +01:00
Karthik Kasturi eab8b3b7c9 Updated changelog 2025-08-14 00:48:36 +01:00
Karthik Kasturi 94e0d718cf update SRI 2025-08-14 00:39:59 +01:00
Karthik Kasturi 059e64adb1 Auto Shortening URLs 2025-08-14 00:29:28 +01:00
El RIDO 08c44cfb05 Merge pull request #1626 from PrivateBin/dependabot/github_actions/actions/checkout-5
Bump actions/checkout from 4 to 5
2025-08-13 07:12:42 +02:00
dependabot[bot] 09bab8744f Bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-12 17:11:00 +00:00
El RIDO 50b8c1de50 Merge pull request #1625 from karthikkasturi/copy-short-link
Update Copy Link url after short url is generated
2025-08-09 15:01:05 +02:00
El RIDO 8eac99c2ec Merge pull request #1623 from karthikkasturi/master
Update scripts to defer
2025-08-09 14:58:52 +02:00
Karthik Kasturi 397d006479 Updated bootstrap.php to include scripts as defer 2025-08-08 12:44:53 +05:30
Karthik Kasturi 065d9eaa23 Updated SRI and Changelog 2025-08-06 23:36:36 +05:30
Karthik Kasturi ce188671db Update Copy Link url after short url is generated 2025-08-05 01:14:37 +05:30
Karthik Kasturi 4f8fc4873a Update scripts to defer 2025-08-04 03:09:04 +05:30
El RIDO f739b5b6a9 Merge pull request #1621 from jacquesbh/configuration-isnt-private
Use protected instead of private $_configuration
2025-08-01 07:09:30 +02:00
El RIDO 35319c1622 Merge pull request #1620 from 1024pix/fix/paste-password-in-passworddecrypt
fix: allow pasting a password for decrypting a paste
2025-08-01 06:54:19 +02:00
Jacques Bodin-Hullin 51d8e92e6a feat(configuration): Use protected instead of private
This way we can override the $_configuration property using
a new Configuration extending the PrivateBin one.
2025-07-31 23:59:58 +02:00
Nicolas Lepage 8e3f59a49c chroe: adds bugfix in CHANGELOG.md 2025-07-31 16:31:37 +02:00
Nicolas Lepage 79dc03660b chore: updates SRI hash for privatebin.js 2025-07-31 16:19:42 +02:00
Nicolas Lepage 13f5922397 fix: attach paste listener on message field
paste listener prevents default behavior in unexpected cases
such as pasting a password in the passworddecrypt field

attaching the paste listener on the message field
instead of the whole document should fix this problem
2025-07-31 16:14:13 +02:00
El RIDO 7435097731 Merge pull request #1618 from AnonymousWP/chore(translation)-update-Dutch-translation
chore(translation): fix incorrect Dutch wording for `document`
2025-07-29 17:11:47 +02:00
Anonymoussaurus b77544a6b1 chore(translation): fix incorrect Dutch wording for document
* 'de' -> 'het'
* 'deze' -> 'dit'
* 'notitie' -> 'document'
* 'documents' -> 'documenten'
2025-07-29 11:40:26 +02:00
El RIDO 99265e5464 avoid undefined variable warning 2025-07-29 07:49:56 +02:00
El RIDO f495aa2cfc Merge pull request #1617 from PrivateBin/crowdin-translation
New Crowdin updates
2025-07-28 17:49:43 +02:00
PrivateBin Translator Bot f7063f6b1d New translations en.json (Corsican) 2025-07-28 17:20:39 +02:00
El RIDO 22e53324bb Merge pull request #1613 from PrivateBin/csp-2.0
update CSP recommendation around bootstrap5 template
2025-07-28 16:28:42 +02:00
El RIDO 193a69d0b6 Merge pull request #1616 from PrivateBin/crowdin-translation
New Crowdin updates
2025-07-28 16:27:53 +02:00
PrivateBin Translator Bot ba2799fc89 New translations en.json (Corsican) 2025-07-28 16:21:22 +02:00
El RIDO 1378fb7356 update CSP recommendation around bootstrap5 template
resolved in Firefox 131, see https://bugzilla.mozilla.org/show_bug.cgi?id=1773976

kudos @Ribas160 for finding this
2025-07-28 16:04:19 +02:00
El RIDO 4fd63176ad belt & braces
occasionally paste without meta attribute are encountered (while they are written), leading to:

PHP Warning:  Trying to access array offset on false in /srv/bin/administration on line 287
PHP Fatal error:  Uncaught TypeError: array_key_exists(): Argument #2 ($array) must be of type array, null given in /srv/bin/administration:287
Stack trace:
#0 /srv/bin/administration(287): array_key_exists()
#1 /srv/bin/administration(398): PrivateBin\Administration->_statistics()
#2 /srv/bin/administration(403): PrivateBin\Administration->__construct()
#3 {main}
  thrown in /srv/bin/administration on line 287
2025-07-28 15:39:33 +02:00
El RIDO 144002e3a2 Merge branch 'master' into crowdin-translation 2025-07-28 15:12:18 +02:00
PrivateBin Translator Bot f5187b4fbe New translations en.json (Corsican) 2025-07-28 14:19:59 +02:00
PrivateBin Translator Bot 9022529bc4 New translations en.json (Occitan) 2025-07-28 14:19:57 +02:00
PrivateBin Translator Bot 4b89f4c4b6 New translations en.json (Latin) 2025-07-28 14:19:56 +02:00
PrivateBin Translator Bot 69770cb1e5 New translations en.json (Lojban) 2025-07-28 14:19:55 +02:00
PrivateBin Translator Bot ebea0a56b1 New translations en.json (Hindi) 2025-07-28 14:19:54 +02:00
PrivateBin Translator Bot 457a6b251e New translations en.json (Estonian) 2025-07-28 14:19:53 +02:00
PrivateBin Translator Bot a172ad305f New translations en.json (Thai) 2025-07-28 14:19:52 +02:00
PrivateBin Translator Bot 7cad5581f4 New translations en.json (Indonesian) 2025-07-28 14:19:51 +02:00
PrivateBin Translator Bot 956f0f5bea New translations en.json (Chinese Simplified) 2025-07-28 14:19:50 +02:00
PrivateBin Translator Bot 9225e36584 New translations en.json (Ukrainian) 2025-07-28 14:19:49 +02:00
PrivateBin Translator Bot 5e48888fec New translations en.json (Turkish) 2025-07-28 14:19:47 +02:00
PrivateBin Translator Bot 16451a8479 New translations en.json (Swedish) 2025-07-28 14:19:46 +02:00
PrivateBin Translator Bot 53c3a44dd6 New translations en.json (Slovenian) 2025-07-28 14:19:45 +02:00
PrivateBin Translator Bot fcf7b33fef New translations en.json (Slovak) 2025-07-28 14:19:44 +02:00
PrivateBin Translator Bot a0b658151f New translations en.json (Russian) 2025-07-28 14:19:43 +02:00
PrivateBin Translator Bot 38e7ce817e New translations en.json (Portuguese) 2025-07-28 14:19:42 +02:00
PrivateBin Translator Bot b40e891e1f New translations en.json (Polish) 2025-07-28 14:19:41 +02:00
PrivateBin Translator Bot b4ec073c77 New translations en.json (Norwegian) 2025-07-28 14:19:39 +02:00
PrivateBin Translator Bot 425bbac014 New translations en.json (Dutch) 2025-07-28 14:19:37 +02:00
PrivateBin Translator Bot 69cfe91094 New translations en.json (Lithuanian) 2025-07-28 14:19:36 +02:00
PrivateBin Translator Bot 950ab4e393 New translations en.json (Kurdish) 2025-07-28 14:19:35 +02:00
PrivateBin Translator Bot 63608c93fe New translations en.json (Korean) 2025-07-28 14:19:34 +02:00
PrivateBin Translator Bot 74c4b31e03 New translations en.json (Japanese) 2025-07-28 14:19:33 +02:00
PrivateBin Translator Bot c70efcc31f New translations en.json (Italian) 2025-07-28 14:19:32 +02:00
PrivateBin Translator Bot dc3e838d2f New translations en.json (Hungarian) 2025-07-28 14:19:31 +02:00
PrivateBin Translator Bot a9171c34b2 New translations en.json (Hebrew) 2025-07-28 14:19:30 +02:00
PrivateBin Translator Bot a1dfbf7f5b New translations en.json (Finnish) 2025-07-28 14:19:29 +02:00
PrivateBin Translator Bot 0804b93ec8 New translations en.json (Greek) 2025-07-28 14:19:28 +02:00
PrivateBin Translator Bot 0016cbc383 New translations en.json (German) 2025-07-28 14:19:26 +02:00
PrivateBin Translator Bot 5c06d8289b New translations en.json (Czech) 2025-07-28 14:19:25 +02:00
PrivateBin Translator Bot f916a4d0d0 New translations en.json (Catalan) 2025-07-28 14:19:24 +02:00
PrivateBin Translator Bot 3933bbc8cc New translations en.json (Bulgarian) 2025-07-28 14:19:23 +02:00
PrivateBin Translator Bot 2514572a88 New translations en.json (Arabic) 2025-07-28 14:19:22 +02:00
PrivateBin Translator Bot 8a90cc1d8f New translations en.json (Spanish) 2025-07-28 14:19:21 +02:00
PrivateBin Translator Bot f6efe1592d New translations en.json (French) 2025-07-28 14:19:20 +02:00
PrivateBin Translator Bot 6b3d1cf1a6 New translations en.json (Romanian) 2025-07-28 14:19:19 +02:00
El RIDO d24806d88e Merge pull request #1614 from PrivateBin/drag-drop-paste
undo attachment hint translation change
2025-07-28 14:12:30 +02:00
El RIDO d3d632ba04 undo attachment hint translation change
here paste refers to the act of "pasting" a copied item from the clipboard, not a document
2025-07-28 11:22:17 +02:00
El RIDO 7850b57482 Merge pull request #1612 from mariuszkrzaczkowski/patch-1
chore(translation): update Polish translation
2025-07-28 11:11:53 +02:00
Mariusz Krzaczkowski e8882f89ed chore(translation): update Polish translation 2025-07-28 11:00:15 +02:00
El RIDO 4d257a9d11 update CSP to display icons by default with bootstrap5 template 2025-07-28 11:00:07 +02:00
El RIDO b6cf717405 chore: prepare for next release 2025-07-28 09:50:52 +02:00
El RIDO 6003f52dba incrementing version 2025-07-28 09:34:48 +02:00
El RIDO aa75af9f40 Merge pull request #1610 from PrivateBin/crowdin-translation
New Crowdin updates
2025-07-28 09:09:21 +02:00
PrivateBin Translator Bot a5d2888257 New translations en.json (French) 2025-07-28 08:49:22 +02:00
PrivateBin Translator Bot 66c19938f4 New translations en.json (Corsican) 2025-07-28 08:45:00 +02:00
PrivateBin Translator Bot 3e54801699 New translations en.json (Occitan) 2025-07-28 08:44:59 +02:00
PrivateBin Translator Bot 7f2d95ffdc New translations en.json (Lojban) 2025-07-28 08:44:57 +02:00
PrivateBin Translator Bot 0c487f8375 New translations en.json (Estonian) 2025-07-28 08:44:56 +02:00
PrivateBin Translator Bot 584ebbf6eb New translations en.json (Thai) 2025-07-28 08:44:55 +02:00
PrivateBin Translator Bot 8600f2188b New translations en.json (Indonesian) 2025-07-28 08:44:54 +02:00
PrivateBin Translator Bot 51041bff64 New translations en.json (Chinese Simplified) 2025-07-28 08:44:53 +02:00
PrivateBin Translator Bot 592038e5fc New translations en.json (Ukrainian) 2025-07-28 08:44:52 +02:00
PrivateBin Translator Bot 7652852287 New translations en.json (Turkish) 2025-07-28 08:44:51 +02:00
PrivateBin Translator Bot c4f36444dc New translations en.json (Slovenian) 2025-07-28 08:44:49 +02:00
PrivateBin Translator Bot c949d7974a New translations en.json (Slovak) 2025-07-28 08:44:48 +02:00
PrivateBin Translator Bot 268f761970 New translations en.json (Russian) 2025-07-28 08:44:47 +02:00
PrivateBin Translator Bot 2033d5a906 New translations en.json (Portuguese) 2025-07-28 08:44:47 +02:00
PrivateBin Translator Bot 776152c0f9 New translations en.json (Polish) 2025-07-28 08:44:46 +02:00
PrivateBin Translator Bot 05c993e730 New translations en.json (Norwegian) 2025-07-28 08:44:44 +02:00
PrivateBin Translator Bot c5335aa878 New translations en.json (Dutch) 2025-07-28 08:44:43 +02:00
PrivateBin Translator Bot bb71e70080 New translations en.json (Lithuanian) 2025-07-28 08:44:42 +02:00
PrivateBin Translator Bot 9ee3f7f292 New translations en.json (Japanese) 2025-07-28 08:44:40 +02:00
PrivateBin Translator Bot 62f9120959 New translations en.json (Italian) 2025-07-28 08:44:39 +02:00
PrivateBin Translator Bot d12ca59db3 New translations en.json (Hungarian) 2025-07-28 08:44:38 +02:00
PrivateBin Translator Bot ff50f92d8a New translations en.json (Hebrew) 2025-07-28 08:44:37 +02:00
PrivateBin Translator Bot 83cc014e2b New translations en.json (Finnish) 2025-07-28 08:44:36 +02:00
PrivateBin Translator Bot c576c0f02e New translations en.json (Greek) 2025-07-28 08:44:35 +02:00
PrivateBin Translator Bot 2bcb2eee4c New translations en.json (German) 2025-07-28 08:44:34 +02:00
PrivateBin Translator Bot 61f44f727b New translations en.json (Czech) 2025-07-28 08:44:33 +02:00
PrivateBin Translator Bot 5802309f59 New translations en.json (Catalan) 2025-07-28 08:44:32 +02:00
PrivateBin Translator Bot 94380ac942 New translations en.json (Bulgarian) 2025-07-28 08:44:31 +02:00
PrivateBin Translator Bot f22e63d209 New translations en.json (Arabic) 2025-07-28 08:44:30 +02:00
PrivateBin Translator Bot 533f452416 New translations en.json (Spanish) 2025-07-28 08:44:29 +02:00
PrivateBin Translator Bot 21e3c9c02a New translations en.json (French) 2025-07-28 08:44:28 +02:00
PrivateBin Translator Bot 3f0a3d0f0b New translations en.json (Romanian) 2025-07-28 08:44:27 +02:00
PrivateBin Translator Bot 535c5ba6cb New translations en.json (Corsican) 2025-07-27 21:12:23 +02:00
PrivateBin Translator Bot dcdd8fa338 New translations en.json (Occitan) 2025-07-27 21:12:22 +02:00
PrivateBin Translator Bot 031007327b New translations en.json (Lojban) 2025-07-27 21:12:21 +02:00
PrivateBin Translator Bot 7ecf7e23db New translations en.json (Estonian) 2025-07-27 21:12:20 +02:00
PrivateBin Translator Bot 36643ccc83 New translations en.json (Thai) 2025-07-27 21:12:19 +02:00
PrivateBin Translator Bot 5eb3b36a86 New translations en.json (Indonesian) 2025-07-27 21:12:18 +02:00
PrivateBin Translator Bot 060e7044b6 New translations en.json (Chinese Simplified) 2025-07-27 21:12:17 +02:00
PrivateBin Translator Bot b152cd5dfd New translations en.json (Ukrainian) 2025-07-27 21:12:16 +02:00
PrivateBin Translator Bot 156ae6fa7b New translations en.json (Turkish) 2025-07-27 21:12:15 +02:00
PrivateBin Translator Bot f8d04c5a63 New translations en.json (Slovenian) 2025-07-27 21:12:13 +02:00
PrivateBin Translator Bot 0018ea021a New translations en.json (Slovak) 2025-07-27 21:12:12 +02:00
PrivateBin Translator Bot 063401e0d2 New translations en.json (Russian) 2025-07-27 21:12:11 +02:00
PrivateBin Translator Bot b4acb96311 New translations en.json (Portuguese) 2025-07-27 21:12:10 +02:00
PrivateBin Translator Bot 84ad6aa938 New translations en.json (Polish) 2025-07-27 21:12:09 +02:00
PrivateBin Translator Bot 98e90d344b New translations en.json (Norwegian) 2025-07-27 21:12:08 +02:00
PrivateBin Translator Bot 4b93fb59e2 New translations en.json (Dutch) 2025-07-27 21:12:07 +02:00
PrivateBin Translator Bot 0954c68291 New translations en.json (Lithuanian) 2025-07-27 21:12:06 +02:00
PrivateBin Translator Bot 45182253ee New translations en.json (Japanese) 2025-07-27 21:12:04 +02:00
PrivateBin Translator Bot d6d548e902 New translations en.json (Italian) 2025-07-27 21:12:03 +02:00
PrivateBin Translator Bot 8c62cacea6 New translations en.json (Hungarian) 2025-07-27 21:12:02 +02:00
PrivateBin Translator Bot e4dcde322a New translations en.json (Hebrew) 2025-07-27 21:12:01 +02:00
PrivateBin Translator Bot 5f2afa0919 New translations en.json (Finnish) 2025-07-27 21:12:00 +02:00
PrivateBin Translator Bot 98daf6c860 New translations en.json (Greek) 2025-07-27 21:11:59 +02:00
PrivateBin Translator Bot 5314dcb1de New translations en.json (German) 2025-07-27 21:11:58 +02:00
PrivateBin Translator Bot 63f8308c61 New translations en.json (Czech) 2025-07-27 21:11:57 +02:00
PrivateBin Translator Bot f105bbbd2f New translations en.json (Catalan) 2025-07-27 21:11:56 +02:00
PrivateBin Translator Bot 9e50cae4ba New translations en.json (Bulgarian) 2025-07-27 21:11:56 +02:00
PrivateBin Translator Bot 5efd2224fd New translations en.json (Arabic) 2025-07-27 21:11:55 +02:00
PrivateBin Translator Bot 159c47c251 New translations en.json (Spanish) 2025-07-27 21:11:54 +02:00
PrivateBin Translator Bot 9d826c9061 New translations en.json (French) 2025-07-27 21:11:53 +02:00
PrivateBin Translator Bot e4f0a7fe0a New translations en.json (Romanian) 2025-07-27 21:11:52 +02:00
El RIDO b384acdddb Merge pull request #1607 from PrivateBin/document-wording-instead-of-paste
replace the term "paste" with the more generic "document"
2025-07-27 20:57:48 +02:00
El RIDO 2ef562e41e replaced the term "paste" with the more generic "document"
kudos @Ribas160
2025-07-26 08:44:13 +02:00
El RIDO 09ba23ae22 adding a test stage for the configuration combinations 2025-07-26 08:40:48 +02:00
El RIDO bde805d2f1 replaced the term "paste" with the more generic "document"
kudos @Ribas160
2025-07-25 08:16:08 +02:00
El RIDO 634c15a2e8 clearer wording
The comments are not actually read, it just checks if discussion was enabled or not.
2025-07-24 13:44:49 +02:00
El RIDO b8a3c6f920 replaced the term "paste" with the more generic "document" 2025-07-24 13:34:54 +02:00
El RIDO ddd2d72064 replaced the term "paste" with the more generic "document"
Some of the references to "paste" in code or comments got changed as well, but to clarify the intended usage of the terms:

- A PrivateBin document can consist of a paste text (key "paste" in the encrypted payload) and one or several attachments and discussion entries.
- Internally the root document is called a "Paste" and each discussion entry is called a "Discussion".
- When referring to a whole document with one paste and optional discussion(s), we call it just "document".
- When talking about a particular JSON payload type in the internal logic, i.e. during storage or transmission, we call them a paste or discussion to distinguish which type we refer to.

closes #397
2025-07-24 10:46:31 +02:00
El RIDO e2bf8ffb2d Merge pull request #1606 from PrivateBin/crowdin-translation
New Crowdin updates
2025-07-24 09:01:55 +02:00
PrivateBin Translator Bot dc4d156d0f New translations en.json (Dutch) 2025-07-24 08:30:52 +02:00
PrivateBin Translator Bot 5ddf3ffbfa New translations en.json (Finnish) 2025-07-24 08:30:51 +02:00
El RIDO c971f0ff34 Merge branch 'master' into crowdin-translation 2025-07-24 07:28:06 +02:00
PrivateBin Translator Bot 57beeb4ffc New translations en.json (Corsican) 2025-07-24 06:15:55 +02:00
PrivateBin Translator Bot 817e09f64a New translations en.json (Occitan) 2025-07-24 06:15:54 +02:00
PrivateBin Translator Bot f662c34c0a New translations en.json (Latin) 2025-07-24 06:15:53 +02:00
PrivateBin Translator Bot f6d182e07c New translations en.json (Lojban) 2025-07-24 06:15:52 +02:00
PrivateBin Translator Bot e0b0b16ff9 New translations en.json (Hindi) 2025-07-24 06:15:51 +02:00
PrivateBin Translator Bot c6f1d65e80 New translations en.json (Estonian) 2025-07-24 06:15:50 +02:00
PrivateBin Translator Bot f69ee97768 New translations en.json (Thai) 2025-07-24 06:15:49 +02:00
PrivateBin Translator Bot 3e35f61d7e New translations en.json (Indonesian) 2025-07-24 06:15:48 +02:00
PrivateBin Translator Bot 6bf6e39acf New translations en.json (Chinese Simplified) 2025-07-24 06:15:48 +02:00
PrivateBin Translator Bot b099a34654 New translations en.json (Ukrainian) 2025-07-24 06:15:47 +02:00
PrivateBin Translator Bot 3b588b163b New translations en.json (Turkish) 2025-07-24 06:15:46 +02:00
PrivateBin Translator Bot 322f93aa53 New translations en.json (Swedish) 2025-07-24 06:15:44 +02:00
PrivateBin Translator Bot c155f25ad0 New translations en.json (Slovenian) 2025-07-24 06:15:43 +02:00
PrivateBin Translator Bot 123f2f84db New translations en.json (Slovak) 2025-07-24 06:15:42 +02:00
PrivateBin Translator Bot a887cea19e New translations en.json (Russian) 2025-07-24 06:15:41 +02:00
PrivateBin Translator Bot a4418d1052 New translations en.json (Portuguese) 2025-07-24 06:15:40 +02:00
PrivateBin Translator Bot 095ce0438e New translations en.json (Polish) 2025-07-24 06:15:39 +02:00
PrivateBin Translator Bot 175fcf5166 New translations en.json (Norwegian) 2025-07-24 06:15:38 +02:00
PrivateBin Translator Bot 79a7b47e8d New translations en.json (Dutch) 2025-07-24 06:15:37 +02:00
PrivateBin Translator Bot 3e05ddda1b New translations en.json (Lithuanian) 2025-07-24 06:15:36 +02:00
PrivateBin Translator Bot a32de604dd New translations en.json (Kurdish) 2025-07-24 06:15:35 +02:00
PrivateBin Translator Bot 1ba70b4511 New translations en.json (Korean) 2025-07-24 06:15:34 +02:00
PrivateBin Translator Bot 15a4e4615e New translations en.json (Japanese) 2025-07-24 06:15:33 +02:00
PrivateBin Translator Bot 2b0b2c4c50 New translations en.json (Italian) 2025-07-24 06:15:32 +02:00
PrivateBin Translator Bot aedf69e607 New translations en.json (Hungarian) 2025-07-24 06:15:31 +02:00
PrivateBin Translator Bot ee243b8bef New translations en.json (Hebrew) 2025-07-24 06:15:30 +02:00
PrivateBin Translator Bot 79e01352e7 New translations en.json (Finnish) 2025-07-24 06:15:29 +02:00
PrivateBin Translator Bot 884b9f8c54 New translations en.json (Greek) 2025-07-24 06:15:28 +02:00
PrivateBin Translator Bot b8ce602e85 New translations en.json (German) 2025-07-24 06:15:27 +02:00
PrivateBin Translator Bot 87fff17a02 New translations en.json (Czech) 2025-07-24 06:15:26 +02:00
PrivateBin Translator Bot 911cf44529 New translations en.json (Catalan) 2025-07-24 06:15:25 +02:00
PrivateBin Translator Bot c51e76c3dc New translations en.json (Bulgarian) 2025-07-24 06:15:24 +02:00
PrivateBin Translator Bot a16652a5b4 New translations en.json (Arabic) 2025-07-24 06:15:23 +02:00
PrivateBin Translator Bot c0277fe0dc New translations en.json (Spanish) 2025-07-24 06:15:22 +02:00
PrivateBin Translator Bot 10b09dfc6e New translations en.json (French) 2025-07-24 06:15:21 +02:00
PrivateBin Translator Bot 7f7d8231b0 New translations en.json (Romanian) 2025-07-24 06:15:20 +02:00
El RIDO 99e62ab481 Merge pull request #1603 from PrivateBin/switch_from_binary_bytes_to_si_units
Switch from binary bytes to SI-units
2025-07-24 06:12:41 +02:00
Ribas160 5d119768c3 JavaScript unit tests for new SI units added, privatebin.js SRI updated 2025-07-24 00:33:38 +03:00
Mikhail Romanov 390f8ddc53 The rest of SI units added
Co-authored-by: El RIDO <elrido@gmx.net>
2025-07-24 00:20:33 +03:00
Mikhail Romanov ebb3cb1d53 Update cfg/conf.sample.php
Co-authored-by: El RIDO <elrido@gmx.net>
2025-07-24 00:15:40 +03:00
Ribas160 dc26a06e15 CHANGELOG.md updated 2025-07-23 21:22:48 +03:00
Ribas160 863cb89ad9 Switch from binary bytes to SI-units 2025-07-23 21:06:20 +03:00
El RIDO 67e4eb74ed Merge pull request #1602 from PrivateBin/configuration-test-fix
Fix configuration combinations test errors
2025-07-22 21:52:50 +02:00
Ribas160 d04401c12b Fix configuration combinations test errors 2025-07-22 22:38:50 +03:00
El RIDO e82be3bd9d Merge pull request #1600 from PrivateBin/bootstrap-5.3.7
Upgrade libraries: bootstrap 5.3.7, kjua 0.10.0 & base-x 5.0.1
2025-07-22 12:10:10 +02:00
El RIDO 47d7f5bc60 addressing false positive jsverify rngState 0dc9b3f5704ad26e18 2025-07-22 12:09:19 +02:00
El RIDO 8f49bc4ad3 Merge pull request #1599 from PrivateBin/dependabot/npm_and_yarn/js/form-data-4.0.4
Bump form-data from 4.0.1 to 4.0.4 in /js
2025-07-22 11:00:06 +02:00
El RIDO a1ca7954d8 apply StyleCI recommendation 2025-07-22 10:56:17 +02:00
El RIDO e50a809855 upgrade base-x to 5.0.1 2025-07-22 10:32:08 +02:00
dependabot[bot] a15f438654 Bump form-data from 4.0.1 to 4.0.4 in /js
Bumps [form-data](https://github.com/form-data/form-data) from 4.0.1 to 4.0.4.
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](https://github.com/form-data/form-data/compare/v4.0.1...v4.0.4)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 4.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-22 08:19:04 +00:00
El RIDO f3e2c53729 upgrade kjua to 0.10.0 2025-07-22 09:49:48 +02:00
El RIDO f68650ce5f upgrade bootstrap to 5.3.7 2025-07-22 09:45:15 +02:00
El RIDO 16d6fe4c40 Merge pull request #1598 from PrivateBin/crowdin-translation
New Crowdin updates
2025-07-21 21:32:09 +02:00
El RIDO 7888107e4e Merge pull request #1591 from PrivateBin/drop-legacy-zerobin-support
drop legacy paste format support
2025-07-21 21:29:36 +02:00
PrivateBin Translator Bot 7bb488534d New translations en.json (Slovak) 2025-07-21 20:09:16 +02:00
PrivateBin Translator Bot 5ae091c169 New translations en.json (Slovak) 2025-07-21 18:53:20 +02:00
El RIDO 4daf0a2307 "0" is not a valid base58 encoding as leading zeros are trimmed, "1" is valid and decodes to 0x00 2025-07-21 12:29:11 +02:00
El RIDO 734b85eb08 remove more v1 remnants
kudos @Ribas160
2025-07-21 12:28:40 +02:00
El RIDO cdb8010f6d Merge branch 'master' into drop-legacy-zerobin-support 2025-07-21 11:42:47 +02:00
El RIDO 262c390f42 Merge pull request #1597 from Ribas160/set_bootstrap5_template_as_default
Set bootstrap5 template as default
2025-07-21 11:41:04 +02:00
Ribas160 f584d38f87 CHANGELOG.md update 2025-07-21 09:39:35 +03:00
Ribas160 273b11e1b4 Fix bootstrap template fallback in unit tests 2025-07-21 09:30:30 +03:00
El RIDO d353003086 address Scrutinizer reported issues 2025-07-19 21:47:18 +02:00
El RIDO 48726f3abc enable xdebug for coverage in scrutinizer 2025-07-19 21:36:31 +02:00
El RIDO 02b4eea56e address Scrutinizer reported issues 2025-07-19 21:34:33 +02:00
El RIDO 009f53e5fd fix deprecated creation of dynamic property
caught by Scrutinizer after upgrading from PHP 7.4 to 8.2
2025-07-19 21:30:05 +02:00
El RIDO 0e57824e4a attempt to upgrade to PHP 8.2 in scrutinizer 2025-07-19 21:10:18 +02:00
El RIDO 07ec6f9128 attempt to upgrade to PHP 8.3 in scrutinizer 2025-07-19 21:04:35 +02:00
El RIDO 70842cf271 address Scrutinizer reported issues 2025-07-19 21:01:38 +02:00
El RIDO cbc0d99c59 attempt to upgrade to PHP 8.4 in scrutinizer 2025-07-19 20:17:19 +02:00
El RIDO c99e6895dd remove more v1 remnants
kudos @Ribas160
2025-07-19 20:09:37 +02:00
Ribas160 07ba4f179d Set bootstrap5 template as default 2025-07-19 13:24:37 +03:00
El RIDO 410cc909ce Merge branch 'master' into drop-legacy-zerobin-support 2025-07-17 08:00:09 +02:00
El RIDO c1050e08e8 Merge pull request #1596 from zertrin/1554-add-error-logging
Added some more error logging for database and filesystem store backends
2025-07-17 06:44:46 +02:00
zertrin 7e4d9eb535 Updated changelog 2025-07-17 04:28:55 +00:00
zertrin 330855f58d Added some more error logging for database and filesystem store backends
This is to address issue #1554
2025-07-16 15:50:41 +00:00
El RIDO 71587cddaf Merge branch 'master' into drop-legacy-zerobin-support 2025-07-16 06:10:08 +02:00
El RIDO 80d8c8d831 Merge pull request #1592 from PrivateBin/jdenticons-default
switch to Jdenticons as the default icon generator
2025-07-15 12:44:27 +02:00
El RIDO 13869e46be updating jdenticon library to 2.0.0, minimum PHP version 7.4 2025-07-14 22:01:11 +02:00
El RIDO 3ba29ea29e Merge branch 'master' into jdenticons-default 2025-07-14 21:42:23 +02:00
El RIDO c4e0abab02 Merge branch 'master' into drop-legacy-zerobin-support 2025-07-14 21:41:50 +02:00
El RIDO f8a1affcfa Merge pull request #1595 from touchweb-vincent/master
ModSecurity2 – JSON Body Processor Compliance
2025-07-08 18:29:30 +02:00
TW - Vincent 778a7dec71 Mod_security2 BodyProcessor json compliance 2025-07-08 13:44:48 +02:00
TW - Vincent ce025cf884 Mod_security2 BodyProcessor json compliance 2025-07-08 13:43:46 +02:00
El RIDO 55ed70eca6 Merge pull request #1594 from AnonymousWP/chore(translation)-update-Dutch-translation
chore(translation): fix Dutch translation for 'Theme'
2025-07-07 17:12:52 +02:00
Anonymoussaurus 5e78be8778 chore(translation): fix Dutch translation for 'Theme' 2025-07-07 17:01:11 +02:00
El RIDO 811b62b538 workaround PHP 8.4 deprecations
lifted from https://github.com/dmester/jdenticon-php/pull/10
2025-07-05 20:09:43 +02:00
El RIDO 7b444bf62b update test to use a Jdenticon 2025-07-05 19:40:37 +02:00
El RIDO 2f3fe1a479 Revert "update test to use a Jdenticon"
This reverts commit 12de19444d.

Sorry, this should have gotten committed on a different branch.
2025-07-05 19:36:21 +02:00
El RIDO 12de19444d update test to use a Jdenticon 2025-07-05 19:27:39 +02:00
El RIDO a5ce92a0d1 remove dead code, found by Scrutinizer 2025-07-05 18:35:05 +02:00
El RIDO b79ae4e929 remove more v1 legacy
- document removed unused columns in database schema of tables `paste` & `comment`
- amended misleading comments
- nickname is part of the encrypted payload in v2 comments and therefore there is nothing to store separately
2025-07-05 18:19:38 +02:00
El RIDO e2859e9a35 apply StyleCI recommendation 2025-07-05 17:52:32 +02:00
El RIDO 8668e7b366 removed support for privatebin_data, privatebin_db & zerobin_db model class configurations
kudos @Ribas160 for suggesting this
2025-07-05 17:45:02 +02:00
El RIDO 9eabc7e84e add statistics on v1 pastes in administration script and an option to delete them 2025-07-05 17:29:26 +02:00
El RIDO f7cf389f36 remove v1 backend support and version checks in the frontend 2025-07-05 17:21:12 +02:00
El RIDO 07caf3ff64 switch to Jdenticons as the default icon generator 2025-07-05 11:30:16 +02:00
El RIDO 6d5323e351 drop legacy paste format support
remove support for ZeroBin & v1 pastes and base64 & rawinflate libraries
2025-07-05 11:06:30 +02:00
El RIDO 03e0c81fbf Merge pull request #1590 from Ribas160/adding_attachments_from_clipboard
Adding attachments from clipboard
2025-07-04 18:45:16 +02:00
Ribas160 71db94ccfd CHANGELOG.md updated 2025-07-04 18:27:52 +03:00
Ribas160 38955754f3 Fixed hightlight file upload on bootstrap5 template 2025-07-04 18:18:00 +03:00
Ribas160 0ce8627561 Fixed adding attachments from clipboard 2025-07-04 18:15:28 +03:00
El RIDO e38b88c12c Merge pull request #1587 from Ribas160/remove_page_template
Remove page template
2025-07-04 06:57:03 +02:00
Ribas160 99cee27a6d Merge branch 'master' into remove_page_template
# Conflicts:
#	CHANGELOG.md
#	lib/Configuration.php
2025-07-03 13:14:52 +03:00
Ribas160 692e7af196 - window.confirm fallbacks for page template removed
- page template removed from configuration-test-generator
2025-07-03 13:13:42 +03:00
El RIDO 9d6f105ccf Merge pull request #1586 from Ribas160/name_mismatches_in_attached_files
Name mismatches in attached files fixed
2025-07-03 00:02:15 +02:00
Ribas160 3d3d80c60b Remove page template 2025-07-02 17:38:13 +03:00
Ribas160 9e7fce3792 CHANGELOG.md update 2025-07-02 16:21:50 +03:00
Ribas160 c4e381f523 Name mismatches in attached files fixed 2025-07-02 16:13:38 +03:00
El RIDO 0178bbc075 Merge pull request #1582 from StargazerCel/master
Fixed a Typo in Running Unit Tests.md #HSFDPMUW
2025-07-01 13:25:13 +02:00
Cél 8b204192e9 Fixed a Typo in Running Unit Tests.md #HSFDPMUW
Fixed a typo for a command. 
I need to add this hashtag at the end because I am contributing in a project at my university.
2025-07-01 13:02:45 +02:00
El RIDO 71cce1f4f2 Merge pull request #1581 from PrivateBin/crowdin-translation
New Crowdin updates
2025-07-01 12:49:50 +02:00
PrivateBin Translator Bot c7f4616074 New translations en.json (Thai) 2025-07-01 07:33:51 +02:00
El RIDO 321b471b71 chore: prepare for next release 2025-06-30 11:02:10 +02:00
160 changed files with 6470 additions and 6362 deletions
+7
View File
@@ -1,9 +1,16 @@
#!/bin/sh #!/bin/sh
export PATH="$PATH:$HOME/.composer/vendor/bin" export PATH="$PATH:$HOME/.composer/vendor/bin"
export PATH="$PATH:$PWD/vendor/bin"
echo 'export PATH="$PATH:$HOME/.composer/vendor/bin"' >> ~/.bashrc
echo 'export PATH="$PATH:$PWD/vendor/bin"' >> ~/.bashrc
ln -s ./conf.sample.php cfg/conf.php ln -s ./conf.sample.php cfg/conf.php
composer install --no-dev --optimize-autoloader composer install --no-dev --optimize-autoloader
# for PHP unit testing
# composer require google/cloud-storage
# composer install --optimize-autoloader
sudo chmod a+x "$(pwd)" && sudo rm -rf /var/www/html && sudo ln -s "$(pwd)" /var/www/html sudo chmod a+x "$(pwd)" && sudo rm -rf /var/www/html && sudo ln -s "$(pwd)" /var/www/html
npm install --global nyc npm install --global nyc
-2
View File
@@ -1,2 +0,0 @@
js/*.js
!js/privatebin.js
-236
View File
@@ -1,236 +0,0 @@
---
parserOptions:
ecmaVersion: 2017
ecmaFeatures:
modules: true
jsx: true
env:
amd: true
browser: true
es6: true
jquery: true
node: true
mocha: true
globals:
DOMPurify: readonly
cleanup: writable
describe: readonly
jsc: readonly
jsdom: writable
kjua: writable
WebCrypto: writable
# http://eslint.org/docs/rules/
rules:
# Possible Errors
comma-dangle:
- error
- never
no-cond-assign: 2
no-console: 0
no-constant-condition: 2
no-control-regex: 2
no-debugger: 2
no-dupe-args: 2
no-dupe-keys: 2
no-duplicate-case: 2
no-empty: 2
no-empty-character-class: 2
no-ex-assign: 2
no-extra-boolean-cast: 2
no-extra-parens: 0
no-extra-semi: 2
no-func-assign: 2
no-inner-declarations:
- error
- functions
no-invalid-regexp: 2
no-irregular-whitespace: 2
no-negated-in-lhs: 2
no-obj-calls: 2
no-regex-spaces: 2
no-sparse-arrays: 2
no-unexpected-multiline: 2
no-unreachable: 2
use-isnan: 2
valid-jsdoc: 0
valid-typeof: 2
# Best Practices
accessor-pairs: 2
block-scoped-var: 0
complexity:
- error
- 20
consistent-return: 0
curly: 0
default-case: 0
dot-location: 0
dot-notation: 0
eqeqeq: 2
guard-for-in: 2
no-alert: 0
no-caller: 2
no-case-declarations: 2
no-div-regex: 2
no-else-return: 0
no-empty-pattern: 2
no-eq-null: 2
no-eval: 2
no-extend-native: 2
no-extra-bind: 2
no-fallthrough: 2
no-floating-decimal: 0
no-implicit-coercion: 0
no-implied-eval: 2
no-invalid-this: 0
no-iterator: 2
no-labels: 0
no-lone-blocks: 2
no-loop-func: 2
no-magic-number: 0
no-multi-spaces: 0
no-multi-str: 0
no-native-reassign: 2
no-new-func: 2
no-new-wrappers: 2
no-new: 2
no-octal-escape: 2
no-octal: 2
no-proto: 2
no-redeclare: 0
no-return-assign: 2
no-script-url: 2
no-self-compare: 2
no-sequences: 0
no-throw-literal: 0
no-unused-expressions: 2
no-useless-call: 2
no-useless-concat: 2
no-void: 2
no-warning-comments: 0
no-with: 2
radix: 2
vars-on-top: 0
wrap-iife: 0
yoda: 0
# Strict
strict: 0
# Variables
init-declarations: 0
no-catch-shadow: 2
no-delete-var: 2
no-label-var: 2
no-shadow-restricted-names: 2
no-shadow: 0
no-undef-init: 2
no-undef: 0
no-undefined: 0
no-unused-vars: 0
no-use-before-define: 0
# Node.js and CommonJS
callback-return: 2
global-require: 2
handle-callback-err: 2
no-mixed-requires: 0
no-new-require: 0
no-path-concat: 2
no-process-exit: 2
no-restricted-modules: 0
no-sync: 0
# Stylistic Issues
array-bracket-spacing: 0
block-spacing: 0
brace-style: 0
camelcase: 0
comma-spacing: 0
comma-style: 0
computed-property-spacing: 0
consistent-this: 0
eol-last: 0
func-names: 0
func-style: 0
id-length: 0
id-match: 0
indent: 0
jsx-quotes: 0
key-spacing: 0
linebreak-style: 0
lines-around-comment: 0
max-depth: 0
max-len: 0
max-nested-callbacks: 0
max-params: 0
max-statements:
- error
- 60
new-cap: 0
new-parens: 0
newline-after-var: 0
no-array-constructor: 0
no-bitwise: 0
no-continue: 0
no-inline-comments: 0
no-lonely-if: 0
no-mixed-spaces-and-tabs: 0
no-multiple-empty-lines: 0
no-negated-condition: 0
no-nested-ternary: 0
no-new-object: 0
no-plusplus: 0
no-restricted-syntax: 0
no-spaced-func: 0
no-ternary: 0
no-trailing-spaces: 0
no-underscore-dangle: 0
no-unneeded-ternary: 0
object-curly-spacing: 0
one-var: 0
operator-assignment: 0
operator-linebreak: 0
padded-blocks: 0
quote-props: 0
quotes:
- error
- single
require-jsdoc: 0
semi-spacing: 0
semi: 0
sort-vars: 0
space-after-keywords: 0
space-before-blocks: 0
space-before-function-paren: 0
space-before-keywords: 0
space-in-parens: 0
space-infix-ops: 0
space-return-throw-case: 0
space-unary-ops: 0
spaced-comment: 0
wrap-regex: 0
# ECMAScript 6
arrow-body-style: 0
arrow-parens: 0
arrow-spacing: 0
constructor-super: 0
generator-star-spacing: 0
no-arrow-condition: 0
no-class-assign: 0
no-const-assign: 0
no-dupe-class-members: 0
no-this-before-super: 0
no-var: 0
object-shorthand: 0
prefer-arrow-callback: 0
prefer-const: 0
prefer-reflect: 0
prefer-spread: 0
prefer-template: 0
require-yield: 0
+1 -3
View File
@@ -7,13 +7,12 @@ img/browserstack.svg export-ignore
js/.istanbul.yml export-ignore js/.istanbul.yml export-ignore
js/.nycrc.yml export-ignore js/.nycrc.yml export-ignore
js/common.js export-ignore js/common.js export-ignore
js/eslint.config.js export-ignore
js/test/ export-ignore js/test/ export-ignore
.codeclimate.yml export-ignore .codeclimate.yml export-ignore
.csslintrc export-ignore .csslintrc export-ignore
.devcontainer export-ignore .devcontainer export-ignore
.editorconfig export-ignore .editorconfig export-ignore
.eslintignore export-ignore
.eslintrc export-ignore
.gitattributes export-ignore .gitattributes export-ignore
.github export-ignore .github export-ignore
.gitignore export-ignore .gitignore export-ignore
@@ -24,7 +23,6 @@ js/test/ export-ignore
.styleci.yml export-ignore .styleci.yml export-ignore
.travis.yml export-ignore .travis.yml export-ignore
.vscode export-ignore .vscode export-ignore
codacy-analysis.yml export-ignore
crowdin.yml export-ignore crowdin.yml export-ignore
BADGES.md export-ignore BADGES.md export-ignore
CODE_OF_CONDUCT.md export-ignore CODE_OF_CONDUCT.md export-ignore
@@ -28,26 +28,30 @@ jobs:
steps: steps:
# Checkout the repository to the GitHub Actions runner # Checkout the repository to the GitHub Actions runner
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v5
- name: Remove folders causing errors in report
run: rm -rf doc img *.md
# Execute Codacy Analysis CLI and generate a SARIF output with the security issues identified during the analysis # Execute Codacy Analysis CLI and generate a SARIF output with the security issues identified during the analysis
- name: Run Codacy Analysis CLI - name: Run Codacy Analysis CLI
uses: codacy/codacy-analysis-cli-action@1.1.0 uses: codacy/codacy-analysis-cli-action@v4
with: with:
# Check https://github.com/codacy/codacy-analysis-cli#project-token to get your project token from your Codacy repository # Check https://github.com/codacy/codacy-analysis-cli#project-token to get your project token from your Codacy repository
# You can also omit the token and run the tools that support default configurations # You can also omit the token and run the tools that support default configurations
project-token: ${{ secrets.CODACY_PROJECT_TOKEN }} project-token: ${{ secrets.CODACY_PROJECT_TOKEN }}
verbose: true # verbose: true
output: results.sarif # output: results.sarif
format: sarif # format: sarif
# Adjust severity of non-security issues # Adjust severity of non-security issues
gh-code-scanning-compat: true # gh-code-scanning-compat: true
# Force 0 exit code to allow SARIF file generation # Force 0 exit code to allow SARIF file generation
# This will handover control about PR rejection to the GitHub side # This will handover control about PR rejection to the GitHub side
max-allowed-issues: 2147483647 # max-allowed-issues: 2147483647
# Upload the SARIF file generated in the previous step # Upload the SARIF file generated in the previous step
- name: Upload SARIF results file # disabled due to: https://github.com/codacy/codacy-analysis-cli-action/issues/142
uses: github/codeql-action/upload-sarif@v1 #- name: Upload SARIF results file
with: # uses: github/codeql-action/upload-sarif@v4
sarif_file: results.sarif # with:
# sarif_file: results.sarif
+42
View File
@@ -0,0 +1,42 @@
name: ESLint Check
on:
push:
paths:
- 'js/**/*.js'
- 'js/package-lock.json'
- .github/workflows/eslint.yml
pull_request:
paths:
- 'js/**/*.js'
- 'js/package-lock.json'
- .github/workflows/eslint.yml
permissions:
contents: read
jobs:
eslint:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v5
- name: Set up Node.js
uses: actions/setup-node@v6
with:
node-version: '20'
- name: Install dependencies
run: |
if [ -f js/package.json ]; then
cd js && npm ci
fi
- name: Run ESLint
run: |
if [ -f js/package.json ]; then
cd js && npx eslint .
else
npx eslint js/
fi
+5 -2
View File
@@ -2,6 +2,8 @@ name: Tests
on: on:
push: push:
pull_request:
branches: [ master ]
workflow_dispatch: workflow_dispatch:
permissions: {} permissions: {}
@@ -19,13 +21,13 @@ jobs:
run: composer install --prefer-dist --no-dev run: composer install --prefer-dist --no-dev
PHPunit: PHPunit:
name: PHP ${{ matrix.php-versions }} unit tests on ${{ matrix.operating-system }} name: PHP ${{ matrix.php-versions }} unit tests
runs-on: ubuntu-latest runs-on: ubuntu-latest
# https://docs.github.com/en/actions/using-jobs/using-a-matrix-for-your-jobs#handling-failures # https://docs.github.com/en/actions/using-jobs/using-a-matrix-for-your-jobs#handling-failures
continue-on-error: "${{ matrix.experimental }}" continue-on-error: "${{ matrix.experimental }}"
strategy: strategy:
matrix: matrix:
php-versions: ['7.3', '7.4', '8.0', '8.1', '8.2', '8.3', '8.4'] php-versions: ['7.4', '8.0', '8.1', '8.2', '8.3', '8.4']
experimental: [false] experimental: [false]
# uncomment this to start testing on development release # uncomment this to start testing on development release
# include: # include:
@@ -78,6 +80,7 @@ jobs:
- name: Get composer cache directory - name: Get composer cache directory
id: composer-cache id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
# http://man7.org/linux/man-pages/man1/date.1.html # http://man7.org/linux/man-pages/man1/date.1.html
# https://github.com/actions/cache#creating-a-cache-key # https://github.com/actions/cache#creating-a-cache-key
- name: Get Date - name: Get Date
+36 -5
View File
@@ -1,13 +1,44 @@
# PrivateBin version history # PrivateBin version history
## 1.7.9 (2025-11-13) ## 2.0.3 (not yet released)
* CHANGED: Upgrading libraries to: base-x 5.0.1, bootstrap 5.3.8, DOMpurify 3.2.7, ip-lib 1.21.0 & kjua 0.10.0
* CHANGED: Refactored jQuery DOM element creation into plain JavaScript
* FIXED: Prevent arbitrary PHP file inclusion when enabling template switching * FIXED: Prevent arbitrary PHP file inclusion when enabling template switching
* FIXED: Malicious filename can be used for self-XSS / HTML injection locally for users * FIXED: Malicious filename can be used for self-XSS / HTML injection locally for users
* FIXED: Sanitize file name in attachment size hint
* FIXED: Unable to create a new paste from the cloned one when a JSON file attached (#1585) * FIXED: Unable to create a new paste from the cloned one when a JSON file attached (#1585)
## 2.0.2 (2025-10-28)
* CHANGED: Upgrading libraries to: DOMpurify 3.3.0
* CHANGED: Refactored jQuery DOM element creation into plain JavaScript
* FIXED: Sanitize file name in attachment size hint
* FIXED: PHP OPcache module is optional again (#1679)
* FIXED: bootstrap template password peek input group display
## 2.0.1 (2025-10-12)
* ADDED: Auto shorten URLs with config option `shortenbydefault` (#1627)
* ADDED: Added `shortenviashlink` endpoint with an `shlink` configuration section
* ADDED: Password peek (#1254)
* CHANGED: CSP recommendation around bootstrap5 template resolved in Firefox 131 (#1613)
* CHANGED: Upgrading libraries to: bootstrap 5.3.8, DOMpurify 3.2.7 & ip-lib 1.21.0
* FIXED: Allow pasting a password for decrypting a paste (#1620)
* FIXED: Allow copying the shortened link after using a URL shortener (#1624)
* FIXED: URL extraction fails when frame-ancestors is set in CSP (#1644)
* FIXED: traffic limiter not working when using Filesystem storage and PHP opcache * FIXED: traffic limiter not working when using Filesystem storage and PHP opcache
## 2.0.0 (2025-07-28)
* ADDED: Error logging in database and filesystem backend (#1554)
* ADDED: Statistics on v1 pastes in administration script and option to delete them
* CHANGED: Removed page template (#265)
* CHANGED: Removed support for ZeroBin & v1 pastes - since release 1.3 the v2 format is used (#551)
* CHANGED: Removed use of base64 & rawinflate libraries (#551)
* CHANGED: Removed support for `privatebin_data`, `privatebin_db` & `zerobin_db` model class configurations, must be replaced with `Filesystem` or `Database` in `cfg/conf.php`, if still present
* CHANGED: Removed unused columns in database schema of tables `paste` & `comment`
* CHANGED: Jdenticons are now used as the default icons
* CHANGED: Upgrading libraries to: base-x 5.0.1, bootstrap 5.3.7, jdenticon 2.0.0 & kjua 0.10.0
* CHANGED: Minimum required PHP version is 7.4, due to a change in the jdenticon library
* CHANGED: Set bootstrap5 template as default for PrivateBin (#1572)
* CHANGED: Switched from binary bytes to SI-units (#1565)
* CHANGED: Replaced the term "paste" with the more generic "document" (#397)
* FIXED: Name mismatches in attached files (#1584)
* FIXED: Unable to paste attachments from clipboard (#1589)
* FIXED: Configuration combinations test errors * FIXED: Configuration combinations test errors
## 1.7.8 (2025-06-30) ## 1.7.8 (2025-06-30)
@@ -16,7 +47,7 @@
* FIXED: Page template scripts loading order (#1579) * FIXED: Page template scripts loading order (#1579)
## 1.7.7 (2025-06-28) ## 1.7.7 (2025-06-28)
* ADDED: Switching templates using the web ui (#1501) * ADDED: Switching templates using the web UI (#1501)
* ADDED: Show file name and size on download page (#603) * ADDED: Show file name and size on download page (#603)
* CHANGED: Passing large data structures by reference to reduce memory consumption (#858) * CHANGED: Passing large data structures by reference to reduce memory consumption (#858)
* CHANGED: Removed use of ctype functions and polyfill library for ctype * CHANGED: Removed use of ctype functions and polyfill library for ctype
+1
View File
@@ -6,6 +6,7 @@
* rugk - security review, doc improvment, JS refactoring & various other stuff * rugk - security review, doc improvment, JS refactoring & various other stuff
* R4SAS - python client, compression, blob URI to support larger attachments * R4SAS - python client, compression, blob URI to support larger attachments
* Mikhail Romanov - UI improvements, theme switching, clipboard support, multi-file upload, bugfixes, code refactoring * Mikhail Romanov - UI improvements, theme switching, clipboard support, multi-file upload, bugfixes, code refactoring
* Karthik Kasturi - shlink proxy and url shortening bugfixes
## Past contributions ## Past contributions
+3 -3
View File
@@ -1,8 +1,8 @@
.PHONY: all coverage coverage-js coverage-php doc doc-js doc-php increment sign test test-js test-php help .PHONY: all coverage coverage-js coverage-php doc doc-js doc-php increment sign test test-js test-php help
CURRENT_VERSION = 1.7.9 CURRENT_VERSION = 2.0.3
VERSION ?= 2.0.0 VERSION ?= 2.0.3
VERSION_FILES = README.md SECURITY.md doc/Installation.md js/package*.json lib/Controller.php Makefile VERSION_FILES = README.md SECURITY.md doc/Installation.md js/package.json lib/Controller.php Makefile
REGEX_CURRENT_VERSION := $(shell echo $(CURRENT_VERSION) | sed "s/\./\\\./g") REGEX_CURRENT_VERSION := $(shell echo $(CURRENT_VERSION) | sed "s/\./\\\./g")
REGEX_VERSION := $(shell echo $(VERSION) | sed "s/\./\\\./g") REGEX_VERSION := $(shell echo $(VERSION) | sed "s/\./\\\./g")
+4 -6
View File
@@ -1,10 +1,10 @@
# [![PrivateBin](https://cdn.rawgit.com/PrivateBin/assets/master/images/preview/logoSmall.png)](https://privatebin.info/) # [![PrivateBin](https://cdn.rawgit.com/PrivateBin/assets/master/images/preview/logoSmall.png)](https://privatebin.info/)
*Current version: 1.7.9* *Current version: 2.0.3*
**PrivateBin** is a minimalist, open source online **PrivateBin** is a minimalist, open source online
[pastebin](https://en.wikipedia.org/wiki/Pastebin) [pastebin](https://en.wikipedia.org/wiki/Pastebin)
where the server has zero knowledge of pasted data. where the server has zero knowledge of stored data.
Data is encrypted and decrypted in the browser using 256bit AES in Data is encrypted and decrypted in the browser using 256bit AES in
[Galois Counter mode](https://en.wikipedia.org/wiki/Galois/Counter_Mode). [Galois Counter mode](https://en.wikipedia.org/wiki/Galois/Counter_Mode).
@@ -12,9 +12,7 @@ Data is encrypted and decrypted in the browser using 256bit AES in
This is a fork of ZeroBin, originally developed by This is a fork of ZeroBin, originally developed by
[Sébastien Sauvage](https://github.com/sebsauvage/ZeroBin). PrivateBin was [Sébastien Sauvage](https://github.com/sebsauvage/ZeroBin). PrivateBin was
refactored to allow easier and cleaner extensions and has many additional refactored to allow easier and cleaner extensions and has many additional
features. It is, however, still fully compatible to the original ZeroBin 0.19 features.
data storage scheme. Therefore, such installations can be upgraded to PrivateBin
without losing any data.
## What PrivateBin provides ## What PrivateBin provides
@@ -81,7 +79,7 @@ file](https://github.com/PrivateBin/PrivateBin/wiki/Configuration):
* File upload support, image, media and PDF preview (disabled by default, size * File upload support, image, media and PDF preview (disabled by default, size
limit adjustable) limit adjustable)
* Templates: By default there are bootstrap CSS, darkstrap and "classic ZeroBin" * Templates: By default there are bootstrap5, bootstrap CSS and darkstrap
to choose from and it is easy to adapt these to your own websites layout or to choose from and it is easy to adapt these to your own websites layout or
create your own. create your own.
+2 -2
View File
@@ -4,8 +4,8 @@
| Version | Supported | | Version | Supported |
| ------- | ------------------ | | ------- | ------------------ |
| 1.7.9 | :heavy_check_mark: | | 2.0.3 | :heavy_check_mark: |
| < 1.7.9 | :x: | | < 2.0.3 | :x: |
## Reporting a Vulnerability ## Reporting a Vulnerability
+91 -56
View File
@@ -52,7 +52,7 @@ class Administration
private $_store; private $_store;
/** /**
* deletes the requested paste ID, if a valid ID and it exists * deletes the requested document ID, if a valid ID and it exists
* *
* @access private * @access private
* @param string $pasteId * @param string $pasteId
@@ -60,34 +60,20 @@ class Administration
private function _delete($pasteId) private function _delete($pasteId)
{ {
if (!Paste::isValidId($pasteId)) { if (!Paste::isValidId($pasteId)) {
self::_error('given ID is not a valid paste ID (16 hexadecimal digits)', 5); self::_error('given ID is not a valid document ID (16 hexadecimal digits)', 5);
} }
if (!$this->_store->exists($pasteId)) { if (!$this->_store->exists($pasteId)) {
self::_error('given ID does not exist, has expired or was already deleted', 6); self::_error('given ID does not exist, has expired or was already deleted', 6);
} }
$this->_store->delete($pasteId); $this->_store->delete($pasteId);
if ($this->_store->exists($pasteId)) { if ($this->_store->exists($pasteId)) {
self::_error('paste ID exists after deletion, permission problem?', 7); self::_error('document ID exists after deletion, permission problem?', 7);
} }
exit("paste $pasteId successfully deleted" . PHP_EOL); exit("document $pasteId successfully deleted" . PHP_EOL);
} }
/** /**
* lists all stored paste IDs * deletes all stored documents (regardless of expiration)
*
* @access private
*/
private function _list_ids()
{
$ids = $this->_store->getAllPastes();
foreach ($ids as $pasteid) {
echo $pasteid, PHP_EOL;
}
exit;
}
/**
* deletes all stored pastes (regardless of expiration)
* *
* @access private * @access private
*/ */
@@ -95,10 +81,33 @@ class Administration
{ {
$ids = $this->_store->getAllPastes(); $ids = $this->_store->getAllPastes();
foreach ($ids as $pasteid) { foreach ($ids as $pasteid) {
echo "Deleting paste ID: $pasteid" . PHP_EOL; echo "Deleting document ID: $pasteid" . PHP_EOL;
$this->_store->delete($pasteid); $this->_store->delete($pasteid);
} }
exit("All pastes successfully deleted" . PHP_EOL); exit("All documents successfully deleted" . PHP_EOL);
}
/**
* deletes all unsupported v1 documents (regardless of expiration)
*
* @access private
*/
private function _delete_v1()
{
$ids = $this->_store->getAllPastes();
foreach ($ids as $pasteid) {
try {
$paste = $this->_store->read($pasteid);
} catch (Exception $e) {
echo "Error reading document {$pasteid}: ", $e->getMessage(), PHP_EOL;
}
if (array_key_exists('adata', $paste)) {
continue;
}
echo "Deleting v1 document ID: $pasteid" . PHP_EOL;
$this->_store->delete($pasteid);
}
exit("All unsupported legacy v1 documents successfully deleted" . PHP_EOL);
} }
/** /**
@@ -153,21 +162,37 @@ class Administration
{ {
echo <<<'EOT' echo <<<'EOT'
Usage: Usage:
administration [--delete <paste id> | --delete-all | --empty-dirs | --help | --list-ids | --purge | --statistics] administration [--delete <document id> | --delete-all | --delete-v1 |
--empty-dirs | --help | --list-ids | --purge | --statistics]
Options: Options:
-d, --delete deletes the requested paste ID -d, --delete deletes the requested document ID
--delete-all deletes all paste IDs --delete-all deletes all documents
--delete-v1 deletes all unsupported v1 documents
-e, --empty-dirs removes empty directories (only if Filesystem storage is -e, --empty-dirs removes empty directories (only if Filesystem storage is
configured) configured)
-h, --help displays this help message -h, --help displays this help message
-l, --list-ids lists all paste IDs -l, --list-ids lists all document IDs
-p, --purge purge all expired pastes -p, --purge purge all expired documents
-s, --statistics reads all stored pastes and comments and reports statistics -s, --statistics reads all stored documents and reports statistics
EOT, PHP_EOL; EOT, PHP_EOL;
exit($code); exit($code);
} }
/**
* lists all stored document IDs
*
* @access private
*/
private function _list_ids()
{
$ids = $this->_store->getAllPastes();
foreach ($ids as $pasteid) {
echo $pasteid, PHP_EOL;
}
exit;
}
/** /**
* return option for given short or long keyname, if it got set * return option for given short or long keyname, if it got set
* *
@@ -208,7 +233,7 @@ EOT, PHP_EOL;
self::_help(2); self::_help(2);
} }
$this->_opts = getopt('hd:epsl', array('help', 'delete:', 'empty-dirs', 'purge', 'statistics', 'list-ids', 'delete-all')); $this->_opts = getopt('hd:elps', array('help', 'delete:', 'delete-all', 'delete-v1', 'empty-dirs', 'list-ids', 'purge', 'statistics'));
if (!$this->_opts) { if (!$this->_opts) {
self::_error_echo('unsupported arguments given'); self::_error_echo('unsupported arguments given');
@@ -218,7 +243,7 @@ EOT, PHP_EOL;
} }
/** /**
* reads all stored pastes and comments and reports statistics * reads all stored documents and reports statistics
* *
* @access public * @access public
*/ */
@@ -229,6 +254,7 @@ EOT, PHP_EOL;
'damaged' => 0, 'damaged' => 0,
'discussion' => 0, 'discussion' => 0,
'expired' => 0, 'expired' => 0,
'legacy' => 0,
'md' => 0, 'md' => 0,
'percent' => 1, 'percent' => 1,
'plain' => 0, 'plain' => 0,
@@ -252,12 +278,13 @@ EOT, PHP_EOL;
try { try {
$paste = $this->_store->read($pasteid); $paste = $this->_store->read($pasteid);
} catch (Exception $e) { } catch (Exception $e) {
echo "Error reading paste {$pasteid}: ", $e->getMessage(), PHP_EOL; echo "Error reading document {$pasteid}: ", $e->getMessage(), PHP_EOL;
++$counters['damaged']; ++$counters['damaged'];
} }
++$counters['progress']; ++$counters['progress'];
if ( if (
array_key_exists('meta', $paste) &&
array_key_exists('expire_date', $paste['meta']) && array_key_exists('expire_date', $paste['meta']) &&
$paste['meta']['expire_date'] < $time $paste['meta']['expire_date'] < $time
) { ) {
@@ -265,28 +292,27 @@ EOT, PHP_EOL;
} }
if (array_key_exists('adata', $paste)) { if (array_key_exists('adata', $paste)) {
$format = $paste['adata'][1]; switch ($paste['adata'][Paste::ADATA_FORMATTER]) {
$discussion = $paste['adata'][2]; case 'plaintext':
$burn = $paste['adata'][3]; ++$counters['plain'];
break;
case 'syntaxhighlighting':
++$counters['syntax'];
break;
case 'markdown':
++$counters['md'];
break;
default:
++$counters['unknown'];
break;
}
$counters['discussion'] += (int) $paste['adata'][Paste::ADATA_OPEN_DISCUSSION];
$counters['burn'] += (int) $paste['adata'][Paste::ADATA_BURN_AFTER_READING];
} else { } else {
$format = array_key_exists('formatter', $paste['meta']) ? $paste['meta']['formatter'] : 'plaintext'; echo "Unsupported v1 paste ", $pasteid, PHP_EOL;
$discussion = array_key_exists('opendiscussion', $paste['meta']) ? $paste['meta']['opendiscussion'] : false; ++$counters['legacy'];
$burn = array_key_exists('burnafterreading', $paste['meta']) ? $paste['meta']['burnafterreading'] : false;
} }
if ($format === 'plaintext') {
++$counters['plain'];
} elseif ($format === 'syntaxhighlighting') {
++$counters['syntax'];
} elseif ($format === 'markdown') {
++$counters['md'];
} else {
++$counters['unknown'];
}
$counters['discussion'] += (int) $discussion;
$counters['burn'] += (int) $burn;
// display progress // display progress
if ($counters['progress'] % $dots === 0) { if ($counters['progress'] % $dots === 0) {
echo '.'; echo '.';
@@ -308,6 +334,9 @@ Plain Text:\t\t{$counters['plain']}
Source Code:\t\t{$counters['syntax']} Source Code:\t\t{$counters['syntax']}
Markdown:\t\t{$counters['md']} Markdown:\t\t{$counters['md']}
EOT, PHP_EOL; EOT, PHP_EOL;
if ($counters['legacy'] > 0) {
echo "Legacy v1:\t\t{$counters['legacy']}", PHP_EOL;
}
if ($counters['damaged'] > 0) { if ($counters['damaged'] > 0) {
echo "Damaged:\t\t{$counters['damaged']}", PHP_EOL; echo "Damaged:\t\t{$counters['damaged']}", PHP_EOL;
} }
@@ -340,24 +369,30 @@ EOT, PHP_EOL;
$class = 'PrivateBin\\Data\\' . $this->_conf->getKey('class', 'model'); $class = 'PrivateBin\\Data\\' . $this->_conf->getKey('class', 'model');
$this->_store = new $class($this->_conf->getSection('model_options')); $this->_store = new $class($this->_conf->getSection('model_options'));
if ($this->_option('l', 'list-ids') !== null) { if (($pasteId = $this->_option('d', 'delete')) !== null) {
$this->_list_ids(); $this->_delete($pasteId);
} }
if ($this->_option(null, 'delete-all') !== null) { if ($this->_option(null, 'delete-all') !== null) {
$this->_delete_all(); $this->_delete_all();
} }
if (($pasteId = $this->_option('d', 'delete')) !== null) {
$this->_delete($pasteId); if ($this->_option(null, 'delete-v1') !== null) {
$this->_delete_v1();
}
if ($this->_option('l', 'list-ids') !== null) {
$this->_list_ids();
} }
if ($this->_option('p', 'purge') !== null) { if ($this->_option('p', 'purge') !== null) {
try { try {
$this->_store->purge(PHP_INT_MAX); $this->_store->purge(PHP_INT_MAX);
} catch (Exception $e) { } catch (Exception $e) {
echo 'Error purging pastes: ', $e->getMessage(), PHP_EOL, echo 'Error purging documents: ', $e->getMessage(), PHP_EOL,
'Run the statistics to find damaged paste IDs and either delete them or restore them from backup.', PHP_EOL; 'Run the statistics to find damaged document IDs and either delete them or restore them from backup.', PHP_EOL;
} }
exit('purging of expired pastes concluded' . PHP_EOL); exit('purging of expired documents concluded' . PHP_EOL);
} }
if ($this->_option('s', 'statistics') !== null) { if ($this->_option('s', 'statistics') !== null) {
+6 -6
View File
@@ -164,14 +164,14 @@ new ConfigurationTestGenerator(array(
), ),
'main/template' => array( 'main/template' => array(
array( array(
'setting' => 'page', 'setting' => 'bootstrap5',
'tests' => array( 'tests' => array(
array( array(
'type' => 'MatchesRegularExpression', 'type' => 'MatchesRegularExpression',
'args' => array( 'args' => array(
'#<link[^>]+type="text/css"[^>]+rel="stylesheet"[^>]+href="css/privatebin\.css\\?\d[\d\.]+\d+"[^>]*/>#', '#<link[^>]+type="text/css"[^>]+rel="stylesheet"[^>]+href="css/bootstrap5/privatebin\.css\\?\d[\d\.]+\d+"[^>]*/>#',
'$content', '$content',
'outputs "page" stylesheet correctly', 'outputs "bootstrap5" stylesheet correctly',
), ),
), array( ), array(
'type' => 'DoesNotMatchRegularExpression', 'type' => 'DoesNotMatchRegularExpression',
@@ -189,9 +189,9 @@ new ConfigurationTestGenerator(array(
array( array(
'type' => 'DoesNotMatchRegularExpression', 'type' => 'DoesNotMatchRegularExpression',
'args' => array( 'args' => array(
'#<link[^>]+type="text/css"[^>]+rel="stylesheet"[^>]+href="css/privatebin\.css\\?\d[\d\.]+\d+"[^>]*/>#', '#<link[^>]+type="text/css"[^>]+rel="stylesheet"[^>]+href="css/bootstrap5/privatebin\.css\\?\d[\d\.]+\d+"[^>]*/>#',
'$content', '$content',
'removes "page" stylesheet correctly', 'removes "bootstrap5" stylesheet correctly',
), ),
), array( ), array(
'type' => 'MatchesRegularExpression', 'type' => 'MatchesRegularExpression',
@@ -575,7 +575,7 @@ EOT;
$code .= <<<'EOT' $code .= <<<'EOT'
$this->assertMatchesRegularExpression( $this->assertMatchesRegularExpression(
'#<div[^>]*id="status"[^>]*>.*Paste was properly deleted[^<]*(<button|<\/div>)#s', '#<div[^>]*id="status"[^>]*>.*Document was properly deleted[^<]*(<button|<\/div>)#s',
$content, $content,
'outputs deleted status correctly' 'outputs deleted status correctly'
); );
+18 -18
View File
@@ -66,7 +66,7 @@ $dststore = $dstmodel->getStore();
$ids = $srcstore->getAllPastes(); $ids = $srcstore->getAllPastes();
foreach ($ids as $id) { foreach ($ids as $id) {
debug("Reading paste id " . $id); debug("Reading document ID " . $id);
$paste = $srcstore->read($id); $paste = $srcstore->read($id);
$comments = $srcstore->readComments($id); $comments = $srcstore->readComments($id);
@@ -91,10 +91,10 @@ debug("Done.");
function deletePaste($dryrun, $pasteid, $srcstore) function deletePaste($dryrun, $pasteid, $srcstore)
{ {
if (!$dryrun) { if (!$dryrun) {
debug("Deleting paste id " . $pasteid); debug("Deleting document ID " . $pasteid);
$srcstore->delete($pasteid); $srcstore->delete($pasteid);
} else { } else {
debug("Would delete paste id " . $pasteid); debug("Would delete document ID " . $pasteid);
} }
} }
@@ -105,28 +105,28 @@ function saveComment ($force_overwrite, $dryrun, $pasteid, $comment, $dststore)
if (!$dststore->existsComment($pasteid, $parentid, $commentid)) { if (!$dststore->existsComment($pasteid, $parentid, $commentid)) {
if (!$dryrun) { if (!$dryrun) {
debug("Saving paste id " . $pasteid . ", parent id " . debug("Saving document ID " . $pasteid . ", parent id " .
$parentid . ", comment id " . $commentid); $parentid . ", comment id " . $commentid);
$dststore->createComment($pasteid, $parentid, $commentid, $comment); $dststore->createComment($pasteid, $parentid, $commentid, $comment);
} else { } else {
debug("Would save paste id " . $pasteid . ", parent id " . debug("Would save document ID " . $pasteid . ", parent id " .
$parentid . ", comment id " . $commentid); $parentid . ", comment id " . $commentid);
} }
} else if ($force_overwrite) { } else if ($force_overwrite) {
if (!$dryrun) { if (!$dryrun) {
debug("Overwriting paste id " . $pasteid . ", parent id " . debug("Overwriting document ID " . $pasteid . ", parent id " .
$parentid . ", comment id " . $commentid); $parentid . ", comment id " . $commentid);
$dststore->createComment($pasteid, $parentid, $commentid, $comment); $dststore->createComment($pasteid, $parentid, $commentid, $comment);
} else { } else {
debug("Would overwrite paste id " . $pasteid . ", parent id " . debug("Would overwrite document ID " . $pasteid . ", parent id " .
$parentid . ", comment id " . $commentid); $parentid . ", comment id " . $commentid);
} }
} else { } else {
if (!$dryrun) { if (!$dryrun) {
dieerr("Not overwriting paste id " . $pasteid . ", parent id " . dieerr("Not overwriting document ID " . $pasteid . ", parent id " .
$parentid . ", comment id " . $commentid); $parentid . ", comment id " . $commentid);
} else { } else {
dieerr("Would not overwrite paste id " . $pasteid . ", parent id " . dieerr("Would not overwrite document ID " . $pasteid . ", parent id " .
$parentid . ", comment id " . $commentid); $parentid . ", comment id " . $commentid);
} }
} }
@@ -136,23 +136,23 @@ function savePaste ($force_overwrite, $dryrun, $pasteid, $paste, $dststore)
{ {
if (!$dststore->exists($pasteid)) { if (!$dststore->exists($pasteid)) {
if (!$dryrun) { if (!$dryrun) {
debug("Saving paste id " . $pasteid); debug("Saving document ID " . $pasteid);
$dststore->create($pasteid, $paste); $dststore->create($pasteid, $paste);
} else { } else {
debug("Would save paste id " . $pasteid); debug("Would save document ID " . $pasteid);
} }
} else if ($force_overwrite) { } else if ($force_overwrite) {
if (!$dryrun) { if (!$dryrun) {
debug("Overwriting paste id " . $pasteid); debug("Overwriting document ID " . $pasteid);
$dststore->create($pasteid, $paste); $dststore->create($pasteid, $paste);
} else { } else {
debug("Would overwrite paste id " . $pasteid); debug("Would overwrite document ID " . $pasteid);
} }
} else { } else {
if (!$dryrun) { if (!$dryrun) {
dieerr("Not overwriting paste id " . $pasteid); dieerr("Not overwriting document ID " . $pasteid);
} else { } else {
dieerr("Would not overwrite paste id " . $pasteid); dieerr("Would not overwrite document ID " . $pasteid);
} }
} }
} }
@@ -191,10 +191,10 @@ Usage:
migrate [-h|--help] migrate [-h|--help]
Options: Options:
--delete-after delete data from source after all pastes and comments have --delete-after delete data from source after all documents have successfully
been copied to the destination
--delete-during delete data from source after the current document have
successfully been copied to the destination successfully been copied to the destination
--delete-during delete data from source after the current paste and its
comments have successfully been copied to the destination
-f forcefully overwrite data which already exists at the -f forcefully overwrite data which already exists at the
destination destination
-h, --help displays this help message -h, --help displays this help message
+40 -35
View File
@@ -39,31 +39,29 @@ defaultformatter = "plaintext"
; (optional) set a syntax highlighting theme, as found in css/prettify/ ; (optional) set a syntax highlighting theme, as found in css/prettify/
; syntaxhighlightingtheme = "sons-of-obsidian" ; syntaxhighlightingtheme = "sons-of-obsidian"
; size limit per paste or comment in bytes, defaults to 10 Mebibytes ; size limit per document or comment in bytes, defaults to 10 Megabytes
sizelimit = 10485760 sizelimit = 10000000
; by default PrivateBin use "bootstrap" template (tpl/bootstrap.php). ; by default PrivateBin use "bootstrap5" template (tpl/bootstrap5.php).
; Optionally you can enable the template selection menu, which uses ; Optionally you can enable the template selection menu, which uses
; a session cookie to store the choice until the browser is closed. ; a session cookie to store the choice until the browser is closed.
templateselection = false templateselection = false
; List of available for selection templates when "templateselection" option is enabled ; List of available for selection templates when "templateselection" option is enabled
availabletemplates[] = "bootstrap5"
availabletemplates[] = "bootstrap" availabletemplates[] = "bootstrap"
availabletemplates[] = "bootstrap-page" availabletemplates[] = "bootstrap-page"
availabletemplates[] = "bootstrap-dark" availabletemplates[] = "bootstrap-dark"
availabletemplates[] = "bootstrap-dark-page" availabletemplates[] = "bootstrap-dark-page"
availabletemplates[] = "bootstrap-compact" availabletemplates[] = "bootstrap-compact"
availabletemplates[] = "bootstrap-compact-page" availabletemplates[] = "bootstrap-compact-page"
availabletemplates[] = "bootstrap5"
availabletemplates[] = "page"
; set the template your installs defaults to, defaults to "bootstrap" (tpl/bootstrap.php), also ; set the template your installs defaults to, defaults to "bootstrap5" (tpl/bootstrap5.php), also
; available are "page" (tpl/page.php), the classic ZeroBin style and several ; bootstrap template (tpl/bootstrap.php) and it's variants: "bootstrap-dark", "bootstrap-compact", "bootstrap-page",
; bootstrap variants: "bootstrap-dark", "bootstrap-compact", "bootstrap-page",
; which can be combined with "-dark" and "-compact" for "bootstrap-dark-page", ; which can be combined with "-dark" and "-compact" for "bootstrap-dark-page",
; "bootstrap-compact-page" and finally "bootstrap5" (tpl/bootstrap5.php) - previews at: ; "bootstrap-compact-page" - previews at:
; https://privatebin.info/screenshots.html ; https://privatebin.info/screenshots.html
; template = "bootstrap" ; template = "bootstrap5"
; (optional) info text to display ; (optional) info text to display
; use single, instead of double quotes for HTML attributes ; use single, instead of double quotes for HTML attributes
@@ -81,17 +79,22 @@ languageselection = false
; if this is set and language selection is disabled, this will be the only language ; if this is set and language selection is disabled, this will be the only language
; languagedefault = "en" ; languagedefault = "en"
; (optional) URL shortener address to offer after a new paste is created. ; (optional) URL shortener address to offer after a new document is created.
; It is suggested to only use this with self-hosted shorteners as this will leak ; It is suggested to only use this with self-hosted shorteners as this will leak
; the pastes encryption key. ; the documents encryption key.
; urlshortener = "https://shortener.example.com/api?link=" ; urlshortener = "https://shortener.example.com/api?link="
; (optional) Let users create a QR code for sharing the paste URL with one click. ; (optional) Whether to shorten the URL by default when a new document is created.
; It works both when a new paste is created and when you view a paste. ; If set to true, the "Shorten URL" functionality will be automatically called.
; This only works if the "urlshortener" option is set.
; shortenbydefault = false
; (optional) Let users create a QR code for sharing the document URL with one click.
; It works both when a new document is created and when you view a document.
; qrcode = true ; qrcode = true
; (optional) Let users send an email sharing the paste URL with one click. ; (optional) Let users send an email sharing the document URL with one click.
; It works both when a new paste is created and when you view a paste. ; It works both when a new document is created and when you view a document.
; email = true ; email = true
; (optional) IP based icons are a weak mechanism to detect if a comment was from ; (optional) IP based icons are a weak mechanism to detect if a comment was from
@@ -99,7 +102,7 @@ languageselection = false
; used to get the IP of a comment poster if the server salt is leaked and a ; used to get the IP of a comment poster if the server salt is leaked and a
; SHA512 HMAC rainbow table is generated for all (relevant) IPs. ; SHA512 HMAC rainbow table is generated for all (relevant) IPs.
; Can be set to one these values: ; Can be set to one these values:
; "none" / "identicon" (default) / "jdenticon" / "vizhash". ; "none" / "identicon" / "jdenticon" (default) / "vizhash".
; icon = "none" ; icon = "none"
; Content Security Policy headers allow a website to restrict what sources are ; Content Security Policy headers allow a website to restrict what sources are
@@ -108,12 +111,8 @@ languageselection = false
; scripts or run your site behind certain DDoS-protection services. ; scripts or run your site behind certain DDoS-protection services.
; Check the documentation at https://content-security-policy.com/ ; Check the documentation at https://content-security-policy.com/
; Notes: ; Notes:
; - If you use any bootstrap theme, you can remove the allow-popups from the
; sandbox restrictions.
; - If you use the bootstrap5 theme, you must change default-src to 'self' to
; enable display of the svg icons
; - By default this disallows to load images from third-party servers, e.g. when ; - By default this disallows to load images from third-party servers, e.g. when
; they are embedded in pastes. If you wish to allow that, you can adjust the ; they are embedded in documents. If you wish to allow that, you can adjust the
; policy here. See https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-it-load-embedded-images ; policy here. See https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-it-load-embedded-images
; for details. ; for details.
; - The 'wasm-unsafe-eval' is used to enable webassembly support (used for zlib ; - The 'wasm-unsafe-eval' is used to enable webassembly support (used for zlib
@@ -126,12 +125,7 @@ languageselection = false
; cspheader = "default-src 'none'; base-uri 'self'; form-action 'none'; manifest-src 'self'; connect-src * blob:; script-src 'self' 'wasm-unsafe-eval'; style-src 'self' 'unsafe-inline'; font-src 'self'; frame-ancestors 'none'; frame-src blob:; img-src 'self' data: blob:; media-src blob:; object-src blob:" ; cspheader = "default-src 'none'; base-uri 'self'; form-action 'none'; manifest-src 'self'; connect-src * blob:; script-src 'self' 'wasm-unsafe-eval'; style-src 'self' 'unsafe-inline'; font-src 'self'; frame-ancestors 'none'; frame-src blob:; img-src 'self' data: blob:; media-src blob:; object-src blob:"
; ;
; The recommended and default used CSP is: ; The recommended and default used CSP is:
; cspheader = "default-src 'none'; base-uri 'self'; form-action 'none'; manifest-src 'self'; connect-src * blob:; script-src 'self' 'wasm-unsafe-eval'; style-src 'self'; font-src 'self'; frame-ancestors 'none'; frame-src blob:; img-src 'self' data: blob:; media-src blob:; object-src blob:; sandbox allow-same-origin allow-scripts allow-forms allow-popups allow-modals allow-downloads" ; cspheader = "default-src 'none'; base-uri 'self'; form-action 'none'; manifest-src 'self'; connect-src * blob:; script-src 'self' 'wasm-unsafe-eval'; style-src 'self'; font-src 'self'; frame-ancestors 'none'; frame-src blob:; img-src 'self' data: blob:; media-src blob:; object-src blob:; sandbox allow-same-origin allow-scripts allow-forms allow-modals allow-downloads"
; stay compatible with PrivateBin Alpha 0.19, less secure
; if enabled will use base64.js version 1.7 instead of 2.1.9 and sha1 instead of
; sha256 in HMAC for the deletion token
; zerobincompatibility = false
; Enable or disable the warning message when the site is served over an insecure ; Enable or disable the warning message when the site is served over an insecure
; connection (insecure HTTP instead of HTTPS), defaults to true. ; connection (insecure HTTP instead of HTTPS), defaults to true.
@@ -140,7 +134,7 @@ languageselection = false
; See https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-it-show-me-an-error-about-an-insecure-connection for more information. ; See https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-it-show-me-an-error-about-an-insecure-connection for more information.
; httpwarning = true ; httpwarning = true
; Pick compression algorithm or disable it. Only applies to pastes/comments ; Pick compression algorithm or disable it. Only applies to documents & comments
; created after changing the setting. ; created after changing the setting.
; Can be set to one these values: "none" / "zlib" (default). ; Can be set to one these values: "none" / "zlib" (default).
; compression = "zlib" ; compression = "zlib"
@@ -181,9 +175,9 @@ limit = 10
; exempted = "1.2.3.4,10.10.10/24" ; exempted = "1.2.3.4,10.10.10/24"
; (optional) If you want only some source IP addresses (v4 or v6) or subnets ; (optional) If you want only some source IP addresses (v4 or v6) or subnets
; (CIDR) to be allowed to create pastes, set these here. Invalid IPs will be ; (CIDR) to be allowed to create documents, set these here. Invalid IPs will be
; ignored. If multiple values are to be exempted, the list needs to be comma ; ignored. If multiple values are to be exempted, the list needs to be comma
; separated. Leave unset to allow anyone to create pastes. ; separated. Leave unset to allow anyone to create documents.
; creators = "1.2.3.4,10.10.10/24" ; creators = "1.2.3.4,10.10.10/24"
; (optional) if your website runs behind a reverse proxy or load balancer, ; (optional) if your website runs behind a reverse proxy or load balancer,
@@ -191,12 +185,12 @@ limit = 10
; header = "X_FORWARDED_FOR" ; header = "X_FORWARDED_FOR"
[purge] [purge]
; minimum time limit between two purgings of expired pastes, it is only ; minimum time limit between two purgings of expired documents, it is only
; triggered when pastes are created ; checked when documents get created
; Set this to 0 to run a purge every time a paste is created. ; Set this to 0 to run a purge every time a document is created.
limit = 300 limit = 300
; maximum amount of expired pastes to delete in one purge ; maximum amount of expired documents to delete in one purge
; Set this to 0 to disable purging. Set it higher, if you are running a large ; Set this to 0 to disable purging. Set it higher, if you are running a large
; site ; site
batchsize = 10 batchsize = 10
@@ -280,6 +274,17 @@ dir = PATH "data"
;version = "latest" ;version = "latest"
;bucket = "my-bucket" ;bucket = "my-bucket"
;[shlink]
; - Shlink requires you to make a post call with a generated API key.
; use this section to setup the API key and URL. In order to use this section,
; "urlshortener" needs to point to the base URL of your PrivateBin
; instance with "?shortenviashlink&link=" appended. For example:
; urlshortener = "${basepath}?shortenviashlink&link="
; This URL will in turn call Shlink on the server side, using the URL from
; "apiurl" and the API Key from the "apikey" parameters below.
; apiurl = "https://shlink.example.com/rest/v3/short-urls"
; apikey = "your_api_key"
;[yourls] ;[yourls]
; When using YOURLS as a "urlshortener" config item: ; When using YOURLS as a "urlshortener" config item:
; - By default, "urlshortener" will point to the YOURLS API URL, with or without ; - By default, "urlshortener" will point to the YOURLS API URL, with or without
+4 -4
View File
@@ -1,6 +1,6 @@
{ {
"name" : "privatebin/privatebin", "name" : "privatebin/privatebin",
"description" : "PrivateBin is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted in the browser using 256 bit AES in Galois Counter mode (GCM).", "description" : "PrivateBin is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted in the browser using 256 bit AES in Galois Counter mode (GCM).",
"type" : "project", "type" : "project",
"keywords" : [ "keywords" : [
"private", "private",
@@ -24,8 +24,8 @@
"docs" : "https://privatebin.info/codedoc/" "docs" : "https://privatebin.info/codedoc/"
}, },
"require" : { "require" : {
"php": "^7.3 || ^8.0", "php": "^7.4 || ^8.0",
"jdenticon/jdenticon": "1.0.2", "jdenticon/jdenticon": "2.0.0",
"mlocati/ip-lib": "1.21.0", "mlocati/ip-lib": "1.21.0",
"symfony/polyfill-php80": "1.31.0", "symfony/polyfill-php80": "1.31.0",
"yzalis/identicon": "2.0.0" "yzalis/identicon": "2.0.0"
@@ -48,7 +48,7 @@
"preferred-install": "dist", "preferred-install": "dist",
"sort-packages": true, "sort-packages": true,
"platform": { "platform": {
"php": "7.3" "php": "7.4"
} }
} }
} }
Generated
+22 -20
View File
@@ -4,27 +4,27 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "a6501ecd3d80fece24f1c78e49df7217", "content-hash": "f008f704483472b237031d4fa389cb70",
"packages": [ "packages": [
{ {
"name": "jdenticon/jdenticon", "name": "jdenticon/jdenticon",
"version": "1.0.2", "version": "2.0.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/dmester/jdenticon-php.git", "url": "https://github.com/dmester/jdenticon-php.git",
"reference": "cabb7a44c413c318392a341c5d3ca30fcdd57a6f" "reference": "fb39a98a0a54982a130b7e7b06305d4fd8c9717e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/dmester/jdenticon-php/zipball/cabb7a44c413c318392a341c5d3ca30fcdd57a6f", "url": "https://api.github.com/repos/dmester/jdenticon-php/zipball/fb39a98a0a54982a130b7e7b06305d4fd8c9717e",
"reference": "cabb7a44c413c318392a341c5d3ca30fcdd57a6f", "reference": "fb39a98a0a54982a130b7e7b06305d4fd8c9717e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=5.3.0" "php": ">=7.4.0"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^5.7" "phpunit/phpunit": "^9"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -53,7 +53,7 @@
"issues": "https://github.com/dmester/jdenticon-php/issues", "issues": "https://github.com/dmester/jdenticon-php/issues",
"source": "https://github.com/dmester/jdenticon-php" "source": "https://github.com/dmester/jdenticon-php"
}, },
"time": "2022-10-30T17:15:02+00:00" "time": "2025-07-14T18:30:29+00:00"
}, },
{ {
"name": "mlocati/ip-lib", "name": "mlocati/ip-lib",
@@ -397,25 +397,27 @@
}, },
{ {
"name": "nikic/php-parser", "name": "nikic/php-parser",
"version": "v4.19.4", "version": "v5.6.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/nikic/PHP-Parser.git", "url": "https://github.com/nikic/PHP-Parser.git",
"reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2" "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/715f4d25e225bc47b293a8b997fe6ce99bf987d2", "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2",
"reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2", "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-ctype": "*",
"ext-json": "*",
"ext-tokenizer": "*", "ext-tokenizer": "*",
"php": ">=7.1" "php": ">=7.4"
}, },
"require-dev": { "require-dev": {
"ircmaxell/php-yacc": "^0.0.7", "ircmaxell/php-yacc": "^0.0.7",
"phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" "phpunit/phpunit": "^9.0"
}, },
"bin": [ "bin": [
"bin/php-parse" "bin/php-parse"
@@ -423,7 +425,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "4.9-dev" "dev-master": "5.x-dev"
} }
}, },
"autoload": { "autoload": {
@@ -447,9 +449,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/nikic/PHP-Parser/issues", "issues": "https://github.com/nikic/PHP-Parser/issues",
"source": "https://github.com/nikic/PHP-Parser/tree/v4.19.4" "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.1"
}, },
"time": "2024-09-29T15:01:53+00:00" "time": "2025-08-13T20:13:15+00:00"
}, },
{ {
"name": "phar-io/manifest", "name": "phar-io/manifest",
@@ -2067,11 +2069,11 @@
"prefer-stable": false, "prefer-stable": false,
"prefer-lowest": false, "prefer-lowest": false,
"platform": { "platform": {
"php": "^7.3 || ^8.0" "php": "^7.4 || ^8.0"
}, },
"platform-dev": [], "platform-dev": [],
"platform-overrides": { "platform-overrides": {
"php": "7.3" "php": "7.4"
}, },
"plugin-api-version": "2.6.0" "plugin-api-version": "2.3.0"
} }
-460
View File
@@ -1,460 +0,0 @@
/**
* PrivateBin
*
* Cascading style sheets for page template.
*
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
*/
@import url("common.css");
/* CSS Reset from YUI 3.4.1 (build 4118) - Copyright 2011 Yahoo! Inc. All rights reserved.
Licensed under the BSD License. - http://yuilibrary.com/license/ */
html{color:#000;background:#fff}body,div,dl,dt,dd,ul,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal}ol,ul{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}q:before,q:after{content:''}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:text-top}sub{vertical-align:text-bottom}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit}input,textarea,select{font-size:100%;}legend{color:#000}
html {
background-color: #455463;
color: #fff;
min-height: 100%;
background-image: linear-gradient(bottom, #0f1823 0, #455463 100%);
background-image: -o-linear-gradient(bottom, #0f1823 0, #455463 100%);
background-image: -moz-linear-gradient(bottom, #0f1823 0, #455463 100%);
background-image: -webkit-linear-gradient(bottom, #0f1823 0, #455463 100%);
background-image: -ms-linear-gradient(bottom, #0f1823 0, #455463 100%);
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #0f1823), color-stop(1, #455463));
}
body {
font-family: Helvetica, Arial, sans-serif;
font-size: 0.9em;
margin-bottom: 15px;
padding-left: 60px;
padding-right: 60px;
}
a { color: #0f388f; cursor:pointer; }
h1.title {
font-size: 3.5em;
font-weight: bold;
color: #000;
position: relative;
display: inline;
cursor: pointer;
}
h1.title:before {
content: attr(title);
position: absolute;
color: rgba(255,255,255,0.15);
top: 1px;
left: 1px;
cursor: pointer;
}
h2.title {
color: #000;
font-size: 1em;
display: inline;
font-style: italic;
font-weight: bold;
position: relative;
bottom: 8px;
}
h3.title {
color: #94a3b4;
font-size: 0.7em;
display: inline;
margin-top: 10px;
position: relative;
bottom: 8px;
}
#aboutbox {
color: #94a3b4;
padding: 4px 8px 4px 16px;
position: relative;
top: 10px;
border-left: 2px solid #94a3b4;
float: right;
width: 60%;
}
#aboutbox a { color: #94a3b4; }
#message, #cleartext, #prettymessage, #attachment, .replymessage {
position: relative;
clear: both;
color: #000;
background-color: #fff;
font-size: 9pt;
border: 1px solid #28343F;
box-sizing: border-box;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
-o-box-sizing: border-box;
width: 100%;
}
#message, .replymessage {
padding: 5px;
white-space: pre-wrap;
font-family: Consolas, "Lucida Console", "DejaVu Sans Mono", Monaco, monospace;
resize: vertical;
}
#status {
clear: both;
padding: 5px 10px;
}
#pasteresult {
background-color: #1F2833;
color: #fff;
padding: 4px 12px;
clear: both;
-moz-box-shadow: inset 0 2px 2px #000;
-webkit-box-shadow: inset 0 2px 2px #000;
box-shadow: inset 0 2px 2px #000;
}
#pasteresult a { color: #fff; }
#pasteresult button { margin-left: 11px; }
#message, #plaintext, #prettymessage, #toolbar, #status { margin-bottom: 5px; }
#copyhint { color: #666; font-size: 0.85em }
button, .button {
color: #fff;
background-color: #323b47;
background-repeat: no-repeat;
background-position: center left;
padding: 4px 8px;
font-size: 1em;
margin-right: 5px;
display: inline-block;
background-image: linear-gradient(bottom, #323b47 0, #51606e 100%);
background-image: -o-linear-gradient(bottom, #323b47 0, #51606e 100%);
background-image: -moz-linear-gradient(bottom, #323b47 0, #51606e 100%);
background-image: -webkit-linear-gradient(bottom, #323b47 0, #51606e 100%);
background-image: -ms-linear-gradient(bottom, #323b47 0, #51606e 100%);
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #323b47), color-stop(1, #51606e));
border: 1px solid #28343F;
-moz-box-shadow: inset 0 1px 2px #647384;
-webkit-box-shadow: inset 0 1px 2px #647384;
box-shadow: inset 0 1px 2px #647384;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
-moz-background-clip: padding;
-webkit-background-clip: padding-box;
background-clip: padding-box;
}
button:hover {
background-image: linear-gradient(bottom, #424b57 0%, #61707e 100%);
background-image: -o-linear-gradient(bottom, #424b57 0%, #61707e 100%);
background-image: -moz-linear-gradient(bottom, #424b57 0%, #61707e 100%);
background-image: -webkit-linear-gradient(bottom, #424b57 0%, #61707e 100%);
background-image: -ms-linear-gradient(bottom, #424b57 0%, #61707e 100%);
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #424b57), color-stop(1, #61707e));
}
button:active {
background-image: linear-gradient(bottom, #51606e 0, #323b47 100%);
background-image: -o-linear-gradient(bottom, #51606e 0, #323b47 100%);
background-image: -moz-linear-gradient(bottom, #51606e 0, #323b47 100%);
background-image: -webkit-linear-gradient(bottom, #51606e 0, #323b47 100%);
background-image: -ms-linear-gradient(bottom, #51606e 0, #323b47 100%);
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #51606e), color-stop(1, #323b47));
position:relative;
top:1px;
}
button:disabled, .buttondisabled {
background: #ccc;
color: #888;
top: 0;
}
button img {
margin-right: 8px;
position: relative;
top: 2px;
}
.button {
background-color: #414d5a;
padding: 6px 8px;
margin: 0 5px 0 0;
position: relative;
bottom: 1px; /* WTF ? Why is this shifted by 1 pixel ? */
}
.button select {
color: #eee;
background: transparent;
border: none;
}
.button select option {
color:#eee;
background: #414d5a;
}
#rawtextbutton img {
padding: 1px 0 1px 0;
}
#downloadtextbutton img {
padding: 1px 0 1px 0;
}
#remainingtime, #password {
color: #94a3b4;
display: inline;
font-size: 0.85em;
}
#newbutton {
float: right;
margin-left: 0;
margin-right: 0;
margin-bottom: 5px;
display: inline;
}
input {
color: #777;
font-size: 1em;
padding: 6px;
border: 1px solid #28343f;
}
.blink {
text-decoration: blink;
font-size: 0.8em;
color: #a4b3c4;
}
.foryoureyesonly {
color: #ff0 !important;
font-size: 1em !important;
font-weight: bold !important;
}
#attachmentPreview, .nonworking {
background-color: #fff;
color: #000;
width: 100%;
text-align: center;
font-weight: bold;
font-size: 10pt;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
padding: 5px 0;
}
.hidden { display: none !important; }
#ienotice {
background-color: #7e98af;
color: #000;
font-size: 0.85em;
padding: 3px 5px;
text-align: center;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
display: none;
}
#ienotice a { color: #000; }
#oldnotice, #httpnotice { display: none; }
#errormessage, .errorMessage {
background-color: #f77 !important;
color:#ff0;
}
.small {
font-size: 80%;
}
/* --- discussion related CSS ------- */
#discussion { /* Discussion container */
margin-top: 20px;
width: 100%;
margin-left: -30px;
min-width: 200px;
}
h4.title {
font-size: 1.2em;
color: #94a3b4;
font-style: italic;
font-weight: bold;
position: relative;
margin-left: 30px;
}
.comment /* One single reply */
{
background-color: #ceced6;
color: #000;
white-space: pre-wrap;
font-family: Consolas,"Lucida Console","DejaVu Sans Mono",Monaco,monospace;
font-size: 9pt;
border-left: 1px solid #859AAE;
border-top: 1px solid #859AAE;
padding: 5px 0px 5px 5px;
margin-left: 30px;
-moz-box-shadow: -3px -3px 5px rgba(0,0,0,0.15);
-webkit-box-shadow: -3px -3px 5px rgba(0,0,0,0.15);
box-shadow: -3px -3px 5px rgba(0,0,0,0.15);
min-width: 200px;
overflow: auto;
}
.reply { margin: 5px 0 0 30px; }
#replystatus {
display: inline;
padding: 1px 7px;
font-family: Arial, Helvetica, sans-serif;
}
.comment button {
color: #446;
background-color: #aab;
background-repeat: no-repeat;
background-position: center left;
padding: 0 2px;
font-size: 0.73em;
margin: 3px 5px 3px 0;
display: inline;
background-image: linear-gradient(bottom, #aab 0, #ccc 100%);
background-image: -o-linear-gradient(bottom, #aab 0, #ccc 100%);
background-image: -moz-linear-gradient(bottom, #aab 0, #ccc 100%);
background-image: -webkit-linear-gradient(bottom, #aab 0, #ccc 100%);
background-image: -ms-linear-gradient(bottom, #aab 0, #ccc 100%);
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #aab), color-stop(1, #ccc));
border: 1px solid #ccd;
-moz-box-shadow: inset 0 1px 2px #ddd;
-webkit-box-shadow: inset 0 1px 2px #fff;
box-shadow: inset 0 1px 2px #eee;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
-moz-background-clip: padding;
-webkit-background-clip: padding-box;
background-clip: padding-box;
}
.comment button:hover {
background-image: linear-gradient(bottom, #ccd 0, #fff 100%);
background-image: -o-linear-gradient(bottom, #ccd 0, #fff 100%);
background-image: -moz-linear-gradient(bottom, #ccd 0, #fff 100%);
background-image: -webkit-linear-gradient(bottom, #ccd 0, #fff 100%);
background-image: -ms-linear-gradient(bottom, #ccd 0, #fff 100%);
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccd), color-stop(1, #fff));
}
.comment button:active {
background-image: linear-gradient(bottom, #fff 0, #889 100%);
background-image: -o-linear-gradient(bottom, #fff 0, #889 100%);
background-image: -moz-linear-gradient(bottom, #fff 0, #889 100%);
background-image: -webkit-linear-gradient(bottom, #fff 0, #889 100%);
background-image: -ms-linear-gradient(bottom, #fff 0, #889 100%);
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(1, #889));
position:relative;
top:1px;
}
.comment input { padding: 2px; }
#replymessage { margin-top: 5px; }
.commentmeta {
color: #fff;
background-color: #8ea0b2;
margin-bottom: 3px;
padding: 0 0 0 3px;
}
.commentdate { color: #bfcede; }
img.vizhash {
width: 16px;
height: 16px;
position: relative;
top: 2px;
left: -3px;
}
#prettyprint {
color: #000000;
font-size: 1.2em;
}
#prettyprint.prettyprinted {
overflow: auto;
}
#cleartext {
padding: 10px;
}
#cleartext * {
margin-bottom: 10px;
}
#cleartext ol {
list-style: auto;
margin-left: 15px;
}
#cleartext ul {
list-style: disc;
margin-left: 15px;
}
#cleartext h1, #cleartext h2, #cleartext h3, #cleartext h4, #cleartext h5, #cleartext h6 {
font-weight: bold;
}
#cleartext h1 {
font-size: 2em;
}
#cleartext h2 {
font-size: 1.5em;
}
#cleartext h3 {
font-size: 1.2em;
}
/* right-to-left overrides */
html[dir="rtl"] #aboutbox, html[dir="rtl"] #deletelink, html[dir="rtl"] #newbutton {
float: left;
}
html[dir="rtl"] button, html[dir="rtl"] .button, html[dir="rtl"] button img {
margin-left: 5px;
margin-right: inherit;
}
html[dir="rtl"] button img {
margin-left: 8px;
}
+2 -7
View File
@@ -21,7 +21,7 @@ for more information.
### Minimal Requirements ### Minimal Requirements
- PHP version 7.3 or above - PHP version 7.4 or above
- PHP with zlib extension - PHP with zlib extension
- some disk space and the capability to create files and folders in the - some disk space and the capability to create files and folders in the
installation directory and the `PATH` defined in index.php installation directory and the `PATH` defined in index.php
@@ -185,11 +185,7 @@ CREATE TABLE prefix_paste (
dataid CHAR(16) NOT NULL, dataid CHAR(16) NOT NULL,
data MEDIUMBLOB, data MEDIUMBLOB,
expiredate INT, expiredate INT,
opendiscussion INT,
burnafterreading INT,
meta TEXT, meta TEXT,
attachment MEDIUMBLOB,
attachmentname BLOB,
PRIMARY KEY (dataid) PRIMARY KEY (dataid)
); );
@@ -198,7 +194,6 @@ CREATE TABLE prefix_comment (
pasteid CHAR(16), pasteid CHAR(16),
parentid CHAR(16), parentid CHAR(16),
data BLOB, data BLOB,
nickname BLOB,
vizhash BLOB, vizhash BLOB,
postdate INT, postdate INT,
PRIMARY KEY (dataid) PRIMARY KEY (dataid)
@@ -208,7 +203,7 @@ CREATE INDEX parent ON prefix_comment(pasteid);
CREATE TABLE prefix_config ( CREATE TABLE prefix_config (
id CHAR(16) NOT NULL, value TEXT, PRIMARY KEY (id) id CHAR(16) NOT NULL, value TEXT, PRIMARY KEY (id)
); );
INSERT INTO prefix_config VALUES('VERSION', '1.7.9'); INSERT INTO prefix_config VALUES('VERSION', '2.0.3');
``` ```
In **PostgreSQL**, the `data`, `attachment`, `nickname` and `vizhash` columns In **PostgreSQL**, the `data`, `attachment`, `nickname` and `vizhash` columns
+32 -36
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s عبارة عن أداة لصق على الإنترنت بسيطة ومفتوحة المصدر حيث لا يمتلك الخادم أي معرفة بالبيانات الملصقة. يتم تشفير / فك تشفير البيانات %sفي المتصفح%s باستخدام 256 بت AES.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s عبارة عن أداة لصق على الإنترنت بسيطة ومفتوحة المصدر حيث لا يمتلك الخادم أي معرفة بالبيانات الملصقة. يتم تشفير / فك تشفير البيانات %sفي المتصفح%s باستخدام 256 بت AES.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "مزيد من المعلومات على <a href=\"https://privatebin.info/\">صفحة المشروع</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "مزيد من المعلومات على <a href=\"https://privatebin.info/\">صفحة المشروع</a>.",
"Because ignorance is bliss": "لأن الجهل نعمة", "Because ignorance is bliss": "لأن الجهل نعمة",
"Paste does not exist, has expired or has been deleted.": "اللصق غير موجود أو انتهت صلاحيته أو تم حذفه.", "Document does not exist, has expired or has been deleted.": "اللصق غير موجود أو انتهت صلاحيته أو تم حذفه.",
"%s requires php %s or above to work. Sorry.": "%s يتطلب php %s أو أعلى للعمل. آسف.", "%s requires php %s or above to work. Sorry.": "%s يتطلب php %s أو أعلى للعمل. آسف.",
"%s requires configuration section [%s] to be present in configuration file.": "%s يتطلب وجود قسم [%s] تضبيط في ملف تضبيط.", "%s requires configuration section [%s] to be present in configuration file.": "%s يتطلب وجود قسم [%s] تضبيط في ملف تضبيط.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"الرجاء الانتظار %d ثواني بين كل مشاركة.", "الرجاء الانتظار %d ثواني بين كل مشاركة.",
"الرجاء الانتظار %d ثواني بين كل مشاركة." "الرجاء الانتظار %d ثواني بين كل مشاركة."
], ],
"Paste is limited to %s of encrypted data.": "يقتصر اللصق على %s البيانات المشفرة.", "Document is limited to %s of encrypted data.": "يقتصر اللصق على %s البيانات المشفرة.",
"Invalid data.": "بيانات غير صالحة.", "Invalid data.": "بيانات غير صالحة.",
"You are unlucky. Try again.": "أنت غير محظوظ. أعِد المحاولة.", "You are unlucky. Try again.": "أنت غير محظوظ. أعِد المحاولة.",
"Error saving comment. Sorry.": "خطأ في حفظ التعليق. آسف.", "Error saving comment. Sorry.": "خطأ في حفظ التعليق. آسف.",
"Error saving paste. Sorry.": "خطأ في حفظ اللصق. آسف.", "Error saving document. Sorry.": "خطأ في حفظ اللصق. آسف.",
"Invalid paste ID.": "معرف لصق غير صالح.", "Invalid document ID.": "معرف لصق غير صالح.",
"Paste is not of burn-after-reading type.": "اللصق ليس من النوع الذي يحرق بعد القراءة.", "Document is not of burn-after-reading type.": "اللصق ليس من النوع الذي يحرق بعد القراءة.",
"Wrong deletion token. Paste was not deleted.": "رمز حذف خاطئ. لم يتم يحُذف اللصق.", "Wrong deletion token. Document was not deleted.": "رمز حذف خاطئ. لم يتم يحُذف اللصق.",
"Paste was properly deleted.": "حُذفت اللصق بشكل صحيح.", "Document was properly deleted.": "حُذفت اللصق بشكل صحيح.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "جافاسكرِبت (JavaScript) مطلوب %s للعمل. نأسف للإزعاج.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "جافاسكرِبت (JavaScript) مطلوب %s للعمل. نأسف للإزعاج.",
"%s requires a modern browser to work.": "%s يتطلب متصفحًا حديثًا للعمل.", "%s requires a modern browser to work.": "%s يتطلب متصفحًا حديثًا للعمل.",
"New": "جديد", "New": "جديد",
@@ -133,9 +133,9 @@
"ستنتهي صلاحية هذا المستند خلال %d شهور.", "ستنتهي صلاحية هذا المستند خلال %d شهور.",
"ستنتهي صلاحية هذا المستند خلال %d شهور." "ستنتهي صلاحية هذا المستند خلال %d شهور."
], ],
"Please enter the password for this paste:": "الرجاء إدخال كلمة المرور لهذا اللصق:", "Please enter the password for this document:": "الرجاء إدخال كلمة المرور لهذا اللصق:",
"Could not decrypt data (Wrong key?)": "تعذر فك تشفير البيانات (مفتاح غير صحيح؟)", "Could not decrypt data (Wrong key?)": "تعذر فك تشفير البيانات (مفتاح غير صحيح؟)",
"Could not delete the paste, it was not stored in burn after reading mode.": "تعذر حذف اللصق، ولم يخزين في وضع النسخ بعد القراءة.", "Could not delete the document, it was not stored in burn after reading mode.": "تعذر حذف اللصق، ولم يخزين في وضع النسخ بعد القراءة.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "فقط من أجل عينيك. لا تغلق هذه النافذة، لا يمكن عرض هذه الرسالة مرة أخرى.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "فقط من أجل عينيك. لا تغلق هذه النافذة، لا يمكن عرض هذه الرسالة مرة أخرى.",
"Could not decrypt comment; Wrong key?": "تعذر فك تشفير التعليق؛ المفتاح غير صحيح؟", "Could not decrypt comment; Wrong key?": "تعذر فك تشفير التعليق؛ المفتاح غير صحيح؟",
"Reply": "رد", "Reply": "رد",
@@ -150,20 +150,12 @@
"unknown status": "حالة غير معروفة", "unknown status": "حالة غير معروفة",
"server error or not responding": "خطأ في الخادم أو لا يستجيب", "server error or not responding": "خطأ في الخادم أو لا يستجيب",
"Could not post comment: %s": "لا يمكن نشر تعليق: %s", "Could not post comment: %s": "لا يمكن نشر تعليق: %s",
"Sending paste…": "يُرسل لصق…", "Sending document…": "يُرسل لصق…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "لصقك هو <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(اضغط على <kbd>Ctrl</kbd> + <kbd>c</kbd> للنسخ)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "لصقك هو <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(اضغط على <kbd>Ctrl</kbd> + <kbd>c</kbd> للنسخ)</span>",
"Delete data": "حذف البيانات", "Delete data": "حذف البيانات",
"Could not create paste: %s": "تعذر إنشاء اللصق: %s", "Could not create document: %s": "تعذر إنشاء اللصق: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "لا يمكن فك تشفير اللصق: مفتاح فك التشفير مفقود في URL (هل استخدمت معيد توجيه أو أداة تقصير لعناوين URL تزيل جزءًا من عنوان URL؟)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "لا يمكن فك تشفير اللصق: مفتاح فك التشفير مفقود في URL (هل استخدمت معيد توجيه أو أداة تقصير لعناوين URL تزيل جزءًا من عنوان URL؟)",
"B": "بايت", "B": "بايت",
"KiB": "كيلوبايت",
"MiB": "ميجابايت",
"GiB": "جيجابايت",
"TiB": "تيرابايت",
"PiB": "بيتابايت",
"EiB": "إكسابايت",
"ZiB": "زيتابايت",
"YiB": "يوتابايت",
"kB": "كيلوبايت", "kB": "كيلوبايت",
"MB": "ميجابايت", "MB": "ميجابايت",
"GB": "جيجابايت", "GB": "جيجابايت",
@@ -178,7 +170,7 @@
"Markdown": "ماركداون", "Markdown": "ماركداون",
"Download attachment": "نزّل المرفق", "Download attachment": "نزّل المرفق",
"Cloned: '%s'": "مستنسخ: '%s'", "Cloned: '%s'": "مستنسخ: '%s'",
"The cloned file '%s' was attached to this paste.": "تم إرفاق الملف المستنسخ '%s' بهذا اللصق.", "The cloned file '%s' was attached to this document.": "تم إرفاق الملف المستنسخ '%s' بهذا اللصق.",
"Attach a file": "أرفق ملف", "Attach a file": "أرفق ملف",
"alternatively drag & drop a file or paste an image from the clipboard": "بدلاً من ذلك، اسحب ملفًا وأسقطه أو الصق صورة من الحافظة", "alternatively drag & drop a file or paste an image from the clipboard": "بدلاً من ذلك، اسحب ملفًا وأسقطه أو الصق صورة من الحافظة",
"File too large, to display a preview. Please download the attachment.": "الملف كبير جدًا، بحيث لا يمكن عرض معاينة. الرجاء تنزيل المرفق.", "File too large, to display a preview. Please download the attachment.": "الملف كبير جدًا، بحيث لا يمكن عرض معاينة. الرجاء تنزيل المرفق.",
@@ -193,11 +185,11 @@
"Decrypt": "فك التشفير", "Decrypt": "فك التشفير",
"Enter password": "أدخل كلمة المرور", "Enter password": "أدخل كلمة المرور",
"Loading…": "تحميل…", "Loading…": "تحميل…",
"Decrypting paste…": "يفك تشفير اللصق…", "Decrypting document…": "يفك تشفير اللصق…",
"Preparing new paste…": "تحضير لصقة جديدة…", "Preparing new document…": "تحضير لصقة جديدة…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "في حالة عدم اختفاء هذه الرسالة مطلقًا ، يرجى إلقاء نظرة على <a href=\"%s\">الأسئلة الشائعة هذه للحصول على معلومات لتحري الخلل وإصلاحه</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "في حالة عدم اختفاء هذه الرسالة مطلقًا ، يرجى إلقاء نظرة على <a href=\"%s\">الأسئلة الشائعة هذه للحصول على معلومات لتحري الخلل وإصلاحه</a>.",
"+++ no paste text +++": "+++ لا يوجد نص لصق +++", "+++ no document text +++": "+++ لا يوجد نص لصق +++",
"Could not get paste data: %s": "تعذر الحصول على لصق البيانات: %s", "Could not get document data: %s": "تعذر الحصول على لصق البيانات: %s",
"QR code": "رمز QR", "QR code": "رمز QR",
"This website is using an insecure HTTP connection! Please use it only for testing.": "هذا الموقع يستخدم اتصال HTTP غير آمن! الرجاء استخدامه للاختبار فقط.", "This website is using an insecure HTTP connection! Please use it only for testing.": "هذا الموقع يستخدم اتصال HTTP غير آمن! الرجاء استخدامه للاختبار فقط.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "لمزيد من المعلومات <a href=\"%s\">راجع هذه الأسئلة الشائعة</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "لمزيد من المعلومات <a href=\"%s\">راجع هذه الأسئلة الشائعة</a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "ملاحظة مشفرة على %s", "Encrypted note on %s": "ملاحظة مشفرة على %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "زُر هذا الرابط لرؤية الملاحظة. يتيح إعطاء عنوان URL لأي شخص الوصول إلى الملاحظة أيضًا.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "زُر هذا الرابط لرؤية الملاحظة. يتيح إعطاء عنوان URL لأي شخص الوصول إلى الملاحظة أيضًا.",
"URL shortener may expose your decrypt key in URL.": "قد يفضح أداة تقصير عناوين URL مفتاح فك التشفير الخاص بك في URL.", "URL shortener may expose your decrypt key in URL.": "قد يفضح أداة تقصير عناوين URL مفتاح فك التشفير الخاص بك في URL.",
"Save paste": "احفظ اللصق", "URL shortener is enabled by default.": "URL shortener is enabled by default.",
"Your IP is not authorized to create pastes.": "عنوان IP الخاص بك غير مصرح له بإنشاء لصُق.", "Save document": "احفظ اللصق",
"Your IP is not authorized to create documents.": "عنوان IP الخاص بك غير مصرح له بإنشاء لصُق.",
"Trying to shorten a URL that isn't pointing at our instance.": "محاولة تقصير عنوان URL لا يشير إلى خادمنا.", "Trying to shorten a URL that isn't pointing at our instance.": "محاولة تقصير عنوان URL لا يشير إلى خادمنا.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "خطأ في الاتصال بـ YOURLS. ربما تكون هناك مشكلة في التضبيط، مثل \"apiurl\" أو \"التوقيع\" الخاطئ أو المفقود.", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "خطأ في الاتصال بـ YOURLS. ربما تكون هناك مشكلة في التضبيط، مثل \"apiurl\" أو \"التوقيع\" الخاطئ أو المفقود.",
"Error parsing YOURLS response.": "خطأ في تحليل استجابة YOURLS.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "خطأ في تحليل استجابة YOURLS.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"This secret message can only be displayed once. Would you like to see it now?": "يمكن عرض هذه الرسالة السرية مرة واحدة فقط. هل ترغب في رؤيتها الآن؟", "This secret message can only be displayed once. Would you like to see it now?": "يمكن عرض هذه الرسالة السرية مرة واحدة فقط. هل ترغب في رؤيتها الآن؟",
"Yes, see it": "نعم، دعني اراها", "Yes, see it": "نعم، دعني اراها",
"Dark Mode": "الوضع الداكن", "Dark Mode": "الوضع الداكن",
"Error compressing paste, due to missing WebAssembly support.": "خطأ في ضغط اللصق، بسبب فقدان دعم WebAssembly.", "Error compressing document, due to missing WebAssembly support.": "خطأ في ضغط اللصق، بسبب فقدان دعم WebAssembly.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "خطأ في فك ضغط اللصق، متصفحك لا يدعم WebAssembly. الرجاء استخدام متصفح آخر لعرض هذه اللصقة.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "خطأ في فك ضغط اللصق، متصفحك لا يدعم WebAssembly. الرجاء استخدام متصفح آخر لعرض هذه اللصقة.",
"Start over": "ابدأ من جديد", "Start over": "ابدأ من جديد",
"Paste copied to clipboard": "نُسخ اللصق إلى الحافظة", "Document copied to clipboard": "نُسخ اللصق إلى الحافظة",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "لنسخ اللصق انقر على زر النسخ أو استخدم اختصار الحافظة <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "لنسخ اللصق انقر على زر النسخ أو استخدم اختصار الحافظة <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "نسخ الرابط", "Copy link": "نسخ الرابط",
"Link copied to clipboard": "نُسخ الرابط إلى الحافظة", "Link copied to clipboard": "نُسخ الرابط إلى الحافظة",
"Paste text": "لصق النص", "Document text": "لصق النص",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "مفتاح التبويب يعمل كشخصية (انقر <kbd>Ctrl</kbd>+<kbd>m</kbd> أو <kbd>Esc</kbd> للتبديل)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "مفتاح التبويب يعمل كشخصية (انقر <kbd>Ctrl</kbd>+<kbd>m</kbd> أو <kbd>Esc</kbd> للتبديل)",
"Show password": "Show password",
"Hide password": "Hide password",
"Theme": "السمة" "Theme": "السمة"
} }
+32 -36
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s е изчистен и изцяло достъпен като отворен код, онлайн \"paste\" услуга, където сървъра не знае подадената информация. Тя се шифрова/дешифрова %sвъв браузъра%s използвайки 256 битов AES алгоритъм.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s е изчистен и изцяло достъпен като отворен код, онлайн \"document\" услуга, където сървъра не знае подадената информация. Тя се шифрова/дешифрова %sвъв браузъра%s използвайки 256 битов AES алгоритъм.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Повече информация може да намерите на <a href=\"https://privatebin.info/\">страницата на проекта (Английски)</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Повече информация може да намерите на <a href=\"https://privatebin.info/\">страницата на проекта (Английски)</a>.",
"Because ignorance is bliss": "Невежеството е блаженство", "Because ignorance is bliss": "Невежеството е блаженство",
"Paste does not exist, has expired or has been deleted.": "Информацията не съществува, срокът и е изтекъл или е била изтрита.", "Document does not exist, has expired or has been deleted.": "Информацията не съществува, срокът и е изтекъл или е била изтрита.",
"%s requires php %s or above to work. Sorry.": "%s има нужда от PHP %s или по-нова, за да работи. Съжалявам.", "%s requires php %s or above to work. Sorry.": "%s има нужда от PHP %s или по-нова, за да работи. Съжалявам.",
"%s requires configuration section [%s] to be present in configuration file.": "%s задължава отдела от настройките [%s] да съществува във файла със настройките.", "%s requires configuration section [%s] to be present in configuration file.": "%s задължава отдела от настройките [%s] да съществува във файла със настройките.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Моля изчакайте %d секунди между всяка публикация.", "Моля изчакайте %d секунди между всяка публикация.",
"Моля изчакайте %d секунди между всяка публикация." "Моля изчакайте %d секунди между всяка публикация."
], ],
"Paste is limited to %s of encrypted data.": "Съдържанието е ограничено до %s криптирана информация.", "Document is limited to %s of encrypted data.": "Съдържанието е ограничено до %s криптирана информация.",
"Invalid data.": "Невалидна информация.", "Invalid data.": "Невалидна информация.",
"You are unlucky. Try again.": "Нямаш късмет. Пробвай отново.", "You are unlucky. Try again.": "Нямаш късмет. Пробвай отново.",
"Error saving comment. Sorry.": "Грешка в запазването на коментара. Съжалявам.", "Error saving comment. Sorry.": "Грешка в запазването на коментара. Съжалявам.",
"Error saving paste. Sorry.": "Грешка в записването на информацията. Съжалявам.", "Error saving document. Sorry.": "Грешка в записването на информацията. Съжалявам.",
"Invalid paste ID.": "Невалиден идентификационен код.", "Invalid document ID.": "Невалиден идентификационен код.",
"Paste is not of burn-after-reading type.": "Информацията не е от тип \"унищожаване след преглед\".", "Document is not of burn-after-reading type.": "Информацията не е от тип \"унищожаване след преглед\".",
"Wrong deletion token. Paste was not deleted.": "Невалиден код за изтриване. Информацията Ви не беше изтрита.", "Wrong deletion token. Document was not deleted.": "Невалиден код за изтриване. Информацията Ви не беше изтрита.",
"Paste was properly deleted.": "Информацията Ви е изтрита.", "Document was properly deleted.": "Информацията Ви е изтрита.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Услугата %s се нуждае от JavaScript, за да работи. Съжаляваме за неудобството.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "Услугата %s се нуждае от JavaScript, за да работи. Съжаляваме за неудобството.",
"%s requires a modern browser to work.": "%s се нуждае от съвременен браузър за да работи.", "%s requires a modern browser to work.": "%s се нуждае от съвременен браузър за да работи.",
"New": "Създаване", "New": "Създаване",
@@ -133,9 +133,9 @@
"Този документ изтича след %d години.", "Този документ изтича след %d години.",
"Този документ изтича след %d години." "Този документ изтича след %d години."
], ],
"Please enter the password for this paste:": "Моля въведете паролата за това съдържание:", "Please enter the password for this document:": "Моля въведете паролата за това съдържание:",
"Could not decrypt data (Wrong key?)": "Информацията не можеше да се дешифрова (Грешен ключ?)", "Could not decrypt data (Wrong key?)": "Информацията не можеше да се дешифрова (Грешен ключ?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Изтриването на информацията беше неуспешно. Тя не е от тип \"унищожаване след преглед\".", "Could not delete the document, it was not stored in burn after reading mode.": "Изтриването на информацията беше неуспешно. Тя не е от тип \"унищожаване след преглед\".",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "САМО ЗА ВАШИТЕ ОЧИ. Не затваряйте прозореца, понеже тази информация няма да може да бъде показана отново.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "САМО ЗА ВАШИТЕ ОЧИ. Не затваряйте прозореца, понеже тази информация няма да може да бъде показана отново.",
"Could not decrypt comment; Wrong key?": "Дешифроването на коментара беше неуспешно. Грешен ключ?", "Could not decrypt comment; Wrong key?": "Дешифроването на коментара беше неуспешно. Грешен ключ?",
"Reply": "Отговор", "Reply": "Отговор",
@@ -150,20 +150,12 @@
"unknown status": "Неизвестно състояние", "unknown status": "Неизвестно състояние",
"server error or not responding": "Грешка в сървъра или не отговаря", "server error or not responding": "Грешка в сървъра или не отговаря",
"Could not post comment: %s": "Публикуването на коментара Ви беше неуспешно: %s", "Could not post comment: %s": "Публикуването на коментара Ви беше неуспешно: %s",
"Sending paste…": "Изпращане на информацията Ви…", "Sending document…": "Изпращане на информацията Ви…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Вашата връзка е <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Натиснете <kbd>Ctrl</kbd>+<kbd>c</kbd> за да копирате)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Вашата връзка е <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Натиснете <kbd>Ctrl</kbd>+<kbd>c</kbd> за да копирате)</span>",
"Delete data": "Изтриване на информацията", "Delete data": "Изтриване на информацията",
"Could not create paste: %s": "Създаването на връзката ви беше неуспешно: %s", "Could not create document: %s": "Създаването на връзката ви беше неуспешно: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Дешифроването на информацията беше неуспешно: Ключа за декриптиране липсва във връзката (Да не сте използвали услуга за пренасочване или скъсяване на връзката, което би изрязало части от нея?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Дешифроването на информацията беше неуспешно: Ключа за декриптиране липсва във връзката (Да не сте използвали услуга за пренасочване или скъсяване на връзката, което би изрязало части от нея?)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Свали прикачения файл", "Download attachment": "Свали прикачения файл",
"Cloned: '%s'": "Дублирано: '%s'", "Cloned: '%s'": "Дублирано: '%s'",
"The cloned file '%s' was attached to this paste.": "Дублирания файл '%s' беше прикачен.", "The cloned file '%s' was attached to this document.": "Дублирания файл '%s' беше прикачен.",
"Attach a file": "Прикачи файл", "Attach a file": "Прикачи файл",
"alternatively drag & drop a file or paste an image from the clipboard": "Също можеш да пуснеш файла върху този прозорец или да поставиш изображение от клипборда", "alternatively drag & drop a file or paste an image from the clipboard": "Също можеш да пуснеш файла върху този прозорец или да поставиш изображение от клипборда",
"File too large, to display a preview. Please download the attachment.": "Файла е твърде голям, за да се представи визуализация. Моля, свалете файла.", "File too large, to display a preview. Please download the attachment.": "Файла е твърде голям, за да се представи визуализация. Моля, свалете файла.",
@@ -193,11 +185,11 @@
"Decrypt": "Дешифровай", "Decrypt": "Дешифровай",
"Enter password": "Въведи паролата", "Enter password": "Въведи паролата",
"Loading…": "Зареждане…", "Loading…": "Зареждане…",
"Decrypting paste…": "Дешифроване на информацията…", "Decrypting document…": "Дешифроване на информацията…",
"Preparing new paste…": "Приготвяне на връзката Ви…", "Preparing new document…": "Приготвяне на връзката Ви…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Във случай, че това съобщение не изчезне след време, моля прегледайте <a href=\"%s\">този FAQ (Английски)</a>, за информация, която би ви помогнала.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Във случай, че това съобщение не изчезне след време, моля прегледайте <a href=\"%s\">този FAQ (Английски)</a>, за информация, която би ви помогнала.",
"+++ no paste text +++": "+++ няма текстово съдържание +++", "+++ no document text +++": "+++ няма текстово съдържание +++",
"Could not get paste data: %s": "Взимането на информацията беше неуспешно: %s", "Could not get document data: %s": "Взимането на информацията беше неуспешно: %s",
"QR code": "QR код", "QR code": "QR код",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Този сайт използва несигурна HTTP връзка. Моля използвайте само за проби.", "This website is using an insecure HTTP connection! Please use it only for testing.": "Този сайт използва несигурна HTTP връзка. Моля използвайте само за проби.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "<a href=\"%s\">Вижте тази страница</a> за повече информация.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "<a href=\"%s\">Вижте тази страница</a> за повече информация.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "Encrypted note on %s", "Encrypted note on %s": "Encrypted note on %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.", "URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
"Save paste": "Save paste", "URL shortener is enabled by default.": "URL shortener is enabled by default.",
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.", "Save document": "Save document",
"Your IP is not authorized to create documents.": "Your IP is not authorized to create documents.",
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", "Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.",
"Error parsing YOURLS response.": "Error parsing YOURLS response.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?", "This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
"Yes, see it": "Yes, see it", "Yes, see it": "Yes, see it",
"Dark Mode": "Dark Mode", "Dark Mode": "Dark Mode",
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.", "Error compressing document, due to missing WebAssembly support.": "Error compressing document, due to missing WebAssembly support.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.",
"Start over": "Start over", "Start over": "Start over",
"Paste copied to clipboard": "Paste copied to clipboard", "Document copied to clipboard": "Document copied to clipboard",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Copy link", "Copy link": "Copy link",
"Link copied to clipboard": "Link copied to clipboard", "Link copied to clipboard": "Link copied to clipboard",
"Paste text": "Paste text", "Document text": "Document text",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)",
"Show password": "Show password",
"Hide password": "Hide password",
"Theme": "Theme" "Theme": "Theme"
} }
+32 -36
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s és un pastebin en línia de codi obert i minimalista on el servidor no té coneixement de les dades enganxades. Les dades estan encriptades/desxifrades %sen el navegador%s utilitzant AES de 256 bits.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s és un pastebin en línia de codi obert i minimalista on el servidor no té coneixement de les dades enganxades. Les dades estan encriptades/desxifrades %sen el navegador%s utilitzant AES de 256 bits.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Més informació a la <a href=\"https://privatebin.info/\">pàgina del projecte</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Més informació a la <a href=\"https://privatebin.info/\">pàgina del projecte</a>.",
"Because ignorance is bliss": "Perquè la ignorància és felicitat", "Because ignorance is bliss": "Perquè la ignorància és felicitat",
"Paste does not exist, has expired or has been deleted.": "El paste no existeix, ha caducat o s'ha eliminat.", "Document does not exist, has expired or has been deleted.": "El document no existeix, ha caducat o s'ha eliminat.",
"%s requires php %s or above to work. Sorry.": "%s requereix php %s o superior per funcionar. Ho sento.", "%s requires php %s or above to work. Sorry.": "%s requereix php %s o superior per funcionar. Ho sento.",
"%s requires configuration section [%s] to be present in configuration file.": "%s requereix que la secció de configuració [%s] sigui present al fitxer de configuració.", "%s requires configuration section [%s] to be present in configuration file.": "%s requereix que la secció de configuració [%s] sigui present al fitxer de configuració.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Espereu %d segons entre cada entrada.", "Espereu %d segons entre cada entrada.",
"Espereu %d segons entre cada entrada." "Espereu %d segons entre cada entrada."
], ],
"Paste is limited to %s of encrypted data.": "L'enganxat està limitat a %s de dades encriptades.", "Document is limited to %s of encrypted data.": "L'enganxat està limitat a %s de dades encriptades.",
"Invalid data.": "Dades no vàlides.", "Invalid data.": "Dades no vàlides.",
"You are unlucky. Try again.": "Mala sort. Torna-ho a provar.", "You are unlucky. Try again.": "Mala sort. Torna-ho a provar.",
"Error saving comment. Sorry.": "S'ha produït un error en desar el comentari. Ho sento.", "Error saving comment. Sorry.": "S'ha produït un error en desar el comentari. Ho sento.",
"Error saving paste. Sorry.": "S'ha produït un error en desar l'enganxat. Ho sento.", "Error saving document. Sorry.": "S'ha produït un error en desar l'enganxat. Ho sento.",
"Invalid paste ID.": "Identificador d'enganxament no vàlid.", "Invalid document ID.": "Identificador d'enganxament no vàlid.",
"Paste is not of burn-after-reading type.": "La nota no és del tipus eliminar després de llegir.", "Document is not of burn-after-reading type.": "La nota no és del tipus eliminar després de llegir.",
"Wrong deletion token. Paste was not deleted.": "El token d'eliminació és incorrecte. El Paste no s'ha eliminat.", "Wrong deletion token. Document was not deleted.": "El token d'eliminació és incorrecte. El Document no s'ha eliminat.",
"Paste was properly deleted.": "El Paste s'ha esborrat correctament.", "Document was properly deleted.": "El Document s'ha esborrat correctament.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Cal JavaScript perquè %s funcioni. Em sap greu les molèsties.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "Cal JavaScript perquè %s funcioni. Em sap greu les molèsties.",
"%s requires a modern browser to work.": "%s requereix un navegador modern per funcionar.", "%s requires a modern browser to work.": "%s requereix un navegador modern per funcionar.",
"New": "Nou", "New": "Nou",
@@ -133,9 +133,9 @@
"Aquest document caducarà d'aquí %d mesos.", "Aquest document caducarà d'aquí %d mesos.",
"Aquest document caducarà d'aquí %d mesos." "Aquest document caducarà d'aquí %d mesos."
], ],
"Please enter the password for this paste:": "Si us plau, introdueix la contrasenya per aquest paste:", "Please enter the password for this document:": "Si us plau, introdueix la contrasenya per aquest document:",
"Could not decrypt data (Wrong key?)": "No s'han pogut desxifrar les dades (Clau incorrecte?)", "Could not decrypt data (Wrong key?)": "No s'han pogut desxifrar les dades (Clau incorrecte?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Could not delete the paste, it was not stored in burn after reading mode.", "Could not delete the document, it was not stored in burn after reading mode.": "Could not delete the document, it was not stored in burn after reading mode.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.",
"Could not decrypt comment; Wrong key?": "Could not decrypt comment; Wrong key?", "Could not decrypt comment; Wrong key?": "Could not decrypt comment; Wrong key?",
"Reply": "Respondre", "Reply": "Respondre",
@@ -150,20 +150,12 @@
"unknown status": "estat desconegut", "unknown status": "estat desconegut",
"server error or not responding": "server error or not responding", "server error or not responding": "server error or not responding",
"Could not post comment: %s": "No s'ha pogut publicar el comentari: %s", "Could not post comment: %s": "No s'ha pogut publicar el comentari: %s",
"Sending paste…": "Enviant paste…", "Sending document…": "Enviant document…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>",
"Delete data": "Esborrar les dades", "Delete data": "Esborrar les dades",
"Could not create paste: %s": "Could not create paste: %s", "Could not create document: %s": "Could not create document: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "No es pot desxifrar la nota: falta la clau de desxifrat a l'URL (vau utilitzar un adreçament o un escurçador d'URL que elimina part de l'URL?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "No es pot desxifrar la nota: falta la clau de desxifrat a l'URL (vau utilitzar un adreçament o un escurçador d'URL que elimina part de l'URL?)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Baixar els adjunts", "Download attachment": "Baixar els adjunts",
"Cloned: '%s'": "Cloned: '%s'", "Cloned: '%s'": "Cloned: '%s'",
"The cloned file '%s' was attached to this paste.": "The cloned file '%s' was attached to this paste.", "The cloned file '%s' was attached to this document.": "The cloned file '%s' was attached to this document.",
"Attach a file": "Adjuntar un fitxer", "Attach a file": "Adjuntar un fitxer",
"alternatively drag & drop a file or paste an image from the clipboard": "alternativament, pots arrossegar i deixar anar un fitxer o enganxar una imatge des del porta-retalls", "alternatively drag & drop a file or paste an image from the clipboard": "alternativament, pots arrossegar i deixar anar un fitxer o enganxar una imatge des del porta-retalls",
"File too large, to display a preview. Please download the attachment.": "El fitxer és massa gran per fer una vista prèvia. Si us plau, descarrega l'adjunt.", "File too large, to display a preview. Please download the attachment.": "El fitxer és massa gran per fer una vista prèvia. Si us plau, descarrega l'adjunt.",
@@ -193,11 +185,11 @@
"Decrypt": "Decrypt", "Decrypt": "Decrypt",
"Enter password": "Enter password", "Enter password": "Enter password",
"Loading…": "Loading…", "Loading…": "Loading…",
"Decrypting paste…": "Decrypting paste…", "Decrypting document…": "Decrypting document…",
"Preparing new paste…": "Preparing new paste…", "Preparing new document…": "Preparing new document…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.",
"+++ no paste text +++": "+++ no paste text +++", "+++ no document text +++": "+++ no document text +++",
"Could not get paste data: %s": "Could not get paste data: %s", "Could not get document data: %s": "Could not get document data: %s",
"QR code": "QR code", "QR code": "QR code",
"This website is using an insecure HTTP connection! Please use it only for testing.": "This website is using an insecure HTTP connection! Please use it only for testing.", "This website is using an insecure HTTP connection! Please use it only for testing.": "This website is using an insecure HTTP connection! Please use it only for testing.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "Encrypted note on %s", "Encrypted note on %s": "Encrypted note on %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.", "URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
"Save paste": "Save paste", "URL shortener is enabled by default.": "URL shortener is enabled by default.",
"Your IP is not authorized to create pastes.": "La teva IP no està autoritzada a crear notes.", "Save document": "Save document",
"Your IP is not authorized to create documents.": "La teva IP no està autoritzada a crear notes.",
"Trying to shorten a URL that isn't pointing at our instance.": "S'està intentant escurçar un URL que no apunta a la nostra instància.", "Trying to shorten a URL that isn't pointing at our instance.": "S'està intentant escurçar un URL que no apunta a la nostra instància.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error en la crida a YOURLS. Probablement és un problema de configuració, com ara \"apiurl\" o \"signature\" incorrectes o que falten.", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Error en la crida a YOURLS. Probablement és un problema de configuració, com ara \"apiurl\" o \"signature\" incorrectes o que falten.",
"Error parsing YOURLS response.": "Error parsing YOURLS response.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"This secret message can only be displayed once. Would you like to see it now?": "Aquest missatge secret sols es pot veure una vegada. Vols obrir-ho ara?", "This secret message can only be displayed once. Would you like to see it now?": "Aquest missatge secret sols es pot veure una vegada. Vols obrir-ho ara?",
"Yes, see it": "Yes, see it", "Yes, see it": "Yes, see it",
"Dark Mode": "Dark Mode", "Dark Mode": "Dark Mode",
"Error compressing paste, due to missing WebAssembly support.": "Error de compressió de la nota, no hi ha suport de WebAssembly.", "Error compressing document, due to missing WebAssembly support.": "Error de compressió de la nota, no hi ha suport de WebAssembly.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.",
"Start over": "Start over", "Start over": "Start over",
"Paste copied to clipboard": "Paste copied to clipboard", "Document copied to clipboard": "Document copied to clipboard",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Copy link", "Copy link": "Copy link",
"Link copied to clipboard": "Link copied to clipboard", "Link copied to clipboard": "Link copied to clipboard",
"Paste text": "Paste text", "Document text": "Document text",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)",
"Show password": "Show password",
"Hide password": "Hide password",
"Theme": "Theme" "Theme": "Theme"
} }
+33 -37
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s hè un serviziu in linea di tipu « pastebin » (ghjestiunariu dappiccicu di pezzi di testu è di codice di fonte) minimalistu è à fonte aperta induve u servitore ùn hà micca cunnuscenza di i dati mandati. I dati sò cifrati è dicifrati %sin u navigatore%s cù una cifratura AES di 256 bit.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s hè un serviziu in linea, minimalistu è à fonte aperta, di tipu « pastebin », vole à dì chì face a ghjestione dappiccicu di pezzi di testu è di codice di fonte, induve u servitore ùn hà mancappena a cunnuscenza di i dati mandati. I dati sò cifrati è dicifrati %sin u navigatore%s cù una cifratura AES di 256 bit.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Più dinfurmazione annant’à a <a href=\"https://privatebin.info/\">pagina di u prughjettu</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Più dinfurmazione annant’à a <a href=\"https://privatebin.info/\">pagina di u prughjettu</a>.",
"Because ignorance is bliss": "Perchè lignurenza hè una campa", "Because ignorance is bliss": "Perchè lignurenza hè una campa",
"Paste does not exist, has expired or has been deleted.": "Lappiccicu ùn esiste micca, hè scadutu o hè statu squassatu.", "Document does not exist, has expired or has been deleted.": "U ducumentu ùn esiste micca, hè scadutu o hè statu squassatu.",
"%s requires php %s or above to work. Sorry.": "Per disgrazzia, %s richiede php %s o più recente per funziunà.", "%s requires php %s or above to work. Sorry.": "Per disgrazzia, %s richiede php %s o più recente per funziunà.",
"%s requires configuration section [%s] to be present in configuration file.": "%s richiede a presenza di a sezzione di cunfigurazione [%s] in a schedariu di cunfigurazione.", "%s requires configuration section [%s] to be present in configuration file.": "%s richiede a presenza di a sezzione di cunfigurazione [%s] in a schedariu di cunfigurazione.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Aspettate %d seconde trà dui publicazioni.", "Aspettate %d seconde trà dui publicazioni.",
"Aspettate %d seconde trà dui publicazioni." "Aspettate %d seconde trà dui publicazioni."
], ],
"Paste is limited to %s of encrypted data.": "Lappiccicu hè limitatu à %s di dati cifrati.", "Document is limited to %s of encrypted data.": "U ducumentu hè limitatu à %s di dati cifrati.",
"Invalid data.": "Dati inaccetevule.", "Invalid data.": "Dati inaccetevule.",
"You are unlucky. Try again.": "Pruvate torna, Serete più furtunati.", "You are unlucky. Try again.": "Pruvate torna, Serete più furtunati.",
"Error saving comment. Sorry.": "Per disgrazzia, ci hè un sbagliu à larregistramentu di u cummentu.", "Error saving comment. Sorry.": "Per disgrazzia, ci hè un sbagliu à larregistramentu di u cummentu.",
"Error saving paste. Sorry.": "Per disgrazzia, ci hè un sbagliu à larregistramentu di lappiccicu.", "Error saving document. Sorry.": "Per disgrazzia, ci hè un sbagliu à larregistramentu di u ducumentu.",
"Invalid paste ID.": "N° di lappiccicu inaccettevule.", "Invalid document ID.": "N° di u ducumentu inaccettevule.",
"Paste is not of burn-after-reading type.": "Lappiccicu ùn hè micca di tipu « Squassà dopu a lettura ».", "Document is not of burn-after-reading type.": "U ducumentu ùn hè micca di tipu « Squassà dopu a lettura ».",
"Wrong deletion token. Paste was not deleted.": "Gettone di squassatura incurrettu. Lappiccicu ùn hè micca statu squassatu.", "Wrong deletion token. Document was not deleted.": "Gettone di squassatura incurrettu. U ducumentu ùn hè micca statu squassatu.",
"Paste was properly deleted.": "Lappiccicu hè statu squassatu currettamente.", "Document was properly deleted.": "U ducumentu hè statu squassatu currettamente.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript hè richiestu per fà funziunà %s. Scusate per stu penseru.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript hè richiestu per fà funziunà %s. Scusate per stu penseru.",
"%s requires a modern browser to work.": "%s richiede un navigatore mudernu per funziunà.", "%s requires a modern browser to work.": "%s richiede un navigatore mudernu per funziunà.",
"New": "Novu", "New": "Novu",
@@ -133,9 +133,9 @@
"Stu ducumentu serà scadutu in %d mesi.", "Stu ducumentu serà scadutu in %d mesi.",
"Stu ducumentu serà scadutu in %d mesi." "Stu ducumentu serà scadutu in %d mesi."
], ],
"Please enter the password for this paste:": "Stampittate a parolla dintesa per stappiccicu :", "Please enter the password for this document:": "Stampittate a parolla dintesa per stu ducumentu :",
"Could not decrypt data (Wrong key?)": "Ùn si pò micca dicifrà i dati ; seria incurretta a chjave ?", "Could not decrypt data (Wrong key?)": "Ùn si pò micca dicifrà i dati ; seria incurretta a chjave ?",
"Could not delete the paste, it was not stored in burn after reading mode.": "Ùn si pò micca squassà lappiccicu, ùn hè micca statu in u modu « Squassà dopu a lettura ».", "Could not delete the document, it was not stored in burn after reading mode.": "Ùn si pò micca squassà u ducumentu perchè ùn hè micca statu creatu in u modu « Squassà dopu a lettura ».",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "SOLU CÙ LOCHJI. Ùn chjudite micca sta finestra, stu messaghju un puderà più esse affissatu torna.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "SOLU CÙ LOCHJI. Ùn chjudite micca sta finestra, stu messaghju un puderà più esse affissatu torna.",
"Could not decrypt comment; Wrong key?": "Ùn si pò micca dicifrà u cummentu. Seria incurretta a chjave ?", "Could not decrypt comment; Wrong key?": "Ùn si pò micca dicifrà u cummentu. Seria incurretta a chjave ?",
"Reply": "Risponde", "Reply": "Risponde",
@@ -150,20 +150,12 @@
"unknown status": "statu scunnisciutu", "unknown status": "statu scunnisciutu",
"server error or not responding": "sbagliu di u servitore o u servitore ùn risponde micca", "server error or not responding": "sbagliu di u servitore o u servitore ùn risponde micca",
"Could not post comment: %s": "Ùn si pò micca impustà u cummentu : %s", "Could not post comment: %s": "Ùn si pò micca impustà u cummentu : %s",
"Sending paste…": "Inviu di lappiccicu…", "Sending document…": "Inviu di u ducumentu…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "U vostru appiccicu si trova à lindirizzu <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Appughjate nant’à <kbd>Ctrl</kbd>+<kbd>c</kbd> per cupià u liame)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "U vostru ducumentu si trova à lindirizzu <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Appughjate nant’à <kbd>Ctrl</kbd>+<kbd>c</kbd> per cupià u liame)</span>",
"Delete data": "Squassà i dati", "Delete data": "Squassà i dati",
"Could not create paste: %s": "Ùn si pò micca creà lappiccicu : %s", "Could not create document: %s": "Ùn si pò micca creà u ducumentu : %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Ùn si pò micca dicifrà lappiccicu : A chjave di dicifratura hè assente in lindirizzu. Averiate impiegatu un orientadore dindirizzu o un riduttore chì ammuzzeghja una parte di lindirizzu ?", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Ùn si pò micca dicifrà u ducumentu : A chjave di dicifratura hè assente in lindirizzu. Averiate impiegatu un orientadore dindirizzu o un riduttore chì ammuzzeghja una parte di lindirizzu ?",
"B": "o", "B": "o",
"KiB": "Kio",
"MiB": "Mio",
"GiB": "Gio",
"TiB": "Tio",
"PiB": "Pio",
"EiB": "Eio",
"ZiB": "Zio",
"YiB": "Yio",
"kB": "Ko", "kB": "Ko",
"MB": "Mo", "MB": "Mo",
"GB": "Go", "GB": "Go",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Scaricà a pezza ghjunta", "Download attachment": "Scaricà a pezza ghjunta",
"Cloned: '%s'": "Duppiatu : « %s »", "Cloned: '%s'": "Duppiatu : « %s »",
"The cloned file '%s' was attached to this paste.": "U schedariu duppiatu « %s » hè statu aghjuntu à stappiccicu.", "The cloned file '%s' was attached to this document.": "U schedariu duppiatu « %s » hè statu aghjuntu à stu ducumentu.",
"Attach a file": "Aghjunghje un schedariu", "Attach a file": "Aghjunghje un schedariu",
"alternatively drag & drop a file or paste an image from the clipboard": "in alternanza, sguillà è depone un schedariu o incullà una fiura da u premepapei", "alternatively drag & drop a file or paste an image from the clipboard": "in alternanza, sguillà è depone un schedariu o incullà una fiura da u premepapei",
"File too large, to display a preview. Please download the attachment.": "Schedariu troppu maiò per affissà una fighjulata. Scaricate a pezza ghjunta.", "File too large, to display a preview. Please download the attachment.": "Schedariu troppu maiò per affissà una fighjulata. Scaricate a pezza ghjunta.",
@@ -193,11 +185,11 @@
"Decrypt": "Dicifrà", "Decrypt": "Dicifrà",
"Enter password": "Stampittate a parolla dintesa", "Enter password": "Stampittate a parolla dintesa",
"Loading…": "Caricamentu…", "Loading…": "Caricamentu…",
"Decrypting paste…": "Dicifratura di lappiccicu…", "Decrypting document…": "Dicifratura di u ducumentu…",
"Preparing new paste…": "Approntu di u novu appiccicu…", "Preparing new document…": "Approntu di u ducumentu novu…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "S’è stu messaghju ùn smarisce micca, lighjite <a href=\"%s\">sta FAQ per ottene infurmazioni annant’à a risuluzione di i prublemi</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "S’è stu messaghju ùn smarisce micca, lighjite <a href=\"%s\">sta FAQ per ottene infurmazioni annant’à a risuluzione di i prublemi</a>.",
"+++ no paste text +++": "+++ nisunu testu incullatu +++", "+++ no document text +++": "+++ nisunu testu di ducumentu +++",
"Could not get paste data: %s": "Ùn si pò micca ottene i dati di lappiccicu : %s", "Could not get document data: %s": "Ùn si pò micca ottene i dati di u ducumentu : %s",
"QR code": "Codice QR", "QR code": "Codice QR",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Stu situ web impiegheghja una cunnessione HTTP non sicura ! impiegatelu solu per una prova.", "This website is using an insecure HTTP connection! Please use it only for testing.": "Stu situ web impiegheghja una cunnessione HTTP non sicura ! impiegatelu solu per una prova.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Per sapene di più, <a href=\"%s\">lighjite sta rubrica di a FAQ</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "Per sapene di più, <a href=\"%s\">lighjite sta rubrica di a FAQ</a>.",
@@ -217,23 +209,27 @@
"Close": "Chjode", "Close": "Chjode",
"Encrypted note on %s": "Nota cifrata nant’à %s", "Encrypted note on %s": "Nota cifrata nant’à %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visitate stu liame per vede a nota. Date lindirizzu à qualunque li permette daccede à a nota dinù.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visitate stu liame per vede a nota. Date lindirizzu à qualunque li permette daccede à a nota dinù.",
"URL shortener may expose your decrypt key in URL.": "Un ammuzzatore dindirizzu pò palisà a vostra chjave di dicifratura in lindirizzu.", "URL shortener may expose your decrypt key in URL.": "Un riduttore dindirizzu pò palisà a vostra chjave di dicifratura in lindirizzu.",
"Save paste": "Arregistrà lappiccicu", "URL shortener is enabled by default.": "U riduttore dindirizzu hè predefinitu attivu.",
"Your IP is not authorized to create pastes.": "U vostru indirizzu IP ùn hè micca auturizatu à creà lappiccichi.", "Save document": "Arregistrà u ducumentu",
"Your IP is not authorized to create documents.": "U vostru indirizzu IP ùn hè micca auturizatu à creà ducumenti.",
"Trying to shorten a URL that isn't pointing at our instance.": "Pruvate dammuzzà un indirizzu web chì ùn punta micca versu a vostra instanza.", "Trying to shorten a URL that isn't pointing at our instance.": "Pruvate dammuzzà un indirizzu web chì ùn punta micca versu a vostra instanza.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Sbagliu à a chjama di YOURLS. Seria forse una cunfigurazione gattiva, tale una « apiurl » o « signature » falsa o assente.", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Sbagliu di u proxy : Lindirizzu web di u proxy hè viotu. Forse per via dun prublema di chjavi di cunfigurazione false o assente.",
"Error parsing YOURLS response.": "Sbagliu durante lanalisa di a risposta di YOURLS.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Sbagliu di u proxy : Sbagliu durante lanalisa di u proxy. Forse per via dun prublema di chjavi di cunfigurazione false o assente.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Sbagliu di u proxy : Risposta gattiva. Forse per via dun prublema di chjavi di cunfigurazione false o assente, osinnò uninterruzzione timpuraria.",
"This secret message can only be displayed once. Would you like to see it now?": "Stu messaghju secretu pò esse affissatu solu una volta. Vulete fighjallu subitu ?", "This secret message can only be displayed once. Would you like to see it now?": "Stu messaghju secretu pò esse affissatu solu una volta. Vulete fighjallu subitu ?",
"Yes, see it": "Iè, fighjallu", "Yes, see it": "Iè, fighjallu",
"Dark Mode": "Modu scuru", "Dark Mode": "Modu scuru",
"Error compressing paste, due to missing WebAssembly support.": "Sbagliu durante a cumpressione di lappiccicu, perchè WebAssembly ùn hè micca accettatu.", "Error compressing document, due to missing WebAssembly support.": "Sbagliu durante a cumpressione di u ducumentu, perchè WebAssembly ùn hè micca accettatu.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Sbagliu durante a scumpressione di lappiccicu, perchè u vostru navigatore ùn accetteghja micca WebAssembly. Ci vole à impiegà un altru navigatore per affissà stappiccicu.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Sbagliu durante a scumpressione di u ducumentu, perchè u vostru navigatore ùn accetteghja micca WebAssembly. Ci vole à impiegà un altru navigatore per affissà stu ducumentu.",
"Start over": "Principià torna", "Start over": "Principià torna",
"Paste copied to clipboard": "Lappiccicu hè statu cupiatu in u premepapei", "Document copied to clipboard": "U ducumentu hè statu cupiatu in u premepapei",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "Per cupià lappiccicu, appughjate nant’à u buttone di copia o impiegate laccurtatoghju di u premepapei <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "Per cupià u ducumentu, appughjate nant’à u buttone di copia o impiegate laccurtatoghju di tastera <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Cupià u liame", "Copy link": "Cupià u liame",
"Link copied to clipboard": "U liame hè statu cupiatu in u premepapei", "Link copied to clipboard": "U liame hè statu cupiatu in u premepapei",
"Paste text": "Testu di lappiccicu", "Document text": "Testu di u ducumentu",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "U tastu di tabulazione ghjova cum’è un caratteru (Appughjate nant’à <kbd>Ctrl</kbd>+<kbd>m</kbd> o <kbd>Scapp</kbd> per scambià)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "U tastu di tabulazione ghjova cum’è un caratteru (Appughjate nant’à <kbd>Ctrl</kbd>+<kbd>m</kbd> o <kbd>Scapp</kbd> per scambià)",
"Show password": "Affissà a parolla dintesa",
"Hide password": "Piattà a parolla dintesa",
"Theme": "Tema" "Theme": "Tema"
} }
+37 -41
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s je minimalistický open source 'pastebin' server, který nemá přístup ke vloženým datům. Data jsou šifrována %sv prohlížeči%s pomocí 256bitového AES.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s je minimalistický open source 'pastebin' server, který nemá přístup ke vloženým datům. Data jsou šifrována %sv prohlížeči%s pomocí 256bitového AES.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Více informací na <a href=\"https://privatebin.info/\">stránce projektu</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Více informací na <a href=\"https://privatebin.info/\">stránce projektu</a>.",
"Because ignorance is bliss": "Protože nevědomost je sladká", "Because ignorance is bliss": "Protože nevědomost je sladká",
"Paste does not exist, has expired or has been deleted.": "Vložený text neexistuje, expiroval nebo byl odstraněn.", "Document does not exist, has expired or has been deleted.": "Vložený text neexistuje, expiroval nebo byl odstraněn.",
"%s requires php %s or above to work. Sorry.": "%s vyžaduje php %s nebo vyšší. Lituji.", "%s requires php %s or above to work. Sorry.": "%s vyžaduje php %s nebo vyšší. Lituji.",
"%s requires configuration section [%s] to be present in configuration file.": "%s vyžaduje, aby byla v konfiguračním souboru přítomna sekce [%s].", "%s requires configuration section [%s] to be present in configuration file.": "%s vyžaduje, aby byla v konfiguračním souboru přítomna sekce [%s].",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Vyčkejte prosím %d sekund mezi následujícími příspěvky.", "Vyčkejte prosím %d sekund mezi následujícími příspěvky.",
"Vyčkejte prosím %d sekund mezi následujícími příspěvky." "Vyčkejte prosím %d sekund mezi následujícími příspěvky."
], ],
"Paste is limited to %s of encrypted data.": "Příspěvek je limitován na %s šífrovaných dat", "Document is limited to %s of encrypted data.": "Příspěvek je limitován na %s šífrovaných dat",
"Invalid data.": "Chybná data.", "Invalid data.": "Chybná data.",
"You are unlucky. Try again.": "Lituji, zkuste to znovu.", "You are unlucky. Try again.": "Lituji, zkuste to znovu.",
"Error saving comment. Sorry.": "Chyba při ukládání komentáře. Promiňte.", "Error saving comment. Sorry.": "Chyba při ukládání komentáře. Promiňte.",
"Error saving paste. Sorry.": "Chyba při ukládání příspěvku. Promiňte.", "Error saving document. Sorry.": "Chyba při ukládání příspěvku. Promiňte.",
"Invalid paste ID.": "Chybné ID příspěvku.", "Invalid document ID.": "Chybné ID příspěvku.",
"Paste is not of burn-after-reading type.": "Příspěvek není nastaven na smazání po přečtení.", "Document is not of burn-after-reading type.": "Příspěvek není nastaven na smazání po přečtení.",
"Wrong deletion token. Paste was not deleted.": "Chybný token pro odstranění. Příspěvek nebyl smazán.", "Wrong deletion token. Document was not deleted.": "Chybný token pro odstranění. Příspěvek nebyl smazán.",
"Paste was properly deleted.": "Příspěvek byl řádně smazán.", "Document was properly deleted.": "Příspěvek byl řádně smazán.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Pro fungování %s je vyžadován JavaScript. Omlouváme se za nepříjemnosti.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "Pro fungování %s je vyžadován JavaScript. Omlouváme se za nepříjemnosti.",
"%s requires a modern browser to work.": "Pro fungování %s je vyžadován moderní prohlížeč.", "%s requires a modern browser to work.": "Pro fungování %s je vyžadován moderní prohlížeč.",
"New": "Nový", "New": "Nový",
@@ -133,9 +133,9 @@
"Tento dokument expiruje za %d měsíců.", "Tento dokument expiruje za %d měsíců.",
"Tento dokument expiruje za %d měsíců." "Tento dokument expiruje za %d měsíců."
], ],
"Please enter the password for this paste:": "Zadejte prosím heslo k tomuto příspěvku:", "Please enter the password for this document:": "Zadejte prosím heslo k tomuto příspěvku:",
"Could not decrypt data (Wrong key?)": "Nepodařilo se dešifrovat data (Špatný klíč?)", "Could not decrypt data (Wrong key?)": "Nepodařilo se dešifrovat data (Špatný klíč?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Nepodařilo se odstranit příspěvek, nebyl uložen v režimu smazání po přečtení.", "Could not delete the document, it was not stored in burn after reading mode.": "Nepodařilo se odstranit příspěvek, nebyl uložen v režimu smazání po přečtení.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "POUZE PRO VAŠE OČI. Nezavírejte toto okno, tuto zprávu nelze znovu zobrazit.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "POUZE PRO VAŠE OČI. Nezavírejte toto okno, tuto zprávu nelze znovu zobrazit.",
"Could not decrypt comment; Wrong key?": "Nepodařilo se dešifrovat komentář; Špatný klíč?", "Could not decrypt comment; Wrong key?": "Nepodařilo se dešifrovat komentář; Špatný klíč?",
"Reply": "Odpovědět", "Reply": "Odpovědět",
@@ -150,20 +150,12 @@
"unknown status": "neznámý stav", "unknown status": "neznámý stav",
"server error or not responding": "Chyba na serveru nebo server neodpovídá", "server error or not responding": "Chyba na serveru nebo server neodpovídá",
"Could not post comment: %s": "Nelze odeslat komentář: %s", "Could not post comment: %s": "Nelze odeslat komentář: %s",
"Sending paste…": "Odesílání příspěvku…", "Sending document…": "Odesílání příspěvku…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Váš příspěvek je <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Stiskněte <kbd>Ctrl</kbd>+<kbd>c</kbd> pro zkopírování)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Váš příspěvek je <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Stiskněte <kbd>Ctrl</kbd>+<kbd>c</kbd> pro zkopírování)</span>",
"Delete data": "Odstranit data", "Delete data": "Odstranit data",
"Could not create paste: %s": "Nepodařilo se vytvořit příspěvek: %s", "Could not create document: %s": "Nepodařilo se vytvořit příspěvek: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Nepodařilo se dešifrovat příspěvek: V adrese chybí dešifrovací klíč (Nepoužili jste přesměrovač nebo zkracovač URL, který maže části URL?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Nepodařilo se dešifrovat příspěvek: V adrese chybí dešifrovací klíč (Nepoužili jste přesměrovač nebo zkracovač URL, který maže části URL?)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Stáhnout přílohu", "Download attachment": "Stáhnout přílohu",
"Cloned: '%s'": "Naklonováno: '%s'", "Cloned: '%s'": "Naklonováno: '%s'",
"The cloned file '%s' was attached to this paste.": "Naklonovaný soubor „%s“ byl připojen k tomuto příspěvku.", "The cloned file '%s' was attached to this document.": "Naklonovaný soubor „%s“ byl připojen k tomuto příspěvku.",
"Attach a file": "Připojit soubor", "Attach a file": "Připojit soubor",
"alternatively drag & drop a file or paste an image from the clipboard": "případně přetáhněte soubor nebo vložte obrázek ze schránky", "alternatively drag & drop a file or paste an image from the clipboard": "případně přetáhněte soubor nebo vložte obrázek ze schránky",
"File too large, to display a preview. Please download the attachment.": "Soubor je příliš velký pro zobrazení náhledu. Stáhněte si přílohu.", "File too large, to display a preview. Please download the attachment.": "Soubor je příliš velký pro zobrazení náhledu. Stáhněte si přílohu.",
@@ -193,11 +185,11 @@
"Decrypt": "Dešifrovat", "Decrypt": "Dešifrovat",
"Enter password": "Zadejte heslo", "Enter password": "Zadejte heslo",
"Loading…": "Načítání…", "Loading…": "Načítání…",
"Decrypting paste…": "Dešifruji příspěvek…", "Decrypting document…": "Dešifruji příspěvek…",
"Preparing new paste…": "Připravuji nový příspěvek…", "Preparing new document…": "Připravuji nový příspěvek…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Pokud tato zpráva nezmizí, podívejte se na <a href=\"%s\">tyto často kladené otázky pro řešení problémů</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Pokud tato zpráva nezmizí, podívejte se na <a href=\"%s\">tyto často kladené otázky pro řešení problémů</a>.",
"+++ no paste text +++": "+++ žádný text příspěvku +++", "+++ no document text +++": "+++ žádný text příspěvku +++",
"Could not get paste data: %s": "Nepodařilo se získat data příspěvku: %s", "Could not get document data: %s": "Nepodařilo se získat data příspěvku: %s",
"QR code": "QR kód", "QR code": "QR kód",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Tato stránka používá nezabezpečené HTTP připojení! Použijte ji prosím jen pro testování.", "This website is using an insecure HTTP connection! Please use it only for testing.": "Tato stránka používá nezabezpečené HTTP připojení! Použijte ji prosím jen pro testování.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Více informací naleznete <a href=\"%s\">v této položce FAQ</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "Více informací naleznete <a href=\"%s\">v této položce FAQ</a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "Šifrovaná poznámka ve službě %s", "Encrypted note on %s": "Šifrovaná poznámka ve službě %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Pro zobrazení poznámky navštivte tento odkaz. Přeposláním URL umožníte přístup také jiným lidem.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Pro zobrazení poznámky navštivte tento odkaz. Přeposláním URL umožníte přístup také jiným lidem.",
"URL shortener may expose your decrypt key in URL.": "Zkracovač URL může prozradit váš dešifrovací klíč v URL.", "URL shortener may expose your decrypt key in URL.": "Zkracovač URL může prozradit váš dešifrovací klíč v URL.",
"Save paste": "Uložit příspěvek", "URL shortener is enabled by default.": "Ve výchozím nastavení je zkracovač URL povolen.",
"Your IP is not authorized to create pastes.": "Vaše IP adresa nemá oprávnění k vytváření příspěvků.", "Save document": "Uložit příspěvek",
"Your IP is not authorized to create documents.": "Vaše IP adresa nemá oprávnění k vytváření příspěvků.",
"Trying to shorten a URL that isn't pointing at our instance.": "Pokus o zkrácení URL, které neodkazuje na naši instanci.", "Trying to shorten a URL that isn't pointing at our instance.": "Pokus o zkrácení URL, které neodkazuje na naši instanci.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Chyba volání YOURLS. Pravděpodobně chyba konfigurace, např. nesprávné či chybějící „apiurl“ nebo „signature“.", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Chyba volání YOURLS. Pravděpodobně chyba konfigurace, např. nesprávné či chybějící „apiurl“ nebo „signature“.",
"Error parsing YOURLS response.": "Chyba čtení odpovědi YOURLS.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Chyba čtení odpovědi YOURLS.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"This secret message can only be displayed once. Would you like to see it now?": "Tuto tajnou zprávu lze zobrazit pouze jednou. Chcete si ji prohlédnout teď?", "This secret message can only be displayed once. Would you like to see it now?": "Tuto tajnou zprávu lze zobrazit pouze jednou. Chcete si ji prohlédnout teď?",
"Yes, see it": "Ano, zobrazit", "Yes, see it": "Ano, zobrazit",
"Dark Mode": "Tmavý režim", "Dark Mode": "Tmavý režim",
"Error compressing paste, due to missing WebAssembly support.": "Chyba při komprimování příspěvku kvůli chybějící podpoře WebAssembly.", "Error compressing document, due to missing WebAssembly support.": "Chyba při komprimování příspěvku kvůli chybějící podpoře WebAssembly.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Chyba při dekomprimování příspěvku, váš prohlížeč nepodporuje WebAssembly. Pro zobrazení tohoto příspěvku prosím použijte jiný prohlížeč.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Chyba při dekomprimování příspěvku, váš prohlížeč nepodporuje WebAssembly. Pro zobrazení tohoto příspěvku prosím použijte jiný prohlížeč.",
"Start over": "Start over", "Start over": "Začít znovu",
"Paste copied to clipboard": "Paste copied to clipboard", "Document copied to clipboard": "Dokument zkopírován do schránky",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "Pro zkopírování dokumentu klikněte na tlačítko nebo použijte klávesovou zkratku schránky <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Copy link", "Copy link": "Zkopírovat odkaz",
"Link copied to clipboard": "Link copied to clipboard", "Link copied to clipboard": "Odkaz zkopírován do schránky",
"Paste text": "Paste text", "Document text": "Text dokumentu",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulátor funguje jako znak (pro přepnutí stiskněte <kbd>Ctrl</kbd>+<kbd>m</kbd> nebo <kbd>Esc</kbd>)",
"Theme": "Theme" "Show password": "Show password",
"Hide password": "Hide password",
"Theme": "Vzhled"
} }
+34 -38
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s ist ein minimalistischer, quelloffener \"Pastebin\"-artiger Dienst, bei dem der Server keinerlei Kenntnis der Inhalte hat. Die Daten werden %sim Browser%s mit 256 Bit AES ver- und entschlüsselt.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s ist ein minimalistischer, quelloffener \"Pastebin\"-artiger Dienst, bei dem der Server keinerlei Kenntnis der Inhalte hat. Die Daten werden %sim Browser%s mit 256 Bit AES ver- und entschlüsselt.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Weitere Informationen sind auf der <a href=\"https://privatebin.info/\">Projektseite</a> zu finden.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Weitere Informationen sind auf der <a href=\"https://privatebin.info/\">Projektseite</a> zu finden.",
"Because ignorance is bliss": "Was ich nicht weiß, macht mich nicht heiß", "Because ignorance is bliss": "Was ich nicht weiß, macht mich nicht heiß",
"Paste does not exist, has expired or has been deleted.": "Diesen Text gibt es nicht, er ist abgelaufen oder wurde gelöscht.", "Document does not exist, has expired or has been deleted.": "Dieses Dokument gibt es nicht, es ist abgelaufen oder wurde gelöscht.",
"%s requires php %s or above to work. Sorry.": "%s benötigt PHP %s oder höher, um zu funktionieren. Sorry.", "%s requires php %s or above to work. Sorry.": "%s benötigt PHP %s oder höher, um zu funktionieren. Sorry.",
"%s requires configuration section [%s] to be present in configuration file.": "%s benötigt den Konfigurationsabschnitt [%s] in der Konfigurationsdatei um zu funktionieren.", "%s requires configuration section [%s] to be present in configuration file.": "%s benötigt den Konfigurationsabschnitt [%s] in der Konfigurationsdatei um zu funktionieren.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Bitte warte %d Sekunden zwischen dem Absenden zweier Beiträge.", "Bitte warte %d Sekunden zwischen dem Absenden zweier Beiträge.",
"Bitte warte %d Sekunden zwischen dem Absenden zweier Beiträge." "Bitte warte %d Sekunden zwischen dem Absenden zweier Beiträge."
], ],
"Paste is limited to %s of encrypted data.": "Texte sind auf %s verschlüsselte Datenmenge beschränkt.", "Document is limited to %s of encrypted data.": "Texte sind auf %s verschlüsselte Datenmenge beschränkt.",
"Invalid data.": "Ungültige Daten.", "Invalid data.": "Ungültige Daten.",
"You are unlucky. Try again.": "Du hast Pech. Versuchs nochmal.", "You are unlucky. Try again.": "Du hast Pech. Versuchs nochmal.",
"Error saving comment. Sorry.": "Fehler beim Speichern des Kommentars. Sorry.", "Error saving comment. Sorry.": "Fehler beim Speichern des Kommentars. Sorry.",
"Error saving paste. Sorry.": "Fehler beim Speichern des Textes. Sorry.", "Error saving document. Sorry.": "Fehler beim Speichern des Textes. Sorry.",
"Invalid paste ID.": "Ungültige Text-ID.", "Invalid document ID.": "Ungültige Dokument-ID.",
"Paste is not of burn-after-reading type.": "Text ist kein \"Einmal\"-Typ.", "Document is not of burn-after-reading type.": "Dokument ist kein \"Einmal\"-Typ.",
"Wrong deletion token. Paste was not deleted.": "Falscher Lösch-Code. Text wurde nicht gelöscht.", "Wrong deletion token. Document was not deleted.": "Falscher Lösch-Code. Dokument wurde nicht gelöscht.",
"Paste was properly deleted.": "Text wurde erfolgreich gelöscht.", "Document was properly deleted.": "Dokument wurde erfolgreich gelöscht.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript ist eine Voraussetzung, um %s zu nutzen. Bitte entschuldige die Unannehmlichkeiten.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript ist eine Voraussetzung, um %s zu nutzen. Bitte entschuldige die Unannehmlichkeiten.",
"%s requires a modern browser to work.": "%s setzt einen modernen Browser voraus, um funktionieren zu können.", "%s requires a modern browser to work.": "%s setzt einen modernen Browser voraus, um funktionieren zu können.",
"New": "Neu", "New": "Neu",
@@ -133,9 +133,9 @@
"Dieses Dokument läuft in %d Monaten ab.", "Dieses Dokument läuft in %d Monaten ab.",
"Dieses Dokument läuft in %d Monaten ab." "Dieses Dokument läuft in %d Monaten ab."
], ],
"Please enter the password for this paste:": "Bitte gib das Passwort für diesen Text ein:", "Please enter the password for this document:": "Bitte gib das Passwort für dieses Dokument ein:",
"Could not decrypt data (Wrong key?)": "Konnte Daten nicht entschlüsseln (Falscher Schlüssel?)", "Could not decrypt data (Wrong key?)": "Konnte Daten nicht entschlüsseln (Falscher Schlüssel?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Konnte das Paste nicht löschen, es wurde nicht im Einmal-Modus gespeichert.", "Could not delete the document, it was not stored in burn after reading mode.": "Konnte das Document nicht löschen, es wurde nicht im Einmal-Modus gespeichert.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "DIESER TEXT IST NUR FÜR DICH GEDACHT. Schließe das Fenster nicht, diese Nachricht kann nur einmal geöffnet werden.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "DIESER TEXT IST NUR FÜR DICH GEDACHT. Schließe das Fenster nicht, diese Nachricht kann nur einmal geöffnet werden.",
"Could not decrypt comment; Wrong key?": "Konnte Kommentar nicht entschlüsseln; Falscher Schlüssel?", "Could not decrypt comment; Wrong key?": "Konnte Kommentar nicht entschlüsseln; Falscher Schlüssel?",
"Reply": "Antworten", "Reply": "Antworten",
@@ -150,20 +150,12 @@
"unknown status": "Unbekannter Grund", "unknown status": "Unbekannter Grund",
"server error or not responding": "Fehler auf dem Server oder keine Antwort vom Server", "server error or not responding": "Fehler auf dem Server oder keine Antwort vom Server",
"Could not post comment: %s": "Konnte Kommentar nicht senden: %s", "Could not post comment: %s": "Konnte Kommentar nicht senden: %s",
"Sending paste…": "Sende Paste…", "Sending document…": "Sende Document…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Dein Text ist unter <a id=\"pasteurl\" href=\"%s\">%s</a> zu finden <span id=\"copyhint\">(Drücke <kbd>Strg</kbd>+<kbd>c</kbd> um den Link zu kopieren)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Dein Dokument ist unter <a id=\"pasteurl\" href=\"%s\">%s</a> zu finden <span id=\"copyhint\">(Drücke <kbd>Strg</kbd>+<kbd>c</kbd> um den Link zu kopieren)</span>",
"Delete data": "Lösche Daten", "Delete data": "Lösche Daten",
"Could not create paste: %s": "Text konnte nicht erstellt werden: %s", "Could not create document: %s": "Dokument konnte nicht erstellt werden: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Konnte Paste nicht entschlüsseln: Der Schlüssel fehlt in der Adresse (Hast du eine Umleitung oder einen URL-Verkürzer benutzt, der Teile der Adresse entfernt?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Konnte Document nicht entschlüsseln: Der Schlüssel fehlt in der Adresse (Hast du eine Umleitung oder einen URL-Verkürzer benutzt, der Teile der Adresse entfernt?)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Anhang herunterladen", "Download attachment": "Anhang herunterladen",
"Cloned: '%s'": "Geklont: '%s'", "Cloned: '%s'": "Geklont: '%s'",
"The cloned file '%s' was attached to this paste.": "Die geklonte Datei '%s' wurde angehängt.", "The cloned file '%s' was attached to this document.": "Die geklonte Datei '%s' wurde angehängt.",
"Attach a file": "Datei anhängen", "Attach a file": "Datei anhängen",
"alternatively drag & drop a file or paste an image from the clipboard": "Eine Datei kann auch durch ziehen und loslassen ausgewählt oder ein Bild aus der Zwischenablage einfügt werden.", "alternatively drag & drop a file or paste an image from the clipboard": "Eine Datei kann auch durch ziehen und loslassen ausgewählt oder ein Bild aus der Zwischenablage einfügt werden.",
"File too large, to display a preview. Please download the attachment.": "Datei zu groß, um als Vorschau angezeigt zu werden. Bitte Anhang herunterladen.", "File too large, to display a preview. Please download the attachment.": "Datei zu groß, um als Vorschau angezeigt zu werden. Bitte Anhang herunterladen.",
@@ -193,11 +185,11 @@
"Decrypt": "Entschlüsseln", "Decrypt": "Entschlüsseln",
"Enter password": "Passwort eingeben", "Enter password": "Passwort eingeben",
"Loading…": "Lädt…", "Loading…": "Lädt…",
"Decrypting paste…": "Entschlüssle Text…", "Decrypting document…": "Entschlüssle Text…",
"Preparing new paste…": "Bereite neuen Text vor…", "Preparing new document…": "Bereite neues Dokument vor…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Wenn diese Nachricht nicht mehr verschwindet, schau bitte in <a href=\"%s\">die FAQ</a> (Englisch), um zu sehen, wie der Fehler behoben werden kann.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Wenn diese Nachricht nicht mehr verschwindet, schau bitte in <a href=\"%s\">die FAQ</a> (Englisch), um zu sehen, wie der Fehler behoben werden kann.",
"+++ no paste text +++": "+++ kein Paste-Text +++", "+++ no document text +++": "+++ kein Text im Dokument +++",
"Could not get paste data: %s": "Text konnte nicht geladen werden: %s", "Could not get document data: %s": "Dokument konnte nicht geladen werden: %s",
"QR code": "QR code", "QR code": "QR code",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Diese Webseite verwendet eine unsichere HTTP Verbindung! Bitte benutze sie nur zum Testen.", "This website is using an insecure HTTP connection! Please use it only for testing.": "Diese Webseite verwendet eine unsichere HTTP Verbindung! Bitte benutze sie nur zum Testen.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "<a href=\"%s\">Besuche diesen FAQ Eintrag</a> für weitere Informationen dazu.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "<a href=\"%s\">Besuche diesen FAQ Eintrag</a> für weitere Informationen dazu.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "Verschlüsselte Notiz auf %s", "Encrypted note on %s": "Verschlüsselte Notiz auf %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Besuche diesen Link um das Dokument zu sehen. Wird die URL an eine andere Person gegeben, so kann diese Person ebenfalls auf dieses Dokument zugreifen.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Besuche diesen Link um das Dokument zu sehen. Wird die URL an eine andere Person gegeben, so kann diese Person ebenfalls auf dieses Dokument zugreifen.",
"URL shortener may expose your decrypt key in URL.": "Der URL-Verkürzer kann den Schlüssel in der URL enthüllen.", "URL shortener may expose your decrypt key in URL.": "Der URL-Verkürzer kann den Schlüssel in der URL enthüllen.",
"Save paste": "Text speichern", "URL shortener is enabled by default.": "URL-Verkürzung ist standardmäßig aktiviert.",
"Your IP is not authorized to create pastes.": "Deine IP ist nicht berechtigt, Texte zu erstellen.", "Save document": "Dokument speichern",
"Your IP is not authorized to create documents.": "Deine IP ist nicht berechtigt, Texte zu erstellen.",
"Trying to shorten a URL that isn't pointing at our instance.": "Versuch eine URL zu verkürzen, die nicht auf unsere Instanz zeigt.", "Trying to shorten a URL that isn't pointing at our instance.": "Versuch eine URL zu verkürzen, die nicht auf unsere Instanz zeigt.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Fehler beim Aufruf von YOURLS. Wahrscheinlich ein Konfigurationsproblem, wie eine falsche oder fehlende \"apiurl\" oder \"signature\".", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Fehler beim Aufruf des Proxys: Proxy-URL ist leer. Wahrscheinlich ein Konfigurationsproblem, wie eine falsche oder fehlende Schlüssel-Werte.",
"Error parsing YOURLS response.": "Fehler beim Verarbeiten der YOURLS-Antwort.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Fehler beim Aufruf des Proxys: Fehler beim Verarbeiten der Proxy-Antwort. Wahrscheinlich ein Konfigurationsproblem, wie eine falsche oder fehlende Schlüssel-Werte.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Fehler beim Aufruf des Proxys: Fehlerhafte Antwort. Wahrscheinlich ein Konfigurationsproblem, wie eine falsche oder fehlende Schlüssel-Werte.",
"This secret message can only be displayed once. Would you like to see it now?": "Texte des \"Einmal\"-Typs können nach dem Öffnen nur einmal angezeigt werden. Möchtest Du ihn jetzt einsehen?", "This secret message can only be displayed once. Would you like to see it now?": "Texte des \"Einmal\"-Typs können nach dem Öffnen nur einmal angezeigt werden. Möchtest Du ihn jetzt einsehen?",
"Yes, see it": "Ja, jetzt einsehen", "Yes, see it": "Ja, jetzt einsehen",
"Dark Mode": "Nachtmodus", "Dark Mode": "Nachtmodus",
"Error compressing paste, due to missing WebAssembly support.": "Fehler beim Komprimieren des Textes, da WebAssembly-Unterstützung fehlt.", "Error compressing document, due to missing WebAssembly support.": "Fehler beim Komprimieren des Textes, da WebAssembly-Unterstützung fehlt.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Fehler beim Dekomprimieren des Textes. Dein Browser unterstützt WebAssembly nicht. Bitte verwende einen anderen Browser, um diesen Text anzuzeigen.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Fehler beim Dekomprimieren des Dokumentes. Dein Browser unterstützt WebAssembly nicht. Bitte verwende einen anderen Browser, um dieses Dokument anzuzeigen.",
"Start over": "Neuen Text erstellen", "Start over": "Neues Dokument erstellen",
"Paste copied to clipboard": "Text wurde in Zwischenablage kopiert.", "Document copied to clipboard": "Dokument wurde in Zwischenablage kopiert.",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "Zum Kopieren des Textes drücken Sie die Kopieren-Schaltfläche oder verwenden Sie die Tastenkombination <kbd>Strg</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "Zum Kopieren des Textes drücken Sie die Kopieren-Schaltfläche oder verwenden Sie die Tastenkombination <kbd>Strg</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Verknüpfung kopieren", "Copy link": "Verknüpfung kopieren",
"Link copied to clipboard": "Verknüpfung wurde in die Zwischenablage kopiert.", "Link copied to clipboard": "Verknüpfung wurde in die Zwischenablage kopiert.",
"Paste text": "Text", "Document text": "Text des Dokuments",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulatortaste als Zeichen interpretieren (Umschalten durch <kbd>Strg</kbd>+<kbd>m</kbd> oder <kbd>Esc</kbd>)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulatortaste als Zeichen interpretieren (Umschalten durch <kbd>Strg</kbd>+<kbd>m</kbd> oder <kbd>Esc</kbd>)",
"Theme": "Theme" "Show password": "Passwort anzeigen",
"Hide password": "Passwort verbergen",
"Theme": "Design"
} }
+32 -36
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "Το %s αποτελεί ένα εργαλείο επικόλλησης δεδομένων στο διαδίκτυο, που βασίζεται σε λογισμικό ανοιχτού κώδικα. Ο διακομιστής έχει πλήρη άγνοια αυτών των δεδομένων, τα οποία από/κρυπτογραφούνται %sστο πρόγραμμα περιήγησης%s, χρησιμοποιώντας τη μέθοδο 256-bits AES.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "Το %s αποτελεί ένα εργαλείο επικόλλησης δεδομένων στο διαδίκτυο, που βασίζεται σε λογισμικό ανοιχτού κώδικα. Ο διακομιστής έχει πλήρη άγνοια αυτών των δεδομένων, τα οποία από/κρυπτογραφούνται %sστο πρόγραμμα περιήγησης%s, χρησιμοποιώντας τη μέθοδο 256-bits AES.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Περισσότερες πληροφορίες στον <a href=\"https://privatebin.info/\">ιστότοπο του εργαλείου</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Περισσότερες πληροφορίες στον <a href=\"https://privatebin.info/\">ιστότοπο του εργαλείου</a>.",
"Because ignorance is bliss": "Επειδή η άγνοια είναι ευτυχία", "Because ignorance is bliss": "Επειδή η άγνοια είναι ευτυχία",
"Paste does not exist, has expired or has been deleted.": "Η επικόλληση δεν υπάρχει, έληξε ή διαγράφηκε", "Document does not exist, has expired or has been deleted.": "Η επικόλληση δεν υπάρχει, έληξε ή διαγράφηκε",
"%s requires php %s or above to work. Sorry.": "%s απαιτεί php %s ή νεότερη για να λειτουργήσει. Συγγνώμη.", "%s requires php %s or above to work. Sorry.": "%s απαιτεί php %s ή νεότερη για να λειτουργήσει. Συγγνώμη.",
"%s requires configuration section [%s] to be present in configuration file.": "%s απαιτεί οι ρυθμίσεις [%s] να υπάρχουν στο αρχείο ρυθμίσεων.", "%s requires configuration section [%s] to be present in configuration file.": "%s απαιτεί οι ρυθμίσεις [%s] να υπάρχουν στο αρχείο ρυθμίσεων.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Παρακαλώ περιμένετε %d δευτερόλεπτα μεταξύ κάθε επικόλλησης.", "Παρακαλώ περιμένετε %d δευτερόλεπτα μεταξύ κάθε επικόλλησης.",
"Παρακαλώ περιμένετε %d δευτερόλεπτα μεταξύ κάθε επικόλλησης." "Παρακαλώ περιμένετε %d δευτερόλεπτα μεταξύ κάθε επικόλλησης."
], ],
"Paste is limited to %s of encrypted data.": "Η επικόλληση είναι περιορισμένη σε %s κρυπτογραφημένων δεδομένων.", "Document is limited to %s of encrypted data.": "Η επικόλληση είναι περιορισμένη σε %s κρυπτογραφημένων δεδομένων.",
"Invalid data.": "Λάθος δεδομένα.", "Invalid data.": "Λάθος δεδομένα.",
"You are unlucky. Try again.": "Ατυχήσατε. Προσπαθήστε πάλι.", "You are unlucky. Try again.": "Ατυχήσατε. Προσπαθήστε πάλι.",
"Error saving comment. Sorry.": "Λάθος στην αποθήκευση του σχόλιου. Συγγνώμη.", "Error saving comment. Sorry.": "Λάθος στην αποθήκευση του σχόλιου. Συγγνώμη.",
"Error saving paste. Sorry.": "Λάθος στην αποθήκευση της επικόλλησης. Συγγνώμη.", "Error saving document. Sorry.": "Λάθος στην αποθήκευση της επικόλλησης. Συγγνώμη.",
"Invalid paste ID.": "Λάθος αναγνωριστικό επικόλλησης.", "Invalid document ID.": "Λάθος αναγνωριστικό επικόλλησης.",
"Paste is not of burn-after-reading type.": "Η επικόληση δεν είναι τύπου καταστροφή-μετά-το-διάβασμα.", "Document is not of burn-after-reading type.": "Η επικόληση δεν είναι τύπου καταστροφή-μετά-το-διάβασμα.",
"Wrong deletion token. Paste was not deleted.": "Λάθος αναγνωριστικό διαγραφής. Η επικόλληση δεν διαγράφηκε.", "Wrong deletion token. Document was not deleted.": "Λάθος αναγνωριστικό διαγραφής. Η επικόλληση δεν διαγράφηκε.",
"Paste was properly deleted.": "Η επικόλληση διαγράφηκε επιτυχώς.", "Document was properly deleted.": "Η επικόλληση διαγράφηκε επιτυχώς.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Η JavaScript είναι απαραίτητη για να λειτουργήσει το %s. Συγγνώμη για την ταλαιπωρία.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "Η JavaScript είναι απαραίτητη για να λειτουργήσει το %s. Συγγνώμη για την ταλαιπωρία.",
"%s requires a modern browser to work.": "%s απαιτεί σύγχρονο φυλλομετρητή (browser) για να λειτουργήσει.", "%s requires a modern browser to work.": "%s απαιτεί σύγχρονο φυλλομετρητή (browser) για να λειτουργήσει.",
"New": "Νέο", "New": "Νέο",
@@ -133,9 +133,9 @@
"Αυτό το έγγραφο θα λήξει σε %d μήνες.", "Αυτό το έγγραφο θα λήξει σε %d μήνες.",
"Αυτό το έγγραφο θα λήξει σε %d μήνες." "Αυτό το έγγραφο θα λήξει σε %d μήνες."
], ],
"Please enter the password for this paste:": "Παρακαλώ εισάγετε τον κωδικό για αυτή την επικόληση:", "Please enter the password for this document:": "Παρακαλώ εισάγετε τον κωδικό για αυτή την επικόληση:",
"Could not decrypt data (Wrong key?)": "Δεν ήταν δυνατή η αποκρυπτογράφηση των δεδομένων (πιθανώς λανθασμένο κλειδί;)", "Could not decrypt data (Wrong key?)": "Δεν ήταν δυνατή η αποκρυπτογράφηση των δεδομένων (πιθανώς λανθασμένο κλειδί;)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Δεν ήταν δυνατή η διαγραφή της επικόλλησης, δεν ήταν αποθηκευμένη σε μορφή διαγραφής μετά την ανάγνωση.", "Could not delete the document, it was not stored in burn after reading mode.": "Δεν ήταν δυνατή η διαγραφή της επικόλλησης, δεν ήταν αποθηκευμένη σε μορφή διαγραφής μετά την ανάγνωση.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "ΜΟΝΟ ΓΙΑ ΕΣΑΣ. Μην κλείσετε το αυτό το παράθυρο, αυτό το μήνυμα δεν μπορεί να εμφανιστεί ξανά.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "ΜΟΝΟ ΓΙΑ ΕΣΑΣ. Μην κλείσετε το αυτό το παράθυρο, αυτό το μήνυμα δεν μπορεί να εμφανιστεί ξανά.",
"Could not decrypt comment; Wrong key?": "Δεν ήταν δυνατή η αποκρυπτογράφηση του σχολίου. Λάθος κλειδί;", "Could not decrypt comment; Wrong key?": "Δεν ήταν δυνατή η αποκρυπτογράφηση του σχολίου. Λάθος κλειδί;",
"Reply": "Απάντηση", "Reply": "Απάντηση",
@@ -150,20 +150,12 @@
"unknown status": "άγνωστη κατάσταση", "unknown status": "άγνωστη κατάσταση",
"server error or not responding": "Πρόβλημα του διακομιστή ή δεν υπάρχει απάντηση", "server error or not responding": "Πρόβλημα του διακομιστή ή δεν υπάρχει απάντηση",
"Could not post comment: %s": "Δεν ήταν δυνατή η δημοσίευση του σχολίου: %s", "Could not post comment: %s": "Δεν ήταν δυνατή η δημοσίευση του σχολίου: %s",
"Sending paste…": "Η επικόλληση αποστέλλεται…", "Sending document…": "Η επικόλληση αποστέλλεται…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Η επικόλλησή σας είναι <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Πληκτρολογήστε <kbd>Ctrl</kbd>+<kbd>c</kbd> για αντιγραφή)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Η επικόλλησή σας είναι <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Πληκτρολογήστε <kbd>Ctrl</kbd>+<kbd>c</kbd> για αντιγραφή)</span>",
"Delete data": "Διαγραφή δεδομένων", "Delete data": "Διαγραφή δεδομένων",
"Could not create paste: %s": "Δεν ήταν δυνατή η δημιουργία επικόλλησης: %s", "Could not create document: %s": "Δεν ήταν δυνατή η δημιουργία επικόλλησης: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Δεν ήταν δυνατή η αποκρυπτογράφηση της επικόλλησης: Το κλειδί αποκρυπτογράφησης λείπει από τον σύνδεσμο (Μήπως χρησιμοποιήσατε ανακατεύθυνση συνδέσμου ή υπηρεσία συντόμευσης συνδέσμου;)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Δεν ήταν δυνατή η αποκρυπτογράφηση της επικόλλησης: Το κλειδί αποκρυπτογράφησης λείπει από τον σύνδεσμο (Μήπως χρησιμοποιήσατε ανακατεύθυνση συνδέσμου ή υπηρεσία συντόμευσης συνδέσμου;)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Λήψη επισυναπτόμενου", "Download attachment": "Λήψη επισυναπτόμενου",
"Cloned: '%s'": "Κλώνος: '%s'", "Cloned: '%s'": "Κλώνος: '%s'",
"The cloned file '%s' was attached to this paste.": "Το κλωνοποιημένο αρχείο '%s' επισυνάφθηκε στ αυτή την επικόλληση.", "The cloned file '%s' was attached to this document.": "Το κλωνοποιημένο αρχείο '%s' επισυνάφθηκε στ αυτή την επικόλληση.",
"Attach a file": "Επισύναψη αρχείου", "Attach a file": "Επισύναψη αρχείου",
"alternatively drag & drop a file or paste an image from the clipboard": "εναλλακτικά σύρετε το αρχείο ή επικολλήστε μία εικόνα από το clipboard", "alternatively drag & drop a file or paste an image from the clipboard": "εναλλακτικά σύρετε το αρχείο ή επικολλήστε μία εικόνα από το clipboard",
"File too large, to display a preview. Please download the attachment.": "Πολύ μεγάλο αρχείο για προεπισκόπηση. Παρακαλώ κατεβάστε το επισυναπτόμενο.", "File too large, to display a preview. Please download the attachment.": "Πολύ μεγάλο αρχείο για προεπισκόπηση. Παρακαλώ κατεβάστε το επισυναπτόμενο.",
@@ -193,11 +185,11 @@
"Decrypt": "Αποκρυπτογράφηση", "Decrypt": "Αποκρυπτογράφηση",
"Enter password": "Εισαγωγή κωδικού", "Enter password": "Εισαγωγή κωδικού",
"Loading…": "Φόρτωση…", "Loading…": "Φόρτωση…",
"Decrypting paste…": "Η επικόλληση αποκρυπτογραφείται…", "Decrypting document…": "Η επικόλληση αποκρυπτογραφείται…",
"Preparing new paste…": "Προετοιμασία νέας επικόλλησης…", "Preparing new document…": "Προετοιμασία νέας επικόλλησης…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Σε περίπτωση που αυτό το μήνυμα δεν εξαφανίζεται παρακαλώ κοιτάξτε στις <a href=\"%s\">Ερωταποκρίσεις για πληροφορίες στην αντιμετώπιση προβλημάτων</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Σε περίπτωση που αυτό το μήνυμα δεν εξαφανίζεται παρακαλώ κοιτάξτε στις <a href=\"%s\">Ερωταποκρίσεις για πληροφορίες στην αντιμετώπιση προβλημάτων</a>.",
"+++ no paste text +++": "+++ Δεν υπάρχει επικόλληση +++", "+++ no document text +++": "+++ Δεν υπάρχει επικόλληση +++",
"Could not get paste data: %s": "Δεν ήταν δυνατή η λήψη της επικόλλησης: %s", "Could not get document data: %s": "Δεν ήταν δυνατή η λήψη της επικόλλησης: %s",
"QR code": "QR εικονοστοιχειοσειρά", "QR code": "QR εικονοστοιχειοσειρά",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Αυτός ο ιστότοπος χρησιμοποιεί μη ασφαλή HTTP σύνδεση! Παρακαλώ χρησιμοποιήστε το μόνο δοκιμαστικά.", "This website is using an insecure HTTP connection! Please use it only for testing.": "Αυτός ο ιστότοπος χρησιμοποιεί μη ασφαλή HTTP σύνδεση! Παρακαλώ χρησιμοποιήστε το μόνο δοκιμαστικά.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Για περισσότερες πληροφορίες <a href=\"%s\">δείτε τις ερωταπαντήσεις</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "Για περισσότερες πληροφορίες <a href=\"%s\">δείτε τις ερωταπαντήσεις</a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "Κρυπτογραφημένο μήνυμα από το %s", "Encrypted note on %s": "Κρυπτογραφημένο μήνυμα από το %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Επισκεφτείτε αυτόν τον σύνδεσμο για να δείτε το μήνυμα. Δίνοντας τον σύνδεσμο σε οποιονδήποτε, του επιτρέπετε να επισκεφτεί το μήνυμα επίσης.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Επισκεφτείτε αυτόν τον σύνδεσμο για να δείτε το μήνυμα. Δίνοντας τον σύνδεσμο σε οποιονδήποτε, του επιτρέπετε να επισκεφτεί το μήνυμα επίσης.",
"URL shortener may expose your decrypt key in URL.": "Συντομευτές συνδέσμων πιθανώς να δημοσιοποιήσουν το κλειδί αποκρυπτογράφισης στον σύνδεσμο.", "URL shortener may expose your decrypt key in URL.": "Συντομευτές συνδέσμων πιθανώς να δημοσιοποιήσουν το κλειδί αποκρυπτογράφισης στον σύνδεσμο.",
"Save paste": "Αποθήκευση επικόλλησης", "URL shortener is enabled by default.": "URL shortener is enabled by default.",
"Your IP is not authorized to create pastes.": "Η IP σας δεν επιτρέπεται να δημιουργεί επικολλήσεις.", "Save document": "Αποθήκευση επικόλλησης",
"Your IP is not authorized to create documents.": "Η IP σας δεν επιτρέπεται να δημιουργεί επικολλήσεις.",
"Trying to shorten a URL that isn't pointing at our instance.": "Έγινε προσπάθεια συντόμευσης ενός URL που δε δείχνει προς τη δική μας υπηρεσία.", "Trying to shorten a URL that isn't pointing at our instance.": "Έγινε προσπάθεια συντόμευσης ενός URL που δε δείχνει προς τη δική μας υπηρεσία.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Σφάλμα κατά την κλήση YOURLS. Πιθανώς ένα ζήτημα διαμόρφωσης, όπως λάθος ή λείπει \"apiurl\" ή \"υπογραφή\".", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Σφάλμα κατά την κλήση YOURLS. Πιθανώς ένα ζήτημα διαμόρφωσης, όπως λάθος ή λείπει \"apiurl\" ή \"υπογραφή\".",
"Error parsing YOURLS response.": "Σφάλμα ανάλυσης της απόκρισης YOURLS.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Σφάλμα ανάλυσης της απόκρισης YOURLS.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"This secret message can only be displayed once. Would you like to see it now?": "Αυτό το μυστικό μήνυμα μπορεί να εμφανιστεί μόνο μία φορά. Θα θέλατε να το δείτε τώρα;", "This secret message can only be displayed once. Would you like to see it now?": "Αυτό το μυστικό μήνυμα μπορεί να εμφανιστεί μόνο μία φορά. Θα θέλατε να το δείτε τώρα;",
"Yes, see it": "Ναι, δείτε το", "Yes, see it": "Ναι, δείτε το",
"Dark Mode": "Σκοτεινό Θέμα", "Dark Mode": "Σκοτεινό Θέμα",
"Error compressing paste, due to missing WebAssembly support.": "Σφάλμα συμπίεσης επικόλλησης, λόγω έλλειψης υποστήριξης WebAssembly.", "Error compressing document, due to missing WebAssembly support.": "Σφάλμα συμπίεσης επικόλλησης, λόγω έλλειψης υποστήριξης WebAssembly.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Σφάλμα αποσυμπίεσης της επικόλλησης, ο περιηγητής σας δεν υποστηρίζει WebAssembly. Παρακαλούμε χρησιμοποιήστε έναν άλλο περιηγητή για να δείτε αυτή την επικόλληση.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Σφάλμα αποσυμπίεσης της επικόλλησης, ο περιηγητής σας δεν υποστηρίζει WebAssembly. Παρακαλούμε χρησιμοποιήστε έναν άλλο περιηγητή για να δείτε αυτή την επικόλληση.",
"Start over": "Start over", "Start over": "Start over",
"Paste copied to clipboard": "Paste copied to clipboard", "Document copied to clipboard": "Document copied to clipboard",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Copy link", "Copy link": "Copy link",
"Link copied to clipboard": "Link copied to clipboard", "Link copied to clipboard": "Link copied to clipboard",
"Paste text": "Paste text", "Document text": "Document text",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)",
"Show password": "Show password",
"Hide password": "Hide password",
"Theme": "Theme" "Theme": "Theme"
} }
+32 -36
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "More information on the <a href=\"https://privatebin.info/\">project page</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "More information on the <a href=\"https://privatebin.info/\">project page</a>.",
"Because ignorance is bliss": "Because ignorance is bliss", "Because ignorance is bliss": "Because ignorance is bliss",
"Paste does not exist, has expired or has been deleted.": "Paste does not exist, has expired or has been deleted.", "Document does not exist, has expired or has been deleted.": "Document does not exist, has expired or has been deleted.",
"%s requires php %s or above to work. Sorry.": "%s requires php %s or above to work. Sorry.", "%s requires php %s or above to work. Sorry.": "%s requires php %s or above to work. Sorry.",
"%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.", "%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Please wait %d seconds between each post. (4th plural)", "Please wait %d seconds between each post. (4th plural)",
"Please wait %d seconds between each post. (5th plural)" "Please wait %d seconds between each post. (5th plural)"
], ],
"Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.", "Document is limited to %s of encrypted data.": "Document is limited to %s of encrypted data.",
"Invalid data.": "Invalid data.", "Invalid data.": "Invalid data.",
"You are unlucky. Try again.": "You are unlucky. Try again.", "You are unlucky. Try again.": "You are unlucky. Try again.",
"Error saving comment. Sorry.": "Error saving comment. Sorry.", "Error saving comment. Sorry.": "Error saving comment. Sorry.",
"Error saving paste. Sorry.": "Error saving paste. Sorry.", "Error saving document. Sorry.": "Error saving document. Sorry.",
"Invalid paste ID.": "Invalid paste ID.", "Invalid document ID.": "Invalid document ID.",
"Paste is not of burn-after-reading type.": "Paste is not of burn-after-reading type.", "Document is not of burn-after-reading type.": "Document is not of burn-after-reading type.",
"Wrong deletion token. Paste was not deleted.": "Wrong deletion token. Paste was not deleted.", "Wrong deletion token. Document was not deleted.": "Wrong deletion token. Document was not deleted.",
"Paste was properly deleted.": "Paste was properly deleted.", "Document was properly deleted.": "Document was properly deleted.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.",
"%s requires a modern browser to work.": "%s requires a modern browser to work.", "%s requires a modern browser to work.": "%s requires a modern browser to work.",
"New": "New", "New": "New",
@@ -133,9 +133,9 @@
"This document will expire in %d months. (4th plural)", "This document will expire in %d months. (4th plural)",
"This document will expire in %d months. (5th plural)" "This document will expire in %d months. (5th plural)"
], ],
"Please enter the password for this paste:": "Please enter the password for this paste:", "Please enter the password for this document:": "Please enter the password for this document:",
"Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)", "Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Could not delete the paste, it was not stored in burn after reading mode.", "Could not delete the document, it was not stored in burn after reading mode.": "Could not delete the document, it was not stored in burn after reading mode.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.",
"Could not decrypt comment; Wrong key?": "Could not decrypt comment; Wrong key?", "Could not decrypt comment; Wrong key?": "Could not decrypt comment; Wrong key?",
"Reply": "Reply", "Reply": "Reply",
@@ -150,20 +150,12 @@
"unknown status": "unknown status", "unknown status": "unknown status",
"server error or not responding": "server error or not responding", "server error or not responding": "server error or not responding",
"Could not post comment: %s": "Could not post comment: %s", "Could not post comment: %s": "Could not post comment: %s",
"Sending paste…": "Sending paste…", "Sending document…": "Sending document…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>",
"Delete data": "Delete data", "Delete data": "Delete data",
"Could not create paste: %s": "Could not create paste: %s", "Could not create document: %s": "Could not create document: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Download attachment", "Download attachment": "Download attachment",
"Cloned: '%s'": "Cloned: '%s'", "Cloned: '%s'": "Cloned: '%s'",
"The cloned file '%s' was attached to this paste.": "The cloned file '%s' was attached to this paste.", "The cloned file '%s' was attached to this document.": "The cloned file '%s' was attached to this document.",
"Attach a file": "Attach a file", "Attach a file": "Attach a file",
"alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard", "alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard",
"File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.", "File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.",
@@ -193,11 +185,11 @@
"Decrypt": "Decrypt", "Decrypt": "Decrypt",
"Enter password": "Enter password", "Enter password": "Enter password",
"Loading…": "Loading…", "Loading…": "Loading…",
"Decrypting paste…": "Decrypting paste…", "Decrypting document…": "Decrypting document…",
"Preparing new paste…": "Preparing new paste…", "Preparing new document…": "Preparing new document…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.",
"+++ no paste text +++": "+++ no paste text +++", "+++ no document text +++": "+++ no document text +++",
"Could not get paste data: %s": "Could not get paste data: %s", "Could not get document data: %s": "Could not get document data: %s",
"QR code": "QR code", "QR code": "QR code",
"This website is using an insecure HTTP connection! Please use it only for testing.": "This website is using an insecure HTTP connection! Please use it only for testing.", "This website is using an insecure HTTP connection! Please use it only for testing.": "This website is using an insecure HTTP connection! Please use it only for testing.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "Encrypted note on %s", "Encrypted note on %s": "Encrypted note on %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.", "URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
"Save paste": "Save paste", "URL shortener is enabled by default.": "URL shortener is enabled by default.",
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.", "Save document": "Save document",
"Your IP is not authorized to create documents.": "Your IP is not authorized to create documents.",
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", "Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.",
"Error parsing YOURLS response.": "Error parsing YOURLS response.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?", "This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
"Yes, see it": "Yes, see it", "Yes, see it": "Yes, see it",
"Dark Mode": "Dark Mode", "Dark Mode": "Dark Mode",
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.", "Error compressing document, due to missing WebAssembly support.": "Error compressing document, due to missing WebAssembly support.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.",
"Start over": "Start over", "Start over": "Start over",
"Paste copied to clipboard": "Paste copied to clipboard", "Document copied to clipboard": "Document copied to clipboard",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Copy link", "Copy link": "Copy link",
"Link copied to clipboard": "Link copied to clipboard", "Link copied to clipboard": "Link copied to clipboard",
"Paste text": "Paste text", "Document text": "Document text",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)",
"Show password": "Show password",
"Hide password": "Hide password",
"Theme": "Theme" "Theme": "Theme"
} }
+37 -41
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s es un \"pastebin\" en línea minimalista de código abierto, donde el servidor no tiene ningún conocimiento de los datos guardados. Los datos son cifrados/descifrados %sen el navegador%s usando 256 bits AES.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s es un \"pastebin\" en línea minimalista de código abierto, donde el servidor no tiene ningún conocimiento de los datos guardados. Los datos son cifrados/descifrados %sen el navegador%s usando 256 bits AES.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Más información en la <a href=\"https://privatebin.info/\">página del proyecto</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Más información en la <a href=\"https://privatebin.info/\">página del proyecto</a>.",
"Because ignorance is bliss": "Porque la ignorancia es felicidad", "Because ignorance is bliss": "Porque la ignorancia es felicidad",
"Paste does not exist, has expired or has been deleted.": "El \"paste\" no existe, ha caducado o ha sido eliminado.", "Document does not exist, has expired or has been deleted.": "El documento no existe, ha caducado o ha sido eliminado.",
"%s requires php %s or above to work. Sorry.": "%s requiere php %s o superior para funcionar. Lo siento.", "%s requires php %s or above to work. Sorry.": "%s requiere php %s o superior para funcionar. Lo siento.",
"%s requires configuration section [%s] to be present in configuration file.": "%s requiere que la sección de configuración [%s] esté presente en el archivo de configuración.", "%s requires configuration section [%s] to be present in configuration file.": "%s requiere que la sección de configuración [%s] esté presente en el archivo de configuración.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Por favor espere %d segundos entre cada publicación.", "Por favor espere %d segundos entre cada publicación.",
"Por favor espere %d segundos entre cada publicación." "Por favor espere %d segundos entre cada publicación."
], ],
"Paste is limited to %s of encrypted data.": "El \"paste\" está limitado a %s de datos cifrados.", "Document is limited to %s of encrypted data.": "El documento está limitado a %s de datos cifrados.",
"Invalid data.": "Datos inválidos.", "Invalid data.": "Datos inválidos.",
"You are unlucky. Try again.": "Tienes mala suerte. Inténtalo de nuevo", "You are unlucky. Try again.": "Tienes mala suerte. Inténtalo de nuevo",
"Error saving comment. Sorry.": "Error al guardar el comentario. Lo siento.", "Error saving comment. Sorry.": "Error al guardar el comentario. Lo siento.",
"Error saving paste. Sorry.": "Error al guardar el \"paste\". Lo siento", "Error saving document. Sorry.": "Error al guardar el documento. Lo siento",
"Invalid paste ID.": "ID del \"paste\" inválido.", "Invalid document ID.": "ID del documento inválido.",
"Paste is not of burn-after-reading type.": "El \"paste\" no es del tipo \"destruir despues de leer\".", "Document is not of burn-after-reading type.": "El documento no es del tipo \"destruir despues de leer\".",
"Wrong deletion token. Paste was not deleted.": "Token de eliminación erróneo. El \"paste\" no fue eliminado.", "Wrong deletion token. Document was not deleted.": "Token de eliminación erróneo. El documento no fue eliminado.",
"Paste was properly deleted.": "El \"paste\" se ha eliminado correctamente.", "Document was properly deleted.": "El documento se ha eliminado correctamente.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript es necesario para que %s funcione. Sentimos los inconvenientes ocasionados.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript es necesario para que %s funcione. Sentimos los inconvenientes ocasionados.",
"%s requires a modern browser to work.": "%s requiere un navegador moderno para funcionar.", "%s requires a modern browser to work.": "%s requiere un navegador moderno para funcionar.",
"New": "Nuevo", "New": "Nuevo",
@@ -133,9 +133,9 @@
"Este documento caducará en %d meses", "Este documento caducará en %d meses",
"Este documento caducará en %d meses" "Este documento caducará en %d meses"
], ],
"Please enter the password for this paste:": "Por favor ingrese la contraseña para este \"paste\":", "Please enter the password for this document:": "Por favor ingrese la contraseña para este documento:",
"Could not decrypt data (Wrong key?)": "No fue posible descifrar los datos (¿Clave errónea?)", "Could not decrypt data (Wrong key?)": "No fue posible descifrar los datos (¿Clave errónea?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "No fue posible eliminar el documento, no fue guardado en modo \"destruir despues de leer\".", "Could not delete the document, it was not stored in burn after reading mode.": "No fue posible eliminar el documento, no fue guardado en modo \"destruir despues de leer\".",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "SÓLO PARA TUS OJOS. No cierres esta ventana, este mensaje no se puede volver a mostrar.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "SÓLO PARA TUS OJOS. No cierres esta ventana, este mensaje no se puede volver a mostrar.",
"Could not decrypt comment; Wrong key?": "No se pudo descifrar el comentario; ¿Llave incorrecta?", "Could not decrypt comment; Wrong key?": "No se pudo descifrar el comentario; ¿Llave incorrecta?",
"Reply": "Responder", "Reply": "Responder",
@@ -150,20 +150,12 @@
"unknown status": "Estado desconocido", "unknown status": "Estado desconocido",
"server error or not responding": "Error del servidor o el servidor no responde", "server error or not responding": "Error del servidor o el servidor no responde",
"Could not post comment: %s": "No fue posible publicar comentario: %s", "Could not post comment: %s": "No fue posible publicar comentario: %s",
"Sending paste…": "Enviando \"paste\"…", "Sending document…": "Enviando documento…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Su texto está en <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Presione <kbd>Ctrl</kbd>+<kbd>c</kbd> para copiar)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Su texto está en <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Presione <kbd>Ctrl</kbd>+<kbd>c</kbd> para copiar)</span>",
"Delete data": "Eliminar datos", "Delete data": "Eliminar datos",
"Could not create paste: %s": "No fue posible crear el archivo: %s", "Could not create document: %s": "No fue posible crear el archivo: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "No es posible descifrar el documento: Falta la clave de descifrado en la URL (¿Utilizó un redirector o un acortador de URL que quite parte de la URL?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "No es posible descifrar el documento: Falta la clave de descifrado en la URL (¿Utilizó un redirector o un acortador de URL que quite parte de la URL?)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Descargar adjunto", "Download attachment": "Descargar adjunto",
"Cloned: '%s'": "Clonado: '%s'.", "Cloned: '%s'": "Clonado: '%s'.",
"The cloned file '%s' was attached to this paste.": "El archivo clonado '%s' ha sido adjuntado a este texto.", "The cloned file '%s' was attached to this document.": "El archivo clonado '%s' ha sido adjuntado a este texto.",
"Attach a file": "Adjuntar archivo", "Attach a file": "Adjuntar archivo",
"alternatively drag & drop a file or paste an image from the clipboard": "alternativamente, arrastre y suelte un archivo o pegue una imagen desde el portapapeles", "alternatively drag & drop a file or paste an image from the clipboard": "alternativamente, arrastre y suelte un archivo o pegue una imagen desde el portapapeles",
"File too large, to display a preview. Please download the attachment.": "Archivo demasiado grande para mostrar una vista previa. Por favor, descargue el archivo adjunto.", "File too large, to display a preview. Please download the attachment.": "Archivo demasiado grande para mostrar una vista previa. Por favor, descargue el archivo adjunto.",
@@ -193,11 +185,11 @@
"Decrypt": "Descifrar", "Decrypt": "Descifrar",
"Enter password": "Ingrese contraseña", "Enter password": "Ingrese contraseña",
"Loading…": "Cargando…", "Loading…": "Cargando…",
"Decrypting paste…": "Descifrando \"paste\"…", "Decrypting document…": "Descifrando documento…",
"Preparing new paste…": "Preparando \"paste\" nuevo…", "Preparing new document…": "Preparando documento nuevo…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "En caso de que este mensaje nunca desaparezca por favor revise <a href=\"%s\">este FAQ para obtener información para solucionar problemas</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "En caso de que este mensaje nunca desaparezca por favor revise <a href=\"%s\">este FAQ para obtener información para solucionar problemas</a>.",
"+++ no paste text +++": "+++ \"paste\" sin texto +++", "+++ no document text +++": "+++ documento sin texto +++",
"Could not get paste data: %s": "No se pudieron obtener los datos: %s", "Could not get document data: %s": "No se pudieron obtener los datos: %s",
"QR code": "Código QR", "QR code": "Código QR",
"This website is using an insecure HTTP connection! Please use it only for testing.": "¡Este sitio está usando una conexión HTTP insegura! Por favor úselo solo para pruebas.", "This website is using an insecure HTTP connection! Please use it only for testing.": "¡Este sitio está usando una conexión HTTP insegura! Por favor úselo solo para pruebas.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Para más información <a href=\"%s\">consulte esta entrada de las preguntas frecuentes</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "Para más información <a href=\"%s\">consulte esta entrada de las preguntas frecuentes</a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "Nota cifrada en %s", "Encrypted note on %s": "Nota cifrada en %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visite este enlace para ver la nota. Dar la URL a cualquier persona también les permite acceder a la nota.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visite este enlace para ver la nota. Dar la URL a cualquier persona también les permite acceder a la nota.",
"URL shortener may expose your decrypt key in URL.": "El acortador de URL puede exponer su clave de descifrado en el URL.", "URL shortener may expose your decrypt key in URL.": "El acortador de URL puede exponer su clave de descifrado en el URL.",
"Save paste": "Guardar \"paste\"", "URL shortener is enabled by default.": "El acortador de URL está habilitado por defecto.",
"Your IP is not authorized to create pastes.": "Tu IP no está autorizada para crear contenido.", "Save document": "Guardar documento",
"Your IP is not authorized to create documents.": "Tu IP no está autorizada para crear contenido.",
"Trying to shorten a URL that isn't pointing at our instance.": "Intentando acortar una URL que no apunta a nuestra instancia.", "Trying to shorten a URL that isn't pointing at our instance.": "Intentando acortar una URL que no apunta a nuestra instancia.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error llamando a YOURLS. Probablemente un problema de configuración, como error o falta \"apiurl\" o \"signature\".", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Proxy URL is empty. Probablemente un problema de configuración, como error o falta \"apiurl\" o \"signature\".",
"Error parsing YOURLS response.": "Error al analizar la respuesta de YOURLS.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Error al analizar la respuesta de proxy. Probablemente un problema de configuración, como error o falta \"apiurl\" o \"signature\".",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Error llamando a proxy. Probablemente un problema de configuración, como error o falta \"apiurl\" o \"signature\".",
"This secret message can only be displayed once. Would you like to see it now?": "Este mensaje secreto sólo se puede mostrar una vez. ¿Quieres verlo ahora?", "This secret message can only be displayed once. Would you like to see it now?": "Este mensaje secreto sólo se puede mostrar una vez. ¿Quieres verlo ahora?",
"Yes, see it": "Sí, verlo", "Yes, see it": "Sí, verlo",
"Dark Mode": "Modo nocturno", "Dark Mode": "Modo nocturno",
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.", "Error compressing document, due to missing WebAssembly support.": "Error al comprimir el documento debido a la falta de compatibilidad con WebAssembly.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Error al descomprimir el documento. Su navegador no es compatible con WebAssembly. Utilice otro navegador para ver este documento.",
"Start over": "Start over", "Start over": "Empezar de nuevo",
"Paste copied to clipboard": "Paste copied to clipboard", "Document copied to clipboard": "Documento copiado al portapapeles",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "Para copiar el documento presione el botón copiar o use el atajo del portapapeles <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Copy link", "Copy link": "Copiar enlace",
"Link copied to clipboard": "Link copied to clipboard", "Link copied to clipboard": "Enlace copiado al portapapeles",
"Paste text": "Paste text", "Document text": "Texto del documento",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "La tecla de tabulación funciona como carácter (presione <kbd>Ctrl</kbd>+<kbd>m</kbd> o <kbd>Esc</kbd> para alternar)",
"Theme": "Theme" "Show password": "Mostrar contraseña",
"Hide password": "Ocultar contraseña",
"Theme": "Tema"
} }
+32 -36
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s on minimalistlik, avatud lähtekoodiga online pastebin, kus serveril pole kleebitud andmete kohta teadmist. Andmed krüpteeritakse/dekrüpteeritakse %sbrauseris%s kasutades 256-bitist AES-i.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s on minimalistlik, avatud lähtekoodiga online pastebin, kus serveril pole kleebitud andmete kohta teadmist. Andmed krüpteeritakse/dekrüpteeritakse %sbrauseris%s kasutades 256-bitist AES-i.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Lisateave <a href=\"https://privatebin.info/\">projekti lehel</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Lisateave <a href=\"https://privatebin.info/\">projekti lehel</a>.",
"Because ignorance is bliss": "Kuna teadmatus on õndsus", "Because ignorance is bliss": "Kuna teadmatus on õndsus",
"Paste does not exist, has expired or has been deleted.": "Kleebet ei eksisteeri, on aegunud või on kustutatud.", "Document does not exist, has expired or has been deleted.": "Kleebet ei eksisteeri, on aegunud või on kustutatud.",
"%s requires php %s or above to work. Sorry.": "%s vajab, et oleks php %s või kõrgem, et töötada. Vabandame.", "%s requires php %s or above to work. Sorry.": "%s vajab, et oleks php %s või kõrgem, et töötada. Vabandame.",
"%s requires configuration section [%s] to be present in configuration file.": "%s vajab, et [%s] seadistamise jaotis oleks olemas konfiguratsioonifailis.", "%s requires configuration section [%s] to be present in configuration file.": "%s vajab, et [%s] seadistamise jaotis oleks olemas konfiguratsioonifailis.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Palun oota %d sekundit iga postituse vahel.", "Palun oota %d sekundit iga postituse vahel.",
"Palun oota %d sekundit iga postituse vahel." "Palun oota %d sekundit iga postituse vahel."
], ],
"Paste is limited to %s of encrypted data.": "Kleepe limiit on %s krüpteeritud andmeid.", "Document is limited to %s of encrypted data.": "Kleepe limiit on %s krüpteeritud andmeid.",
"Invalid data.": "Valed andmed.", "Invalid data.": "Valed andmed.",
"You are unlucky. Try again.": "Sul ei vea. Proovi uuesti.", "You are unlucky. Try again.": "Sul ei vea. Proovi uuesti.",
"Error saving comment. Sorry.": "Viga kommentaari salvestamisel. Vabandame.", "Error saving comment. Sorry.": "Viga kommentaari salvestamisel. Vabandame.",
"Error saving paste. Sorry.": "Viga kleepe salvestamisel. Vabandame.", "Error saving document. Sorry.": "Viga kleepe salvestamisel. Vabandame.",
"Invalid paste ID.": "Vale kleepe ID.", "Invalid document ID.": "Vale kleepe ID.",
"Paste is not of burn-after-reading type.": "Kleebe ei ole põleta-pärast-lugemist tüüpi.", "Document is not of burn-after-reading type.": "Kleebe ei ole põleta-pärast-lugemist tüüpi.",
"Wrong deletion token. Paste was not deleted.": "Vale kustutamiskood. Kleebet ei kustutatud.", "Wrong deletion token. Document was not deleted.": "Vale kustutamiskood. Kleebet ei kustutatud.",
"Paste was properly deleted.": "Kleebe kustutati korralikult.", "Document was properly deleted.": "Kleebe kustutati korralikult.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript on vajalik %s'i töötamiseks. Vabandame ebamugavuste pärast.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript on vajalik %s'i töötamiseks. Vabandame ebamugavuste pärast.",
"%s requires a modern browser to work.": "%s vajab töötamiseks kaasaegset brauserit.", "%s requires a modern browser to work.": "%s vajab töötamiseks kaasaegset brauserit.",
"New": "Uus", "New": "Uus",
@@ -133,9 +133,9 @@
"See dokument aegub %d kuu pärast.", "See dokument aegub %d kuu pärast.",
"See dokument aegub %d kuu pärast." "See dokument aegub %d kuu pärast."
], ],
"Please enter the password for this paste:": "Palun sisesta selle kleepe parool:", "Please enter the password for this document:": "Palun sisesta selle kleepe parool:",
"Could not decrypt data (Wrong key?)": "Ei suutnud andmeid dekrüpteerida (Vale võti?)", "Could not decrypt data (Wrong key?)": "Ei suutnud andmeid dekrüpteerida (Vale võti?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Ei suutnud kleebet kustutada, seda ei salvestatud põleta pärast lugemist režiimis.", "Could not delete the document, it was not stored in burn after reading mode.": "Ei suutnud kleebet kustutada, seda ei salvestatud põleta pärast lugemist režiimis.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "AINULT SINU SILMADELE. Ära sulge seda akent, seda sõnumit ei saa enam kuvada.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "AINULT SINU SILMADELE. Ära sulge seda akent, seda sõnumit ei saa enam kuvada.",
"Could not decrypt comment; Wrong key?": "Ei suutnud kommentaari dekrüpteerida; Vale võti?", "Could not decrypt comment; Wrong key?": "Ei suutnud kommentaari dekrüpteerida; Vale võti?",
"Reply": "Vasta", "Reply": "Vasta",
@@ -150,20 +150,12 @@
"unknown status": "tundmatu staatus", "unknown status": "tundmatu staatus",
"server error or not responding": "serveri viga või ei vasta", "server error or not responding": "serveri viga või ei vasta",
"Could not post comment: %s": "Ei suutnud kommentaari postitada: %s", "Could not post comment: %s": "Ei suutnud kommentaari postitada: %s",
"Sending paste…": "Kleepe saatmine…", "Sending document…": "Kleepe saatmine…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Sinu kleebe on <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Kopeerimiseks vajuta <kbd>Ctrl</kbd>+<kbd>c</kbd>)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Sinu kleebe on <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Kopeerimiseks vajuta <kbd>Ctrl</kbd>+<kbd>c</kbd>)</span>",
"Delete data": "Kustuta andmed", "Delete data": "Kustuta andmed",
"Could not create paste: %s": "Ei suutnud kleebet luua: %s", "Could not create document: %s": "Ei suutnud kleebet luua: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Ei suutnud kleebet dekrüpteerida: Dekrüpteerimisvõti on URL-ist puudu (Kas kasutasid ümbersuunajat või URL-i lühendajat, mis eemaldab osa URL-ist?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Ei suutnud kleebet dekrüpteerida: Dekrüpteerimisvõti on URL-ist puudu (Kas kasutasid ümbersuunajat või URL-i lühendajat, mis eemaldab osa URL-ist?)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Laadi manus alla", "Download attachment": "Laadi manus alla",
"Cloned: '%s'": "Kloonitud: '%s'", "Cloned: '%s'": "Kloonitud: '%s'",
"The cloned file '%s' was attached to this paste.": "Kloonitud fail '%s' manustati sellele kleepele.", "The cloned file '%s' was attached to this document.": "Kloonitud fail '%s' manustati sellele kleepele.",
"Attach a file": "Manusta fail", "Attach a file": "Manusta fail",
"alternatively drag & drop a file or paste an image from the clipboard": "teise võimalusena lohista fail või kleebi pilt lõikelaualt", "alternatively drag & drop a file or paste an image from the clipboard": "teise võimalusena lohista fail või kleebi pilt lõikelaualt",
"File too large, to display a preview. Please download the attachment.": "Fail on eelvaate kuvamiseks liiga suur. Palun laadi manus alla.", "File too large, to display a preview. Please download the attachment.": "Fail on eelvaate kuvamiseks liiga suur. Palun laadi manus alla.",
@@ -193,11 +185,11 @@
"Decrypt": "Dekrüpteeri", "Decrypt": "Dekrüpteeri",
"Enter password": "Sisesta parool", "Enter password": "Sisesta parool",
"Loading…": "Laadimine…", "Loading…": "Laadimine…",
"Decrypting paste…": "Kleepe dekrüpteerimine…", "Decrypting document…": "Kleepe dekrüpteerimine…",
"Preparing new paste…": "Uue kleepe ettevalmistamine…", "Preparing new document…": "Uue kleepe ettevalmistamine…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Kui see sõnum ei kao, palun vaata <a href=\"%s\">seda KKK-d, et saada tõrkeotsinguks teavet.</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Kui see sõnum ei kao, palun vaata <a href=\"%s\">seda KKK-d, et saada tõrkeotsinguks teavet.</a>.",
"+++ no paste text +++": "+++ kleepe tekst puudub +++", "+++ no document text +++": "+++ kleepe tekst puudub +++",
"Could not get paste data: %s": "Ei suutnud saada kleepe andmeid: %s", "Could not get document data: %s": "Ei suutnud saada kleepe andmeid: %s",
"QR code": "QR kood", "QR code": "QR kood",
"This website is using an insecure HTTP connection! Please use it only for testing.": "See veebisait kasutab ebaturvalist HTTP ühendust! Palun kasuta seda ainult katsetamiseks.", "This website is using an insecure HTTP connection! Please use it only for testing.": "See veebisait kasutab ebaturvalist HTTP ühendust! Palun kasuta seda ainult katsetamiseks.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Lisateabe saamiseks <a href=\"%s\">vaata seda KKK sissekannet</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "Lisateabe saamiseks <a href=\"%s\">vaata seda KKK sissekannet</a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "Krüpteeritud kiri %s-is", "Encrypted note on %s": "Krüpteeritud kiri %s-is",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Kirja nägemiseks külasta seda linki. Teistele URL-i andmine lubab ka neil ligi pääseda kirjale.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Kirja nägemiseks külasta seda linki. Teistele URL-i andmine lubab ka neil ligi pääseda kirjale.",
"URL shortener may expose your decrypt key in URL.": "URL-i lühendaja võib paljastada sinu dekrüpteerimisvõtme URL-is.", "URL shortener may expose your decrypt key in URL.": "URL-i lühendaja võib paljastada sinu dekrüpteerimisvõtme URL-is.",
"Save paste": "Salvesta kleebe", "URL shortener is enabled by default.": "URL shortener is enabled by default.",
"Your IP is not authorized to create pastes.": "Su IP-l ei ole lubatud kleepeid luua.", "Save document": "Salvesta kleebe",
"Your IP is not authorized to create documents.": "Su IP-l ei ole lubatud kleepeid luua.",
"Trying to shorten a URL that isn't pointing at our instance.": "Püüame lühendada URL-i, mis ei viita meie instantsile.", "Trying to shorten a URL that isn't pointing at our instance.": "Püüame lühendada URL-i, mis ei viita meie instantsile.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Viga YOURLS-i kutsumisel. Tõenäoliselt konfiguratsiooniprobleem, näiteks vale või puuduv \"apiurl\" või \"signature\".", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Viga YOURLS-i kutsumisel. Tõenäoliselt konfiguratsiooniprobleem, näiteks vale või puuduv \"apiurl\" või \"signature\".",
"Error parsing YOURLS response.": "Viga YOURLS vastuse parsimisel.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Viga YOURLS vastuse parsimisel.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"This secret message can only be displayed once. Would you like to see it now?": "Seda turvalist sõnumit saab kuvada vaid ühe korra. \nKas soovid seda näha nüüd?", "This secret message can only be displayed once. Would you like to see it now?": "Seda turvalist sõnumit saab kuvada vaid ühe korra. \nKas soovid seda näha nüüd?",
"Yes, see it": "Jah, vaata seda", "Yes, see it": "Jah, vaata seda",
"Dark Mode": "Tume režiim", "Dark Mode": "Tume režiim",
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.", "Error compressing document, due to missing WebAssembly support.": "Error compressing document, due to missing WebAssembly support.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.",
"Start over": "Alusta uuesti", "Start over": "Alusta uuesti",
"Paste copied to clipboard": "Kleebe kopeeriti lõikelauale", "Document copied to clipboard": "Kleebe kopeeriti lõikelauale",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Kopeeri link", "Copy link": "Kopeeri link",
"Link copied to clipboard": "Link kopeeriti lõikelauale", "Link copied to clipboard": "Link kopeeriti lõikelauale",
"Paste text": "Kleebi tekst", "Document text": "Kleebi tekst",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)",
"Show password": "Show password",
"Hide password": "Hide password",
"Theme": "Teema" "Theme": "Teema"
} }
+41 -45
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s on minimalistinen, avoimen lähdekoodin online pastebin jossa palvelimella ei ole tietoa syötetystä datasta. Data salataan/puretaan %sselaimessa%s käyttäen 256-bittistä AES:ää.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s on minimalistinen, avoimen lähdekoodin online pastebin jossa palvelimella ei ole tietoa syötetystä datasta. Data salataan/puretaan %sselaimessa%s käyttäen 256-bittistä AES:ää.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Lisää tietoa <a href=\"https://privatebin.info/\">projektisivulla</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Lisää tietoa <a href=\"https://privatebin.info/\">projektisivulla</a>.",
"Because ignorance is bliss": "Koska tieto lisää tuskaa", "Because ignorance is bliss": "Koska tieto lisää tuskaa",
"Paste does not exist, has expired or has been deleted.": "Pastea ei ole olemassa, se on vanhentunut tai se on poistettu.", "Document does not exist, has expired or has been deleted.": "Pastea ei ole olemassa, se on vanhentunut tai se on poistettu.",
"%s requires php %s or above to work. Sorry.": "%s vaatii php:n %s-version tai uudemman toimiakseen. Anteeksi.", "%s requires php %s or above to work. Sorry.": "%s vaatii php:n %s-version tai uudemman toimiakseen. Anteeksi.",
"%s requires configuration section [%s] to be present in configuration file.": "%s vaatii konfiguraatio-osion [%s] olevan läsnä konfiguraatiotiedostossa.", "%s requires configuration section [%s] to be present in configuration file.": "%s vaatii konfiguraatio-osion [%s] olevan läsnä konfiguraatiotiedostossa.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Odotathan %d sekuntia jokaisen lähetyksen välillä.", "Odotathan %d sekuntia jokaisen lähetyksen välillä.",
"Odotathan %d sekuntia jokaisen lähetyksen välillä." "Odotathan %d sekuntia jokaisen lähetyksen välillä."
], ],
"Paste is limited to %s of encrypted data.": "Paste on rajoitettu kokoon %s salattua dataa.", "Document is limited to %s of encrypted data.": "Asiakirja on rajoitettu kokoon %s salattua dataa.",
"Invalid data.": "Virheellinen data.", "Invalid data.": "Virheellinen data.",
"You are unlucky. Try again.": "Olet epäonnekas. Yritä uudelleen.", "You are unlucky. Try again.": "Olet epäonnekas. Yritä uudelleen.",
"Error saving comment. Sorry.": "Virhe kommenttia tallentaessa. Anteeksi.", "Error saving comment. Sorry.": "Virhe kommenttia tallentaessa. Anteeksi.",
"Error saving paste. Sorry.": "Virhe pastea tallentaessa. Anteeksi.", "Error saving document. Sorry.": "Virhe pastea tallentaessa. Anteeksi.",
"Invalid paste ID.": "Virheellinen paste ID.", "Invalid document ID.": "Virheellinen asiakirja ID.",
"Paste is not of burn-after-reading type.": "Paste ei ole polta-lukemisen-jälkeen-tyyppiä.", "Document is not of burn-after-reading type.": "Asiakirja ei ole polta-lukemisen-jälkeen-tyyppiä.",
"Wrong deletion token. Paste was not deleted.": "Virheellinen poistotunniste. Pastea ei poistettu.", "Wrong deletion token. Document was not deleted.": "Virheellinen poistotunniste. Pastea ei poistettu.",
"Paste was properly deleted.": "Paste poistettiin kunnolla.", "Document was properly deleted.": "Asiakirja poistettiin kunnolla.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "%s vaatii JavaScriptiä toimiakseen. Anteeksi haitasta.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "%s vaatii JavaScriptiä toimiakseen. Anteeksi haitasta.",
"%s requires a modern browser to work.": "%s vaatii modernin selaimen toimiakseen.", "%s requires a modern browser to work.": "%s vaatii modernin selaimen toimiakseen.",
"New": "Uusi", "New": "Uusi",
@@ -133,9 +133,9 @@
"Tämä dokumentti vanhenee %d kuukaudessa.", "Tämä dokumentti vanhenee %d kuukaudessa.",
"Tämä dokumentti vanhenee %d kuukaudessa." "Tämä dokumentti vanhenee %d kuukaudessa."
], ],
"Please enter the password for this paste:": "Syötä salasana tälle pastelle:", "Please enter the password for this document:": "Syötä salasana tälle pastelle:",
"Could not decrypt data (Wrong key?)": "Dataa ei voitu purkaa (Väärä avain?)", "Could not decrypt data (Wrong key?)": "Dataa ei voitu purkaa (Väärä avain?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Pastea ei voitu poistaa, sitä ei säilytetty \"Polta lukemisen jälkeen\" -tilassa.", "Could not delete the document, it was not stored in burn after reading mode.": "Pastea ei voitu poistaa, sitä ei säilytetty \"Polta lukemisen jälkeen\" -tilassa.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "VAIN SINUN SILMILLESI. Älä sulje tätä ikkunaa, tätä viestiä ei voida näyttää uudelleen.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "VAIN SINUN SILMILLESI. Älä sulje tätä ikkunaa, tätä viestiä ei voida näyttää uudelleen.",
"Could not decrypt comment; Wrong key?": "Kommenttia ei voitu purkaa; väärä avain?", "Could not decrypt comment; Wrong key?": "Kommenttia ei voitu purkaa; väärä avain?",
"Reply": "Vastaa", "Reply": "Vastaa",
@@ -150,35 +150,27 @@
"unknown status": "tuntematon status", "unknown status": "tuntematon status",
"server error or not responding": "palvelinvirhe tai palvelin ei vastaa", "server error or not responding": "palvelinvirhe tai palvelin ei vastaa",
"Could not post comment: %s": "Kommenttia ei voitu lähettää: %s", "Could not post comment: %s": "Kommenttia ei voitu lähettää: %s",
"Sending paste…": "Lähetetään pastea…", "Sending document…": "Lähetetään pastea…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Pastesi on <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Paina <kbd>Ctrl</kbd>+<kbd>c</kbd> kopioidaksesi)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Pastesi on <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Paina <kbd>Ctrl</kbd>+<kbd>c</kbd> kopioidaksesi)</span>",
"Delete data": "Poista data", "Delete data": "Poista data",
"Could not create paste: %s": "Pastea ei voitu luoda: %s", "Could not create document: %s": "Pastea ei voitu luoda: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Pastea ei voitu purkaa: Purkausavain puuttuu URL:stä (Käytitkö uudelleenohjaajaa tai URL-lyhentäjää joka poistaa osan URL:stä?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Pastea ei voitu purkaa: Purkausavain puuttuu URL:stä (Käytitkö uudelleenohjaajaa tai URL-lyhentäjää joka poistaa osan URL:stä?)",
"B": "B", "B": "t",
"KiB": "KiB", "kB": "kt",
"MiB": "MiB", "MB": "Mt",
"GiB": "GiB", "GB": "Gt",
"TiB": "TiB", "TB": "Tt",
"PiB": "PiB", "PB": "Pt",
"EiB": "EiB", "EB": "Et",
"ZiB": "ZiB", "ZB": "Zt",
"YiB": "YiB", "YB": "Yt",
"kB": "kB",
"MB": "MB",
"GB": "GB",
"TB": "TB",
"PB": "PB",
"EB": "EB",
"ZB": "ZB",
"YB": "YB",
"Format": "Formaatti", "Format": "Formaatti",
"Plain Text": "Perusteksti", "Plain Text": "Perusteksti",
"Source Code": "Lähdekoodi", "Source Code": "Lähdekoodi",
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Lataa liite", "Download attachment": "Lataa liite",
"Cloned: '%s'": "Kloonattu: '%s'", "Cloned: '%s'": "Kloonattu: '%s'",
"The cloned file '%s' was attached to this paste.": "Kloonattu tiedosto '%s' liitettiin tähän pasteen", "The cloned file '%s' was attached to this document.": "Kloonattu tiedosto '%s' liitettiin tähän pasteen",
"Attach a file": "Liitä tiedosto", "Attach a file": "Liitä tiedosto",
"alternatively drag & drop a file or paste an image from the clipboard": "vaihtoehtoisesti vedä & pudota tiedosto tai liitä kuva leikepöydältä", "alternatively drag & drop a file or paste an image from the clipboard": "vaihtoehtoisesti vedä & pudota tiedosto tai liitä kuva leikepöydältä",
"File too large, to display a preview. Please download the attachment.": "Tiedosto on liian iso esikatselun näyttämiseksi. Lataathan liitteen.", "File too large, to display a preview. Please download the attachment.": "Tiedosto on liian iso esikatselun näyttämiseksi. Lataathan liitteen.",
@@ -193,11 +185,11 @@
"Decrypt": "Pura", "Decrypt": "Pura",
"Enter password": "Syötä salasana", "Enter password": "Syötä salasana",
"Loading…": "Ladataan…", "Loading…": "Ladataan…",
"Decrypting paste…": "Puretaan pastea…", "Decrypting document…": "Puretaan pastea…",
"Preparing new paste…": "Valmistellaan uutta pastea", "Preparing new document…": "Valmistellaan uutta pastea",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Jos tämä viesti ei katoa koskaan, katsothan <a href=\"%s\">tämän FAQ:n ongelmanratkaisutiedon löytämiseksi</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Jos tämä viesti ei katoa koskaan, katsothan <a href=\"%s\">tämän FAQ:n ongelmanratkaisutiedon löytämiseksi</a>.",
"+++ no paste text +++": "+++ ei paste-tekstiä +++", "+++ no document text +++": "+++ ei asiakirja-tekstiä +++",
"Could not get paste data: %s": "Paste-tietoja ei löydetty: %s", "Could not get document data: %s": "Asiakirja-tietoja ei löydetty: %s",
"QR code": "QR-koodi", "QR code": "QR-koodi",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Tämä sivusto käyttää epäturvallista HTTP-yhteyttä! Käytäthän sitä vain testaukseen.", "This website is using an insecure HTTP connection! Please use it only for testing.": "Tämä sivusto käyttää epäturvallista HTTP-yhteyttä! Käytäthän sitä vain testaukseen.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Lisätietoja varten <a href=\"%s\">lue tämä FAQ-kohta</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "Lisätietoja varten <a href=\"%s\">lue tämä FAQ-kohta</a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "Salattu viesti %sissä", "Encrypted note on %s": "Salattu viesti %sissä",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Vieraile tässä linkissä nähdäksesi viestin. URL:n antaminen kenellekään antaa heidänkin päästä katsomaan viestiä.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Vieraile tässä linkissä nähdäksesi viestin. URL:n antaminen kenellekään antaa heidänkin päästä katsomaan viestiä.",
"URL shortener may expose your decrypt key in URL.": "URL-lyhentäjä voi paljastaa purkuavaimesi URL:ssä.", "URL shortener may expose your decrypt key in URL.": "URL-lyhentäjä voi paljastaa purkuavaimesi URL:ssä.",
"Save paste": "Tallenna paste", "URL shortener is enabled by default.": "URL-lyhennys on oletuksena käytössä.",
"Your IP is not authorized to create pastes.": "IP:llesi ei ole annettu oikeutta luoda pasteja.", "Save document": "Tallenna asiakirja",
"Your IP is not authorized to create documents.": "IP:llesi ei ole annettu oikeutta luoda pasteja.",
"Trying to shorten a URL that isn't pointing at our instance.": "Yritetään lyhentää URL-osoite, joka ei osoita meidän instanssiiin.", "Trying to shorten a URL that isn't pointing at our instance.": "Yritetään lyhentää URL-osoite, joka ei osoita meidän instanssiiin.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Virhe kutsuttaessa YOURLS. Luultavasti asetusongelma kuten väärä tai puuttuuva \"apiurl\" tai \"signature\".", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Virhe kutsuttaessa YOURLS. Luultavasti asetusongelma kuten väärä tai puuttuuva \"apiurl\" tai \"signature\".",
"Error parsing YOURLS response.": "Virhe jäsennettäessä YOURLS-vastausta.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Virhe jäsennettäessä YOURLS-vastausta.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Välityspalvelinvirhe: Virheellinen vastaus. Tämä voi olla asetusongelma, kuten väärä tai puuttuva asetus, tai väliaikainen katkos.",
"This secret message can only be displayed once. Would you like to see it now?": "Tämä salainen viesti voidaan näyttää vain kerran. Haluatko nähdä sen nyt?", "This secret message can only be displayed once. Would you like to see it now?": "Tämä salainen viesti voidaan näyttää vain kerran. Haluatko nähdä sen nyt?",
"Yes, see it": "Kyllä, näet sen", "Yes, see it": "Kyllä, näet sen",
"Dark Mode": "Tumma tila", "Dark Mode": "Tumma tila",
"Error compressing paste, due to missing WebAssembly support.": "Virhe pakattaessa pastea, koska WebAssembly-tuki puuttuu.", "Error compressing document, due to missing WebAssembly support.": "Virhe pakattaessa pastea, koska WebAssembly-tuki puuttuu.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Virhe pasten purkamisessa, selaimesi ei tue WebAssemblyä. Ole hyvä ja käytä toista selainta nähdäksesi tämä paste.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Virhe pasten purkamisessa, selaimesi ei tue WebAssemblyä. Ole hyvä ja käytä toista selainta nähdäksesi tämä asiakirja.",
"Start over": "Aloita alusta", "Start over": "Aloita alusta",
"Paste copied to clipboard": "Paste kopioitu leikepöydälle", "Document copied to clipboard": "Asiakirja kopioitu leikepöydälle",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "Voit kopioida pasten painamalla kopioi-painiketta tai käyttämällä leikepöydän oikotietä <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "Voit kopioida pasten painamalla kopioi-painiketta tai käyttämällä leikepöydän oikotietä <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Kopioi linkki", "Copy link": "Kopioi linkki",
"Link copied to clipboard": "Linkki kopioitu leikepöydälle", "Link copied to clipboard": "Linkki kopioitu leikepöydälle",
"Paste text": "Liitä teksti", "Document text": "Liitä teksti",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulaattori toimii merkkinä (Paina <kbd>Ctrl</kbd>+<kbd>m</kbd> tai <kbd>Esc</kbd> vaihtaaksesi)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulaattori toimii merkkinä (Paina <kbd>Ctrl</kbd>+<kbd>m</kbd> tai <kbd>Esc</kbd> vaihtaaksesi)",
"Show password": "Näytä salasana",
"Hide password": "Piilota salasana",
"Theme": "Teema" "Theme": "Teema"
} }
+36 -40
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s est un 'pastebin' (ou gestionnaire d'extraits de texte et de code source) minimaliste et open source, dans lequel le serveur n'a aucune connaissance des données envoyées. Les données sont chiffrées/déchiffrées %sdans le navigateur%s par un chiffrement AES 256 bits.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s est un 'pastebin' (ou gestionnaire d'extraits de texte et de code source) minimaliste et open source, dans lequel le serveur n'a aucune connaissance des données envoyées. Les données sont chiffrées/déchiffrées %sdans le navigateur%s par un chiffrement AES 256 bits.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Plus d'informations sur <a href=\"https://privatebin.info/\">la page du projet</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Plus d'informations sur <a href=\"https://privatebin.info/\">la page du projet</a>.",
"Because ignorance is bliss": "Vivons heureux, vivons cachés", "Because ignorance is bliss": "Vivons heureux, vivons cachés",
"Paste does not exist, has expired or has been deleted.": "Le paste n'existe pas, a expiré, ou a été supprimé.", "Document does not exist, has expired or has been deleted.": "Le document n'existe pas, a expiré, ou a été supprimé.",
"%s requires php %s or above to work. Sorry.": "Désolé, %s nécessite php %s ou supérieur pour fonctionner.", "%s requires php %s or above to work. Sorry.": "Désolé, %s nécessite php %s ou supérieur pour fonctionner.",
"%s requires configuration section [%s] to be present in configuration file.": "%s a besoin de la section de configuration [%s] dans le fichier de configuration pour fonctionner.", "%s requires configuration section [%s] to be present in configuration file.": "%s a besoin de la section de configuration [%s] dans le fichier de configuration pour fonctionner.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Merci d'attendre %d secondes entre chaque publication.", "Merci d'attendre %d secondes entre chaque publication.",
"Merci d'attendre %d secondes entre chaque publication." "Merci d'attendre %d secondes entre chaque publication."
], ],
"Paste is limited to %s of encrypted data.": "Le paste est limité à %s de données chiffrées.", "Document is limited to %s of encrypted data.": "Le document est limité à %s de données chiffrées.",
"Invalid data.": "Données invalides.", "Invalid data.": "Données invalides.",
"You are unlucky. Try again.": "Pas de chance. Essayez encore.", "You are unlucky. Try again.": "Pas de chance. Essayez encore.",
"Error saving comment. Sorry.": "Erreur lors de la sauvegarde du commentaire.", "Error saving comment. Sorry.": "Erreur lors de la sauvegarde du commentaire.",
"Error saving paste. Sorry.": "Erreur lors de la sauvegarde du paste. Désolé.", "Error saving document. Sorry.": "Erreur lors de la sauvegarde du document. Désolé.",
"Invalid paste ID.": "ID du paste invalide.", "Invalid document ID.": "ID du document invalide.",
"Paste is not of burn-after-reading type.": "Le paste n'est pas de type \"Effacer après lecture\".", "Document is not of burn-after-reading type.": "Le document n'est pas de type \"Effacer après lecture\".",
"Wrong deletion token. Paste was not deleted.": "Jeton de suppression incorrect. Le paste n'a pas été supprimé.", "Wrong deletion token. Document was not deleted.": "Jeton de suppression incorrect. Le document n'a pas été supprimé.",
"Paste was properly deleted.": "Le paste a été correctement supprimé.", "Document was properly deleted.": "Le document a été correctement supprimé.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript est requis pour faire fonctionner %s. Désolé pour cet inconvénient.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript est requis pour faire fonctionner %s. Désolé pour cet inconvénient.",
"%s requires a modern browser to work.": "%s nécessite un navigateur moderne pour fonctionner.", "%s requires a modern browser to work.": "%s nécessite un navigateur moderne pour fonctionner.",
"New": "Nouveau", "New": "Nouveau",
@@ -133,11 +133,11 @@
"Ce document expirera dans %d mois.", "Ce document expirera dans %d mois.",
"Ce document expirera dans %d mois." "Ce document expirera dans %d mois."
], ],
"Please enter the password for this paste:": "Entrez le mot de passe pour ce paste:", "Please enter the password for this document:": "Entrez le mot de passe pour ce document:",
"Could not decrypt data (Wrong key?)": "Impossible de déchiffrer les données (mauvaise clé ?)", "Could not decrypt data (Wrong key?)": "Impossible de déchiffrer les données (mauvaise clé ?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Impossible de supprimer le paste, car il n'a pas été stocké en mode \"Effacer après lecture\".", "Could not delete the document, it was not stored in burn after reading mode.": "Impossible de supprimer le document, car il n'a pas été stocké en mode \"Effacer après lecture\".",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "POUR VOS YEUX UNIQUEMENT. Ne fermez pas cette fenêtre, ce paste ne pourra plus être affiché.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "POUR VOS YEUX UNIQUEMENT. Ne fermez pas cette fenêtre, ce document ne pourra plus être affiché.",
"Could not decrypt comment; Wrong key?": "Impossible de déchiffrer le commentaire; mauvaise clé ?", "Could not decrypt comment; Wrong key?": "Impossible de déchiffrer le commentaire ; mauvaise clé ?",
"Reply": "Répondre", "Reply": "Répondre",
"Anonymous": "Anonyme", "Anonymous": "Anonyme",
"Avatar generated from IP address": "Avatar généré à partir de l'adresse IP", "Avatar generated from IP address": "Avatar généré à partir de l'adresse IP",
@@ -150,20 +150,12 @@
"unknown status": "Statut inconnu", "unknown status": "Statut inconnu",
"server error or not responding": "Le serveur ne répond pas ou a rencontré une erreur", "server error or not responding": "Le serveur ne répond pas ou a rencontré une erreur",
"Could not post comment: %s": "Impossible de poster le commentaire : %s", "Could not post comment: %s": "Impossible de poster le commentaire : %s",
"Sending paste…": "Envoi du paste…", "Sending document…": "Envoi du document…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Votre paste est disponible à l'adresse <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Appuyez sur <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd> pour copier)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Votre document est disponible à l'adresse <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Appuyez sur <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd> pour copier)</span>",
"Delete data": "Supprimer les données du paste", "Delete data": "Supprimer les données du document",
"Could not create paste: %s": "Impossible de créer le paste : %s", "Could not create document: %s": "Impossible de créer le document : %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Impossible de déchiffrer le paste : Clé de déchiffrement manquante dans l'URL (Avez-vous utilisé un redirecteur ou un site de réduction d'URL qui supprime une partie de l'URL ?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Impossible de déchiffrer le document : Clé de déchiffrement manquante dans l'URL (Avez-vous utilisé un redirecteur ou un site de réduction d'URL qui supprime une partie de l'URL ?)",
"B": "o", "B": "o",
"KiB": "Kio",
"MiB": "Mio",
"GiB": "Gio",
"TiB": "Tio",
"PiB": "Pio",
"EiB": "Eio",
"ZiB": "Zio",
"YiB": "Yio",
"kB": "ko", "kB": "ko",
"MB": "Mo", "MB": "Mo",
"GB": "Go", "GB": "Go",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Télécharger la pièce jointe", "Download attachment": "Télécharger la pièce jointe",
"Cloned: '%s'": "Cloner '%s'", "Cloned: '%s'": "Cloner '%s'",
"The cloned file '%s' was attached to this paste.": "Le fichier cloné '%s' a été attaché à ce paste.", "The cloned file '%s' was attached to this document.": "Le fichier cloné '%s' a été attaché à ce document.",
"Attach a file": "Attacher un fichier", "Attach a file": "Attacher un fichier",
"alternatively drag & drop a file or paste an image from the clipboard": "au choix, glisser & déposer un fichier ou coller une image à partir du presse-papiers", "alternatively drag & drop a file or paste an image from the clipboard": "au choix, glisser & déposer un fichier ou coller une image à partir du presse-papiers",
"File too large, to display a preview. Please download the attachment.": "Fichier trop volumineux, pour afficher un aperçu. Veuillez télécharger la pièce jointe.", "File too large, to display a preview. Please download the attachment.": "Fichier trop volumineux, pour afficher un aperçu. Veuillez télécharger la pièce jointe.",
@@ -193,11 +185,11 @@
"Decrypt": "Déchiffrer", "Decrypt": "Déchiffrer",
"Enter password": "Entrez le mot de passe", "Enter password": "Entrez le mot de passe",
"Loading…": "Chargement…", "Loading…": "Chargement…",
"Decrypting paste…": "Déchiffrement du paste…", "Decrypting document…": "Déchiffrement du document…",
"Preparing new paste…": "Préparation du paste…", "Preparing new document…": "Préparation du document…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Si ce message ne disparaîssait pas, jetez un oeil à <a href=\"%s\">cette FAQ pour des idées de résolution</a> (en Anglais).", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Si ce message ne disparaîssait pas, jetez un oeil à <a href=\"%s\">cette FAQ pour des idées de résolution</a> (en Anglais).",
"+++ no paste text +++": "+++ pas de texte copié +++", "+++ no document text +++": "+++ pas de texte copié +++",
"Could not get paste data: %s": "Impossible d'obtenir les données du paste: %s", "Could not get document data: %s": "Impossible d'obtenir les données du document: %s",
"QR code": "QR code", "QR code": "QR code",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Ce site web utilise une connexion HTTP non sécurisée ! Veuillez lutiliser uniquement pour des tests.", "This website is using an insecure HTTP connection! Please use it only for testing.": "Ce site web utilise une connexion HTTP non sécurisée ! Veuillez lutiliser uniquement pour des tests.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Pour plus d'informations <a href=\"%s\">consultez cette rubrique de la FAQ</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "Pour plus d'informations <a href=\"%s\">consultez cette rubrique de la FAQ</a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "Message chiffré sur %s", "Encrypted note on %s": "Message chiffré sur %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visiter ce lien pour voir la note. Donner l'URL à une autre personne lui permet également d'accéder à la note.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visiter ce lien pour voir la note. Donner l'URL à une autre personne lui permet également d'accéder à la note.",
"URL shortener may expose your decrypt key in URL.": "Raccourcir l'URL peut exposer votre clé de déchiffrement dans l'URL.", "URL shortener may expose your decrypt key in URL.": "Raccourcir l'URL peut exposer votre clé de déchiffrement dans l'URL.",
"Save paste": "Sauver le paste", "URL shortener is enabled by default.": "Raccourcisseur d'URL est activé par défaut.",
"Your IP is not authorized to create pastes.": "Votre adresse IP n'est pas autorisée à créer des pastes.", "Save document": "Sauver le document",
"Your IP is not authorized to create documents.": "Votre adresse IP n'est pas autorisée à créer des documents.",
"Trying to shorten a URL that isn't pointing at our instance.": "Tentative de raccourcir une URL qui ne pointe pas vers notre instance.", "Trying to shorten a URL that isn't pointing at our instance.": "Tentative de raccourcir une URL qui ne pointe pas vers notre instance.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Erreur lors de l'appel de YOURLS. Peut-être un problème de configuration, comme \"apiurl\" ou \"signature\" manquant.", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Erreur de proxy : L'URL du proxy est vide. Cela peut être un problème de configuration, comme de mauvaises clés de configuration ou manquantes.",
"Error parsing YOURLS response.": "Erreur d'analyse de la réponse YOURLS.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Erreur de Proxy : Erreur lors de l'analyse de la réponse du proxy. Cela peut être un problème de configuration, comme une erreur ou des clés de configuration manquantes.",
"This secret message can only be displayed once. Would you like to see it now?": "Les pastes de type \"Effacer après la lecture\" ne peuvent être affichés qu'une seule fois. Voulez-vous le voir maintenant ?", "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Erreur de proxy : réponse incorrecte. Cela peut être un problème de configuration, comme une erreur ou une clé de configuration manquante ou une panne temporaire.",
"This secret message can only be displayed once. Would you like to see it now?": "Les documents de type \"Effacer après la lecture\" ne peuvent être affichés qu'une seule fois. Voulez-vous le voir maintenant ?",
"Yes, see it": "Oui, le voir", "Yes, see it": "Oui, le voir",
"Dark Mode": "Mode Sombre", "Dark Mode": "Mode Sombre",
"Error compressing paste, due to missing WebAssembly support.": "Erreur lors de la compression du paste, en raison du support de WebAssembly manquant.", "Error compressing document, due to missing WebAssembly support.": "Erreur lors de la compression du document, en raison du support de WebAssembly manquant.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Erreur lors de la décompression du paste, votre navigateur ne supporte pas WebAssembly. Veuillez utiliser un autre navigateur pour voir ce paste.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Erreur lors de la décompression du document, votre navigateur ne supporte pas WebAssembly. Veuillez utiliser un autre navigateur pour voir ce document.",
"Start over": "Recommencer", "Start over": "Recommencer",
"Paste copied to clipboard": "Paste copié dans le presse-papier", "Document copied to clipboard": "Document copié dans le presse-papier",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "Pour copier-coller appuyer sur le bouton To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "Pour copier appuyer sur le bouton Copier le lien ou utiliser le raccourci <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Copier le lien", "Copy link": "Copier le lien",
"Link copied to clipboard": "Lien copié dans le presse-papier", "Link copied to clipboard": "Lien copié dans le presse-papier",
"Paste text": "Texte du paste", "Document text": "Texte du document",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "La touche de tabulation sert de caractère (Presser <kbd>Ctrl</kbd>+<kbd>m</kbd> ou <kbd>Esc</kbd> pour basculer)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "La touche de tabulation sert de caractère (Presser <kbd>Ctrl</kbd>+<kbd>m</kbd> ou <kbd>Esc</kbd> pour basculer)",
"Show password": "Afficher le mot de passe",
"Hide password": "Cacher le mot de passe",
"Theme": "Thème" "Theme": "Thème"
} }
+32 -36
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s הוא שירות pastebin מקוון, מינימליסטי וקוד פתוח, שבו לשרת אין כל ידע על המידע שהודבק. הנתונים מוצפנים ומפוענחים %sבדפדפן%s באמצעות הצפנת AES ב-256 סיביות.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s הוא שירות pastebin מקוון, מינימליסטי וקוד פתוח, שבו לשרת אין כל ידע על המידע שהודבק. הנתונים מוצפנים ומפוענחים %sבדפדפן%s באמצעות הצפנת AES ב-256 סיביות.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "מידע נוסף בדף <a href=\"https://privatebin.info/\">הפרויקט</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "מידע נוסף בדף <a href=\"https://privatebin.info/\">הפרויקט</a>.",
"Because ignorance is bliss": "כיוון שבורות היא ברכה", "Because ignorance is bliss": "כיוון שבורות היא ברכה",
"Paste does not exist, has expired or has been deleted.": "ההדבקה לא קיימת, פגה או נמחקה.", "Document does not exist, has expired or has been deleted.": "ההדבקה לא קיימת, פגה או נמחקה.",
"%s requires php %s or above to work. Sorry.": "%s דורש PHP %s כדי לפעול.", "%s requires php %s or above to work. Sorry.": "%s דורש PHP %s כדי לפעול.",
"%s requires configuration section [%s] to be present in configuration file.": "%s דורש שסעיף ההגדרות [%s] יהיה קיים בקובץ ההגדרות.", "%s requires configuration section [%s] to be present in configuration file.": "%s דורש שסעיף ההגדרות [%s] יהיה קיים בקובץ ההגדרות.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"נא להמתין %d שניות בין פרסום לפרסום.", "נא להמתין %d שניות בין פרסום לפרסום.",
"נא להמתין %d שניות בין פרסום לפרסום." "נא להמתין %d שניות בין פרסום לפרסום."
], ],
"Paste is limited to %s of encrypted data.": "ההדבקה מוגבלת ל־%s של נתונים מוצפנים.", "Document is limited to %s of encrypted data.": "ההדבקה מוגבלת ל־%s של נתונים מוצפנים.",
"Invalid data.": "נתונים שגויים.", "Invalid data.": "נתונים שגויים.",
"You are unlucky. Try again.": "אין לך מזל. נא לנסות שוב.", "You are unlucky. Try again.": "אין לך מזל. נא לנסות שוב.",
"Error saving comment. Sorry.": "שגיאה בשמירת המסמך. סליחה.", "Error saving comment. Sorry.": "שגיאה בשמירת המסמך. סליחה.",
"Error saving paste. Sorry.": "שגיאה בשמירת ההדבקה. סליחה.", "Error saving document. Sorry.": "שגיאה בשמירת ההדבקה. סליחה.",
"Invalid paste ID.": "מזהה ההדבקה שגוי.", "Invalid document ID.": "מזהה ההדבקה שגוי.",
"Paste is not of burn-after-reading type.": "ההדבקה היא לא מסוג קוראים-שורפים.", "Document is not of burn-after-reading type.": "ההדבקה היא לא מסוג קוראים-שורפים.",
"Wrong deletion token. Paste was not deleted.": "אסימון מחיקה שגוי. ההדבקה לא נמחקה.", "Wrong deletion token. Document was not deleted.": "אסימון מחיקה שגוי. ההדבקה לא נמחקה.",
"Paste was properly deleted.": "ההדבקה נמחקה כראוי.", "Document was properly deleted.": "ההדבקה נמחקה כראוי.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "צריך JavaScript כדי לאפשר ל־%s לפעול. סליחה על חוסר הנוחות.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "צריך JavaScript כדי לאפשר ל־%s לפעול. סליחה על חוסר הנוחות.",
"%s requires a modern browser to work.": "%s דורש דפדפן מודרני כדי לפעול.", "%s requires a modern browser to work.": "%s דורש דפדפן מודרני כדי לפעול.",
"New": "חדש", "New": "חדש",
@@ -133,9 +133,9 @@
"מסמך זה יפוג בעוד %d חודשים.", "מסמך זה יפוג בעוד %d חודשים.",
"מסמך זה יפוג בעוד %d חודשים." "מסמך זה יפוג בעוד %d חודשים."
], ],
"Please enter the password for this paste:": "נא למלא את הססמה להדבקה הזו:", "Please enter the password for this document:": "נא למלא את הססמה להדבקה הזו:",
"Could not decrypt data (Wrong key?)": "לא ניתן לפענח את הנתונים (מפתח שגוי?)", "Could not decrypt data (Wrong key?)": "לא ניתן לפענח את הנתונים (מפתח שגוי?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "לא ניתן למחוק את ההדבקה, היא לא אוחסנה במצב קוראים-שורפים.", "Could not delete the document, it was not stored in burn after reading mode.": "לא ניתן למחוק את ההדבקה, היא לא אוחסנה במצב קוראים-שורפים.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "לעיניך בלבד. לא לסגור את החלון הזה, ההודעה הזאת לא תופיע שוב.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "לעיניך בלבד. לא לסגור את החלון הזה, ההודעה הזאת לא תופיע שוב.",
"Could not decrypt comment; Wrong key?": "לא ניתן לפענח את ההערה, מפתח שגוי?", "Could not decrypt comment; Wrong key?": "לא ניתן לפענח את ההערה, מפתח שגוי?",
"Reply": "תגובה", "Reply": "תגובה",
@@ -150,20 +150,12 @@
"unknown status": "מצב לא ידוע", "unknown status": "מצב לא ידוע",
"server error or not responding": "שגיאת שרת או שהשרת לא מגיב", "server error or not responding": "שגיאת שרת או שהשרת לא מגיב",
"Could not post comment: %s": "לא ניתן לפרסם תגובה: %s", "Could not post comment: %s": "לא ניתן לפרסם תגובה: %s",
"Sending paste…": "ההדבקה נשלחת…", "Sending document…": "ההדבקה נשלחת…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "ההדבקה שלך היא <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(יש ללחוץ <kbd>Ctrl</kbd>+<kbd>c</kbd> כדי להעתיק)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "ההדבקה שלך היא <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(יש ללחוץ <kbd>Ctrl</kbd>+<kbd>c</kbd> כדי להעתיק)</span>",
"Delete data": "מחיקת נתונים", "Delete data": "מחיקת נתונים",
"Could not create paste: %s": "לא ניתן ליצור הדבקה: %s", "Could not create document: %s": "לא ניתן ליצור הדבקה: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "לא ניתן לפענח הדבקה: מפתח הפענוח חסר בכתובת (השתמשת במערכת הפנייה או מקצר כתובות שחותכים חלק מהכתובת?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "לא ניתן לפענח הדבקה: מפתח הפענוח חסר בכתובת (השתמשת במערכת הפנייה או מקצר כתובות שחותכים חלק מהכתובת?)",
"B": "ב׳", "B": "ב׳",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "הורדת קובץ מצורף", "Download attachment": "הורדת קובץ מצורף",
"Cloned: '%s'": "שוכפל: '%s'", "Cloned: '%s'": "שוכפל: '%s'",
"The cloned file '%s' was attached to this paste.": "הקובץ '%s' שהועתק צורף להדבקה זו.", "The cloned file '%s' was attached to this document.": "הקובץ '%s' שהועתק צורף להדבקה זו.",
"Attach a file": "צירוף קובץ", "Attach a file": "צירוף קובץ",
"alternatively drag & drop a file or paste an image from the clipboard": "לחלופין, ניתן לגרור ולשחרר קובץ או להדביק תמונה מהלוח.", "alternatively drag & drop a file or paste an image from the clipboard": "לחלופין, ניתן לגרור ולשחרר קובץ או להדביק תמונה מהלוח.",
"File too large, to display a preview. Please download the attachment.": "הקובץ גדול מדי כדי להציג תצוגה מקדימה. אנא הורד את הקובץ המצורף.", "File too large, to display a preview. Please download the attachment.": "הקובץ גדול מדי כדי להציג תצוגה מקדימה. אנא הורד את הקובץ המצורף.",
@@ -193,11 +185,11 @@
"Decrypt": "פענוח", "Decrypt": "פענוח",
"Enter password": "נא למלא ססמה", "Enter password": "נא למלא ססמה",
"Loading…": "בטעינה…", "Loading…": "בטעינה…",
"Decrypting paste…": "ההדבקה מפוענחת…", "Decrypting document…": "ההדבקה מפוענחת…",
"Preparing new paste…": "ההדבקה החדשה בהכנות…", "Preparing new document…": "ההדבקה החדשה בהכנות…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "אם הודעה זו לא נעלמת, אנא עיין ב- <a href=\"%s\">שאלות נפוצות אלה למידע לפתרון בעיות</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "אם הודעה זו לא נעלמת, אנא עיין ב- <a href=\"%s\">שאלות נפוצות אלה למידע לפתרון בעיות</a>.",
"+++ no paste text +++": "+++ אין טקסט להדבקה +++", "+++ no document text +++": "+++ אין טקסט להדבקה +++",
"Could not get paste data: %s": "לא ניתן לקבל את נתוני ההדבקה: %s", "Could not get document data: %s": "לא ניתן לקבל את נתוני ההדבקה: %s",
"QR code": "קוד QR", "QR code": "קוד QR",
"This website is using an insecure HTTP connection! Please use it only for testing.": "האתר הזה משתמש בחיבור HTTP בלתי מאובטח! נא להשתמש בזה לבדיקות בלבד.", "This website is using an insecure HTTP connection! Please use it only for testing.": "האתר הזה משתמש בחיבור HTTP בלתי מאובטח! נא להשתמש בזה לבדיקות בלבד.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "לפרטים נוספים <a href=\"%s\">עיין ברשומת שאלות נפוצות זו</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "לפרטים נוספים <a href=\"%s\">עיין ברשומת שאלות נפוצות זו</a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "%sהערה מוצפנת ב־", "Encrypted note on %s": "%sהערה מוצפנת ב־",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "נא לבקר בקישור כדי לצפות בהערה. מסירת הקישור לאנשים כלשהם תאפשר גם להם לגשת להערה.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "נא לבקר בקישור כדי לצפות בהערה. מסירת הקישור לאנשים כלשהם תאפשר גם להם לגשת להערה.",
"URL shortener may expose your decrypt key in URL.": "שירות קיצור כתובת URL עשוי לחשוף את מפתח הפענוח שלך בכתובת ה-URL.", "URL shortener may expose your decrypt key in URL.": "שירות קיצור כתובת URL עשוי לחשוף את מפתח הפענוח שלך בכתובת ה-URL.",
"Save paste": "שמור הדבקה", "URL shortener is enabled by default.": "URL shortener is enabled by default.",
"Your IP is not authorized to create pastes.": "ה-IP שלך אינו מורשה ליצור הדבקות.", "Save document": "שמור הדבקה",
"Your IP is not authorized to create documents.": "ה-IP שלך אינו מורשה ליצור הדבקות.",
"Trying to shorten a URL that isn't pointing at our instance.": "מנסים לקצר כתובת URL שאינה מצביעה על המערכת שלנו.", "Trying to shorten a URL that isn't pointing at our instance.": "מנסים לקצר כתובת URL שאינה מצביעה על המערכת שלנו.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "שגיאה בעת קריאה ל-YOURLS. כנראה מדובר בבעיה בהגדרות, כמו \"apiurl\" או \"signature\" שגויים או חסרים.", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "שגיאה בעת קריאה ל-YOURLS. כנראה מדובר בבעיה בהגדרות, כמו \"apiurl\" או \"signature\" שגויים או חסרים.",
"Error parsing YOURLS response.": "שגיאה בניתוח התגובה מ-YOURLS.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "שגיאה בניתוח התגובה מ-YOURLS.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"This secret message can only be displayed once. Would you like to see it now?": "ההודעה הסודית הזו יכולה להוצג רק פעם אחת. האם תרצה לראות אותה עכשיו?", "This secret message can only be displayed once. Would you like to see it now?": "ההודעה הסודית הזו יכולה להוצג רק פעם אחת. האם תרצה לראות אותה עכשיו?",
"Yes, see it": "כן, ראה אותה", "Yes, see it": "כן, ראה אותה",
"Dark Mode": "מצב כהה", "Dark Mode": "מצב כהה",
"Error compressing paste, due to missing WebAssembly support.": "שגיאה בדחיסת ההדבקה, עקב חוסר תמיכה ב-WebAssembly.", "Error compressing document, due to missing WebAssembly support.": "שגיאה בדחיסת ההדבקה, עקב חוסר תמיכה ב-WebAssembly.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "שגיאה בהפקת ההדבקה, הדפדפן שלך לא תומך ב-WebAssembly. אנא השתמש בדפדפן אחר כדי לצפות בהדבקה זו.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "שגיאה בהפקת ההדבקה, הדפדפן שלך לא תומך ב-WebAssembly. אנא השתמש בדפדפן אחר כדי לצפות בהדבקה זו.",
"Start over": "להתחיל מחדש", "Start over": "להתחיל מחדש",
"Paste copied to clipboard": "ההדבקה הועתקה ללוח", "Document copied to clipboard": "ההדבקה הועתקה ללוח",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "על מנת להעתיק את ההדבקה, לחץ על כפתור ההעתקה או השתמש בקיצור הדרך ללוח <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "על מנת להעתיק את ההדבקה, לחץ על כפתור ההעתקה או השתמש בקיצור הדרך ללוח <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "העתק קישור", "Copy link": "העתק קישור",
"Link copied to clipboard": "הקישור הועתק ללוח", "Link copied to clipboard": "הקישור הועתק ללוח",
"Paste text": "הדבק טקסט", "Document text": "הדבק טקסט",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "משטח ה-tab פועל כמקש תו (לחץ על <kbd>Ctrl</kbd>+<kbd>m</kbd> או <kbd>Esc</kbd> להחלפה)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "משטח ה-tab פועל כמקש תו (לחץ על <kbd>Ctrl</kbd>+<kbd>m</kbd> או <kbd>Esc</kbd> להחלפה)",
"Show password": "Show password",
"Hide password": "Hide password",
"Theme": "נושא" "Theme": "נושא"
} }
+32 -36
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "More information on the <a href=\"https://privatebin.info/\">project page</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "More information on the <a href=\"https://privatebin.info/\">project page</a>.",
"Because ignorance is bliss": "Because ignorance is bliss", "Because ignorance is bliss": "Because ignorance is bliss",
"Paste does not exist, has expired or has been deleted.": "Paste does not exist, has expired or has been deleted.", "Document does not exist, has expired or has been deleted.": "Document does not exist, has expired or has been deleted.",
"%s requires php %s or above to work. Sorry.": "%s requires php %s or above to work. Sorry.", "%s requires php %s or above to work. Sorry.": "%s requires php %s or above to work. Sorry.",
"%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.", "%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Please wait %d seconds between each post. (4th plural)", "Please wait %d seconds between each post. (4th plural)",
"Please wait %d seconds between each post. (5th plural)" "Please wait %d seconds between each post. (5th plural)"
], ],
"Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.", "Document is limited to %s of encrypted data.": "Document is limited to %s of encrypted data.",
"Invalid data.": "Invalid data.", "Invalid data.": "Invalid data.",
"You are unlucky. Try again.": "You are unlucky. Try again.", "You are unlucky. Try again.": "You are unlucky. Try again.",
"Error saving comment. Sorry.": "Error saving comment. Sorry.", "Error saving comment. Sorry.": "Error saving comment. Sorry.",
"Error saving paste. Sorry.": "Error saving paste. Sorry.", "Error saving document. Sorry.": "Error saving document. Sorry.",
"Invalid paste ID.": "Invalid paste ID.", "Invalid document ID.": "Invalid document ID.",
"Paste is not of burn-after-reading type.": "Paste is not of burn-after-reading type.", "Document is not of burn-after-reading type.": "Document is not of burn-after-reading type.",
"Wrong deletion token. Paste was not deleted.": "Wrong deletion token. Paste was not deleted.", "Wrong deletion token. Document was not deleted.": "Wrong deletion token. Document was not deleted.",
"Paste was properly deleted.": "Paste was properly deleted.", "Document was properly deleted.": "Document was properly deleted.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.",
"%s requires a modern browser to work.": "%s requires a modern browser to work.", "%s requires a modern browser to work.": "%s requires a modern browser to work.",
"New": "New", "New": "New",
@@ -133,9 +133,9 @@
"This document will expire in %d months. (4th plural)", "This document will expire in %d months. (4th plural)",
"This document will expire in %d months. (5th plural)" "This document will expire in %d months. (5th plural)"
], ],
"Please enter the password for this paste:": "Please enter the password for this paste:", "Please enter the password for this document:": "Please enter the password for this document:",
"Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)", "Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Could not delete the paste, it was not stored in burn after reading mode.", "Could not delete the document, it was not stored in burn after reading mode.": "Could not delete the document, it was not stored in burn after reading mode.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.",
"Could not decrypt comment; Wrong key?": "Could not decrypt comment; Wrong key?", "Could not decrypt comment; Wrong key?": "Could not decrypt comment; Wrong key?",
"Reply": "Reply", "Reply": "Reply",
@@ -150,20 +150,12 @@
"unknown status": "unknown status", "unknown status": "unknown status",
"server error or not responding": "server error or not responding", "server error or not responding": "server error or not responding",
"Could not post comment: %s": "Could not post comment: %s", "Could not post comment: %s": "Could not post comment: %s",
"Sending paste…": "Sending paste…", "Sending document…": "Sending document…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>",
"Delete data": "Delete data", "Delete data": "Delete data",
"Could not create paste: %s": "Could not create paste: %s", "Could not create document: %s": "Could not create document: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Download attachment", "Download attachment": "Download attachment",
"Cloned: '%s'": "Cloned: '%s'", "Cloned: '%s'": "Cloned: '%s'",
"The cloned file '%s' was attached to this paste.": "The cloned file '%s' was attached to this paste.", "The cloned file '%s' was attached to this document.": "The cloned file '%s' was attached to this document.",
"Attach a file": "Attach a file", "Attach a file": "Attach a file",
"alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard", "alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard",
"File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.", "File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.",
@@ -193,11 +185,11 @@
"Decrypt": "Decrypt", "Decrypt": "Decrypt",
"Enter password": "Enter password", "Enter password": "Enter password",
"Loading…": "Loading…", "Loading…": "Loading…",
"Decrypting paste…": "Decrypting paste…", "Decrypting document…": "Decrypting document…",
"Preparing new paste…": "Preparing new paste…", "Preparing new document…": "Preparing new document…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.",
"+++ no paste text +++": "+++ no paste text +++", "+++ no document text +++": "+++ no document text +++",
"Could not get paste data: %s": "Could not get paste data: %s", "Could not get document data: %s": "Could not get document data: %s",
"QR code": "QR code", "QR code": "QR code",
"This website is using an insecure HTTP connection! Please use it only for testing.": "This website is using an insecure HTTP connection! Please use it only for testing.", "This website is using an insecure HTTP connection! Please use it only for testing.": "This website is using an insecure HTTP connection! Please use it only for testing.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "Encrypted note on %s", "Encrypted note on %s": "Encrypted note on %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.", "URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
"Save paste": "Save paste", "URL shortener is enabled by default.": "URL shortener is enabled by default.",
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.", "Save document": "Save document",
"Your IP is not authorized to create documents.": "Your IP is not authorized to create documents.",
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", "Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.",
"Error parsing YOURLS response.": "Error parsing YOURLS response.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?", "This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
"Yes, see it": "Yes, see it", "Yes, see it": "Yes, see it",
"Dark Mode": "Dark Mode", "Dark Mode": "Dark Mode",
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.", "Error compressing document, due to missing WebAssembly support.": "Error compressing document, due to missing WebAssembly support.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.",
"Start over": "Start over", "Start over": "Start over",
"Paste copied to clipboard": "Paste copied to clipboard", "Document copied to clipboard": "Document copied to clipboard",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Copy link", "Copy link": "Copy link",
"Link copied to clipboard": "Link copied to clipboard", "Link copied to clipboard": "Link copied to clipboard",
"Paste text": "Paste text", "Document text": "Document text",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)",
"Show password": "Show password",
"Hide password": "Hide password",
"Theme": "Theme" "Theme": "Theme"
} }
+48 -52
View File
@@ -1,10 +1,10 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "A %s egy minimalista, nyílt forráskódú adattároló szoftver, ahol a szerver semmilyen információt nem tárol a feltett adatról. Azt ugyanis a %sböngésződ%s segítségével titkosítja és oldja fel 256 bit hosszú titkosítási kulcsú AES-t használva.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "A %s minimalista, nyílt forráskódú adattároló szoftver, ahol a szerver semmilyen információt nem tárol a rábízott adatról. Azt ugyanis a %sböngésződ%s segítségével titkosítja és oldja fel 256 bit hosszú titkosítási kulcsú AES-t használva.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "További információt a <a href=\"https://privatebin.info/\">projekt oldalán</a> találsz.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "További információt a <a href=\"https://privatebin.info/\">projekt oldalán</a> találsz.",
"Because ignorance is bliss": "A titok egyfajta hatalom.", "Because ignorance is bliss": "A titok egyfajta hatalom.",
"Paste does not exist, has expired or has been deleted.": "A bejegyzés nem létezik, lejárt vagy törölve lett.", "Document does not exist, has expired or has been deleted.": "A bejegyzés nem létezik, lejárt vagy törölve lett.",
"%s requires php %s or above to work. Sorry.": "Bocs, de a %s működéséhez %s vagy ezt meghaladó verziójú php-s környezet szükséges.", "%s requires php %s or above to work. Sorry.": "Sajnáljuk, de a %s működéséhez %s vagy ezt meghaladó verziójú php-s környezet szükséges.",
"%s requires configuration section [%s] to be present in configuration file.": "A %s megfelelő működéséhez a konfigurációs fájlban a [%s] résznek léteznie kell.", "%s requires configuration section [%s] to be present in configuration file.": "A %s megfelelő működéséhez a konfigurációs fájlban a [%s] résznek léteznie kell.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
"Kérlek várj %d másodpercet két beküldés között.", "Kérlek várj %d másodpercet két beküldés között.",
@@ -14,15 +14,15 @@
"Kérlek várj %d másodpercet két beküldés között.", "Kérlek várj %d másodpercet két beküldés között.",
"Kérlek várj %d másodpercet két beküldés között." "Kérlek várj %d másodpercet két beküldés között."
], ],
"Paste is limited to %s of encrypted data.": "A bejegyzés maximális hossza: %s", "Document is limited to %s of encrypted data.": "A bejegyzés maximális hossza: %s",
"Invalid data.": "Érvénytelen adat.", "Invalid data.": "Érvénytelen adat.",
"You are unlucky. Try again.": "Peched volt, próbáld újra.", "You are unlucky. Try again.": "Peched volt, próbáld újra.",
"Error saving comment. Sorry.": "Nem sikerült menteni a hozzászólást. Bocs.", "Error saving comment. Sorry.": "Nem sikerült menteni a hozzászólást. Bocs.",
"Error saving paste. Sorry.": "Nem sikerült menteni a bejegyzést. Bocs.", "Error saving document. Sorry.": "Nem sikerült menteni a bejegyzést. Bocs.",
"Invalid paste ID.": "Érvénytelen bejegyzésazonosító.", "Invalid document ID.": "Érvénytelen bejegyzésazonosító.",
"Paste is not of burn-after-reading type.": "A bejegyzés nem semmisül meg azonnal olvasás után.", "Document is not of burn-after-reading type.": "A bejegyzés nem semmisül meg azonnal olvasás után.",
"Wrong deletion token. Paste was not deleted.": "Hibás törlési azonosító. A bejegyzés nem lett törölve.", "Wrong deletion token. Document was not deleted.": "Hibás törlési azonosító. A bejegyzés nem lett törölve.",
"Paste was properly deleted.": "A bejegyzés sikeresen törölve.", "Document was properly deleted.": "A bejegyzés sikeresen törölve.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript szükséges a %s működéséhez. Elnézést a fennakadásért.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript szükséges a %s működéséhez. Elnézést a fennakadásért.",
"%s requires a modern browser to work.": "A %s működéséhez a jelenleginél újabb böngészőre van szükség.", "%s requires a modern browser to work.": "A %s működéséhez a jelenleginél újabb böngészőre van szükség.",
"New": "Új", "New": "Új",
@@ -92,7 +92,7 @@
"%d év" "%d év"
], ],
"Never": "Soha", "Never": "Soha",
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Megjegyzés: ez egy teszt szolgáltatás, az adatok bármikor törlődhetnek. Ha visszaélsz vele, kiscicák bánhatják! :)", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Megjegyzés: ezen szolgáltatás egy teszt, az adatok bármikor törlődhetnek. Ha visszaélsz vele, kiscicák bánhatják.",
"This document will expire in %d seconds.": [ "This document will expire in %d seconds.": [
"Ez a bejegyzés %d másodperc múlva megsemmisül.", "Ez a bejegyzés %d másodperc múlva megsemmisül.",
"Ez a bejegyzés %d másodperc múlva megsemmisül.", "Ez a bejegyzés %d másodperc múlva megsemmisül.",
@@ -133,16 +133,16 @@
"Ez a bejegyzés %d hónap múlva megsemmisül.", "Ez a bejegyzés %d hónap múlva megsemmisül.",
"Ez a bejegyzés %d hónap múlva megsemmisül." "Ez a bejegyzés %d hónap múlva megsemmisül."
], ],
"Please enter the password for this paste:": "Add meg a szükséges jelszót a bejegyzés megtekintéséhez:", "Please enter the password for this document:": "Add meg a szükséges jelszót a bejegyzés megtekintéséhez:",
"Could not decrypt data (Wrong key?)": "Nem tudtuk visszfejteni az adatot. Talán rossz kulcsot adtál meg?", "Could not decrypt data (Wrong key?)": "Nem tudtuk visszfejteni az adatot. Talán rossz kulcsot adtál meg?",
"Could not delete the paste, it was not stored in burn after reading mode.": "Nem tudtuk törölni a bejegyzést, mivel az olvasás után egyből megsemmisült. Így nem is volt tárolva.", "Could not delete the document, it was not stored in burn after reading mode.": "Nem tudtuk törölni a bejegyzést, mivel az olvasás után egyből megsemmisült. Így nem is volt tárolva.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "EZT A BEJEGYZÉST CSAK TE LÁTHATOD!!! Ne csukd be ezt az ablakot, mivel nem tudod újra megnézni. Az ugyanis az első olvasás után rögtön megsemmisül.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "EZT A BEJEGYZÉST CSAK TE LÁTHATOD!!! Ne csukd be ezt az ablakot, mivel nem tudod újra megnézni. Az ugyanis az első olvasás után rögtön megsemmisül.",
"Could not decrypt comment; Wrong key?": "Nem tudtuk visszafejteni a hozzászólást. Talán rossz kulcsot adtál meg?", "Could not decrypt comment; Wrong key?": "Nem tudtuk visszafejteni a hozzászólást. Talán rossz kulcsot adtál meg?",
"Reply": "Válasz", "Reply": "Válasz",
"Anonymous": "Névtelen", "Anonymous": "Névtelen",
"Avatar generated from IP address": "Avatar (az IP cím alapján generáljuk)", "Avatar generated from IP address": "Avatar (az IP cím alapján generáljuk)",
"Add comment": "Hozzászólok", "Add comment": "Hozzászólok",
"Optional nickname…": "Becenév (már ha meg akarod adni)", "Optional nickname…": "Becenév (amennyiben meg akarod adni)",
"Post comment": "Beküld", "Post comment": "Beküld",
"Sending comment…": "Beküldés alatt...", "Sending comment…": "Beküldés alatt...",
"Comment posted.": "A hozzászólás beküldve.", "Comment posted.": "A hozzászólás beküldve.",
@@ -150,20 +150,12 @@
"unknown status": "Ismeretlen státusz.", "unknown status": "Ismeretlen státusz.",
"server error or not responding": "A szerveren hiba lépett fel vagy nem válaszol.", "server error or not responding": "A szerveren hiba lépett fel vagy nem válaszol.",
"Could not post comment: %s": "Nem tudtuk beküldeni a hozzászólást: %s", "Could not post comment: %s": "Nem tudtuk beküldeni a hozzászólást: %s",
"Sending paste…": "Bejegyzés elküldése...", "Sending document…": "Bejegyzés elküldése...",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "A bejegyzésed a <a id=\"pasteurl\" href=\"%s\">%s</a> címen elérhető. <span id=\"copyhint\"> <kbd>Ctrl</kbd>+<kbd>c</kbd>-vel tudod vágólapra másolni.</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "A bejegyzésed a <a id=\"pasteurl\" href=\"%s\">%s</a> címen elérhető. <span id=\"copyhint\"> <kbd>Ctrl</kbd>+<kbd>c</kbd>-vel tudod vágólapra másolni.</span>",
"Delete data": "Adat törlése", "Delete data": "Adat törlése",
"Could not create paste: %s": "Nem tudtuk létrehozni a bejegyzést: %s", "Could not create document: %s": "Nem tudtuk létrehozni a bejegyzést: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Nem tudjuk visszafejteni a bejegyzést: a dekódoláshoz szükséges kulcs hiányzik a címből. Talán URL rövidítőt használtál ami kivágta azt belőle?", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Nem tudjuk visszafejteni a bejegyzést: a dekódoláshoz szükséges kulcs hiányzik a címből. Talán URL rövidítőt használtál, amely azt kivágta belőle?",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Csatolmány letöltése", "Download attachment": "Csatolmány letöltése",
"Cloned: '%s'": "'%s' másolva", "Cloned: '%s'": "'%s' másolva",
"The cloned file '%s' was attached to this paste.": "A másolt '%s' csatolmányt hozzáadtuk ehhez a bejegyzéshez.", "The cloned file '%s' was attached to this document.": "A másolt '%s' csatolmányt hozzáadtuk ehhez a bejegyzéshez.",
"Attach a file": "Fájl csatolása", "Attach a file": "Fájl csatolása",
"alternatively drag & drop a file or paste an image from the clipboard": "vagy húzz ide egy fájlt, netán illessz be egy képet a vágólapról.", "alternatively drag & drop a file or paste an image from the clipboard": "vagy húzz ide egy fájlt, netán illessz be egy képet a vágólapról.",
"File too large, to display a preview. Please download the attachment.": "A fájl túl nagy ahhoz, hogy előnézete legyen. Töltsd le, hogy megtekinthesd.", "File too large, to display a preview. Please download the attachment.": "A fájl túl nagy ahhoz, hogy előnézete legyen. Töltsd le, hogy megtekinthesd.",
@@ -193,18 +185,18 @@
"Decrypt": "Visszafejtés", "Decrypt": "Visszafejtés",
"Enter password": "Jelszó", "Enter password": "Jelszó",
"Loading…": "Folyamatban...", "Loading…": "Folyamatban...",
"Decrypting paste…": "Bejegyzés visszafejtése...", "Decrypting document…": "Bejegyzés visszafejtése...",
"Preparing new paste…": "Új bejegyzés előkészítése...", "Preparing new document…": "Új bejegyzés előkészítése...",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Abban az esetben, ha ez az üzenet mindig látható lenne, látogass el a <a href=\"%s\">Gyakran Ismételt Kérdések szekcióba a megoldásához</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Abban az esetben, ha ez az üzenet mindig látható lenne, látogass el a <a href=\"%s\">Gyakran Ismételt Kérdések szekcióba a megoldásához</a>.",
"+++ no paste text +++": "+++ nincs beillesztett szöveg +++", "+++ no document text +++": "+++ nincs beillesztett szöveg +++",
"Could not get paste data: %s": "Az adat megszerzése nem sikerült: %s", "Could not get document data: %s": "Az adat megszerzése nem sikerült: %s",
"QR code": "QR kód", "QR code": "QR-kód",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Ez a weboldal nem biztonságos HTTP kapcsolatot használ! Emiatt csak teszt célokra ajánljuk.", "This website is using an insecure HTTP connection! Please use it only for testing.": "Ez a weboldal nem biztonságos (HTTP) kapcsolatot használ! Emiatt csak teszt célra ajánljuk.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "További információ <a href=\"%s\">ebben a GyIK bejegyzésben</a> található (angolul).", "For more information <a href=\"%s\">see this FAQ entry</a>.": "További információ <a href=\"%s\">ebben a GyIK bejegyzésben</a> található (angolul).",
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "A WebCrypto API használatához a böngésződ számára esetleg HTTPS kapcsolat szükséges. Ezért próbálj meg <a href=\"%s\">HTTPS-re váltani</a>.", "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "A WebCrypto API használatához a böngésződ számára esetleg HTTPS kapcsolat szükséges. Ezért próbálj meg <a href=\"%s\">HTTPS-re váltani</a>.",
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "A böngésződ nem támogatja a WebAssemblyt, ami a zlib tömörítéshez kell. Létre tudsz hozni tömörítetlen dokumentumokat, de tömörítetteket nem tudsz olvasni.", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "A böngésződ nem támogatja a WebAssemblyt, amely zlib-tömörítéshez szükséges. Létrehozhatsz tömörítetlen bejegyzést, de tömörítetteket nem tudsz elolvasni.",
"waiting on user to provide a password": "Várakozás a felhasználóra jelszó megadása okán", "waiting on user to provide a password": "Várakozás jelszó megadására",
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Nem lehetett visszafejteni az adatot. Rossz jelszót ütöttél be? Ismételd meg a fent található gombbal.", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Nem sikerült visszafejteni az adatot. Rossz jelszót ütöttél be? Ismételd meg a fentebbi gombbal.",
"Retry": "Újrapróbálkozás", "Retry": "Újrapróbálkozás",
"Showing raw text…": "Nyers szöveg mutatása…", "Showing raw text…": "Nyers szöveg mutatása…",
"Notice:": "Megjegyzés:", "Notice:": "Megjegyzés:",
@@ -217,23 +209,27 @@
"Close": "Bezárás", "Close": "Bezárás",
"Encrypted note on %s": "Titkosított jegyzet a %s", "Encrypted note on %s": "Titkosított jegyzet a %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Látogasd meg ezt a hivatkozást a bejegyzés megtekintéséhez. Ha mások számára is megadod ezt a linket, azzal hozzáférnek ők is.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Látogasd meg ezt a hivatkozást a bejegyzés megtekintéséhez. Ha mások számára is megadod ezt a linket, azzal hozzáférnek ők is.",
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.", "URL shortener may expose your decrypt key in URL.": "Az URL-rövidítő kiszolgáltathatja dekódolókulcsod.",
"Save paste": "Save paste", "URL shortener is enabled by default.": "Az URL-rövidítő alapértelmezetten engedélyezett.",
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.", "Save document": "Bejegyzés mentése",
"Your IP is not authorized to create documents.": "Your IP is not authorized to create documents.",
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", "Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.",
"Error parsing YOURLS response.": "Error parsing YOURLS response.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.",
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?", "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"Yes, see it": "Yes, see it", "This secret message can only be displayed once. Would you like to see it now?": "Ez az üzenet csak egyszer jeleníthető meg. Szeretnéd megnézni?",
"Yes, see it": "Igen",
"Dark Mode": "Sötét mód", "Dark Mode": "Sötét mód",
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.", "Error compressing document, due to missing WebAssembly support.": "WebAssembly-támogatás hiánya miatt nem tömöríthetjük a dokumentumot.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.",
"Start over": "Start over", "Start over": "Újrakezdés",
"Paste copied to clipboard": "Paste copied to clipboard", "Document copied to clipboard": "Bejegyzés másolva",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "Másoláshoz használd a <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd> billentyűkombinációt",
"Copy link": "Copy link", "Copy link": "Link másolása",
"Link copied to clipboard": "Link copied to clipboard", "Link copied to clipboard": "Link másolva",
"Paste text": "Paste text", "Document text": "Bejegyzés szövege",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "A tabulátor karakternek használható (nyomd le a <kbd>Ctrl</kbd>+<kbd>m</kbd> vagy az <kbd>Esc</kbd> to billentyűket ennek megszüntetéséhez).",
"Theme": "Theme" "Show password": "Jelszó megjelenítése",
"Hide password": "Jelszó elrejtése",
"Theme": "Téma"
} }
+32 -36
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s adalah sebuah pastebin online sumber terbuka dan minimalis, dimana servernya tersebut tidak punya pengetahuan tentang data yang ditempelkan. Data tersebut di enkrip/dekrip %sdi dalam browser%s menggunakan metode enkrip AES 256 bit.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s adalah sebuah pastebin online sumber terbuka dan minimalis, dimana servernya tersebut tidak punya pengetahuan tentang data yang ditempelkan. Data tersebut di enkrip/dekrip %sdi dalam browser%s menggunakan metode enkrip AES 256 bit.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Infomasi lebih lanjut pada <a href=\"https://privatebin.info/\">halaman proyek</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Infomasi lebih lanjut pada <a href=\"https://privatebin.info/\">halaman proyek</a>.",
"Because ignorance is bliss": "Karena ketidaktahuan adalah kebahagiaan, gitu loh", "Because ignorance is bliss": "Karena ketidaktahuan adalah kebahagiaan, gitu loh",
"Paste does not exist, has expired or has been deleted.": "Paste tidak ada, telah kedaluwarsa atau telah dihapus.", "Document does not exist, has expired or has been deleted.": "Document tidak ada, telah kedaluwarsa atau telah dihapus.",
"%s requires php %s or above to work. Sorry.": "%s memerlukan php %s atau versi diatasnya untuk dapat dijalankan. Maaf.", "%s requires php %s or above to work. Sorry.": "%s memerlukan php %s atau versi diatasnya untuk dapat dijalankan. Maaf.",
"%s requires configuration section [%s] to be present in configuration file.": "%s membutuhkan bagian konfigurasi [%s] untuk ada di file konfigurasi.", "%s requires configuration section [%s] to be present in configuration file.": "%s membutuhkan bagian konfigurasi [%s] untuk ada di file konfigurasi.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Silahkan menunggu %d detik antara masing-masing postingan.", "Silahkan menunggu %d detik antara masing-masing postingan.",
"Silahkan menunggu %d detik antara masing-masing postingan." "Silahkan menunggu %d detik antara masing-masing postingan."
], ],
"Paste is limited to %s of encrypted data.": "Paste dibatasi sampai %s dari data yang dienskripsi.", "Document is limited to %s of encrypted data.": "Document dibatasi sampai %s dari data yang dienskripsi.",
"Invalid data.": "Data tidak valid.", "Invalid data.": "Data tidak valid.",
"You are unlucky. Try again.": "Anda belum beruntung. Coba kembali ya Kaka.", "You are unlucky. Try again.": "Anda belum beruntung. Coba kembali ya Kaka.",
"Error saving comment. Sorry.": "Terjadi kesalahan saat menyimpan komentar. Maaf ya Kaka.", "Error saving comment. Sorry.": "Terjadi kesalahan saat menyimpan komentar. Maaf ya Kaka.",
"Error saving paste. Sorry.": "Terjadi kesalahan saat menyimpan paste. Maaf ya Kaka.", "Error saving document. Sorry.": "Terjadi kesalahan saat menyimpan document. Maaf ya Kaka.",
"Invalid paste ID.": "ID paste tidak valid.", "Invalid document ID.": "ID document tidak valid.",
"Paste is not of burn-after-reading type.": "Paste bukan tipe hapus-setelah-membaca.", "Document is not of burn-after-reading type.": "Document bukan tipe hapus-setelah-membaca.",
"Wrong deletion token. Paste was not deleted.": "Token penghapusan salah. Paste belum terhapus.", "Wrong deletion token. Document was not deleted.": "Token penghapusan salah. Document belum terhapus.",
"Paste was properly deleted.": "Paste telah dihapus dengan benar.", "Document was properly deleted.": "Document telah dihapus dengan benar.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript diperlukan agar %s bekerja. Maaf untuk ketidaknyamanannya.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript diperlukan agar %s bekerja. Maaf untuk ketidaknyamanannya.",
"%s requires a modern browser to work.": "%s memerlukan sebuah browser modern untuk bekerja.", "%s requires a modern browser to work.": "%s memerlukan sebuah browser modern untuk bekerja.",
"New": "Baru", "New": "Baru",
@@ -133,9 +133,9 @@
"Dokumen ini akan kadaluarsa dalam %d bulan.", "Dokumen ini akan kadaluarsa dalam %d bulan.",
"Dokumen ini akan kadaluarsa dalam %d bulan." "Dokumen ini akan kadaluarsa dalam %d bulan."
], ],
"Please enter the password for this paste:": "Silahkan masukkan kata sandi untuk paste ini:", "Please enter the password for this document:": "Silahkan masukkan kata sandi untuk document ini:",
"Could not decrypt data (Wrong key?)": "Tidak dapat mendekrip data (Salah kunci?)", "Could not decrypt data (Wrong key?)": "Tidak dapat mendekrip data (Salah kunci?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Tidak dapat menghapus paste, ini dikarenakan data tidak tersimpan dalam mode hapus setelah membaca.", "Could not delete the document, it was not stored in burn after reading mode.": "Tidak dapat menghapus document, ini dikarenakan data tidak tersimpan dalam mode hapus setelah membaca.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "HANYA UNTUK ANDA SAJA. Jangan tutup kolom jendela ini, pesan ini tidak akan dapat ditampilkan lagi.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "HANYA UNTUK ANDA SAJA. Jangan tutup kolom jendela ini, pesan ini tidak akan dapat ditampilkan lagi.",
"Could not decrypt comment; Wrong key?": "Tidak dapat mendekrip komentar; Salah kunci?", "Could not decrypt comment; Wrong key?": "Tidak dapat mendekrip komentar; Salah kunci?",
"Reply": "Balas", "Reply": "Balas",
@@ -150,20 +150,12 @@
"unknown status": "status tidak diketahui", "unknown status": "status tidak diketahui",
"server error or not responding": "kesalahan server atau server tidak merespon", "server error or not responding": "kesalahan server atau server tidak merespon",
"Could not post comment: %s": "Tidak dapat memposting komentar: %s", "Could not post comment: %s": "Tidak dapat memposting komentar: %s",
"Sending paste…": "Mengirim paste…", "Sending document…": "Mengirim document…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Paste Anda adalah <a id=\"pasteurl\" href=\"%s\">%s</a><span id=\"copyhint\">(Tekan <kbd>Ctrl</kbd>+<kbd>c</kbd> untuk menyalin)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Document Anda adalah <a id=\"pasteurl\" href=\"%s\">%s</a><span id=\"copyhint\">(Tekan <kbd>Ctrl</kbd>+<kbd>c</kbd> untuk menyalin)</span>",
"Delete data": "Hapus data", "Delete data": "Hapus data",
"Could not create paste: %s": "Tidak dapat membuat paste: %s", "Could not create document: %s": "Tidak dapat membuat document: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Tidak dapat mendekripsi paste: Kunci dekripsi tidak ada di URL (Apakah Anda menggunakan redirector atau penyingkat URL yang menghapus bagian dari URL?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Tidak dapat mendekripsi document: Kunci dekripsi tidak ada di URL (Apakah Anda menggunakan redirector atau penyingkat URL yang menghapus bagian dari URL?)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Unduh lampiran", "Download attachment": "Unduh lampiran",
"Cloned: '%s'": "Diklon: '%s'", "Cloned: '%s'": "Diklon: '%s'",
"The cloned file '%s' was attached to this paste.": "Berkas yang di-klon '%s' telah dilampirkan pada paste ini.", "The cloned file '%s' was attached to this document.": "Berkas yang di-klon '%s' telah dilampirkan pada document ini.",
"Attach a file": "Lampirkan sebuah berkas", "Attach a file": "Lampirkan sebuah berkas",
"alternatively drag & drop a file or paste an image from the clipboard": "sebagai alternatif, seret & jatuhkan berkas atau tempel sebuah gambar dari papan klip", "alternatively drag & drop a file or paste an image from the clipboard": "sebagai alternatif, seret & jatuhkan berkas atau tempel sebuah gambar dari papan klip",
"File too large, to display a preview. Please download the attachment.": "File terlalu besar untuk menampilkan pratinjau. Silakan unduh lampirannya.", "File too large, to display a preview. Please download the attachment.": "File terlalu besar untuk menampilkan pratinjau. Silakan unduh lampirannya.",
@@ -193,11 +185,11 @@
"Decrypt": "Dekrip", "Decrypt": "Dekrip",
"Enter password": "Masukkan kata sandi", "Enter password": "Masukkan kata sandi",
"Loading…": "Memuat…", "Loading…": "Memuat…",
"Decrypting paste…": "Men-dekrip paste…", "Decrypting document…": "Men-dekrip document…",
"Preparing new paste…": "Menyiapkan paste baru…", "Preparing new document…": "Menyiapkan document baru…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Jika pesan ini tidak pernah menghilang, silahkan kunjungi dan lihat pada <a href=\"%s\">FAQ ini untuk informasi bagaimana menyelesaikan masalah tersebut</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Jika pesan ini tidak pernah menghilang, silahkan kunjungi dan lihat pada <a href=\"%s\">FAQ ini untuk informasi bagaimana menyelesaikan masalah tersebut</a>.",
"+++ no paste text +++": "+++ tidak ada teks paste +++", "+++ no document text +++": "+++ tidak ada teks document +++",
"Could not get paste data: %s": "Tidak dapat mengambil/menampilkan data paste: %s", "Could not get document data: %s": "Tidak dapat mengambil/menampilkan data document: %s",
"QR code": "Kode QR", "QR code": "Kode QR",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Situs web ini menggunakan koneksi HTTP yang tidak aman! Silahkan gunakan hanya untuk pengujian.", "This website is using an insecure HTTP connection! Please use it only for testing.": "Situs web ini menggunakan koneksi HTTP yang tidak aman! Silahkan gunakan hanya untuk pengujian.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Untuk informasi lebih lanjut, <a href=\"%s\"> lihat entri FAQ ini </a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "Untuk informasi lebih lanjut, <a href=\"%s\"> lihat entri FAQ ini </a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "Catatan ter-ekrip di %s", "Encrypted note on %s": "Catatan ter-ekrip di %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Kunjungi tautan ini untuk melihat catatan. Memberikan alamat URL pada siapapun juga, akan mengizinkan mereka untuk mengakses catatan, so pasti gitu loh Kaka.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Kunjungi tautan ini untuk melihat catatan. Memberikan alamat URL pada siapapun juga, akan mengizinkan mereka untuk mengakses catatan, so pasti gitu loh Kaka.",
"URL shortener may expose your decrypt key in URL.": "Pemendek URL mungkin akan menampakkan kunci dekrip Anda dalam URL.", "URL shortener may expose your decrypt key in URL.": "Pemendek URL mungkin akan menampakkan kunci dekrip Anda dalam URL.",
"Save paste": "Simpan paste", "URL shortener is enabled by default.": "URL shortener is enabled by default.",
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.", "Save document": "Simpan document",
"Your IP is not authorized to create documents.": "Your IP is not authorized to create documents.",
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", "Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.",
"Error parsing YOURLS response.": "Error parsing YOURLS response.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?", "This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
"Yes, see it": "Yes, see it", "Yes, see it": "Yes, see it",
"Dark Mode": "Mode Gelap", "Dark Mode": "Mode Gelap",
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.", "Error compressing document, due to missing WebAssembly support.": "Error compressing document, due to missing WebAssembly support.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.",
"Start over": "Start over", "Start over": "Start over",
"Paste copied to clipboard": "Paste copied to clipboard", "Document copied to clipboard": "Document copied to clipboard",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Copy link", "Copy link": "Copy link",
"Link copied to clipboard": "Link copied to clipboard", "Link copied to clipboard": "Link copied to clipboard",
"Paste text": "Paste text", "Document text": "Document text",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)",
"Show password": "Show password",
"Hide password": "Hide password",
"Theme": "Theme" "Theme": "Theme"
} }
+35 -39
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s è un sistema di tipo \"Pastebin\" online, open source, minimalista. Il server non possiede alcuna conoscenza (\"Zero Knowledge\") del contenuto dei dati inviati. I dati sono cifrati/decifrati %snel Browser%s con algoritmo AES a 256 Bit.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s è un sistema di tipo \"Pastebin\" online, open source, minimalista. Il server non possiede alcuna conoscenza (\"Zero Knowledge\") del contenuto dei dati inviati. I dati sono cifrati/decifrati %snel Browser%s con algoritmo AES a 256 Bit.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Per ulteriori informazioni, vedi <a href=\"https://privatebin.info/\">Sito del progetto</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Per ulteriori informazioni, vedi <a href=\"https://privatebin.info/\">Sito del progetto</a>.",
"Because ignorance is bliss": "Perché l'ignoranza è una benedizione (Because ignorance is bliss)", "Because ignorance is bliss": "Perché l'ignoranza è una benedizione (Because ignorance is bliss)",
"Paste does not exist, has expired or has been deleted.": "Questo messaggio non esiste, è scaduto o è stato cancellato.", "Document does not exist, has expired or has been deleted.": "Questo messaggio non esiste, è scaduto o è stato cancellato.",
"%s requires php %s or above to work. Sorry.": "%s richiede php %s o superiore per funzionare. Ci spiace.", "%s requires php %s or above to work. Sorry.": "%s richiede php %s o superiore per funzionare. Ci spiace.",
"%s requires configuration section [%s] to be present in configuration file.": "%s richiede la presenza della sezione [%s] nei file di configurazione.", "%s requires configuration section [%s] to be present in configuration file.": "%s richiede la presenza della sezione [%s] nei file di configurazione.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Attendi per favore %d secondi prima di ciascun invio.", "Attendi per favore %d secondi prima di ciascun invio.",
"Attendi per favore %d secondi prima di ciascun invio." "Attendi per favore %d secondi prima di ciascun invio."
], ],
"Paste is limited to %s of encrypted data.": "La dimensione del messaggio è limitata a %s di dati cifrati.", "Document is limited to %s of encrypted data.": "La dimensione del messaggio è limitata a %s di dati cifrati.",
"Invalid data.": "Dati non validi.", "Invalid data.": "Dati non validi.",
"You are unlucky. Try again.": "Ritenta, sarai più fortunato.", "You are unlucky. Try again.": "Ritenta, sarai più fortunato.",
"Error saving comment. Sorry.": "Errore durante il salvataggio del commento.", "Error saving comment. Sorry.": "Errore durante il salvataggio del commento.",
"Error saving paste. Sorry.": "Errore durante il salvataggio del messaggio.", "Error saving document. Sorry.": "Errore durante il salvataggio del messaggio.",
"Invalid paste ID.": "ID-Messaggio non valido.", "Invalid document ID.": "ID-Messaggio non valido.",
"Paste is not of burn-after-reading type.": "Il messaggio non è di tipo Distruggi-dopo-lettura.", "Document is not of burn-after-reading type.": "Il messaggio non è di tipo Distruggi-dopo-lettura.",
"Wrong deletion token. Paste was not deleted.": "Codice cancellazione errato. Il messaggio NON è stato cancellato.", "Wrong deletion token. Document was not deleted.": "Codice cancellazione errato. Il messaggio NON è stato cancellato.",
"Paste was properly deleted.": "Il messaggio è stato correttamente cancellato.", "Document was properly deleted.": "Il messaggio è stato correttamente cancellato.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "%s funziona solo con JavaScript attivo. Ci dispiace per l'inconveniente.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "%s funziona solo con JavaScript attivo. Ci dispiace per l'inconveniente.",
"%s requires a modern browser to work.": "%s richiede un browser moderno e aggiornato per funzionare.", "%s requires a modern browser to work.": "%s richiede un browser moderno e aggiornato per funzionare.",
"New": "Nuovo", "New": "Nuovo",
@@ -133,9 +133,9 @@
"Questo documento scadrà in %d mesi.", "Questo documento scadrà in %d mesi.",
"Questo documento scadrà in %d mesi." "Questo documento scadrà in %d mesi."
], ],
"Please enter the password for this paste:": "Inserisci la password per questo messaggio:", "Please enter the password for this document:": "Inserisci la password per questo messaggio:",
"Could not decrypt data (Wrong key?)": "Non riesco a decifrare i dati (chiave sbagliata?)", "Could not decrypt data (Wrong key?)": "Non riesco a decifrare i dati (chiave sbagliata?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Non riesco a cancellare il messaggio, non è stato salvato in modalità Distruggi-dopo-lettora.", "Could not delete the document, it was not stored in burn after reading mode.": "Non riesco a cancellare il messaggio, non è stato salvato in modalità Distruggi-dopo-lettora.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "FOR YOUR EYES ONLY. Non chiudere questa finestra, il messaggio non può essere visualizzato una seconda volta.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "FOR YOUR EYES ONLY. Non chiudere questa finestra, il messaggio non può essere visualizzato una seconda volta.",
"Could not decrypt comment; Wrong key?": "Non riesco a decifrare il commento (Chiave sbagliata?)", "Could not decrypt comment; Wrong key?": "Non riesco a decifrare il commento (Chiave sbagliata?)",
"Reply": "Rispondi", "Reply": "Rispondi",
@@ -150,20 +150,12 @@
"unknown status": "stato sconosciuto", "unknown status": "stato sconosciuto",
"server error or not responding": "errore o mancata risposta dal server", "server error or not responding": "errore o mancata risposta dal server",
"Could not post comment: %s": "Impossibile inviare il commento: %s", "Could not post comment: %s": "Impossibile inviare il commento: %s",
"Sending paste…": "Messaggio in fase di invio…", "Sending document…": "Messaggio in fase di invio…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Il tuo messaggio è qui: <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Premi <kbd>Ctrl</kbd>+<kbd>c</kbd> (Windows) o [Cmd]+[c] (Mac) per copiare il link)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Il tuo messaggio è qui: <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Premi <kbd>Ctrl</kbd>+<kbd>c</kbd> (Windows) o [Cmd]+[c] (Mac) per copiare il link)</span>",
"Delete data": "Cancella i dati", "Delete data": "Cancella i dati",
"Could not create paste: %s": "Non riesco a creare il messaggio: %s", "Could not create document: %s": "Non riesco a creare il messaggio: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Non riesco a decifrare il messaggio: manca la chiave di decifrazione nell'URL (La chiave è parte integrante dell'URL. Per caso hai usato un Redirector o un altro servizio che ha rimosso una parte dell'URL?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Non riesco a decifrare il messaggio: manca la chiave di decifrazione nell'URL (La chiave è parte integrante dell'URL. Per caso hai usato un Redirector o un altro servizio che ha rimosso una parte dell'URL?)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Scarica Allegato", "Download attachment": "Scarica Allegato",
"Cloned: '%s'": "Clonato: '%s'", "Cloned: '%s'": "Clonato: '%s'",
"The cloned file '%s' was attached to this paste.": "Il file clonato '%s' era allegato a questo messaggio.", "The cloned file '%s' was attached to this document.": "Il file clonato '%s' era allegato a questo messaggio.",
"Attach a file": "Allega un file", "Attach a file": "Allega un file",
"alternatively drag & drop a file or paste an image from the clipboard": "in alternativa trascina e rilascia un file o incolla un'immagine dagli appunti", "alternatively drag & drop a file or paste an image from the clipboard": "in alternativa trascina e rilascia un file o incolla un'immagine dagli appunti",
"File too large, to display a preview. Please download the attachment.": "File troppo grande, per visualizzare un'anteprima. Sei pregato di scaricare l'allegato.", "File too large, to display a preview. Please download the attachment.": "File troppo grande, per visualizzare un'anteprima. Sei pregato di scaricare l'allegato.",
@@ -193,11 +185,11 @@
"Decrypt": "Decifra", "Decrypt": "Decifra",
"Enter password": "Inserisci la password", "Enter password": "Inserisci la password",
"Loading…": "Carico…", "Loading…": "Carico…",
"Decrypting paste…": "Decifro il messaggio…", "Decrypting document…": "Decifro il messaggio…",
"Preparing new paste…": "Preparo il nuovo messaggio…", "Preparing new document…": "Preparo il nuovo messaggio…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Nel caso questo messaggio non scompaia, controlla questa <a href=\"%s\">FAQ</a> per trovare informazioni su come risolvere il problema (in Inglese).", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Nel caso questo messaggio non scompaia, controlla questa <a href=\"%s\">FAQ</a> per trovare informazioni su come risolvere il problema (in Inglese).",
"+++ no paste text +++": "+++ nessun testo nel messaggio +++", "+++ no document text +++": "+++ nessun testo nel messaggio +++",
"Could not get paste data: %s": "Impossibile ottenere i dati di incolla: %s", "Could not get document data: %s": "Impossibile ottenere i dati di incolla: %s",
"QR code": "QR code", "QR code": "QR code",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Questo sito web sta usando una connessione HTTP non sicura! Si prega di usarlo solo per il test.", "This website is using an insecure HTTP connection! Please use it only for testing.": "Questo sito web sta usando una connessione HTTP non sicura! Si prega di usarlo solo per il test.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Per ulteriori informazioni <a href=\"%s\">vedi questa voce della FAQ</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "Per ulteriori informazioni <a href=\"%s\">vedi questa voce della FAQ</a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "Nota crittografata su %s", "Encrypted note on %s": "Nota crittografata su %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visita questo collegamento per vedere la nota. Dare l'URL a chiunque consente anche a loro di accedere alla nota.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visita questo collegamento per vedere la nota. Dare l'URL a chiunque consente anche a loro di accedere alla nota.",
"URL shortener may expose your decrypt key in URL.": "URL shortener può esporre la tua chiave decrittografata nell'URL.", "URL shortener may expose your decrypt key in URL.": "URL shortener può esporre la tua chiave decrittografata nell'URL.",
"Save paste": "Salva il messagio", "URL shortener is enabled by default.": "L'abbreviatore URL è abilitato per impostazione predefinita.",
"Your IP is not authorized to create pastes.": "Il tuo IP non è autorizzato a creare dei messaggi.", "Save document": "Salva il messagio",
"Your IP is not authorized to create documents.": "Il tuo IP non è autorizzato a creare dei messaggi.",
"Trying to shorten a URL that isn't pointing at our instance.": "Tantativo in corso di accorciare un URL che non punta alla nostra istanza.", "Trying to shorten a URL that isn't pointing at our instance.": "Tantativo in corso di accorciare un URL che non punta alla nostra istanza.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Errore nella chiamata a YOURLS. Probabilmente un problema di configurazione, come un \"apiurl\" o una \"signature\" sbagliati o mancanti.", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Errore del proxy: URL del proxy è vuoto. Questo può essere un problema di configurazione, come chiavi di configurazione sbagliate o mancanti.",
"Error parsing YOURLS response.": "Errore nell'analizzare la risposta YOURLS.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Errore del proxy: errore nell'analizzare la risposta del proxy. Questo può essere un problema di configurazione, come chiavi di configurazione sbagliate o mancanti.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Errore del proxy: risposta errata. Questo può essere un problema di configurazione, come chiavi di configurazione sbagliate o mancanti.",
"This secret message can only be displayed once. Would you like to see it now?": "Questo messaggio di tipo Distruggi-dopo-lettura può essere visualizzato solo una volta. Vuoi vederlo ora?", "This secret message can only be displayed once. Would you like to see it now?": "Questo messaggio di tipo Distruggi-dopo-lettura può essere visualizzato solo una volta. Vuoi vederlo ora?",
"Yes, see it": "Sì, visualizzalo", "Yes, see it": "Sì, visualizzalo",
"Dark Mode": "Tema Scuro", "Dark Mode": "Tema Scuro",
"Error compressing paste, due to missing WebAssembly support.": "Errore nella compressione dell messaggio, a causa del supporto WebAssembly mancante.", "Error compressing document, due to missing WebAssembly support.": "Errore nella compressione dell messaggio, a causa del supporto WebAssembly mancante.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Errore nella decompressione dell messaggio, il tuo browser non supporta WebAssembly. Utilizza un altro browser per visualizzare questo messaggio.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Errore nella decompressione dell messaggio, il tuo browser non supporta WebAssembly. Utilizza un altro browser per visualizzare questo messaggio.",
"Start over": "Ricominciare", "Start over": "Ricominciare",
"Paste copied to clipboard": "Messaggio copiato", "Document copied to clipboard": "Messaggio copiato",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "Per copiare il documento premere sul pulsante di copia o utilizzare la scorciatoia <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Copia il link", "Copy link": "Copia il link",
"Link copied to clipboard": "Link copied to clipboard", "Link copied to clipboard": "Link copiato negli appunti",
"Paste text": "Testo del messaggio", "Document text": "Testo del messaggio",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Il tasto Tabulatore serve come carattere (basta <kbd>Ctrl</kbd>+<kbd>m</kbd> o <kbd>Esc</kbd> per attivare/disattivare)",
"Theme": "Theme" "Show password": "Mostra password",
"Hide password": "Nascondi password",
"Theme": "Tema"
} }
+32 -36
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s はミニマリストで、オープンソースのオンラインデータ貼り付けサービスです。サーバーに、貼り付けられたデータの中身を読み取ることはできません。データは、256ビットのAESを用いて%sブラウザー上で%s暗号化、または復号化されます。", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s はミニマリストで、オープンソースのオンラインデータ貼り付けサービスです。サーバーに、貼り付けられたデータの中身を読み取ることはできません。データは、256ビットのAESを用いて%sブラウザー上で%s暗号化、または復号化されます。",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "詳細については<a href=\"https://privatebin.info/\">プロジェクトのページ</a>をご覧ください。", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "詳細については<a href=\"https://privatebin.info/\">プロジェクトのページ</a>をご覧ください。",
"Because ignorance is bliss": "知らぬが仏", "Because ignorance is bliss": "知らぬが仏",
"Paste does not exist, has expired or has been deleted.": "ペーストが存在しないか、期限切れ、または削除されました。", "Document does not exist, has expired or has been deleted.": "ペーストが存在しないか、期限切れ、または削除されました。",
"%s requires php %s or above to work. Sorry.": "%s の動作には php %s 以上が必要です。申し訳ありません。", "%s requires php %s or above to work. Sorry.": "%s の動作には php %s 以上が必要です。申し訳ありません。",
"%s requires configuration section [%s] to be present in configuration file.": "%sには設定ファイルに[%s]の設定セクションが必要です。", "%s requires configuration section [%s] to be present in configuration file.": "%sには設定ファイルに[%s]の設定セクションが必要です。",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"投稿ごとに%d秒間お待ちください。", "投稿ごとに%d秒間お待ちください。",
"投稿ごとに%d秒間お待ちください。" "投稿ごとに%d秒間お待ちください。"
], ],
"Paste is limited to %s of encrypted data.": "ペーストは暗号化されたデータの%sに制限されています。", "Document is limited to %s of encrypted data.": "ペーストは暗号化されたデータの%sに制限されています。",
"Invalid data.": "無効なデータです。", "Invalid data.": "無効なデータです。",
"You are unlucky. Try again.": "何か問題が発生しました。もう一度やり直してください。", "You are unlucky. Try again.": "何か問題が発生しました。もう一度やり直してください。",
"Error saving comment. Sorry.": "コメントの保存中にエラーが発生しました。申し訳ありません。", "Error saving comment. Sorry.": "コメントの保存中にエラーが発生しました。申し訳ありません。",
"Error saving paste. Sorry.": "ペーストの保存中にエラーが発生しました。申し訳ありません。", "Error saving document. Sorry.": "ペーストの保存中にエラーが発生しました。申し訳ありません。",
"Invalid paste ID.": "無効なペーストIDです。", "Invalid document ID.": "無効なペーストIDです。",
"Paste is not of burn-after-reading type.": "ペーストは、読み込んだ後に消去される種類のものではありません。", "Document is not of burn-after-reading type.": "ペーストは、読み込んだ後に消去される種類のものではありません。",
"Wrong deletion token. Paste was not deleted.": "不正な削除トークンです。ペーストは削除されませんでした。", "Wrong deletion token. Document was not deleted.": "不正な削除トークンです。ペーストは削除されませんでした。",
"Paste was properly deleted.": "ペーストが正しく削除されました。", "Document was properly deleted.": "ペーストが正しく削除されました。",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "%s の動作にはJavaScriptが必要です。ご迷惑をおかけして申し訳ありません。", "JavaScript is required for %s to work. Sorry for the inconvenience.": "%s の動作にはJavaScriptが必要です。ご迷惑をおかけして申し訳ありません。",
"%s requires a modern browser to work.": "%s の動作には最近のブラウザが必要です。", "%s requires a modern browser to work.": "%s の動作には最近のブラウザが必要です。",
"New": "新規", "New": "新規",
@@ -133,9 +133,9 @@
"このドキュメントは%dか月後に失効します。", "このドキュメントは%dか月後に失効します。",
"このドキュメントは%dか月後に失効します。" "このドキュメントは%dか月後に失効します。"
], ],
"Please enter the password for this paste:": "このペーストのパスワードを入力してください。", "Please enter the password for this document:": "このペーストのパスワードを入力してください。",
"Could not decrypt data (Wrong key?)": "データを復号することができませんでした(間違った鍵ですか?)", "Could not decrypt data (Wrong key?)": "データを復号することができませんでした(間違った鍵ですか?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "ペーストを削除できませんでした。このペーストは、読み込んだ後に消去するモードでは保存されませんでした。", "Could not delete the document, it was not stored in burn after reading mode.": "ペーストを削除できませんでした。このペーストは、読み込んだ後に消去するモードでは保存されませんでした。",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "このウィンドウを閉じないでください。このメッセージはもう表示できません。", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "このウィンドウを閉じないでください。このメッセージはもう表示できません。",
"Could not decrypt comment; Wrong key?": "コメントを復号することができませんでした。間違った鍵ですか?", "Could not decrypt comment; Wrong key?": "コメントを復号することができませんでした。間違った鍵ですか?",
"Reply": "返信", "Reply": "返信",
@@ -150,20 +150,12 @@
"unknown status": "不明な状態", "unknown status": "不明な状態",
"server error or not responding": "サーバーエラーまたは応答しません", "server error or not responding": "サーバーエラーまたは応答しません",
"Could not post comment: %s": "コメントを投稿できませんでした:%s", "Could not post comment: %s": "コメントを投稿できませんでした:%s",
"Sending paste…": "ペーストを送信しています…", "Sending document…": "ペーストを送信しています…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "ペーストは<a id=\"pasteurl\" href=\"%s\">%s</a>です<span id=\"copyhint\">(コピーするには<kbd>Ctrl</kbd>+<kbd>c</kbd>を押してください)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "ペーストは<a id=\"pasteurl\" href=\"%s\">%s</a>です<span id=\"copyhint\">(コピーするには<kbd>Ctrl</kbd>+<kbd>c</kbd>を押してください)</span>",
"Delete data": "データを削除", "Delete data": "データを削除",
"Could not create paste: %s": "ペーストを作成できませんでした:%s", "Could not create document: %s": "ペーストを作成できませんでした:%s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "ペーストを復号化できません:復号化キーがURLにありません(URLの一部を削除するリダイレクト機能またはURLの短縮アプリケーションを使いましたか?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "ペーストを復号化できません:復号化キーがURLにありません(URLの一部を削除するリダイレクト機能またはURLの短縮アプリケーションを使いましたか?)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "添付ファイルをダウンロード", "Download attachment": "添付ファイルをダウンロード",
"Cloned: '%s'": "複製済:'%s'", "Cloned: '%s'": "複製済:'%s'",
"The cloned file '%s' was attached to this paste.": "複製されたファイル '%s' がこのペーストに添付されました。", "The cloned file '%s' was attached to this document.": "複製されたファイル '%s' がこのペーストに添付されました。",
"Attach a file": "ファイルを添付", "Attach a file": "ファイルを添付",
"alternatively drag & drop a file or paste an image from the clipboard": "代わりに、ファイルをドラッグ&ドロップまたはクリップボードから画像を貼り付け", "alternatively drag & drop a file or paste an image from the clipboard": "代わりに、ファイルをドラッグ&ドロップまたはクリップボードから画像を貼り付け",
"File too large, to display a preview. Please download the attachment.": "ファイルが大きすぎるため、プレビューを表示できません。ダウンロードしてください。", "File too large, to display a preview. Please download the attachment.": "ファイルが大きすぎるため、プレビューを表示できません。ダウンロードしてください。",
@@ -193,11 +185,11 @@
"Decrypt": "復号化", "Decrypt": "復号化",
"Enter password": "パスワードを入力", "Enter password": "パスワードを入力",
"Loading…": "読み込んでいます…", "Loading…": "読み込んでいます…",
"Decrypting paste…": "ペーストを復号化しています…", "Decrypting document…": "ペーストを復号化しています…",
"Preparing new paste…": "新しいペーストを準備しています…", "Preparing new document…": "新しいペーストを準備しています…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "このメッセージが消去されない場合、<a href=\"%s\">トラブルシュート用のFAQ</a>をご確認ください。", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "このメッセージが消去されない場合、<a href=\"%s\">トラブルシュート用のFAQ</a>をご確認ください。",
"+++ no paste text +++": "+++ ペーストのテキストはありません +++", "+++ no document text +++": "+++ ペーストのテキストはありません +++",
"Could not get paste data: %s": "ペーストのデータを取得できませんでした:%s", "Could not get document data: %s": "ペーストのデータを取得できませんでした:%s",
"QR code": "QRコード", "QR code": "QRコード",
"This website is using an insecure HTTP connection! Please use it only for testing.": "このウェブサイトは安全でない HTTP 接続を使用しています!テストにのみ使用してください。", "This website is using an insecure HTTP connection! Please use it only for testing.": "このウェブサイトは安全でない HTTP 接続を使用しています!テストにのみ使用してください。",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "詳細については、<a href=\"%s\">こちらのFAQエントリー</a>をご覧ください。", "For more information <a href=\"%s\">see this FAQ entry</a>.": "詳細については、<a href=\"%s\">こちらのFAQエントリー</a>をご覧ください。",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "%sの暗号化されたメモ", "Encrypted note on %s": "%sの暗号化されたメモ",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "メモを見るには、このリンクを参照してください。誰でもURLからこのメモにアクセスできます。", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "メモを見るには、このリンクを参照してください。誰でもURLからこのメモにアクセスできます。",
"URL shortener may expose your decrypt key in URL.": "URLの短縮アプリケーションを使うと、復号用のキーが漏洩するおそれがあります。", "URL shortener may expose your decrypt key in URL.": "URLの短縮アプリケーションを使うと、復号用のキーが漏洩するおそれがあります。",
"Save paste": "ペーストを保存", "URL shortener is enabled by default.": "URL shortener is enabled by default.",
"Your IP is not authorized to create pastes.": "あなたのIPアドレスにはペーストを作成する権限がありません。", "Save document": "ペーストを保存",
"Your IP is not authorized to create documents.": "あなたのIPアドレスにはペーストを作成する権限がありません。",
"Trying to shorten a URL that isn't pointing at our instance.": "このインスタンスを指していないURLを短縮しようとしています。", "Trying to shorten a URL that isn't pointing at our instance.": "このインスタンスを指していないURLを短縮しようとしています。",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "YOURLSの呼び出し中にエラーが発生しました。\"apiurl\"または\"signature\"等の設定に問題がある可能性があります。", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "YOURLSの呼び出し中にエラーが発生しました。\"apiurl\"または\"signature\"等の設定に問題がある可能性があります。",
"Error parsing YOURLS response.": "YOURLSレスポンスの解析中にエラーが発生しました。", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "YOURLSレスポンスの解析中にエラーが発生しました。",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?", "This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
"Yes, see it": "はい、使用します", "Yes, see it": "はい、使用します",
"Dark Mode": "ダークモード", "Dark Mode": "ダークモード",
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.", "Error compressing document, due to missing WebAssembly support.": "Error compressing document, due to missing WebAssembly support.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.",
"Start over": "Start over", "Start over": "Start over",
"Paste copied to clipboard": "Paste copied to clipboard", "Document copied to clipboard": "Document copied to clipboard",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Copy link", "Copy link": "Copy link",
"Link copied to clipboard": "Link copied to clipboard", "Link copied to clipboard": "Link copied to clipboard",
"Paste text": "Paste text", "Document text": "Document text",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)",
"Show password": "Show password",
"Hide password": "Hide password",
"Theme": "Theme" "Theme": "Theme"
} }
+32 -36
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "sivlolnitvanku'a", "PrivateBin": "sivlolnitvanku'a",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": ".i la %s mupli lo sorcu lo'e se setca kibro .i ji'a zo'e se zancari gi'e fingubni .i lo samse'u na djuno lo datni selru'e cu .i ba'e %sle brauzero%s ku mipri le do datni ku fi la'oi AES poi bitni li 256", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": ".i la %s mupli lo sorcu lo'e se setca kibro .i ji'a zo'e se zancari gi'e fingubni .i lo samse'u na djuno lo datni selru'e cu .i ba'e %sle brauzero%s ku mipri le do datni ku fi la'oi AES poi bitni li 256",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "More information on the <a href=\"https://privatebin.info/\">project page</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "More information on the <a href=\"https://privatebin.info/\">project page</a>.",
"Because ignorance is bliss": ".i ki'u le ka na djuno cu ka saxfri", "Because ignorance is bliss": ".i ki'u le ka na djuno cu ka saxfri",
"Paste does not exist, has expired or has been deleted.": "Paste does not exist, has expired or has been deleted.", "Document does not exist, has expired or has been deleted.": "Document does not exist, has expired or has been deleted.",
"%s requires php %s or above to work. Sorry.": "%s requires php %s or above to work. Sorry.", "%s requires php %s or above to work. Sorry.": "%s requires php %s or above to work. Sorry.",
"%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.", "%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Please wait %d seconds between each post. (4th plural)", "Please wait %d seconds between each post. (4th plural)",
"Please wait %d seconds between each post. (5th plural)" "Please wait %d seconds between each post. (5th plural)"
], ],
"Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.", "Document is limited to %s of encrypted data.": "Document is limited to %s of encrypted data.",
"Invalid data.": ".i le selru'e cu na drani", "Invalid data.": ".i le selru'e cu na drani",
"You are unlucky. Try again.": "You are unlucky. Try again.", "You are unlucky. Try again.": "You are unlucky. Try again.",
"Error saving comment. Sorry.": "Error saving comment. Sorry.", "Error saving comment. Sorry.": "Error saving comment. Sorry.",
"Error saving paste. Sorry.": "Error saving paste. Sorry.", "Error saving document. Sorry.": "Error saving document. Sorry.",
"Invalid paste ID.": "Invalid paste ID.", "Invalid document ID.": "Invalid document ID.",
"Paste is not of burn-after-reading type.": "Paste is not of burn-after-reading type.", "Document is not of burn-after-reading type.": "Document is not of burn-after-reading type.",
"Wrong deletion token. Paste was not deleted.": "Wrong deletion token. Paste was not deleted.", "Wrong deletion token. Document was not deleted.": "Wrong deletion token. Document was not deleted.",
"Paste was properly deleted.": "Paste was properly deleted.", "Document was properly deleted.": "Document was properly deleted.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.",
"%s requires a modern browser to work.": "%s requires a modern browser to work.", "%s requires a modern browser to work.": "%s requires a modern browser to work.",
"New": "cnino", "New": "cnino",
@@ -133,9 +133,9 @@
"This document will expire in %d months. (4th plural)", "This document will expire in %d months. (4th plural)",
"This document will expire in %d months. (5th plural)" "This document will expire in %d months. (5th plural)"
], ],
"Please enter the password for this paste:": "Please enter the password for this paste:", "Please enter the password for this document:": "Please enter the password for this document:",
"Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)", "Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Could not delete the paste, it was not stored in burn after reading mode.", "Could not delete the document, it was not stored in burn after reading mode.": "Could not delete the document, it was not stored in burn after reading mode.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.",
"Could not decrypt comment; Wrong key?": "Could not decrypt comment; Wrong key?", "Could not decrypt comment; Wrong key?": "Could not decrypt comment; Wrong key?",
"Reply": "Reply", "Reply": "Reply",
@@ -150,20 +150,12 @@
"unknown status": "unknown status", "unknown status": "unknown status",
"server error or not responding": "server error or not responding", "server error or not responding": "server error or not responding",
"Could not post comment: %s": "Could not post comment: %s", "Could not post comment: %s": "Could not post comment: %s",
"Sending paste…": "Sending paste…", "Sending document…": "Sending document…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>",
"Delete data": "Delete data", "Delete data": "Delete data",
"Could not create paste: %s": "Could not create paste: %s", "Could not create document: %s": "Could not create document: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Download attachment", "Download attachment": "Download attachment",
"Cloned: '%s'": "Cloned: '%s'", "Cloned: '%s'": "Cloned: '%s'",
"The cloned file '%s' was attached to this paste.": "The cloned file '%s' was attached to this paste.", "The cloned file '%s' was attached to this document.": "The cloned file '%s' was attached to this document.",
"Attach a file": "Attach a file", "Attach a file": "Attach a file",
"alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard", "alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard",
"File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.", "File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.",
@@ -193,11 +185,11 @@
"Decrypt": "Decrypt", "Decrypt": "Decrypt",
"Enter password": "Enter password", "Enter password": "Enter password",
"Loading…": "Loading…", "Loading…": "Loading…",
"Decrypting paste…": "Decrypting paste…", "Decrypting document…": "Decrypting document…",
"Preparing new paste…": "Preparing new paste…", "Preparing new document…": "Preparing new document…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.",
"+++ no paste text +++": "+++ no paste text +++", "+++ no document text +++": "+++ no document text +++",
"Could not get paste data: %s": "Could not get paste data: %s", "Could not get document data: %s": "Could not get document data: %s",
"QR code": "ky.bu ry termifra", "QR code": "ky.bu ry termifra",
"This website is using an insecure HTTP connection! Please use it only for testing.": "This website is using an insecure HTTP connection! Please use it only for testing.", "This website is using an insecure HTTP connection! Please use it only for testing.": "This website is using an insecure HTTP connection! Please use it only for testing.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": ".i lo lo notci ku mifra cu zvati %s", "Encrypted note on %s": ".i lo lo notci ku mifra cu zvati %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.", "URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
"Save paste": "rejgau fukpi", "URL shortener is enabled by default.": "URL shortener is enabled by default.",
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.", "Save document": "rejgau fukpi",
"Your IP is not authorized to create documents.": "Your IP is not authorized to create documents.",
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", "Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.",
"Error parsing YOURLS response.": "Error parsing YOURLS response.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?", "This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
"Yes, see it": "Yes, see it", "Yes, see it": "Yes, see it",
"Dark Mode": "Dark Mode", "Dark Mode": "Dark Mode",
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.", "Error compressing document, due to missing WebAssembly support.": "Error compressing document, due to missing WebAssembly support.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.",
"Start over": "Start over", "Start over": "Start over",
"Paste copied to clipboard": "Paste copied to clipboard", "Document copied to clipboard": "Document copied to clipboard",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Copy link", "Copy link": "Copy link",
"Link copied to clipboard": "Link copied to clipboard", "Link copied to clipboard": "Link copied to clipboard",
"Paste text": "Paste text", "Document text": "Document text",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)",
"Show password": "Show password",
"Hide password": "Hide password",
"Theme": "Theme" "Theme": "Theme"
} }
+32 -36
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "More information on the <a href=\"https://privatebin.info/\">project page</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "More information on the <a href=\"https://privatebin.info/\">project page</a>.",
"Because ignorance is bliss": "Because ignorance is bliss", "Because ignorance is bliss": "Because ignorance is bliss",
"Paste does not exist, has expired or has been deleted.": "Paste does not exist, has expired or has been deleted.", "Document does not exist, has expired or has been deleted.": "Document does not exist, has expired or has been deleted.",
"%s requires php %s or above to work. Sorry.": "%s requires php %s or above to work. Sorry.", "%s requires php %s or above to work. Sorry.": "%s requires php %s or above to work. Sorry.",
"%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.", "%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Please wait %d seconds between each post. (4th plural)", "Please wait %d seconds between each post. (4th plural)",
"Please wait %d seconds between each post. (5th plural)" "Please wait %d seconds between each post. (5th plural)"
], ],
"Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.", "Document is limited to %s of encrypted data.": "Document is limited to %s of encrypted data.",
"Invalid data.": "Invalid data.", "Invalid data.": "Invalid data.",
"You are unlucky. Try again.": "You are unlucky. Try again.", "You are unlucky. Try again.": "You are unlucky. Try again.",
"Error saving comment. Sorry.": "Error saving comment. Sorry.", "Error saving comment. Sorry.": "Error saving comment. Sorry.",
"Error saving paste. Sorry.": "Error saving paste. Sorry.", "Error saving document. Sorry.": "Error saving document. Sorry.",
"Invalid paste ID.": "Invalid paste ID.", "Invalid document ID.": "Invalid document ID.",
"Paste is not of burn-after-reading type.": "Paste is not of burn-after-reading type.", "Document is not of burn-after-reading type.": "Document is not of burn-after-reading type.",
"Wrong deletion token. Paste was not deleted.": "Wrong deletion token. Paste was not deleted.", "Wrong deletion token. Document was not deleted.": "Wrong deletion token. Document was not deleted.",
"Paste was properly deleted.": "Paste was properly deleted.", "Document was properly deleted.": "Document was properly deleted.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.",
"%s requires a modern browser to work.": "%s requires a modern browser to work.", "%s requires a modern browser to work.": "%s requires a modern browser to work.",
"New": "New", "New": "New",
@@ -133,9 +133,9 @@
"This document will expire in %d months. (4th plural)", "This document will expire in %d months. (4th plural)",
"This document will expire in %d months. (5th plural)" "This document will expire in %d months. (5th plural)"
], ],
"Please enter the password for this paste:": "Please enter the password for this paste:", "Please enter the password for this document:": "Please enter the password for this document:",
"Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)", "Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Could not delete the paste, it was not stored in burn after reading mode.", "Could not delete the document, it was not stored in burn after reading mode.": "Could not delete the document, it was not stored in burn after reading mode.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.",
"Could not decrypt comment; Wrong key?": "Could not decrypt comment; Wrong key?", "Could not decrypt comment; Wrong key?": "Could not decrypt comment; Wrong key?",
"Reply": "Reply", "Reply": "Reply",
@@ -150,20 +150,12 @@
"unknown status": "unknown status", "unknown status": "unknown status",
"server error or not responding": "server error or not responding", "server error or not responding": "server error or not responding",
"Could not post comment: %s": "Could not post comment: %s", "Could not post comment: %s": "Could not post comment: %s",
"Sending paste…": "Sending paste…", "Sending document…": "Sending document…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>",
"Delete data": "Delete data", "Delete data": "Delete data",
"Could not create paste: %s": "Could not create paste: %s", "Could not create document: %s": "Could not create document: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Download attachment", "Download attachment": "Download attachment",
"Cloned: '%s'": "Cloned: '%s'", "Cloned: '%s'": "Cloned: '%s'",
"The cloned file '%s' was attached to this paste.": "The cloned file '%s' was attached to this paste.", "The cloned file '%s' was attached to this document.": "The cloned file '%s' was attached to this document.",
"Attach a file": "Attach a file", "Attach a file": "Attach a file",
"alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard", "alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard",
"File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.", "File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.",
@@ -193,11 +185,11 @@
"Decrypt": "Decrypt", "Decrypt": "Decrypt",
"Enter password": "Enter password", "Enter password": "Enter password",
"Loading…": "Loading…", "Loading…": "Loading…",
"Decrypting paste…": "Decrypting paste…", "Decrypting document…": "Decrypting document…",
"Preparing new paste…": "Preparing new paste…", "Preparing new document…": "Preparing new document…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.",
"+++ no paste text +++": "+++ no paste text +++", "+++ no document text +++": "+++ no document text +++",
"Could not get paste data: %s": "Could not get paste data: %s", "Could not get document data: %s": "Could not get document data: %s",
"QR code": "QR code", "QR code": "QR code",
"This website is using an insecure HTTP connection! Please use it only for testing.": "This website is using an insecure HTTP connection! Please use it only for testing.", "This website is using an insecure HTTP connection! Please use it only for testing.": "This website is using an insecure HTTP connection! Please use it only for testing.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "Encrypted note on %s", "Encrypted note on %s": "Encrypted note on %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.", "URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
"Save paste": "Save paste", "URL shortener is enabled by default.": "URL shortener is enabled by default.",
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.", "Save document": "Save document",
"Your IP is not authorized to create documents.": "Your IP is not authorized to create documents.",
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", "Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.",
"Error parsing YOURLS response.": "Error parsing YOURLS response.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?", "This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
"Yes, see it": "Yes, see it", "Yes, see it": "Yes, see it",
"Dark Mode": "Dark Mode", "Dark Mode": "Dark Mode",
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.", "Error compressing document, due to missing WebAssembly support.": "Error compressing document, due to missing WebAssembly support.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.",
"Start over": "Start over", "Start over": "Start over",
"Paste copied to clipboard": "Paste copied to clipboard", "Document copied to clipboard": "Document copied to clipboard",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Copy link", "Copy link": "Copy link",
"Link copied to clipboard": "Link copied to clipboard", "Link copied to clipboard": "Link copied to clipboard",
"Paste text": "Paste text", "Document text": "Document text",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)",
"Show password": "Show password",
"Hide password": "Hide password",
"Theme": "Theme" "Theme": "Theme"
} }
+32 -36
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "More information on the <a href=\"https://privatebin.info/\">project page</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "More information on the <a href=\"https://privatebin.info/\">project page</a>.",
"Because ignorance is bliss": "Because ignorance is bliss", "Because ignorance is bliss": "Because ignorance is bliss",
"Paste does not exist, has expired or has been deleted.": "Paste does not exist, has expired or has been deleted.", "Document does not exist, has expired or has been deleted.": "Document does not exist, has expired or has been deleted.",
"%s requires php %s or above to work. Sorry.": "%s requires php %s or above to work. Sorry.", "%s requires php %s or above to work. Sorry.": "%s requires php %s or above to work. Sorry.",
"%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.", "%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Please wait %d seconds between each post. (4th plural)", "Please wait %d seconds between each post. (4th plural)",
"Please wait %d seconds between each post. (5th plural)" "Please wait %d seconds between each post. (5th plural)"
], ],
"Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.", "Document is limited to %s of encrypted data.": "Document is limited to %s of encrypted data.",
"Invalid data.": "Invalid data.", "Invalid data.": "Invalid data.",
"You are unlucky. Try again.": "You are unlucky. Try again.", "You are unlucky. Try again.": "You are unlucky. Try again.",
"Error saving comment. Sorry.": "Error saving comment. Sorry.", "Error saving comment. Sorry.": "Error saving comment. Sorry.",
"Error saving paste. Sorry.": "Error saving paste. Sorry.", "Error saving document. Sorry.": "Error saving document. Sorry.",
"Invalid paste ID.": "Invalid paste ID.", "Invalid document ID.": "Invalid document ID.",
"Paste is not of burn-after-reading type.": "Paste is not of burn-after-reading type.", "Document is not of burn-after-reading type.": "Document is not of burn-after-reading type.",
"Wrong deletion token. Paste was not deleted.": "Wrong deletion token. Paste was not deleted.", "Wrong deletion token. Document was not deleted.": "Wrong deletion token. Document was not deleted.",
"Paste was properly deleted.": "Paste was properly deleted.", "Document was properly deleted.": "Document was properly deleted.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.",
"%s requires a modern browser to work.": "%s requires a modern browser to work.", "%s requires a modern browser to work.": "%s requires a modern browser to work.",
"New": "New", "New": "New",
@@ -133,9 +133,9 @@
"This document will expire in %d months. (4th plural)", "This document will expire in %d months. (4th plural)",
"This document will expire in %d months. (5th plural)" "This document will expire in %d months. (5th plural)"
], ],
"Please enter the password for this paste:": "Please enter the password for this paste:", "Please enter the password for this document:": "Please enter the password for this document:",
"Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)", "Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Could not delete the paste, it was not stored in burn after reading mode.", "Could not delete the document, it was not stored in burn after reading mode.": "Could not delete the document, it was not stored in burn after reading mode.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.",
"Could not decrypt comment; Wrong key?": "Could not decrypt comment; Wrong key?", "Could not decrypt comment; Wrong key?": "Could not decrypt comment; Wrong key?",
"Reply": "Reply", "Reply": "Reply",
@@ -150,20 +150,12 @@
"unknown status": "unknown status", "unknown status": "unknown status",
"server error or not responding": "server error or not responding", "server error or not responding": "server error or not responding",
"Could not post comment: %s": "Could not post comment: %s", "Could not post comment: %s": "Could not post comment: %s",
"Sending paste…": "Sending paste…", "Sending document…": "Sending document…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>",
"Delete data": "Delete data", "Delete data": "Delete data",
"Could not create paste: %s": "Could not create paste: %s", "Could not create document: %s": "Could not create document: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Download attachment", "Download attachment": "Download attachment",
"Cloned: '%s'": "Cloned: '%s'", "Cloned: '%s'": "Cloned: '%s'",
"The cloned file '%s' was attached to this paste.": "The cloned file '%s' was attached to this paste.", "The cloned file '%s' was attached to this document.": "The cloned file '%s' was attached to this document.",
"Attach a file": "Attach a file", "Attach a file": "Attach a file",
"alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard", "alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard",
"File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.", "File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.",
@@ -193,11 +185,11 @@
"Decrypt": "Decrypt", "Decrypt": "Decrypt",
"Enter password": "Enter password", "Enter password": "Enter password",
"Loading…": "Loading…", "Loading…": "Loading…",
"Decrypting paste…": "Decrypting paste…", "Decrypting document…": "Decrypting document…",
"Preparing new paste…": "Preparing new paste…", "Preparing new document…": "Preparing new document…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.",
"+++ no paste text +++": "+++ no paste text +++", "+++ no document text +++": "+++ no document text +++",
"Could not get paste data: %s": "Could not get paste data: %s", "Could not get document data: %s": "Could not get document data: %s",
"QR code": "QR code", "QR code": "QR code",
"This website is using an insecure HTTP connection! Please use it only for testing.": "This website is using an insecure HTTP connection! Please use it only for testing.", "This website is using an insecure HTTP connection! Please use it only for testing.": "This website is using an insecure HTTP connection! Please use it only for testing.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "Encrypted note on %s", "Encrypted note on %s": "Encrypted note on %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.", "URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
"Save paste": "Save paste", "URL shortener is enabled by default.": "URL shortener is enabled by default.",
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.", "Save document": "Save document",
"Your IP is not authorized to create documents.": "Your IP is not authorized to create documents.",
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", "Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.",
"Error parsing YOURLS response.": "Error parsing YOURLS response.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?", "This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
"Yes, see it": "Yes, see it", "Yes, see it": "Yes, see it",
"Dark Mode": "جۆری ڕەش", "Dark Mode": "جۆری ڕەش",
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.", "Error compressing document, due to missing WebAssembly support.": "Error compressing document, due to missing WebAssembly support.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.",
"Start over": "Start over", "Start over": "Start over",
"Paste copied to clipboard": "Paste copied to clipboard", "Document copied to clipboard": "Document copied to clipboard",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Copy link", "Copy link": "Copy link",
"Link copied to clipboard": "Link copied to clipboard", "Link copied to clipboard": "Link copied to clipboard",
"Paste text": "Paste text", "Document text": "Document text",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)",
"Show password": "Show password",
"Hide password": "Hide password",
"Theme": "Theme" "Theme": "Theme"
} }
+32 -36
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivatumVinariam", "PrivateBin": "PrivatumVinariam",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "More information on the <a href=\"https://privatebin.info/\">project page</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "More information on the <a href=\"https://privatebin.info/\">project page</a>.",
"Because ignorance is bliss": "Because ignorance is bliss", "Because ignorance is bliss": "Because ignorance is bliss",
"Paste does not exist, has expired or has been deleted.": "Paste does not exist, has expired or has been deleted.", "Document does not exist, has expired or has been deleted.": "Document does not exist, has expired or has been deleted.",
"%s requires php %s or above to work. Sorry.": "%s requires php %s or above to work. Sorry.", "%s requires php %s or above to work. Sorry.": "%s requires php %s or above to work. Sorry.",
"%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.", "%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Please wait %d seconds between each post. (4th plural)", "Please wait %d seconds between each post. (4th plural)",
"Please wait %d seconds between each post. (5th plural)" "Please wait %d seconds between each post. (5th plural)"
], ],
"Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.", "Document is limited to %s of encrypted data.": "Document is limited to %s of encrypted data.",
"Invalid data.": "Invalid data.", "Invalid data.": "Invalid data.",
"You are unlucky. Try again.": "You are unlucky. Try again.", "You are unlucky. Try again.": "You are unlucky. Try again.",
"Error saving comment. Sorry.": "Error saving comment. Sorry.", "Error saving comment. Sorry.": "Error saving comment. Sorry.",
"Error saving paste. Sorry.": "Error saving paste. Sorry.", "Error saving document. Sorry.": "Error saving document. Sorry.",
"Invalid paste ID.": "Invalid paste ID.", "Invalid document ID.": "Invalid document ID.",
"Paste is not of burn-after-reading type.": "Paste is not of burn-after-reading type.", "Document is not of burn-after-reading type.": "Document is not of burn-after-reading type.",
"Wrong deletion token. Paste was not deleted.": "Wrong deletion token. Paste was not deleted.", "Wrong deletion token. Document was not deleted.": "Wrong deletion token. Document was not deleted.",
"Paste was properly deleted.": "Paste was properly deleted.", "Document was properly deleted.": "Document was properly deleted.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.",
"%s requires a modern browser to work.": "%s requires a modern browser to work.", "%s requires a modern browser to work.": "%s requires a modern browser to work.",
"New": "New", "New": "New",
@@ -133,9 +133,9 @@
"This document will expire in %d months. (4th plural)", "This document will expire in %d months. (4th plural)",
"This document will expire in %d months. (5th plural)" "This document will expire in %d months. (5th plural)"
], ],
"Please enter the password for this paste:": "Please enter the password for this paste:", "Please enter the password for this document:": "Please enter the password for this document:",
"Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)", "Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Could not delete the paste, it was not stored in burn after reading mode.", "Could not delete the document, it was not stored in burn after reading mode.": "Could not delete the document, it was not stored in burn after reading mode.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.",
"Could not decrypt comment; Wrong key?": "Could not decrypt comment; Wrong key?", "Could not decrypt comment; Wrong key?": "Could not decrypt comment; Wrong key?",
"Reply": "Reply", "Reply": "Reply",
@@ -150,20 +150,12 @@
"unknown status": "unknown status", "unknown status": "unknown status",
"server error or not responding": "server error or not responding", "server error or not responding": "server error or not responding",
"Could not post comment: %s": "Could not post comment: %s", "Could not post comment: %s": "Could not post comment: %s",
"Sending paste…": "Sending paste…", "Sending document…": "Sending document…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>",
"Delete data": "Delete data", "Delete data": "Delete data",
"Could not create paste: %s": "Could not create paste: %s", "Could not create document: %s": "Could not create document: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Download attachment", "Download attachment": "Download attachment",
"Cloned: '%s'": "Cloned: '%s'", "Cloned: '%s'": "Cloned: '%s'",
"The cloned file '%s' was attached to this paste.": "The cloned file '%s' was attached to this paste.", "The cloned file '%s' was attached to this document.": "The cloned file '%s' was attached to this document.",
"Attach a file": "Attach a file", "Attach a file": "Attach a file",
"alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard", "alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard",
"File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.", "File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.",
@@ -193,11 +185,11 @@
"Decrypt": "Decrypt", "Decrypt": "Decrypt",
"Enter password": "Enter password", "Enter password": "Enter password",
"Loading…": "Loading…", "Loading…": "Loading…",
"Decrypting paste…": "Decrypting paste…", "Decrypting document…": "Decrypting document…",
"Preparing new paste…": "Preparing new paste…", "Preparing new document…": "Preparing new document…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.",
"+++ no paste text +++": "+++ no paste text +++", "+++ no document text +++": "+++ no document text +++",
"Could not get paste data: %s": "Could not get paste data: %s", "Could not get document data: %s": "Could not get document data: %s",
"QR code": "QR code", "QR code": "QR code",
"This website is using an insecure HTTP connection! Please use it only for testing.": "This website is using an insecure HTTP connection! Please use it only for testing.", "This website is using an insecure HTTP connection! Please use it only for testing.": "This website is using an insecure HTTP connection! Please use it only for testing.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "Encrypted note on %s", "Encrypted note on %s": "Encrypted note on %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.", "URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
"Save paste": "Save paste", "URL shortener is enabled by default.": "URL shortener is enabled by default.",
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.", "Save document": "Save document",
"Your IP is not authorized to create documents.": "Your IP is not authorized to create documents.",
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", "Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.",
"Error parsing YOURLS response.": "Error parsing YOURLS response.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?", "This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
"Yes, see it": "Yes, see it", "Yes, see it": "Yes, see it",
"Dark Mode": "Dark Mode", "Dark Mode": "Dark Mode",
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.", "Error compressing document, due to missing WebAssembly support.": "Error compressing document, due to missing WebAssembly support.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.",
"Start over": "Start over", "Start over": "Start over",
"Paste copied to clipboard": "Paste copied to clipboard", "Document copied to clipboard": "Document copied to clipboard",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Copy link", "Copy link": "Copy link",
"Link copied to clipboard": "Link copied to clipboard", "Link copied to clipboard": "Link copied to clipboard",
"Paste text": "Paste text", "Document text": "Document text",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)",
"Show password": "Show password",
"Hide password": "Hide password",
"Theme": "Theme" "Theme": "Theme"
} }
+37 -41
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s yra minimalistinis, atvirojo kodo internetinis įdėjimų dėklas, kurį naudojant, serveris nieko nenutuokia apie įdėtus duomenis. Duomenys yra šifruojami/iššifruojami %snaršyklėje%s naudojant 256 bitų AES.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s yra minimalistinis, atvirojo kodo internetinis įdėjimų dėklas, kurį naudojant, serveris nieko nenutuokia apie įdėtus duomenis. Duomenys yra šifruojami/iššifruojami %snaršyklėje%s naudojant 256 bitų AES.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Daugiau informacijos rasite <a href=\"https://privatebin.info/\">projekto puslapyje</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Daugiau informacijos rasite <a href=\"https://privatebin.info/\">projekto puslapyje</a>.",
"Because ignorance is bliss": "Nes nežinojimas yra palaima", "Because ignorance is bliss": "Nes nežinojimas yra palaima",
"Paste does not exist, has expired or has been deleted.": "Įdėjimo nėra, jis nebegalioja arba buvo ištrintas.", "Document does not exist, has expired or has been deleted.": "Dokumento nėra, jis nebegalioja arba buvo ištrintas.",
"%s requires php %s or above to work. Sorry.": "%s savo darbui reikalauja php %s arba naujesnės versijos. Apgailestaujame.", "%s requires php %s or above to work. Sorry.": "%s savo darbui reikalauja php %s arba naujesnės versijos. Apgailestaujame.",
"%s requires configuration section [%s] to be present in configuration file.": "%s reikalauja, kad konfigūracijos faile būtų [%s] konfigūracijos sekcija.", "%s requires configuration section [%s] to be present in configuration file.": "%s reikalauja, kad konfigūracijos faile būtų [%s] konfigūracijos sekcija.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Tarp kiekvieno įrašo palaukite %d sekundžių.", "Tarp kiekvieno įrašo palaukite %d sekundžių.",
"Tarp kiekvieno įrašo palaukite %d sekundžių." "Tarp kiekvieno įrašo palaukite %d sekundžių."
], ],
"Paste is limited to %s of encrypted data.": "Įdėjimas yra apribotas iki %s šifruotų duomenų.", "Document is limited to %s of encrypted data.": "Dokumentas yra apribotas iki %s šifruotų duomenų.",
"Invalid data.": "Neteisingi duomenys.", "Invalid data.": "Neteisingi duomenys.",
"You are unlucky. Try again.": "Jums nesiseka. Bandykite dar kartą.", "You are unlucky. Try again.": "Jums nesiseka. Bandykite dar kartą.",
"Error saving comment. Sorry.": "Klaida įrašant komentarą. Apgailestaujame.", "Error saving comment. Sorry.": "Klaida įrašant komentarą. Apgailestaujame.",
"Error saving paste. Sorry.": "Klaida įrašant įdėjimą. Apgailestaujame.", "Error saving document. Sorry.": "Klaida įrašant dokumentą. Apgailestaujame.",
"Invalid paste ID.": "Neteisingas įdėjimo ID.", "Invalid document ID.": "Neteisingas dokumento ID.",
"Paste is not of burn-after-reading type.": "Įdėjimo tipas nėra „Perskaičius sudeginti“.", "Document is not of burn-after-reading type.": "Dokumento tipas nėra „Perskaičius sudeginti“.",
"Wrong deletion token. Paste was not deleted.": "Neteisingas ištrynimo prieigos raktas. Įdėjimas nebuvo ištrintas.", "Wrong deletion token. Document was not deleted.": "Neteisingas ištrynimo prieigos raktas. Dokumentas nebuvo ištrintas.",
"Paste was properly deleted.": "Įdėjimas buvo tinkamai ištrintas.", "Document was properly deleted.": "Dokumentas buvo tinkamai ištrintas.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "%s darbui reikalinga JavaScript. Atsiprašome už nepatogumus.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "%s darbui reikalinga JavaScript. Atsiprašome už nepatogumus.",
"%s requires a modern browser to work.": "%s savo darbui reikalauja šiuolaikinės naršyklės.", "%s requires a modern browser to work.": "%s savo darbui reikalauja šiuolaikinės naršyklės.",
"New": "Naujas", "New": "Naujas",
@@ -133,9 +133,9 @@
"Šis dokumentas nustos galioti po %d mėnesių.", "Šis dokumentas nustos galioti po %d mėnesių.",
"Šis dokumentas nustos galioti po %d mėnesių." "Šis dokumentas nustos galioti po %d mėnesių."
], ],
"Please enter the password for this paste:": "Įveskite šio įdėjimo slaptažodį:", "Please enter the password for this document:": "Įveskite šio dokumento slaptažodį:",
"Could not decrypt data (Wrong key?)": "Nepavyko iššifruoti duomenų (Neteisingas raktas?)", "Could not decrypt data (Wrong key?)": "Nepavyko iššifruoti duomenų (Neteisingas raktas?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Nepavyko ištrinti įdėjimo, jis nebuvo saugomas „Perskaičius sudeginti“ veiksenoje.", "Could not delete the document, it was not stored in burn after reading mode.": "Nepavyko ištrinti dokumento, jis nebuvo saugomas „Perskaičius sudeginti“ veiksenoje.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "SKIRTA TIK JŪSŲ AKIMS. Neužverkite šio lango, šis pranešimas negalės būti rodomas dar kartą.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "SKIRTA TIK JŪSŲ AKIMS. Neužverkite šio lango, šis pranešimas negalės būti rodomas dar kartą.",
"Could not decrypt comment; Wrong key?": "Nepavyko iššifruoti komentaro; Neteisingas raktas?", "Could not decrypt comment; Wrong key?": "Nepavyko iššifruoti komentaro; Neteisingas raktas?",
"Reply": "Atsakyti", "Reply": "Atsakyti",
@@ -150,20 +150,12 @@
"unknown status": "nežinoma būsena", "unknown status": "nežinoma būsena",
"server error or not responding": "serverio klaida arba jis neatsako", "server error or not responding": "serverio klaida arba jis neatsako",
"Could not post comment: %s": "Nepavyko paskelbti komentaro: %s", "Could not post comment: %s": "Nepavyko paskelbti komentaro: %s",
"Sending paste…": "Siunčiamas įdėjimas…", "Sending document…": "Siunčiamas dokumentas…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Jūsų įdėjimas yra <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Paspauskite <kbd>Vald</kbd>+<kbd>c</kbd> norėdami nukopijuoti)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Jūsų dokumentas yra <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Paspauskite <kbd>Ctrl</kbd>+<kbd>c</kbd> norėdami nukopijuoti)</span>",
"Delete data": "Ištrinti duomenis", "Delete data": "Ištrinti duomenis",
"Could not create paste: %s": "Nepavyko sukurti įdėjimo: %s", "Could not create document: %s": "Nepavyko sukurti dokumento: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Nepavyksta iššifruoti įdėjimo: URL adrese trūksta iššifravimo rakto (Ar naudojote peradresavimo ar URL trumpinimo įrankį, kuris pašalina URL dalį?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Nepavyksta iššifruoti dokumento: URL adrese trūksta iššifravimo rakto (Ar naudojote peradresavimo ar URL trumpinimo įrankį, kuris pašalina URL dalį?)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "„Markdown“", "Markdown": "„Markdown“",
"Download attachment": "Atsisiųsti priedą", "Download attachment": "Atsisiųsti priedą",
"Cloned: '%s'": "Dubliuota: „%s“", "Cloned: '%s'": "Dubliuota: „%s“",
"The cloned file '%s' was attached to this paste.": "Dubliuotas failas „%s“ buvo pridėtas į šį įdėjimą.", "The cloned file '%s' was attached to this document.": "Dubliuotas failas „%s“ buvo pridėtas į šį dokumentą.",
"Attach a file": "Pridėti failą", "Attach a file": "Pridėti failą",
"alternatively drag & drop a file or paste an image from the clipboard": "arba kitaip - tempkite failą arba įdėkite paveikslą iš iškarpinės", "alternatively drag & drop a file or paste an image from the clipboard": "arba kitaip - tempkite failą arba įdėkite paveikslą iš iškarpinės",
"File too large, to display a preview. Please download the attachment.": "Failas per didelis, kad būtų rodoma peržiūra. Atsisiųskite priedą.", "File too large, to display a preview. Please download the attachment.": "Failas per didelis, kad būtų rodoma peržiūra. Atsisiųskite priedą.",
@@ -193,11 +185,11 @@
"Decrypt": "Iššifruoti", "Decrypt": "Iššifruoti",
"Enter password": "Įveskite slaptažodį", "Enter password": "Įveskite slaptažodį",
"Loading…": "Įkeliama…", "Loading…": "Įkeliama…",
"Decrypting paste…": "Iššifruojamas įdėjimas…", "Decrypting document…": "Iššifruojamas dokumentas…",
"Preparing new paste…": "Ruošiamas naujas įdėjimas…", "Preparing new document…": "Ruošiamas naujas dokumentas…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Jeigu šis pranešimas niekada nedingsta, pasižiūrėkite <a href=\"%s\">šį DUK skyrių, kuriame yra informacija apie nesklandumų šalinimą</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Jeigu šis pranešimas niekada nedingsta, pasižiūrėkite <a href=\"%s\">šį DUK skyrių, kuriame yra informacija apie nesklandumų šalinimą</a>.",
"+++ no paste text +++": "+++ nėra įdėjimo teksto +++", "+++ no document text +++": "+++ nėra dokumento teksto +++",
"Could not get paste data: %s": "Nepavyko gauti įdėjimo duomenų: %s", "Could not get document data: %s": "Nepavyko gauti dokumento duomenų: %s",
"QR code": "QR kodas", "QR code": "QR kodas",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Ši internetinė svetainė naudoja nesaugų HTTP ryšį! Naudokite ją tik bandymams.", "This website is using an insecure HTTP connection! Please use it only for testing.": "Ši internetinė svetainė naudoja nesaugų HTTP ryšį! Naudokite ją tik bandymams.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Išsamesnei informacijai, <a href=\"%s\">žiūrėkite šį DUK įrašą</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "Išsamesnei informacijai, <a href=\"%s\">žiūrėkite šį DUK įrašą</a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "Šifruoti užrašai ties %s", "Encrypted note on %s": "Šifruoti užrašai ties %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Norėdami matyti užrašus, aplankykite šį tinklalapį. Pasidalinus šiuo URL adresu su kitais žmonėmis, jiems taip pat bus leidžiama prieiga prie šių užrašų.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Norėdami matyti užrašus, aplankykite šį tinklalapį. Pasidalinus šiuo URL adresu su kitais žmonėmis, jiems taip pat bus leidžiama prieiga prie šių užrašų.",
"URL shortener may expose your decrypt key in URL.": "URL trumpinimo įrankis gali atskleisti URL adrese jūsų iššifravimo raktą.", "URL shortener may expose your decrypt key in URL.": "URL trumpinimo įrankis gali atskleisti URL adrese jūsų iššifravimo raktą.",
"Save paste": "Įrašyti įdėjimą", "URL shortener is enabled by default.": "URL trumpinimo įrankis pagal numatymą įjungtas.",
"Your IP is not authorized to create pastes.": "Jūsų IP adresas neturi įgaliojimų kurti įdėjimų.", "Save document": "Įrašyti dokumentą",
"Your IP is not authorized to create documents.": "Jūsų IP adresas neturi įgaliojimų kurti dokumentus.",
"Trying to shorten a URL that isn't pointing at our instance.": "Bandoma sutrumpinti URL adresą, kuris nenurodo į mūsų egzempliorių.", "Trying to shorten a URL that isn't pointing at our instance.": "Bandoma sutrumpinti URL adresą, kuris nenurodo į mūsų egzempliorių.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Klaida iškviečiant YOURLS. Tikriausiai, konfigūracijos klaida, pavyzdžiui, neteisingi „apiurl“ ar „signature“, arba jų nėra.", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Įgaliotojo serverio klaida: Įgaliotojo serverio URL yra tuščias. Tai gali būti konfigūracijos sukelta problema, pavyzdžiui, neteisingi arba trūkstami konfigūracijos raktai.",
"Error parsing YOURLS response.": "Klaida nagrinėjant YOURLS atsaką.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Įgaliotojo serverio klaida: Klaida nagrinėjant įgaliotojo serverio atsaką. Tai gali būti konfigūracijos sukelta problema, pavyzdžiui, neteisingi arba trūkstami konfigūracijos raktai.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Įgaliotojo serverio klaida: Blogas atsakas. Tai gali būti konfigūracijos sukelta problema, pavyzdžiui, neteisingi arba trūkstami konfigūracijos raktai, arba laikinas avarinis atjungimas.",
"This secret message can only be displayed once. Would you like to see it now?": "Ši slapta žinutė gali būti parodyta tik vieną kartą. Ar norėtumėte ją dabar pamatyti?", "This secret message can only be displayed once. Would you like to see it now?": "Ši slapta žinutė gali būti parodyta tik vieną kartą. Ar norėtumėte ją dabar pamatyti?",
"Yes, see it": "Taip, pamatyti", "Yes, see it": "Taip, pamatyti",
"Dark Mode": "Tamsi veiksena", "Dark Mode": "Tamsi veiksena",
"Error compressing paste, due to missing WebAssembly support.": "Klaida glaudinant įdėjimą, nes trūksta WebAssembly palaikymo.", "Error compressing document, due to missing WebAssembly support.": "Klaida glaudinant dokumentą, nes trūksta WebAssembly palaikymo.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Klaida išglaudinant įdėjimą, jūsų naršyklė nepalaiko WebAssembly. Norėdami peržiūrėti šį įdėjimą, naudokite kitą naršyklę.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Klaida išglaudinant dokumentą, jūsų naršyklė nepalaiko WebAssembly. Norėdami peržiūrėti šį dokumentą, naudokite kitą naršyklę.",
"Start over": "Start over", "Start over": "Pradėti iš naujo",
"Paste copied to clipboard": "Paste copied to clipboard", "Document copied to clipboard": "Dokumentas nukopijuotas į iškarpinę",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "Norėdami nukopijuoti dokumentą paspauskite kopijavimo mygtuką arba naudokite iškarpinės sparčiuosius klavišus <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Copy link", "Copy link": "Kopijuoti nuorodą",
"Link copied to clipboard": "Link copied to clipboard", "Link copied to clipboard": "Nuoroda nukopijuota į iškarpinę",
"Paste text": "Paste text", "Document text": "Dokumento tekstas",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabuliatoriaus klavišas tarnauja kaip simbolis (Paspauskite <kbd>Ctrl</kbd>+<kbd>m</kbd> arba <kbd>Esc</kbd> norėdami perjungti)",
"Theme": "Theme" "Show password": "Rodyti slaptažodį",
"Hide password": "Slėpti slaptažodį",
"Theme": "Apipavidalinimas"
} }
+35 -39
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is een minimalistische, open source online pastebin waarbij de server geen kennis heeft van de paste data zelf. Gegevens worden gecodeerd/gedecodeerd %s in de browser %s met behulp van 256-bits AES.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is een minimalistische, open source online pastebin waarbij de server geen kennis heeft van de document data zelf. Gegevens worden gecodeerd/gedecodeerd %s in de browser %s met behulp van 256-bits AES.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Meer informatie is te vinden op de <a href=\"https://privatebin.info/\">projectpagina</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Meer informatie is te vinden op de <a href=\"https://privatebin.info/\">projectpagina</a>.",
"Because ignorance is bliss": "Onwetendheid is een zegen", "Because ignorance is bliss": "Onwetendheid is een zegen",
"Paste does not exist, has expired or has been deleted.": "Paste bestaat niet, is verlopen of verwijderd.", "Document does not exist, has expired or has been deleted.": "Document bestaat niet, is verlopen of verwijderd.",
"%s requires php %s or above to work. Sorry.": "%s vereist PHP %s of hoger om te kunnen werken. Sorry", "%s requires php %s or above to work. Sorry.": "%s vereist PHP %s of hoger om te kunnen werken. Sorry",
"%s requires configuration section [%s] to be present in configuration file.": "%s vereist dat de configuratiesectie [%s] aanwezig is in het configuratiebestand", "%s requires configuration section [%s] to be present in configuration file.": "%s vereist dat de configuratiesectie [%s] aanwezig is in het configuratiebestand",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Alstublieft %d seconden wachten tussen elk bericht.", "Alstublieft %d seconden wachten tussen elk bericht.",
"Alstublieft %d seconden wachten tussen elk bericht." "Alstublieft %d seconden wachten tussen elk bericht."
], ],
"Paste is limited to %s of encrypted data.": "Paste is beperkt tot %s aan versleutelde gegevens.", "Document is limited to %s of encrypted data.": "Document is beperkt tot %s aan versleutelde gegevens.",
"Invalid data.": "Ongeldige gegevens.", "Invalid data.": "Ongeldige gegevens.",
"You are unlucky. Try again.": "Helaas. Probeer het nog eens.", "You are unlucky. Try again.": "Helaas. Probeer het nog eens.",
"Error saving comment. Sorry.": "Fout bij het opslaan van het commentaar. Sorry.", "Error saving comment. Sorry.": "Fout bij het opslaan van het commentaar. Sorry.",
"Error saving paste. Sorry.": "Fout bij het opslaan van de paste. Sorry.", "Error saving document. Sorry.": "Fout bij het opslaan van het document. Sorry.",
"Invalid paste ID.": "Ongeldige ID.", "Invalid document ID.": "Ongeldige ID.",
"Paste is not of burn-after-reading type.": "Paste is geen 'vernietig na lezen' type.", "Document is not of burn-after-reading type.": "Document is geen 'vernietig na lezen' type.",
"Wrong deletion token. Paste was not deleted.": "Foutieve verwijdercode. Paste is niet verwijderd.", "Wrong deletion token. Document was not deleted.": "Foutieve verwijdercode. Document is niet verwijderd.",
"Paste was properly deleted.": "Paste is correct verwijderd.", "Document was properly deleted.": "Document is correct verwijderd.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript vereist om %s te laten werken. Sorry voor het ongemak.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript vereist om %s te laten werken. Sorry voor het ongemak.",
"%s requires a modern browser to work.": "%s vereist een moderne browser om te kunnen werken.", "%s requires a modern browser to work.": "%s vereist een moderne browser om te kunnen werken.",
"New": "Nieuw", "New": "Nieuw",
@@ -133,9 +133,9 @@
"Dit document verloopt over %d maanden.", "Dit document verloopt over %d maanden.",
"Dit document verloopt over %d maanden." "Dit document verloopt over %d maanden."
], ],
"Please enter the password for this paste:": "Voer het wachtwoord in voor deze paste:", "Please enter the password for this document:": "Voer het wachtwoord in voor dit document:",
"Could not decrypt data (Wrong key?)": "Kon de gegevens niet decoderen (verkeerde sleutel?)", "Could not decrypt data (Wrong key?)": "Kon de gegevens niet decoderen (verkeerde sleutel?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Verwijderen van de paste niet mogelijk, deze werd niet opgeslagen in 'vernietig na lezen' modus.", "Could not delete the document, it was not stored in burn after reading mode.": "Verwijderen van het document niet mogelijk, deze werd niet opgeslagen in 'vernietig na lezen' modus.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "ALLEEN VOOR JOUW OGEN BESTEMD. Sluit dit venster niet, dit bericht kan niet opnieuw worden weergegeven.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "ALLEEN VOOR JOUW OGEN BESTEMD. Sluit dit venster niet, dit bericht kan niet opnieuw worden weergegeven.",
"Could not decrypt comment; Wrong key?": "Kon het commentaar niet decoderen; Verkeerde sleutel?", "Could not decrypt comment; Wrong key?": "Kon het commentaar niet decoderen; Verkeerde sleutel?",
"Reply": "Beantwoorden", "Reply": "Beantwoorden",
@@ -150,20 +150,12 @@
"unknown status": "Onbekende status", "unknown status": "Onbekende status",
"server error or not responding": "Serverfout of server reageert niet", "server error or not responding": "Serverfout of server reageert niet",
"Could not post comment: %s": "Kon het commentaar niet plaatsen: %s", "Could not post comment: %s": "Kon het commentaar niet plaatsen: %s",
"Sending paste…": "Paste verzenden…", "Sending document…": "Document verzenden…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Je paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Druk <kbd>Ctrl</kbd>+<kbd>c</kbd> om te kopiëren)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Je document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Druk <kbd>Ctrl</kbd>+<kbd>c</kbd> om te kopiëren)</span>",
"Delete data": "Gegevens wissen", "Delete data": "Gegevens wissen",
"Could not create paste: %s": "Kon de paste niet aanmaken: %s", "Could not create document: %s": "Kon het document niet aanmaken: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Kon de paste niet decoderen: Decoderingssleutel ontbreekt in URL (Heb je een doorverwijzer of een URL-verkorter gebruikt die een deel van de URL verwijdert?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Kon het document niet decoderen: Decoderingssleutel ontbreekt in URL (Heb je een doorverwijzer of een URL-verkorter gebruikt die een deel van de URL verwijdert?)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Bijlage downloaden", "Download attachment": "Bijlage downloaden",
"Cloned: '%s'": "Gekloond: '%s'", "Cloned: '%s'": "Gekloond: '%s'",
"The cloned file '%s' was attached to this paste.": "Het gekloonde bestand '%s' is bijgevoegd aan de paste.", "The cloned file '%s' was attached to this document.": "Het gekloonde bestand '%s' is bijgevoegd aan dit document.",
"Attach a file": "Een bestand toevoegen", "Attach a file": "Een bestand toevoegen",
"alternatively drag & drop a file or paste an image from the clipboard": "Je kunt ook een bestand slepen en neerzetten of een afbeelding plakken van het klembord", "alternatively drag & drop a file or paste an image from the clipboard": "Je kunt ook een bestand slepen en neerzetten of een afbeelding plakken van het klembord",
"File too large, to display a preview. Please download the attachment.": "Het bestand is te groot om voorbeeld weer te geven. Aub de bijlage downloaden.", "File too large, to display a preview. Please download the attachment.": "Het bestand is te groot om voorbeeld weer te geven. Aub de bijlage downloaden.",
@@ -193,11 +185,11 @@
"Decrypt": "Decoderen", "Decrypt": "Decoderen",
"Enter password": "Voer het wachtwoord in", "Enter password": "Voer het wachtwoord in",
"Loading…": "Laden…", "Loading…": "Laden…",
"Decrypting paste…": "Paste decoderen…", "Decrypting document…": "Document decoderen…",
"Preparing new paste…": "Nieuwe paste voorbereiden…", "Preparing new document…": "Nieuwe document voorbereiden…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "In het geval dat dit bericht nooit verdwijnt, kijkt dan eens naar <a href=\"%s\"> veelgestelde vragen voor informatie over het oplossen van problemen</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "In het geval dat dit bericht nooit verdwijnt, kijkt dan eens naar <a href=\"%s\"> veelgestelde vragen voor informatie over het oplossen van problemen</a>.",
"+++ no paste text +++": "+++ geen paste tekst +++", "+++ no document text +++": "+++ geen document tekst +++",
"Could not get paste data: %s": "Kon geen paste data verkrijgen: %s", "Could not get document data: %s": "Kon geen documentdata verkrijgen: %s",
"QR code": "QR-code", "QR code": "QR-code",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Deze website gebruikt een onveilige HTTP-verbinding! Gelieve deze enkel te gebruiken om te testen.", "This website is using an insecure HTTP connection! Please use it only for testing.": "Deze website gebruikt een onveilige HTTP-verbinding! Gelieve deze enkel te gebruiken om te testen.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Voor meer informatie <a href=\"%s\">zie dit FAQ-artikel</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "Voor meer informatie <a href=\"%s\">zie dit FAQ-artikel</a>.",
@@ -215,25 +207,29 @@
"Use Current Timezone": "Gebruik huidige tijdzone", "Use Current Timezone": "Gebruik huidige tijdzone",
"Convert To UTC": "Omzetten naar UTC", "Convert To UTC": "Omzetten naar UTC",
"Close": "Sluiten", "Close": "Sluiten",
"Encrypted note on %s": "Versleutelde notitie op %s", "Encrypted note on %s": "Versleuteld document op %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Bezoek deze link om de notitie te bekijken. Als je de URL aan iemand geeft, kan die de notitie ook bekijken.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Bezoek deze link om het document te bekijken. Als je de URL aan iemand geeft, kan die het document ook bekijken.",
"URL shortener may expose your decrypt key in URL.": "URL-verkorter kan je ontcijferingssleutel in URL blootleggen.", "URL shortener may expose your decrypt key in URL.": "URL-verkorter kan je ontcijferingssleutel in URL blootleggen.",
"Save paste": "Notitie opslaan", "URL shortener is enabled by default.": "URL verkorter is standaard ingeschakeld.",
"Your IP is not authorized to create pastes.": "Je IP-adres is niet gemachtigd om pastes te maken.", "Save document": "Document opslaan",
"Your IP is not authorized to create documents.": "Je IP-adres is niet gemachtigd om documenten te maken.",
"Trying to shorten a URL that isn't pointing at our instance.": "Proberen om een URL te verkorten dat niet naar ons systeem wijst.", "Trying to shorten a URL that isn't pointing at our instance.": "Proberen om een URL te verkorten dat niet naar ons systeem wijst.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Foutmelding ophalen YOURLS. Waarschijnlijk een configuratiefout, zoals een verkeerde of missende \"apiurl\" of \"signature\".", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Foutmelding ophalen YOURLS. Waarschijnlijk een configuratiefout, zoals een verkeerde of missende \"apiurl\" of \"signature\".",
"Error parsing YOURLS response.": "Foutmelding bij parsen van YOURLS respons.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Foutmelding bij parsen van YOURLS respons.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"This secret message can only be displayed once. Would you like to see it now?": "Dit geheime bericht kan maar één keer worden weergegeven. Wil je het nu zien?", "This secret message can only be displayed once. Would you like to see it now?": "Dit geheime bericht kan maar één keer worden weergegeven. Wil je het nu zien?",
"Yes, see it": "Ja, tonen", "Yes, see it": "Ja, tonen",
"Dark Mode": "Donkere modus", "Dark Mode": "Donkere modus",
"Error compressing paste, due to missing WebAssembly support.": "Fout bij het comprimeren van notitie door ontbrekende ondersteuning voor WebAssembly.", "Error compressing document, due to missing WebAssembly support.": "Fout bij het comprimeren van document door ontbrekende ondersteuning voor WebAssembly.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Fout bij het decomprimeren van de notitie, uw browser ondersteunt WebAssembly niet. Gebruik een andere browser om deze notitie te bekijken.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Fout bij het decomprimeren van het document, uw browser ondersteunt WebAssembly niet. Gebruik een andere browser om dit document te bekijken.",
"Start over": "Opnieuw beginnen", "Start over": "Opnieuw beginnen",
"Paste copied to clipboard": "Notitie gekopieerd naar klembord", "Document copied to clipboard": "Document gekopieerd naar klembord",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "Om te kopiëren en plakken druk je op de knop Kopiëren of gebruik je de sneltoets op het klembord <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "Om te kopiëren en plakken druk je op de knop Kopiëren of gebruik je de sneltoets op het klembord <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Kopieer link", "Copy link": "Kopieer link",
"Link copied to clipboard": "Link gekopieerd naar klembord", "Link copied to clipboard": "Link gekopieerd naar klembord",
"Paste text": "Tekst plakken", "Document text": "Tekst plakken",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulatortoets dient als teken (gebruik <kbd>Ctrl</kbd>+<kbd>m</kbd> of <kbd>Esc</kbd> om te schakelen)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulatortoets dient als teken (gebruik <kbd>Ctrl</kbd>+<kbd>m</kbd> of <kbd>Esc</kbd> om te schakelen)",
"Theme": "Theme" "Show password": "Toon wachtwoord",
"Hide password": "Verberg wachtwoord",
"Theme": "Thema"
} }
+32 -36
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s er en minimalistisk, åpen kildekode, elektronisk tilgjengelig pastebin hvor serveren ikke har kunnskap om dataene som limes inn. Dataene krypteres/dekrypteres %si nettleseren%s ved hjelp av 256 bits AES.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s er en minimalistisk, åpen kildekode, elektronisk tilgjengelig pastebin hvor serveren ikke har kunnskap om dataene som limes inn. Dataene krypteres/dekrypteres %si nettleseren%s ved hjelp av 256 bits AES.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Mer informasjon om prosjektet på <a href=\"https://privatebin.info/\">prosjektsiden</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Mer informasjon om prosjektet på <a href=\"https://privatebin.info/\">prosjektsiden</a>.",
"Because ignorance is bliss": "Fordi uvitenhet er lykke", "Because ignorance is bliss": "Fordi uvitenhet er lykke",
"Paste does not exist, has expired or has been deleted.": "Innlegget eksisterer ikke, er utløpt eller har blitt slettet.", "Document does not exist, has expired or has been deleted.": "Innlegget eksisterer ikke, er utløpt eller har blitt slettet.",
"%s requires php %s or above to work. Sorry.": "Beklager, %s krever php %s eller nyere for å kjøre.", "%s requires php %s or above to work. Sorry.": "Beklager, %s krever php %s eller nyere for å kjøre.",
"%s requires configuration section [%s] to be present in configuration file.": "%s krever konfigurasjonsdel [%s] å være til stede i konfigurasjonsfilen .", "%s requires configuration section [%s] to be present in configuration file.": "%s krever konfigurasjonsdel [%s] å være til stede i konfigurasjonsfilen .",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Vennligst vent %d sekunder mellom hvert innlegg.", "Vennligst vent %d sekunder mellom hvert innlegg.",
"Vennligst vent %d sekunder mellom hvert innlegg." "Vennligst vent %d sekunder mellom hvert innlegg."
], ],
"Paste is limited to %s of encrypted data.": "Innlegg er begrenset til %s av kryptert data.", "Document is limited to %s of encrypted data.": "Innlegg er begrenset til %s av kryptert data.",
"Invalid data.": "Ugyldige data.", "Invalid data.": "Ugyldige data.",
"You are unlucky. Try again.": "Du er uheldig. Prøv igjen.", "You are unlucky. Try again.": "Du er uheldig. Prøv igjen.",
"Error saving comment. Sorry.": "Beklager, det oppstod en feil ved lagring kommentar.", "Error saving comment. Sorry.": "Beklager, det oppstod en feil ved lagring kommentar.",
"Error saving paste. Sorry.": "Beklager, det oppstod en feil ved lagring innlegg.", "Error saving document. Sorry.": "Beklager, det oppstod en feil ved lagring innlegg.",
"Invalid paste ID.": "Feil innlegg ID.", "Invalid document ID.": "Feil innlegg ID.",
"Paste is not of burn-after-reading type.": "Innlegg er ikke av typen slett etter lesing.", "Document is not of burn-after-reading type.": "Innlegg er ikke av typen slett etter lesing.",
"Wrong deletion token. Paste was not deleted.": "Feil slettingsnøkkel. Innlegg ble ikke fjernet.", "Wrong deletion token. Document was not deleted.": "Feil slettingsnøkkel. Innlegg ble ikke fjernet.",
"Paste was properly deleted.": "Innlegget er slettet.", "Document was properly deleted.": "Innlegget er slettet.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Javascript kreves for at %s skal fungere. Beklager.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "Javascript kreves for at %s skal fungere. Beklager.",
"%s requires a modern browser to work.": "%s krever en moderne nettleser for å fungere.", "%s requires a modern browser to work.": "%s krever en moderne nettleser for å fungere.",
"New": "Ny", "New": "Ny",
@@ -133,9 +133,9 @@
"Dette dokumentet vil utløpe om %d måneder.", "Dette dokumentet vil utløpe om %d måneder.",
"Dette dokumentet vil utløpe om %d måneder." "Dette dokumentet vil utløpe om %d måneder."
], ],
"Please enter the password for this paste:": "Vennligst skriv inn passordet for dette innlegget:", "Please enter the password for this document:": "Vennligst skriv inn passordet for dette innlegget:",
"Could not decrypt data (Wrong key?)": "Kunne ikke dekryptere data (Feil nøkkel?)", "Could not decrypt data (Wrong key?)": "Kunne ikke dekryptere data (Feil nøkkel?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Kan ikke slette innlegget, det ble ikke lagret som 'slett etter les' type.", "Could not delete the document, it was not stored in burn after reading mode.": "Kan ikke slette innlegget, det ble ikke lagret som 'slett etter les' type.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "KUN FOR DINE ØYNE. Ikke lukk dette vinduet, denne meldingen kan ikke bli vist igjen.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "KUN FOR DINE ØYNE. Ikke lukk dette vinduet, denne meldingen kan ikke bli vist igjen.",
"Could not decrypt comment; Wrong key?": "Kan ikke dekryptere kommentar; Feil nøkkel?", "Could not decrypt comment; Wrong key?": "Kan ikke dekryptere kommentar; Feil nøkkel?",
"Reply": "Svar", "Reply": "Svar",
@@ -150,20 +150,12 @@
"unknown status": "ukjent status", "unknown status": "ukjent status",
"server error or not responding": "tjener feilet eller svarer ikke", "server error or not responding": "tjener feilet eller svarer ikke",
"Could not post comment: %s": "Kunne ikke sende kommentar: %s", "Could not post comment: %s": "Kunne ikke sende kommentar: %s",
"Sending paste…": "Sender innlegg…", "Sending document…": "Sender innlegg…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Ditt innlegg er <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Trykk <kbd>Ctrl</kbd>+<kbd>c</kbd> for å kopiere)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Ditt innlegg er <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Trykk <kbd>Ctrl</kbd>+<kbd>c</kbd> for å kopiere)</span>",
"Delete data": "Slett data", "Delete data": "Slett data",
"Could not create paste: %s": "Kunne ikke opprette innlegg: %s", "Could not create document: %s": "Kunne ikke opprette innlegg: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Kan ikke dekryptere innlegg: Dekrypteringsnøkkelen mangler i adressen (Har du bruket en redirector eller en URL forkorter som fjerner en del av addressen?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Kan ikke dekryptere innlegg: Dekrypteringsnøkkelen mangler i adressen (Har du bruket en redirector eller en URL forkorter som fjerner en del av addressen?)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Last ned vedlegg", "Download attachment": "Last ned vedlegg",
"Cloned: '%s'": "Kopiert: '%s'", "Cloned: '%s'": "Kopiert: '%s'",
"The cloned file '%s' was attached to this paste.": "Den klonede filen '%s' var koblet til denne innlimingen.", "The cloned file '%s' was attached to this document.": "Den klonede filen '%s' var koblet til denne innlimingen.",
"Attach a file": "Legg til fil", "Attach a file": "Legg til fil",
"alternatively drag & drop a file or paste an image from the clipboard": "alternativt dra og slipp en fil, eller lim inn et bilde fra utklippstavlen", "alternatively drag & drop a file or paste an image from the clipboard": "alternativt dra og slipp en fil, eller lim inn et bilde fra utklippstavlen",
"File too large, to display a preview. Please download the attachment.": "Filen er for stor, for å vise en forhåndsvisning. Last ned vedlegget.", "File too large, to display a preview. Please download the attachment.": "Filen er for stor, for å vise en forhåndsvisning. Last ned vedlegget.",
@@ -193,11 +185,11 @@
"Decrypt": "Dekrypter", "Decrypt": "Dekrypter",
"Enter password": "Skriv inn passord", "Enter password": "Skriv inn passord",
"Loading…": "Laster…", "Loading…": "Laster…",
"Decrypting paste…": "Dekrypterer innlegg…", "Decrypting document…": "Dekrypterer innlegg…",
"Preparing new paste…": "Klargjør nytt innlegg…", "Preparing new document…": "Klargjør nytt innlegg…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Hvis denne meldingen ikke forsvinner kan du ta en titt på siden med <a href=\"%s\">ofte stilte spørsmål</a> for informasjon om feilsøking.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Hvis denne meldingen ikke forsvinner kan du ta en titt på siden med <a href=\"%s\">ofte stilte spørsmål</a> for informasjon om feilsøking.",
"+++ no paste text +++": "+++ ingen innleggstekst +++", "+++ no document text +++": "+++ ingen innleggstekst +++",
"Could not get paste data: %s": "Kunne ikke hente utklippsdata: %s", "Could not get document data: %s": "Kunne ikke hente utklippsdata: %s",
"QR code": "QR kode", "QR code": "QR kode",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Denne websiden bruker usikker HTTP tilkobling! Bruk den kun for testing.", "This website is using an insecure HTTP connection! Please use it only for testing.": "Denne websiden bruker usikker HTTP tilkobling! Bruk den kun for testing.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "For mer informasjon <a href=\"%s\">se ofte stilte spørsmål</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "For mer informasjon <a href=\"%s\">se ofte stilte spørsmål</a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "Kryptert notat på %s", "Encrypted note on %s": "Kryptert notat på %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Besøk denne lenken for å se notatet. Hvis lenken deles med andre, vil de også kunne se notatet.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Besøk denne lenken for å se notatet. Hvis lenken deles med andre, vil de også kunne se notatet.",
"URL shortener may expose your decrypt key in URL.": "URL forkorter kan avsløre dekrypteringsnøkkelen.", "URL shortener may expose your decrypt key in URL.": "URL forkorter kan avsløre dekrypteringsnøkkelen.",
"Save paste": "Lagre utklipp", "URL shortener is enabled by default.": "URL shortener is enabled by default.",
"Your IP is not authorized to create pastes.": "Din IP er ikke autorisert til å opprette dokumenter.", "Save document": "Lagre utklipp",
"Your IP is not authorized to create documents.": "Din IP er ikke autorisert til å opprette dokumenter.",
"Trying to shorten a URL that isn't pointing at our instance.": "Prøver å forkorte en URL som ikke peker i vår instans.", "Trying to shorten a URL that isn't pointing at our instance.": "Prøver å forkorte en URL som ikke peker i vår instans.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Feil ved å besøke YOURLS. Sannsynligvis et konfigurasjonsproblem, eksempelvis feil eller mangler, med \"apiurl\" eller \"signatur\".", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Feil ved å besøke YOURLS. Sannsynligvis et konfigurasjonsproblem, eksempelvis feil eller mangler, med \"apiurl\" eller \"signatur\".",
"Error parsing YOURLS response.": "Feil ved analyse av YOURLS svar.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Feil ved analyse av YOURLS svar.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"This secret message can only be displayed once. Would you like to see it now?": "Denne hemmelige meldingen kan bare vises én gang. Vil du se den nå?", "This secret message can only be displayed once. Would you like to see it now?": "Denne hemmelige meldingen kan bare vises én gang. Vil du se den nå?",
"Yes, see it": "Ja, se det", "Yes, see it": "Ja, se det",
"Dark Mode": "Mørk modus", "Dark Mode": "Mørk modus",
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.", "Error compressing document, due to missing WebAssembly support.": "Error compressing document, due to missing WebAssembly support.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.",
"Start over": "Start over", "Start over": "Start over",
"Paste copied to clipboard": "Paste copied to clipboard", "Document copied to clipboard": "Document copied to clipboard",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Copy link", "Copy link": "Copy link",
"Link copied to clipboard": "Link copied to clipboard", "Link copied to clipboard": "Link copied to clipboard",
"Paste text": "Paste text", "Document text": "Document text",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)",
"Show password": "Show password",
"Hide password": "Hide password",
"Theme": "Theme" "Theme": "Theme"
} }
+32 -36
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s es un 'pastebin' (o gestionari dextrachs de tèxte e còdi font) minimalista e open source, dins lo qual lo servidor a pas cap de coneissença de las donadas mandadas. Las donadas son chifradas/deschifradas %sdins lo navigator%s per un chiframent AES 256 bits.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s es un 'pastebin' (o gestionari dextrachs de tèxte e còdi font) minimalista e open source, dins lo qual lo servidor a pas cap de coneissença de las donadas mandadas. Las donadas son chifradas/deschifradas %sdins lo navigator%s per un chiframent AES 256 bits.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Mai informacions sus <a href=\"https://privatebin.info/\">la pagina del projècte</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Mai informacions sus <a href=\"https://privatebin.info/\">la pagina del projècte</a>.",
"Because ignorance is bliss": "Perque lo bonaür es lignorància", "Because ignorance is bliss": "Perque lo bonaür es lignorància",
"Paste does not exist, has expired or has been deleted.": "Lo tèxte existís pas, a expirat, o es estat suprimit.", "Document does not exist, has expired or has been deleted.": "Lo tèxte existís pas, a expirat, o es estat suprimit.",
"%s requires php %s or above to work. Sorry.": "O planhèm, %s necessita php %s o superior per foncionar.", "%s requires php %s or above to work. Sorry.": "O planhèm, %s necessita php %s o superior per foncionar.",
"%s requires configuration section [%s] to be present in configuration file.": "%s fa besonh de la seccion de configuracion [%s] dins lo fichièr de configuracion per foncionar.", "%s requires configuration section [%s] to be present in configuration file.": "%s fa besonh de la seccion de configuracion [%s] dins lo fichièr de configuracion per foncionar.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Mercés d'esperar %d segondas entre cada publicacion.", "Mercés d'esperar %d segondas entre cada publicacion.",
"Mercés d'esperar %d segondas entre cada publicacion." "Mercés d'esperar %d segondas entre cada publicacion."
], ],
"Paste is limited to %s of encrypted data.": "Lo tèxte es limitat a %s de donadas chifradas.", "Document is limited to %s of encrypted data.": "Lo tèxte es limitat a %s de donadas chifradas.",
"Invalid data.": "Donadas invalidas.", "Invalid data.": "Donadas invalidas.",
"You are unlucky. Try again.": "Pas cap de fortuna. Tornatz ensajar.", "You are unlucky. Try again.": "Pas cap de fortuna. Tornatz ensajar.",
"Error saving comment. Sorry.": "Error al moment de salvagardar lo comentari. O planhèm.", "Error saving comment. Sorry.": "Error al moment de salvagardar lo comentari. O planhèm.",
"Error saving paste. Sorry.": "Error al moment de salvagardar lo tèxte. O planhèm.", "Error saving document. Sorry.": "Error al moment de salvagardar lo tèxte. O planhèm.",
"Invalid paste ID.": "ID del tèxte invalid.", "Invalid document ID.": "ID del tèxte invalid.",
"Paste is not of burn-after-reading type.": "Lo tèxte es pas del tipe « Escafar aprèp lectura ».", "Document is not of burn-after-reading type.": "Lo tèxte es pas del tipe « Escafar aprèp lectura ».",
"Wrong deletion token. Paste was not deleted.": "Geton de supression incorrècte. Lo tèxte es pas estat suprimit.", "Wrong deletion token. Document was not deleted.": "Geton de supression incorrècte. Lo tèxte es pas estat suprimit.",
"Paste was properly deleted.": "Lo tèxte es estat corrèctament suprimit.", "Document was properly deleted.": "Lo tèxte es estat corrèctament suprimit.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript es requesit per far foncionar %s. O planhèm per linconvenient.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript es requesit per far foncionar %s. O planhèm per linconvenient.",
"%s requires a modern browser to work.": "%s requerís un navigator modèrn per foncionar.", "%s requires a modern browser to work.": "%s requerís un navigator modèrn per foncionar.",
"New": "Nòu", "New": "Nòu",
@@ -133,9 +133,9 @@
"Aqueste document expirarà daquí %d meses.", "Aqueste document expirarà daquí %d meses.",
"Aqueste document expirarà daquí %d meses." "Aqueste document expirarà daquí %d meses."
], ],
"Please enter the password for this paste:": "Picatz lo senhal per aqueste tèxte:", "Please enter the password for this document:": "Picatz lo senhal per aqueste tèxte:",
"Could not decrypt data (Wrong key?)": "Impossible de deschifrar las donadas (marrida clau?)", "Could not decrypt data (Wrong key?)": "Impossible de deschifrar las donadas (marrida clau?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Impossible de suprimir lo tèxte, perque es pas estat gardat en mòde \"Escafar aprèp lectura\".", "Could not delete the document, it was not stored in burn after reading mode.": "Impossible de suprimir lo tèxte, perque es pas estat gardat en mòde \"Escafar aprèp lectura\".",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "PER VÒSTRES UÈLHS SOLAMENT. Tampetz pas aquesta fenèstra, aqueste tèxte poirà pas mai èsser afichat.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "PER VÒSTRES UÈLHS SOLAMENT. Tampetz pas aquesta fenèstra, aqueste tèxte poirà pas mai èsser afichat.",
"Could not decrypt comment; Wrong key?": "Impossible de deschifrar lo comentari ; marrida clau?", "Could not decrypt comment; Wrong key?": "Impossible de deschifrar lo comentari ; marrida clau?",
"Reply": "Respondre", "Reply": "Respondre",
@@ -150,20 +150,12 @@
"unknown status": "estatut desconegut", "unknown status": "estatut desconegut",
"server error or not responding": "lo servidor respond pas o a rescontrat una error", "server error or not responding": "lo servidor respond pas o a rescontrat una error",
"Could not post comment: %s": "Impossible de mandar lo comentari:%s", "Could not post comment: %s": "Impossible de mandar lo comentari:%s",
"Sending paste…": "Mandadís del tèxte…", "Sending document…": "Mandadís del tèxte…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Vòstre tèxte es disponible a ladreça <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Picatz sus <kbd>Ctrl</kbd>+<kbd>c</kbd> per copiar)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Vòstre tèxte es disponible a ladreça <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Picatz sus <kbd>Ctrl</kbd>+<kbd>c</kbd> per copiar)</span>",
"Delete data": "Supprimir las donadas del tèxte", "Delete data": "Supprimir las donadas del tèxte",
"Could not create paste: %s": "Impossible de crear lo tèxte:%s", "Could not create document: %s": "Impossible de crear lo tèxte:%s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Impossible de deschifrar lo tèxte:clau de deschiframent absenta de lURL (Avètz utilizat un redirector o un site de reduccion dURL que suprimís una partida de lURL?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Impossible de deschifrar lo tèxte:clau de deschiframent absenta de lURL (Avètz utilizat un redirector o un site de reduccion dURL que suprimís una partida de lURL?)",
"B": "o", "B": "o",
"KiB": "Kio",
"MiB": "Mio",
"GiB": "Gio",
"TiB": "Tio",
"PiB": "Pio",
"EiB": "Eio",
"ZiB": "Zio",
"YiB": "Yio",
"kB": "ko", "kB": "ko",
"MB": "Mo", "MB": "Mo",
"GB": "Go", "GB": "Go",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Telecargar la pèça junta", "Download attachment": "Telecargar la pèça junta",
"Cloned: '%s'": "Clonar: '%s'", "Cloned: '%s'": "Clonar: '%s'",
"The cloned file '%s' was attached to this paste.": "Aqueste fichièr clonat '%s' es estat ajustat a aqueste tèxte.", "The cloned file '%s' was attached to this document.": "Aqueste fichièr clonat '%s' es estat ajustat a aqueste tèxte.",
"Attach a file": "Juntar un fichièr", "Attach a file": "Juntar un fichièr",
"alternatively drag & drop a file or paste an image from the clipboard": "autrament lisatz lo fichièr o pegatz limatge del quichapapièrs", "alternatively drag & drop a file or paste an image from the clipboard": "autrament lisatz lo fichièr o pegatz limatge del quichapapièrs",
"File too large, to display a preview. Please download the attachment.": "Fichièr tròp pesuc per mostrar un apercebut. Telecargatz la pèca junta.", "File too large, to display a preview. Please download the attachment.": "Fichièr tròp pesuc per mostrar un apercebut. Telecargatz la pèca junta.",
@@ -193,11 +185,11 @@
"Decrypt": "Deschifrar", "Decrypt": "Deschifrar",
"Enter password": "Picatz lo senhal", "Enter password": "Picatz lo senhal",
"Loading…": "Cargament…", "Loading…": "Cargament…",
"Decrypting paste…": "Deschirament del tèxte…", "Decrypting document…": "Deschirament del tèxte…",
"Preparing new paste…": "Preparacion…", "Preparing new document…": "Preparacion…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Se per cas aqueste messatge quite pas de safichar mercés de gaitar <a href=\"%s\">aquesta FAQ per las solucions</a> (en anglés).", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Se per cas aqueste messatge quite pas de safichar mercés de gaitar <a href=\"%s\">aquesta FAQ per las solucions</a> (en anglés).",
"+++ no paste text +++": "+++ cap de tèxte pegat +++", "+++ no document text +++": "+++ cap de tèxte pegat +++",
"Could not get paste data: %s": "Recuperacion impossibla de las donadas copiadas: %s", "Could not get document data: %s": "Recuperacion impossibla de las donadas copiadas: %s",
"QR code": "Còdi QR", "QR code": "Còdi QR",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Aqueste site utiliza una connexion HTTP pas segura ! Mercés de lutilizar pas que per densages.", "This website is using an insecure HTTP connection! Please use it only for testing.": "Aqueste site utiliza una connexion HTTP pas segura ! Mercés de lutilizar pas que per densages.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Per mai dinformacions <a href=\"%s\">vejatz aqueste article de FAQ</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "Per mai dinformacions <a href=\"%s\">vejatz aqueste article de FAQ</a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "Nòtas chifradas sus %s", "Encrypted note on %s": "Nòtas chifradas sus %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visitatz aqueste ligam per veire la nòta. Fornir lo ligam a qualquun mai li permet tanben daccedir a la nòta.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visitatz aqueste ligam per veire la nòta. Fornir lo ligam a qualquun mai li permet tanben daccedir a la nòta.",
"URL shortener may expose your decrypt key in URL.": "Los espleches dacorchiment dURL pòdon expausar la clau de deschiframent dins lURL.", "URL shortener may expose your decrypt key in URL.": "Los espleches dacorchiment dURL pòdon expausar la clau de deschiframent dins lURL.",
"Save paste": "Enregistrar lo tèxt", "URL shortener is enabled by default.": "URL shortener is enabled by default.",
"Your IP is not authorized to create pastes.": "Vòstra adreça IP a pas lautorizacion de crear de tèxtes.", "Save document": "Enregistrar lo tèxt",
"Your IP is not authorized to create documents.": "Vòstra adreça IP a pas lautorizacion de crear de tèxtes.",
"Trying to shorten a URL that isn't pointing at our instance.": "Ensag dabracar una URL que mena pas a nòstra instància.", "Trying to shorten a URL that isn't pointing at our instance.": "Ensag dabracar una URL que mena pas a nòstra instància.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error en cridant YOURLS. Es probablament un problèma de configuracion, quicòm coma « apirul » o « signature » marrit o absent.", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Error en cridant YOURLS. Es probablament un problèma de configuracion, quicòm coma « apirul » o « signature » marrit o absent.",
"Error parsing YOURLS response.": "Error d'analisi de la responsa YOURLS.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Error d'analisi de la responsa YOURLS.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"This secret message can only be displayed once. Would you like to see it now?": "Aqueste messatge secrèt se pòt pas qu'afichar un còp. Lo volètz veire ara?", "This secret message can only be displayed once. Would you like to see it now?": "Aqueste messatge secrèt se pòt pas qu'afichar un còp. Lo volètz veire ara?",
"Yes, see it": "Òc, afichatz-lo", "Yes, see it": "Òc, afichatz-lo",
"Dark Mode": "Mòde escur", "Dark Mode": "Mòde escur",
"Error compressing paste, due to missing WebAssembly support.": "Error al moment de la compression de l'empegatge, a causa de la manca de presa en carga de WebAssembly.", "Error compressing document, due to missing WebAssembly support.": "Error al moment de la compression de l'empegatge, a causa de la manca de presa en carga de WebAssembly.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error al moment de descompresar l'empegatge, vòstre navegador pren pas en carga WebAssembly. Mercés d'utilizar un autre navigador per visualizar aquesta pega.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Error al moment de descompresar l'empegatge, vòstre navegador pren pas en carga WebAssembly. Mercés d'utilizar un autre navigador per visualizar aquesta pega.",
"Start over": "Start over", "Start over": "Start over",
"Paste copied to clipboard": "Paste copied to clipboard", "Document copied to clipboard": "Document copied to clipboard",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Copy link", "Copy link": "Copy link",
"Link copied to clipboard": "Link copied to clipboard", "Link copied to clipboard": "Link copied to clipboard",
"Paste text": "Paste text", "Document text": "Document text",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)",
"Show password": "Show password",
"Hide password": "Hide password",
"Theme": "Theme" "Theme": "Theme"
} }
+124 -128
View File
@@ -1,51 +1,51 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s jest minimalistycznym, otwartoźródłowym serwisem typu pastebin, w którym serwer nie ma jakichkolwiek informacji o tym, co jest wklejane. Dane są szyfrowane i deszyfrowane %sw przeglądarce%s z użyciem 256-bitowego klucza AES.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s to minimalistyczny, otwartoźródłowy serwis typu pastebin, w którym serwer nie posiada żadnej wiedzy o przechowywanych danych. Dane są szyfrowane i deszyfrowywane %sw przeglądarce%s przy użyciu 256-bitowego klucza AES.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Więcej informacji na <a href=\"https://privatebin.info/\">stronie projektu</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Więcej informacji znajdziesz na <a href=\"https://privatebin.info/\">stronie projektu</a>.",
"Because ignorance is bliss": "Ponieważ ignorancja jest cnotą", "Because ignorance is bliss": "Bo niewiedza to błogosławieństwo",
"Paste does not exist, has expired or has been deleted.": "Wklejka nie istnieje, wygasła albo została usunięta.", "Document does not exist, has expired or has been deleted.": "Dokument nie istnieje, wygasł lub został usunięty.",
"%s requires php %s or above to work. Sorry.": "%s wymaga PHP w wersji %s lub nowszej. Przykro mi.", "%s requires php %s or above to work. Sorry.": "%s wymaga PHP w wersji %s lub nowszej.",
"%s requires configuration section [%s] to be present in configuration file.": "%s wymaga obecności sekcji [%s] w pliku konfiguracyjnym.", "%s requires configuration section [%s] to be present in configuration file.": "%s wymaga obecności sekcji [%s] w pliku konfiguracyjnym.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
"Poczekaj %d sekundę pomiędzy każdą wklej.", "Poczekaj %d sekundę przed kolejnym wklejeniem.",
"Poczekaj %d sekund pomiędzy każdą wklej.", "Poczekaj %d sekundy przed kolejnym wklejeniem.",
"Poczekaj %d sekund pomiędzy każdą wklej.", "Poczekaj %d sekund przed kolejnym wklejeniem.",
"Poczekaj %d sekund pomiędzy każdą wklej.", "Poczekaj %d sekund przed kolejnym wklejeniem.",
"Poczekaj %d sekund pomiędzy każdą wklej.", "Poczekaj %d sekund przed kolejnym wklejeniem.",
"Poczekaj %d sekund pomiędzy każdą wklej." "Poczekaj %d sekund przed kolejnym wklejeniem."
], ],
"Paste is limited to %s of encrypted data.": "Wklejka jest limitowana do %s zaszyfrowanych danych.", "Document is limited to %s of encrypted data.": "Dokument jest ograniczony do %s zaszyfrowanych danych.",
"Invalid data.": "Nieprawidłowe dane.", "Invalid data.": "Nieprawidłowe dane.",
"You are unlucky. Try again.": "Miałeś pecha. Spróbuj ponownie.", "You are unlucky. Try again.": "Miałeś pecha — spróbuj ponownie.",
"Error saving comment. Sorry.": "Błąd przy zapisywaniu komentarza, sorry.", "Error saving comment. Sorry.": "Błąd podczas zapisywania komentarza.",
"Error saving paste. Sorry.": "Błąd przy zapisywaniu wklejki, sorry.", "Error saving document. Sorry.": "Błąd podczas zapisywania dokumentu.",
"Invalid paste ID.": "Nieprawidłowe ID wklejki.", "Invalid document ID.": "Nieprawidłowy identyfikator dokumentu.",
"Paste is not of burn-after-reading type.": "Ta wklejka nie ulega autodestrukcji po przeczytaniu.", "Document is not of burn-after-reading type.": "Dokument nie jest typu „zniszcz po przeczytaniu.",
"Wrong deletion token. Paste was not deleted.": "Nieprawidłowy token usuwania. Wklejka nie została usunięta.", "Wrong deletion token. Document was not deleted.": "Nieprawidłowy token usunięcia. Dokument nie został usunięty.",
"Paste was properly deleted.": "Wklejka usunięta poprawnie.", "Document was properly deleted.": "Dokument został pomyślnie usunięty.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Do działania %sa jest wymagany JavaScript. Przepraszamy za niedogodność.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "Do działania %s wymagany jest JavaScript. Przepraszamy za niedogodność.",
"%s requires a modern browser to work.": "%s wymaga do działania nowoczesnej przeglądarki.", "%s requires a modern browser to work.": "%s wymaga nowoczesnej przeglądarki internetowej.",
"New": "Nowa", "New": "Nowy",
"Create": "Stwórz", "Create": "Utwórz",
"Clone": "Sklonuj", "Clone": "Sklonuj",
"Raw text": "Czysty tekst", "Raw text": "Tekst niesformatowany",
"Expires": "Wygasa za", "Expires": "Wygasa za",
"Burn after reading": "Zniszcz po przeczytaniu", "Burn after reading": "Zniszcz po przeczytaniu",
"Open discussion": "Otwarta dyskusja", "Open discussion": "Otwarta dyskusja",
"Password (recommended)": "Hasło (zalecane)", "Password (recommended)": "Hasło (opcjonalnie, zalecane)",
"Discussion": "Dyskusja", "Discussion": "Dyskusja",
"Toggle navigation": "Przełącz nawigację", "Toggle navigation": "Przełącz nawigację",
"%d seconds": [ "%d seconds": [
"%d second", "%d sekonda",
"%d second", "%d sekondy",
"%d second", "%d sekond",
"%d second", "%d sekond",
"%d second", "%d sekond",
"%d second" "%d sekond"
], ],
"%d minutes": [ "%d minutes": [
"%d minut", "%d minuta",
"%d minut", "%d minuty",
"%d minut", "%d minut",
"%d minut", "%d minut",
"%d minut", "%d minut",
@@ -53,57 +53,57 @@
], ],
"%d hours": [ "%d hours": [
"%d godzina", "%d godzina",
"%d godzina", "%d godziny",
"%d godzinę", "%d godzin",
"%d godzinę", "%d godzin",
"%d godzinę", "%d godzin",
"%d godzinę" "%d godzin"
], ],
"%d days": [ "%d days": [
"%d dzień", "%d dzień",
"%d dzień", "%d dni",
"%d dzień", "%d dni",
"%d dzień", "%d dni",
"%d dzień", "%d dni",
"%d dzień" "%d dni"
], ],
"%d weeks": [ "%d weeks": [
"%d tydzień", "%d tydzień",
"%d tydzień", "%d tydgodnie",
"%d tydzień", "%d tydgodni",
"%d tydzień", "%d tydgodni",
"%d tydzień", "%d tydgodni",
"%d tydzień" "%d tydgodni"
], ],
"%d months": [ "%d months": [
"%d miesiąc", "%d miesiąc",
"%d miesiąc", "%d miesiące",
"%d miesiąc", "%d miesiący",
"%d miesiąc", "%d miesiący",
"%d miesiąc", "%d miesiący",
"%d miesiąc" "%d miesiący"
], ],
"%d years": [ "%d years": [
"%d rok", "%d rok",
"%d rok", "%d lata",
"%d rok", "%d lat",
"%d rok", "%d lat",
"%d rok", "%d lat",
"%d rok" "%d lat"
], ],
"Never": "nigdy", "Never": "Nigdy",
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Notka: To jest usługa testowa. Dane mogą zostać usunięte w dowolnym momencie. Kociątka umrą, jeśli nadużyjesz tej usługi.", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Uwaga: to usługa testowa — dane mogą zostać usunięte w dowolnym momencie. Nie nadużywaj jej, bo ucierpią kotki 🐱.",
"This document will expire in %d seconds.": [ "This document will expire in %d seconds.": [
"Ten dokument wygaśnie za %d sekundę.", "Ten dokument wygaśnie za sekundę.",
"Ten dokument wygaśnie za %d sekund.", "Ten dokument wygaśnie za %d sekundy.",
"Ten dokument wygaśnie za %d sekund.", "Ten dokument wygaśnie za %d sekund.",
"Ten dokument wygaśnie za %d sekund.", "Ten dokument wygaśnie za %d sekund.",
"Ten dokument wygaśnie za %d sekund.", "Ten dokument wygaśnie za %d sekund.",
"Ten dokument wygaśnie za %d sekund." "Ten dokument wygaśnie za %d sekund."
], ],
"This document will expire in %d minutes.": [ "This document will expire in %d minutes.": [
"Ten dokument wygaśnie za %d minutę.", "Ten dokument wygaśnie za minutę.",
"Ten dokument wygaśnie za %d minut.", "Ten dokument wygaśnie za %d minuty.",
"Ten dokument wygaśnie za %d minut.", "Ten dokument wygaśnie za %d minut.",
"Ten dokument wygaśnie za %d minut.", "Ten dokument wygaśnie za %d minut.",
"Ten dokument wygaśnie za %d minut.", "Ten dokument wygaśnie za %d minut.",
@@ -111,14 +111,14 @@
], ],
"This document will expire in %d hours.": [ "This document will expire in %d hours.": [
"Ten dokument wygaśnie za godzinę.", "Ten dokument wygaśnie za godzinę.",
"Ten dokument wygaśnie za %d godzin.", "Ten dokument wygaśnie za %d godziny.",
"Ten dokument wygaśnie za %d godzin.", "Ten dokument wygaśnie za %d godzin.",
"Ten dokument wygaśnie za %d godzin.", "Ten dokument wygaśnie za %d godzin.",
"Ten dokument wygaśnie za %d godzin.", "Ten dokument wygaśnie za %d godzin.",
"Ten dokument wygaśnie za %d godzin." "Ten dokument wygaśnie za %d godzin."
], ],
"This document will expire in %d days.": [ "This document will expire in %d days.": [
"Ten dokument wygaśnie za %d dzień.", "Ten dokument wygaśnie za dzień.",
"Ten dokument wygaśnie za %d dni.", "Ten dokument wygaśnie za %d dni.",
"Ten dokument wygaśnie za %d dni.", "Ten dokument wygaśnie za %d dni.",
"Ten dokument wygaśnie za %d dni.", "Ten dokument wygaśnie za %d dni.",
@@ -127,43 +127,35 @@
], ],
"This document will expire in %d months.": [ "This document will expire in %d months.": [
"Ten dokument wygaśnie za miesiąc.", "Ten dokument wygaśnie za miesiąc.",
"Ten dokument wygaśnie za %d miesięcy.", "Ten dokument wygaśnie za %d miesiące.",
"Ten dokument wygaśnie za %d miesięcy.", "Ten dokument wygaśnie za %d miesięcy.",
"Ten dokument wygaśnie za %d miesięcy.", "Ten dokument wygaśnie za %d miesięcy.",
"Ten dokument wygaśnie za %d miesięcy.", "Ten dokument wygaśnie za %d miesięcy.",
"Ten dokument wygaśnie za %d miesięcy." "Ten dokument wygaśnie za %d miesięcy."
], ],
"Please enter the password for this paste:": "Wpisz hasło dla tej wklejki:", "Please enter the password for this document:": "Podaj hasło do tego dokumentu:",
"Could not decrypt data (Wrong key?)": "Nie udało się odszyfrować danych (zły klucz?)", "Could not decrypt data (Wrong key?)": "Nie udało się odszyfrować danych (zły klucz?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Nie udało się usunąć wklejki, nie została zapisana w trybie zniszczenia po przeczytaniu.", "Could not delete the document, it was not stored in burn after reading mode.": "Nie można usunąć dokumentu — nie był zapisany w trybie autodestrukcji po przeczytaniu.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "TYLKO DO TWOJEGO WGLĄDU. Nie zamykaj tego okna, ta wiadomość nie będzie mogła być wyświetlona ponownie.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "TYLKO DO TWOJEGO WGLĄDU. Nie zamykaj tego okna — tej wiadomości nie będzie można ponownie wyświetlić.",
"Could not decrypt comment; Wrong key?": "Nie udało się odszyfrować komentarza; zły klucz?", "Could not decrypt comment; Wrong key?": "Nie udało się odszyfrować komentarza (zły klucz?)",
"Reply": "Odpowiedz", "Reply": "Odpowiedz",
"Anonymous": "Anonim", "Anonymous": "Anonimowy użytkownik",
"Avatar generated from IP address": "Anonimowy avatar (Vizhash z adresu IP)", "Avatar generated from IP address": "Awatar wygenerowany z adresu IP",
"Add comment": "Dodaj komentarz", "Add comment": "Dodaj komentarz",
"Optional nickname…": "Opcjonalny nick…", "Optional nickname…": "Opcjonalny pseudonim…",
"Post comment": "Wyślij komentarz", "Post comment": "Wyślij komentarz",
"Sending comment…": "Wysyłanie komentarza…", "Sending comment…": "Wysyłanie komentarza…",
"Comment posted.": "Wysłano komentarz.", "Comment posted.": "Komentarz został dodany.",
"Could not refresh display: %s": "Nie można odświeżyć widoku: %s", "Could not refresh display: %s": "Nie można odświeżyć widoku: %s",
"unknown status": "nieznany status", "unknown status": "nieznany status",
"server error or not responding": "błąd serwera lub brak odpowiedzi", "server error or not responding": "błąd serwera lub brak odpowiedzi",
"Could not post comment: %s": "Nie udało się wysłać komentarza: %s", "Could not post comment: %s": "Nie udało się wysłać komentarza: %s",
"Sending paste…": "Wysyłanie wklejki…", "Sending document…": "Wysyłanie dokumentu…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Twoja wklejka to <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(wciśnij <kbd>Ctrl</kbd>+<kbd>c</kbd> aby skopiować)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Twój dokument: <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Użyj <kbd>Ctrl</kbd>+<kbd>c</kbd>, aby skopiować)</span>",
"Delete data": "Skasuj dane", "Delete data": "Usuń dane",
"Could not create paste: %s": "Nie udało się utworzyć wklejki: %s", "Could not create document: %s": "Nie można utworzyć dokumentu: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Nie udało się odszyfrować wklejki - brak klucza deszyfrującego w adresie (użyłeś skracacza linków, który ucina część adresu?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Nie można odszyfrować dokumentu — brakuje klucza deszyfrującego w adresie URL (czy użyto przekierowania lub skracacza adresów, który usuwa część linku?)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -173,67 +165,71 @@
"ZB": "ZB", "ZB": "ZB",
"YB": "YB", "YB": "YB",
"Format": "Format", "Format": "Format",
"Plain Text": "Czysty tekst", "Plain Text": "Tekst niesformatowany",
"Source Code": "Kod źródłowy", "Source Code": "Kod źródłowy (source code)",
"Markdown": "Znakowanie", "Markdown": "Znakowanie",
"Download attachment": "Pobierz załącznik", "Download attachment": "Pobierz załącznik",
"Cloned: '%s'": "Sklonowano: '%s'", "Cloned: '%s'": "Sklonowano: '%s'",
"The cloned file '%s' was attached to this paste.": "Sklonowany plik '%s' był dołączony do tej wklejki.", "The cloned file '%s' was attached to this document.": "Sklonowany plik '%s' został dołączony do tego dokumentu.",
"Attach a file": "Załącz plik", "Attach a file": "Załącz plik",
"alternatively drag & drop a file or paste an image from the clipboard": "Alternatywnie przeciągnij i upuść plik albo wklej obraz ze schowka", "alternatively drag & drop a file or paste an image from the clipboard": "Lub przeciągnij i upuść plik, albo wklej obraz ze schowka.",
"File too large, to display a preview. Please download the attachment.": "Plik zbyt duży aby wyświetlić podgląd. Proszę pobrać załącznik.", "File too large, to display a preview. Please download the attachment.": "Plik jest zbyt duży, by wyświetlić podgląd. Pobierz załącznik.",
"Remove attachment": "Usuń załącznik", "Remove attachment": "Usuń załącznik",
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Twoja przeglądarka nie wspiera wysyłania zaszyfrowanych plików. Użyj nowszej przeglądarki.", "Your browser does not support uploading encrypted files. Please use a newer browser.": "Twoja przeglądarka nie obsługuje wysyłania zaszyfrowanych plików. Użyj nowszej wersji przeglądarki.",
"Invalid attachment.": "Nieprawidłowy załącznik.", "Invalid attachment.": "Nieprawidłowy załącznik.",
"Options": "Opcje", "Options": "Opcje",
"Shorten URL": "Skróć adres URL", "Shorten URL": "Skróć adres URL",
"Editor": "Edytować", "Editor": "Edytor",
"Preview": "Podgląd", "Preview": "Podgląd",
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s wymaga zmiennej PATH zakończonej w \"%s\". Zaktualizuj zmienną PATH w index.php.", "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s wymaga, aby zmienna PATH kończyła się na \"%s\". Zaktualizuj PATH w pliku index.php.",
"Decrypt": "Odszyfruj", "Decrypt": "Odszyfruj",
"Enter password": "Wpisz hasło", "Enter password": "Wpisz hasło",
"Loading…": "Wczytywanie…", "Loading…": "Ładowanie…",
"Decrypting paste…": "Odszyfrowywanie wklejki…", "Decrypting document…": "Odszyfrowywanie dokumentu…",
"Preparing new paste…": "Przygotowywanie nowej wklejki…", "Preparing new document…": "Przygotowywanie nowego dokumentu…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "W przypadku gdy ten komunikat nigdy nie znika, proszę spójrz na <a href=\"%s\">to FAQ aby rozwiązać problem</a> (po angielsku).", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Jeśli ten komunikat nie znika, zajrzyj do <a href=\"%s\">FAQ</a>, aby znaleźć rozwiązanie problemu.",
"+++ no paste text +++": "+++ brak wklejonego tekstu +++", "+++ no document text +++": "+++ brak treści dokumentu +++",
"Could not get paste data: %s": "Nie można było pobrać danych wklejki: %s", "Could not get document data: %s": "Nie można pobrać danych dokumentu: %s",
"QR code": "Kod QR", "QR code": "Kod QR",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Ta witryna używa niezabezpieczonego połączenia HTTP! Używaj jej wyłącznie do testowania.", "This website is using an insecure HTTP connection! Please use it only for testing.": "Ta strona korzysta z niezabezpieczonego połączenia HTTP! Używaj jej tylko do testów.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Aby uzyskać więcej informacji, <a href=\"%s\">sprawdź to często zadawane pytanie</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "Więcej informacji znajdziesz w <a href=\"%s\">tym wpisie FAQ</a>.",
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Twoja przeglądarka może wymagać połączenia HTTPS do obsługi API WebCrypto. Wypróbuj <a href=\"%s\">przełączenie na HTTPS</a>.", "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Twoja przeglądarka może wymagać połączenia HTTPS, aby obsługiwać WebCrypto API. Spróbuj <a href=\"%s\">przełączyć się na HTTPS</a>.",
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Twoja przeglądarka nie obsługuje WebAssembly używanego do kompresji zlib. Możesz utworzyć nieskompresowane dokumenty, ale nie możesz odczytać skompresowanych.", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Twoja przeglądarka nie obsługuje WebAssembly (używanego do kompresji zlib). Możesz tworzyć nieskompresowane dokumenty, ale nie odczytasz skompresowanych.",
"waiting on user to provide a password": "oczekiwanie na podanie hasła przez użytkownika", "waiting on user to provide a password": "oczekiwanie na podanie hasła przez użytkownika",
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Błąd odszyfrowywania danych. Czy wprowadzono niepoprawne hasło? Spróbuj ponownie, używając przycisku na górze.", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Nie udało się odszyfrować danych. Czy podałeś błędne hasło? Spróbuj ponownie, używając przycisku u góry.",
"Retry": "Ponów", "Retry": "Spróbuj ponownie",
"Showing raw text…": "Pokazywanie nieprzetworzonego tekstu…", "Showing raw text…": "Wyświetlanie surowego tekstu…",
"Notice:": "Uwaga:", "Notice:": "Uwaga:",
"This link will expire after %s.": "Ten odnośnik wygaśnie po %s.", "This link will expire after %s.": "Ten link wygaśnie po %s.",
"This link can only be accessed once, do not use back or refresh button in your browser.": "Tego odnośnika można użyć tylko jeden raz. Nie cofaj ani nie odświeżaj strony w przeglądarce.", "This link can only be accessed once, do not use back or refresh button in your browser.": "Tego linku można użyć tylko raz — nie cofaj ani nie odświeżaj strony.",
"Link:": "Odnośnik:", "Link:": "Odnośnik:",
"Recipient may become aware of your timezone, convert time to UTC?": "Odbiorca może uzyskać informację o twojej strefie czasowej. Zamienić czas na UTC?", "Recipient may become aware of your timezone, convert time to UTC?": "Odbiorca może poznać Twoją strefę czasową. Czy chcesz zamienić czas na UTC?",
"Use Current Timezone": "Użyj bieżącej strefy czasowej", "Use Current Timezone": "Użyj bieżącej strefy czasowej",
"Convert To UTC": "Zamień na UTC", "Convert To UTC": "Zamień na UTC",
"Close": "Zamknij", "Close": "Zamknij",
"Encrypted note on %s": "Zaszyfrowana notatka na %s", "Encrypted note on %s": "Zaszyfrowana notatka na %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Naciśnij tej odnośnik, aby zobaczyć notatkę. Każda osoba z dostępem do tego adresu URL również może zobaczyć tę notatkę.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Odwiedź ten link, aby zobaczyć notatkę. Każdy, kto ma ten adres URL, również będzie mógł ją zobaczyć.",
"URL shortener may expose your decrypt key in URL.": "Skrócenie adresu URL może ujawnić Twój klucz odszyfrowujący w adresie URL.", "URL shortener may expose your decrypt key in URL.": "Skracacz adresów może ujawnić Twój klucz deszyfrujący w URL.",
"Save paste": "Zapisz wklejenie", "URL shortener is enabled by default.": "Skracacz adresów URL jest domyślnie włączony.",
"Your IP is not authorized to create pastes.": "Twój adres IP nie jest upoważniony do tworzenia wklejeń.", "Save document": "Zapisz dokument",
"Trying to shorten a URL that isn't pointing at our instance.": "Próba skrócenia adresu URL wskazującego na inną instancję.", "Your IP is not authorized to create documents.": "Twój adres IP nie jest uprawniony do tworzenia dokumentów.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Błąd wywoływania YOURLS. Możliwy błąd konfiguracji, taki jak błędne lub brakujące \"apiurl\" lub \"signature\".", "Trying to shorten a URL that isn't pointing at our instance.": "Próba skrócenia adresu URL, który nie wskazuje na nasz serwer.",
"Error parsing YOURLS response.": "Błąd przetwarzania odpowiedzi YOURLS.", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Błąd proxy: adres URL proxy jest pusty. Może to wynikać z błędnej konfiguracji (brak lub błędne klucze).",
"This secret message can only be displayed once. Would you like to see it now?": "Tę tajną wiadomość możesz zobaczyć tylko jeden raz. Czy chcesz to zrobić teraz?", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Błąd proxy: problem z przetwarzaniem odpowiedzi. Sprawdź konfigurację (brakujące lub błędne klucze).",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Błąd proxy: nieprawidłowa odpowiedź. Możliwy problem z konfiguracją lub chwilowa awaria.",
"This secret message can only be displayed once. Would you like to see it now?": "Tę tajną wiadomość można wyświetlić tylko raz. Czy chcesz ją zobaczyć teraz?",
"Yes, see it": "Tak, pokaż", "Yes, see it": "Tak, pokaż",
"Dark Mode": "Ciemny motyw", "Dark Mode": "Tryb ciemny",
"Error compressing paste, due to missing WebAssembly support.": "Błąd kompresowania wklejenia przez brak obsługi WebAssembly.", "Error compressing document, due to missing WebAssembly support.": "Błąd kompresji dokumentu z powodu braku obsługi WebAssembly.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Błąd dekompresowania wklejenia przez brak obsługi WebAssembly przez przeglądarkę. Użyj innej przeglądarki, aby zobaczyć to wklejenie.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Błąd dekompresji dokumentu — Twoja przeglądarka nie obsługuje WebAssembly. Użyj innej przeglądarki, aby go otworzyć.",
"Start over": "Zacznij od nowa", "Start over": "Zacznij od nowa",
"Paste copied to clipboard": "Wklejka skopiowana do schowka", "Document copied to clipboard": "Dokument skopiowany do schowka",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "Aby skopiować wklejkę, naciśnij przycisk kopiowania lub użyj skrótu schowka <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "Aby skopiować dokument, kliknij przycisk kopiowania lub użyj skrótu <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Kopiuj link", "Copy link": "Kopiuj link",
"Link copied to clipboard": "Link został skopiowany do schowka", "Link copied to clipboard": "Link skopiowany do schowka",
"Paste text": "Wklej tekst", "Document text": "Treść dokumentu",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Klawisz Tabulatora służy jako znak (przytrzymaj <kbd>Ctrl</kbd>+<kbd>m</kbd> lub <kbd>Esc</kbd> aby przełącz)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Klawisz Tabulatora służy jako znak (użyj <kbd>Ctrl</kbd>+<kbd>m</kbd> lub <kbd>Esc</kbd>, aby przełączyć tryb)",
"Show password": "Show password",
"Hide password": "Hide password",
"Theme": "Motyw" "Theme": "Motyw"
} }
+32 -36
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s é um serviço minimalista e de código aberto do tipo \"pastebin\", em que o servidor tem zero conhecimento dos dados copiados. Os dados são cifrados e decifrados %sno navegador%s usando 256 bits AES.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s é um serviço minimalista e de código aberto do tipo \"pastebin\", em que o servidor tem zero conhecimento dos dados copiados. Os dados são cifrados e decifrados %sno navegador%s usando 256 bits AES.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Mais informações na <a href=\"https://privatebin.info/\">página do projeto</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Mais informações na <a href=\"https://privatebin.info/\">página do projeto</a>.",
"Because ignorance is bliss": "Porque a ignorância é uma benção", "Because ignorance is bliss": "Porque a ignorância é uma benção",
"Paste does not exist, has expired or has been deleted.": "A cópia não existe, expirou ou já foi excluída.", "Document does not exist, has expired or has been deleted.": "A cópia não existe, expirou ou já foi excluída.",
"%s requires php %s or above to work. Sorry.": "%s requer php %s ou superior para funcionar. Desculpa.", "%s requires php %s or above to work. Sorry.": "%s requer php %s ou superior para funcionar. Desculpa.",
"%s requires configuration section [%s] to be present in configuration file.": "%s requer que a seção de configuração [% s] esteja no arquivo de configuração.", "%s requires configuration section [%s] to be present in configuration file.": "%s requer que a seção de configuração [% s] esteja no arquivo de configuração.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Por favor espere %d segundos entre cada publicação.", "Por favor espere %d segundos entre cada publicação.",
"Por favor espere %d segundos entre cada publicação." "Por favor espere %d segundos entre cada publicação."
], ],
"Paste is limited to %s of encrypted data.": "A cópia está limitada a %s de dados cifrados.", "Document is limited to %s of encrypted data.": "A cópia está limitada a %s de dados cifrados.",
"Invalid data.": "Dados inválidos.", "Invalid data.": "Dados inválidos.",
"You are unlucky. Try again.": "Você é azarado. Tente novamente", "You are unlucky. Try again.": "Você é azarado. Tente novamente",
"Error saving comment. Sorry.": "Erro ao salvar comentário. Desculpa.", "Error saving comment. Sorry.": "Erro ao salvar comentário. Desculpa.",
"Error saving paste. Sorry.": "Erro ao salvar cópia. Desculpa.", "Error saving document. Sorry.": "Erro ao salvar cópia. Desculpa.",
"Invalid paste ID.": "ID de cópia inválido.", "Invalid document ID.": "ID de cópia inválido.",
"Paste is not of burn-after-reading type.": "Cópia não é do tipo \"queime após ler\".", "Document is not of burn-after-reading type.": "Cópia não é do tipo \"queime após ler\".",
"Wrong deletion token. Paste was not deleted.": "Token de remoção inválido. A cópia não foi excluída.", "Wrong deletion token. Document was not deleted.": "Token de remoção inválido. A cópia não foi excluída.",
"Paste was properly deleted.": "A cópia foi devidamente excluída.", "Document was properly deleted.": "A cópia foi devidamente excluída.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript é necessário para que %s funcione. Pedimos desculpas pela inconveniência.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript é necessário para que %s funcione. Pedimos desculpas pela inconveniência.",
"%s requires a modern browser to work.": "%s requer um navegador moderno para funcionar.", "%s requires a modern browser to work.": "%s requer um navegador moderno para funcionar.",
"New": "Novo", "New": "Novo",
@@ -133,9 +133,9 @@
"Este documento irá expirar em %d meses.", "Este documento irá expirar em %d meses.",
"Este documento irá expirar em %d meses." "Este documento irá expirar em %d meses."
], ],
"Please enter the password for this paste:": "Por favor, digite a senha para essa cópia:", "Please enter the password for this document:": "Por favor, digite a senha para essa cópia:",
"Could not decrypt data (Wrong key?)": "Não foi possível decifrar os dados (Chave errada?)", "Could not decrypt data (Wrong key?)": "Não foi possível decifrar os dados (Chave errada?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Não foi possível excluir a cópia, ela não foi salva no modo de \"queime após ler\".", "Could not delete the document, it was not stored in burn after reading mode.": "Não foi possível excluir a cópia, ela não foi salva no modo de \"queime após ler\".",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "APENAS PARA SEUS OLHOS. Não feche essa janela, essa mensagem não pode ser exibida novamente.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "APENAS PARA SEUS OLHOS. Não feche essa janela, essa mensagem não pode ser exibida novamente.",
"Could not decrypt comment; Wrong key?": "Não foi possível decifrar o comentário; Chave errada?", "Could not decrypt comment; Wrong key?": "Não foi possível decifrar o comentário; Chave errada?",
"Reply": "Responder", "Reply": "Responder",
@@ -150,20 +150,12 @@
"unknown status": "Estado desconhecido", "unknown status": "Estado desconhecido",
"server error or not responding": "Servidor em erro ou não responsivo", "server error or not responding": "Servidor em erro ou não responsivo",
"Could not post comment: %s": "Não foi possível publicar o comentário: %s", "Could not post comment: %s": "Não foi possível publicar o comentário: %s",
"Sending paste…": "Enviando cópia…", "Sending document…": "Enviando cópia…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Sua cópia é <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Pressione <kbd>Ctrl</kbd>+<kbd>c</kbd> para copiar)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Sua cópia é <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Pressione <kbd>Ctrl</kbd>+<kbd>c</kbd> para copiar)</span>",
"Delete data": "Excluir dados", "Delete data": "Excluir dados",
"Could not create paste: %s": "Não foi possível criar cópia: %s", "Could not create document: %s": "Não foi possível criar cópia: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Não foi possível decifrar a cópia: chave de decriptografia ausente na URL (Você utilizou um redirecionador ou encurtador de URL que removeu parte dela?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Não foi possível decifrar a cópia: chave de decriptografia ausente na URL (Você utilizou um redirecionador ou encurtador de URL que removeu parte dela?)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Baixar anexo", "Download attachment": "Baixar anexo",
"Cloned: '%s'": "Clonado: '%s'", "Cloned: '%s'": "Clonado: '%s'",
"The cloned file '%s' was attached to this paste.": "O arquivo clonado '%s' foi anexado a essa cópia.", "The cloned file '%s' was attached to this document.": "O arquivo clonado '%s' foi anexado a essa cópia.",
"Attach a file": "Anexar um arquivo", "Attach a file": "Anexar um arquivo",
"alternatively drag & drop a file or paste an image from the clipboard": "alternativamente, arraste e solte um arquivo ou cole uma imagem da área de transferência", "alternatively drag & drop a file or paste an image from the clipboard": "alternativamente, arraste e solte um arquivo ou cole uma imagem da área de transferência",
"File too large, to display a preview. Please download the attachment.": "Arquivo muito grande para exibir uma prévia. Por favor, faça o download do anexo.", "File too large, to display a preview. Please download the attachment.": "Arquivo muito grande para exibir uma prévia. Por favor, faça o download do anexo.",
@@ -193,11 +185,11 @@
"Decrypt": "Decifrar", "Decrypt": "Decifrar",
"Enter password": "Digite a senha", "Enter password": "Digite a senha",
"Loading…": "Carregando…", "Loading…": "Carregando…",
"Decrypting paste…": "Decifrando cópia…", "Decrypting document…": "Decifrando cópia…",
"Preparing new paste…": "Preparando nova cópia…", "Preparing new document…": "Preparando nova cópia…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Caso essa mensagem nunca desapareça, por favor veja <a href=\"%s\">este FAQ para saber como resolver os problemas</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Caso essa mensagem nunca desapareça, por favor veja <a href=\"%s\">este FAQ para saber como resolver os problemas</a>.",
"+++ no paste text +++": "+++ sem texto de cópia +++", "+++ no document text +++": "+++ sem texto de cópia +++",
"Could not get paste data: %s": "Não foi possível obter dados de cópia: %s", "Could not get document data: %s": "Não foi possível obter dados de cópia: %s",
"QR code": "Código QR", "QR code": "Código QR",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Esse site usa uma conexão HTTP insegura! Use-o apenas para testes.", "This website is using an insecure HTTP connection! Please use it only for testing.": "Esse site usa uma conexão HTTP insegura! Use-o apenas para testes.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Para mais informações <a href=\"%s\">veja esse item do FAQ</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "Para mais informações <a href=\"%s\">veja esse item do FAQ</a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "Nota criptografada no %s", "Encrypted note on %s": "Nota criptografada no %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visite esse link para ver a nota. Dar a URL para qualquer um permite que eles também acessem a nota.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visite esse link para ver a nota. Dar a URL para qualquer um permite que eles também acessem a nota.",
"URL shortener may expose your decrypt key in URL.": "Encurtador de URL pode expor sua chave de descriptografia em URL.", "URL shortener may expose your decrypt key in URL.": "Encurtador de URL pode expor sua chave de descriptografia em URL.",
"Save paste": "Salvar cópia", "URL shortener is enabled by default.": "URL shortener is enabled by default.",
"Your IP is not authorized to create pastes.": "Seu IP não está autorizado a criar cópias.", "Save document": "Salvar cópia",
"Your IP is not authorized to create documents.": "Seu IP não está autorizado a criar cópias.",
"Trying to shorten a URL that isn't pointing at our instance.": "Tentando encurtar uma URL que não aponta para a nossa instância.", "Trying to shorten a URL that isn't pointing at our instance.": "Tentando encurtar uma URL que não aponta para a nossa instância.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Erro ao chamar YOURLS. Provavelmente um problema de configuração, como errado ou faltando \"apiurl\" ou \"signature\".", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Erro ao chamar YOURLS. Provavelmente um problema de configuração, como errado ou faltando \"apiurl\" ou \"signature\".",
"Error parsing YOURLS response.": "Erro ao analisar a resposta do YOURLS.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Erro ao analisar a resposta do YOURLS.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"This secret message can only be displayed once. Would you like to see it now?": "Esta mensagem secreta só pode ser exibida uma vez. Gostaria de vê-la agora?", "This secret message can only be displayed once. Would you like to see it now?": "Esta mensagem secreta só pode ser exibida uma vez. Gostaria de vê-la agora?",
"Yes, see it": "Sim, veja", "Yes, see it": "Sim, veja",
"Dark Mode": "Modo Noturno", "Dark Mode": "Modo Noturno",
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.", "Error compressing document, due to missing WebAssembly support.": "Error compressing document, due to missing WebAssembly support.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.",
"Start over": "Start over", "Start over": "Start over",
"Paste copied to clipboard": "Paste copied to clipboard", "Document copied to clipboard": "Document copied to clipboard",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Copy link", "Copy link": "Copy link",
"Link copied to clipboard": "Link copied to clipboard", "Link copied to clipboard": "Link copied to clipboard",
"Paste text": "Paste text", "Document text": "Document text",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)",
"Show password": "Show password",
"Hide password": "Hide password",
"Theme": "Theme" "Theme": "Theme"
} }
+32 -36
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s este un pastebin online, minimalist și cu sursă deschisă unde serverul are zero acces la datele introduse. Datele sunt criptate/decriptate %sîn browser%s folosind AES cu 256 de biți.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s este un pastebin online, minimalist și cu sursă deschisă unde serverul are zero acces la datele introduse. Datele sunt criptate/decriptate %sîn browser%s folosind AES cu 256 de biți.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Mai multe informații pe <a href=\"https://privatebin.info/\">pagina proiectului</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Mai multe informații pe <a href=\"https://privatebin.info/\">pagina proiectului</a>.",
"Because ignorance is bliss": "Ignoranța este o binecuvântare", "Because ignorance is bliss": "Ignoranța este o binecuvântare",
"Paste does not exist, has expired or has been deleted.": "Paste-ul nu există, a expirat sau a fost șters.", "Document does not exist, has expired or has been deleted.": "Document-ul nu există, a expirat sau a fost șters.",
"%s requires php %s or above to work. Sorry.": "%s necesită php %s sau mai nou pentru a funcționa. Scuze.", "%s requires php %s or above to work. Sorry.": "%s necesită php %s sau mai nou pentru a funcționa. Scuze.",
"%s requires configuration section [%s] to be present in configuration file.": "%s necesită ca secțiunea de configurare [%s] să fie prezentă în fișierul de configurare.", "%s requires configuration section [%s] to be present in configuration file.": "%s necesită ca secțiunea de configurare [%s] să fie prezentă în fișierul de configurare.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Vă rugăm să așteptați %d de secunde între fiecare postare", "Vă rugăm să așteptați %d de secunde între fiecare postare",
"Vă rugăm să așteptați %d de secunde între fiecare postare" "Vă rugăm să așteptați %d de secunde între fiecare postare"
], ],
"Paste is limited to %s of encrypted data.": "Paste-ul este limitat la %s de date criptate.", "Document is limited to %s of encrypted data.": "Document-ul este limitat la %s de date criptate.",
"Invalid data.": "Date invalide.", "Invalid data.": "Date invalide.",
"You are unlucky. Try again.": "Ați avut ghinion. Încercați din nou.", "You are unlucky. Try again.": "Ați avut ghinion. Încercați din nou.",
"Error saving comment. Sorry.": "Eroare la salvarea comentariului. Ne pare rău.", "Error saving comment. Sorry.": "Eroare la salvarea comentariului. Ne pare rău.",
"Error saving paste. Sorry.": "Eroare la salvarea paste-ului. Ne pare rău.", "Error saving document. Sorry.": "Eroare la salvarea document-ului. Ne pare rău.",
"Invalid paste ID.": "ID paste invalid.", "Invalid document ID.": "ID document invalid.",
"Paste is not of burn-after-reading type.": "Paste-ul nu se șterge după citire.", "Document is not of burn-after-reading type.": "Document-ul nu se șterge după citire.",
"Wrong deletion token. Paste was not deleted.": "Token de ștergere incorect. Paste-ul nu a fost șters.", "Wrong deletion token. Document was not deleted.": "Token de ștergere incorect. Document-ul nu a fost șters.",
"Paste was properly deleted.": "Paste-ul a fost șters cu succes.", "Document was properly deleted.": "Document-ul a fost șters cu succes.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript este necesar pentru ca %s să funcționeze. Ne cerem scuze pentru neplăceri.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript este necesar pentru ca %s să funcționeze. Ne cerem scuze pentru neplăceri.",
"%s requires a modern browser to work.": "%s necesită un browser modern pentru a funcționa.", "%s requires a modern browser to work.": "%s necesită un browser modern pentru a funcționa.",
"New": "Nou", "New": "Nou",
@@ -133,9 +133,9 @@
"Acest document va expira în %d de luni.", "Acest document va expira în %d de luni.",
"Acest document va expira în %d de luni." "Acest document va expira în %d de luni."
], ],
"Please enter the password for this paste:": "Va rugăm să introduceți parola pentru acest paste:", "Please enter the password for this document:": "Va rugăm să introduceți parola pentru acest document:",
"Could not decrypt data (Wrong key?)": "Nu s-au putut decripta datele (Cheie gresită?)", "Could not decrypt data (Wrong key?)": "Nu s-au putut decripta datele (Cheie gresită?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Nu s-a putut șterge paste-ul, nu a fost stocat în modul de ștergere după citire.", "Could not delete the document, it was not stored in burn after reading mode.": "Nu s-a putut șterge document-ul, nu a fost stocat în modul de ștergere după citire.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "NUMAI PENTRU OCHII DVS. Nu închideți această fereastră, acest mesaj nu poate fi afișat din nou.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "NUMAI PENTRU OCHII DVS. Nu închideți această fereastră, acest mesaj nu poate fi afișat din nou.",
"Could not decrypt comment; Wrong key?": "Nu s-a putut decripta comentariul; Cheie greșită?", "Could not decrypt comment; Wrong key?": "Nu s-a putut decripta comentariul; Cheie greșită?",
"Reply": "Răspundeți", "Reply": "Răspundeți",
@@ -150,20 +150,12 @@
"unknown status": "stare necunoscută", "unknown status": "stare necunoscută",
"server error or not responding": "eroare de server sau nu răspunde", "server error or not responding": "eroare de server sau nu răspunde",
"Could not post comment: %s": "Nu s-a putut posta comentariul: %s", "Could not post comment: %s": "Nu s-a putut posta comentariul: %s",
"Sending paste…": "Se trimite paste-ul…", "Sending document…": "Se trimite document-ul…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Paste-ul dvs. este <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Apăsați <kbd>Ctrl</kbd>+<kbd>c</kbd> pentru a copia)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Document-ul dvs. este <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Apăsați <kbd>Ctrl</kbd>+<kbd>c</kbd> pentru a copia)</span>",
"Delete data": "Ștergeți datele", "Delete data": "Ștergeți datele",
"Could not create paste: %s": "Nu s-a putut crea paste-ul: %s", "Could not create document: %s": "Nu s-a putut crea document-ul: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Nu s-a putut decripta paste-ul: Cheia de decriptare lipsește din URL (Ați folosit un redirector sau un scurtător de URL care a tăiat o parte din URL?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Nu s-a putut decripta document-ul: Cheia de decriptare lipsește din URL (Ați folosit un redirector sau un scurtător de URL care a tăiat o parte din URL?)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Descărcați fișierul atașat", "Download attachment": "Descărcați fișierul atașat",
"Cloned: '%s'": "S-a clonat: '%s'", "Cloned: '%s'": "S-a clonat: '%s'",
"The cloned file '%s' was attached to this paste.": "Fișierul clonat '%s' a fost atașat la acest paste.", "The cloned file '%s' was attached to this document.": "Fișierul clonat '%s' a fost atașat la acest document.",
"Attach a file": "Atașați un fișier", "Attach a file": "Atașați un fișier",
"alternatively drag & drop a file or paste an image from the clipboard": "alternativ, trageți și plasați un fișier sau lipiți o imagine din clipboard", "alternatively drag & drop a file or paste an image from the clipboard": "alternativ, trageți și plasați un fișier sau lipiți o imagine din clipboard",
"File too large, to display a preview. Please download the attachment.": "Fișierul este prea mare pentru a afișa o previzualizare. Vă rugăm să descărcaţi fișierul.", "File too large, to display a preview. Please download the attachment.": "Fișierul este prea mare pentru a afișa o previzualizare. Vă rugăm să descărcaţi fișierul.",
@@ -193,11 +185,11 @@
"Decrypt": "Decriptare", "Decrypt": "Decriptare",
"Enter password": "Introduceţi parola", "Enter password": "Introduceţi parola",
"Loading…": "Se încarcă…", "Loading…": "Se încarcă…",
"Decrypting paste…": "Se decriptează paste-ul…", "Decrypting document…": "Se decriptează document-ul…",
"Preparing new paste…": "Se pregătește un paste nou…", "Preparing new document…": "Se pregătește un document nou…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "În cazul în care acest mesaj nu dispare niciodată, vă rugăm să aruncaţi o privire la <a href=\"%s\">acest FAQ pentru informații de depanare</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "În cazul în care acest mesaj nu dispare niciodată, vă rugăm să aruncaţi o privire la <a href=\"%s\">acest FAQ pentru informații de depanare</a>.",
"+++ no paste text +++": "+++ fără text +++", "+++ no document text +++": "+++ fără text +++",
"Could not get paste data: %s": "Nu s-a putut obține datele paste-ului: %s", "Could not get document data: %s": "Nu s-a putut obține datele document-ului: %s",
"QR code": "Cod QR", "QR code": "Cod QR",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Acest website folosește o conexiune HTTP nesigură! Vă rugăm să îl folosiți doar pentru teste.", "This website is using an insecure HTTP connection! Please use it only for testing.": "Acest website folosește o conexiune HTTP nesigură! Vă rugăm să îl folosiți doar pentru teste.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Pentru mai multe informații <a href=\"%s\">a se vedea secțiunea FAQ</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "Pentru mai multe informații <a href=\"%s\">a se vedea secțiunea FAQ</a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "Notă criptată pe %s", "Encrypted note on %s": "Notă criptată pe %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Accesați acest link pentru a vedea nota. Nota poate fi accesată de către oricine care are acest URL.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Accesați acest link pentru a vedea nota. Nota poate fi accesată de către oricine care are acest URL.",
"URL shortener may expose your decrypt key in URL.": "Scurtătorul de URL ar putea să vă expună cheia de decriptare din URL.", "URL shortener may expose your decrypt key in URL.": "Scurtătorul de URL ar putea să vă expună cheia de decriptare din URL.",
"Save paste": "Salvați paste-ul", "URL shortener is enabled by default.": "URL shortener is enabled by default.",
"Your IP is not authorized to create pastes.": "Adresa dvs. IP nu este autorizată să creeze paste-uri.", "Save document": "Salvați document-ul",
"Your IP is not authorized to create documents.": "Adresa dvs. IP nu este autorizată să creeze document-uri.",
"Trying to shorten a URL that isn't pointing at our instance.": "Încercarea de a scurta un URL care nu direcționează spre instanța noastră.", "Trying to shorten a URL that isn't pointing at our instance.": "Încercarea de a scurta un URL care nu direcționează spre instanța noastră.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Eroare la apelarea YOURLS. Probabil o problemă de configurare, cum ar fi \"apiurl\" sau \"signature\" greșite sau lipsă.", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Eroare la apelarea YOURLS. Probabil o problemă de configurare, cum ar fi \"apiurl\" sau \"signature\" greșite sau lipsă.",
"Error parsing YOURLS response.": "Eroare la analizarea răspunsului YOURLS.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Eroare la analizarea răspunsului YOURLS.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"This secret message can only be displayed once. Would you like to see it now?": "Acest mesaj secret poate fi afișat o singură dată. Doriți să îl vedeți acum?", "This secret message can only be displayed once. Would you like to see it now?": "Acest mesaj secret poate fi afișat o singură dată. Doriți să îl vedeți acum?",
"Yes, see it": "Da, vezi", "Yes, see it": "Da, vezi",
"Dark Mode": "Mod întunecat", "Dark Mode": "Mod întunecat",
"Error compressing paste, due to missing WebAssembly support.": "Eroare la compresia paste-ului din cauza incompatibilității cu WebAssembly.", "Error compressing document, due to missing WebAssembly support.": "Eroare la compresia document-ului din cauza incompatibilității cu WebAssembly.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Eroare la deschiderea paste-ului, browserul dvs. nu acceptă WebAssembly. Vă rugăm să utilizați un alt browser pentru a vedea acest paste.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Eroare la deschiderea document-ului, browserul dvs. nu acceptă WebAssembly. Vă rugăm să utilizați un alt browser pentru a vedea acest document.",
"Start over": "Start over", "Start over": "Start over",
"Paste copied to clipboard": "Paste copied to clipboard", "Document copied to clipboard": "Document copied to clipboard",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Copy link", "Copy link": "Copy link",
"Link copied to clipboard": "Link copied to clipboard", "Link copied to clipboard": "Link copied to clipboard",
"Paste text": "Paste text", "Document text": "Document text",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)",
"Show password": "Show password",
"Hide password": "Hide password",
"Theme": "Theme" "Theme": "Theme"
} }
+32 -36
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s это минималистичный Open Source проект для создания заметок, где сервер не знает ничего о сохраняемых данных. Данные шифруются/расшифровываются %sв браузере%s с использованием 256 битного шифрования AES.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s это минималистичный Open Source проект для создания заметок, где сервер не знает ничего о сохраняемых данных. Данные шифруются/расшифровываются %sв браузере%s с использованием 256 битного шифрования AES.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Подробнее можно узнать на <a href=\"https://privatebin.info/\">сайте проекта</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Подробнее можно узнать на <a href=\"https://privatebin.info/\">сайте проекта</a>.",
"Because ignorance is bliss": "Потому что неведение - благо", "Because ignorance is bliss": "Потому что неведение - благо",
"Paste does not exist, has expired or has been deleted.": "Запись не существует, просрочена или была удалена.", "Document does not exist, has expired or has been deleted.": "Запись не существует, просрочена или была удалена.",
"%s requires php %s or above to work. Sorry.": "Для работы %s требуется php %s или выше. Извините.", "%s requires php %s or above to work. Sorry.": "Для работы %s требуется php %s или выше. Извините.",
"%s requires configuration section [%s] to be present in configuration file.": "%s необходимо наличие секции [%s] в конфигурационном файле.", "%s requires configuration section [%s] to be present in configuration file.": "%s необходимо наличие секции [%s] в конфигурационном файле.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Пожалуйста, ожидайте %d секунд между каждыми записями.", "Пожалуйста, ожидайте %d секунд между каждыми записями.",
"Пожалуйста, ожидайте %d секунд между каждыми записями." "Пожалуйста, ожидайте %d секунд между каждыми записями."
], ],
"Paste is limited to %s of encrypted data.": "Размер записи ограничен %s зашифрованных данных.", "Document is limited to %s of encrypted data.": "Размер записи ограничен %s зашифрованных данных.",
"Invalid data.": "Неверные данные.", "Invalid data.": "Неверные данные.",
"You are unlucky. Try again.": "Вам не повезло. Попробуйте еще раз.", "You are unlucky. Try again.": "Вам не повезло. Попробуйте еще раз.",
"Error saving comment. Sorry.": "Ошибка при сохранении комментария. Извините.", "Error saving comment. Sorry.": "Ошибка при сохранении комментария. Извините.",
"Error saving paste. Sorry.": "Ошибка при сохранении записи. Извините.", "Error saving document. Sorry.": "Ошибка при сохранении записи. Извините.",
"Invalid paste ID.": "Неверный ID записи.", "Invalid document ID.": "Неверный ID записи.",
"Paste is not of burn-after-reading type.": "Тип записи не \"Удалить после прочтения\".", "Document is not of burn-after-reading type.": "Тип записи не \"Удалить после прочтения\".",
"Wrong deletion token. Paste was not deleted.": "Неверный ключ удаления записи. Запись не удалена.", "Wrong deletion token. Document was not deleted.": "Неверный ключ удаления записи. Запись не удалена.",
"Paste was properly deleted.": "Запись была успешно удалена.", "Document was properly deleted.": "Запись была успешно удалена.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Для работы %s требуется включенный JavaScript. Приносим извинения за неудобства.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "Для работы %s требуется включенный JavaScript. Приносим извинения за неудобства.",
"%s requires a modern browser to work.": "Для работы %s требуется более современный браузер.", "%s requires a modern browser to work.": "Для работы %s требуется более современный браузер.",
"New": "Новая запись", "New": "Новая запись",
@@ -133,9 +133,9 @@
"Документ будет удален через %d месяцев.", "Документ будет удален через %d месяцев.",
"Документ будет удален через %d месяцев." "Документ будет удален через %d месяцев."
], ],
"Please enter the password for this paste:": "Пожалуйста, введите пароль от записи:", "Please enter the password for this document:": "Пожалуйста, введите пароль от записи:",
"Could not decrypt data (Wrong key?)": "Невозможно расшифровать данные (Неверный ключ?)", "Could not decrypt data (Wrong key?)": "Невозможно расшифровать данные (Неверный ключ?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Невозможно удалить запись, она не была сохранена в режиме удаления после прочтения.", "Could not delete the document, it was not stored in burn after reading mode.": "Невозможно удалить запись, она не была сохранена в режиме удаления после прочтения.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "ТОЛЬКО ДЛЯ ВАШИХ ГЛАЗ. Не закрывайте это окно, это сообщение не может быть показано снова.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "ТОЛЬКО ДЛЯ ВАШИХ ГЛАЗ. Не закрывайте это окно, это сообщение не может быть показано снова.",
"Could not decrypt comment; Wrong key?": "Невозможно расшифровать комментарий; Неверный ключ?", "Could not decrypt comment; Wrong key?": "Невозможно расшифровать комментарий; Неверный ключ?",
"Reply": "Ответить", "Reply": "Ответить",
@@ -150,20 +150,12 @@
"unknown status": "неизвестная причина", "unknown status": "неизвестная причина",
"server error or not responding": "ошибка сервера или нет ответа", "server error or not responding": "ошибка сервера или нет ответа",
"Could not post comment: %s": "Не удалось опубликовать комментарий: %s", "Could not post comment: %s": "Не удалось опубликовать комментарий: %s",
"Sending paste…": "Отправка записи…", "Sending document…": "Отправка записи…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Ссылка на запись <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Нажмите <kbd>Ctrl</kbd>+<kbd>c</kbd>, чтобы скопировать ссылку)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Ссылка на запись <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Нажмите <kbd>Ctrl</kbd>+<kbd>c</kbd>, чтобы скопировать ссылку)</span>",
"Delete data": "Удалить запись", "Delete data": "Удалить запись",
"Could not create paste: %s": "Не удалось опубликовать запись: %s", "Could not create document: %s": "Не удалось опубликовать запись: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Невозможно расшифровать запись: Ключ расшифровки отсутствует в ссылке (Может быть, вы используете сокращатель ссылок, который удаляет часть ссылки?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Невозможно расшифровать запись: Ключ расшифровки отсутствует в ссылке (Может быть, вы используете сокращатель ссылок, который удаляет часть ссылки?)",
"B": "байт", "B": "байт",
"KiB": "Кбайт",
"MiB": "Мбайт",
"GiB": "Гбайт",
"TiB": "Тбайт",
"PiB": "Пбайт",
"EiB": "Эбайт",
"ZiB": "Збайт",
"YiB": "Йбайт",
"kB": "кбайт", "kB": "кбайт",
"MB": "Мбайт", "MB": "Мбайт",
"GB": "Гбайт", "GB": "Гбайт",
@@ -178,7 +170,7 @@
"Markdown": "Язык разметки", "Markdown": "Язык разметки",
"Download attachment": "Скачать прикрепленный файл", "Download attachment": "Скачать прикрепленный файл",
"Cloned: '%s'": "Дублировано: '%s'", "Cloned: '%s'": "Дублировано: '%s'",
"The cloned file '%s' was attached to this paste.": "Дубликат файла '%s' был прикреплен к этой записи.", "The cloned file '%s' was attached to this document.": "Дубликат файла '%s' был прикреплен к этой записи.",
"Attach a file": "Прикрепить файл", "Attach a file": "Прикрепить файл",
"alternatively drag & drop a file or paste an image from the clipboard": "так же можно перенести файл в окно браузера или вставить изображение из буфера", "alternatively drag & drop a file or paste an image from the clipboard": "так же можно перенести файл в окно браузера или вставить изображение из буфера",
"File too large, to display a preview. Please download the attachment.": "Файл слишком большой для отображения предпросмотра. Пожалуйста, скачайте прикрепленный файл.", "File too large, to display a preview. Please download the attachment.": "Файл слишком большой для отображения предпросмотра. Пожалуйста, скачайте прикрепленный файл.",
@@ -193,11 +185,11 @@
"Decrypt": "Расшифровать", "Decrypt": "Расшифровать",
"Enter password": "Введите пароль", "Enter password": "Введите пароль",
"Loading…": "Загрузка…", "Loading…": "Загрузка…",
"Decrypting paste…": "Расшифровка записи…", "Decrypting document…": "Расшифровка записи…",
"Preparing new paste…": "Подготовка новой записи…", "Preparing new document…": "Подготовка новой записи…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Если данное сообщение не исчезает длительное время, посмотрите <a href=\"%s\">этот FAQ с информацией о возможном решении проблемы (на английском)</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Если данное сообщение не исчезает длительное время, посмотрите <a href=\"%s\">этот FAQ с информацией о возможном решении проблемы (на английском)</a>.",
"+++ no paste text +++": "+++ в записи нет текста +++", "+++ no document text +++": "+++ в записи нет текста +++",
"Could not get paste data: %s": "Не удалось получить данные записи: %s", "Could not get document data: %s": "Не удалось получить данные записи: %s",
"QR code": "QR код", "QR code": "QR код",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Данный сайт использует незащищенное HTTP подключение! Пожалуйста используйте его только для тестирования.", "This website is using an insecure HTTP connection! Please use it only for testing.": "Данный сайт использует незащищенное HTTP подключение! Пожалуйста используйте его только для тестирования.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Для продробностей <a href=\"%s\">прочтите информацию в FAQ</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "Для продробностей <a href=\"%s\">прочтите информацию в FAQ</a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "Зашифрованная запись на %s", "Encrypted note on %s": "Зашифрованная запись на %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Посетите эту ссылку чтобы просмотреть запись. Передача ссылки кому либо позволит им получить доступ к записи тоже.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Посетите эту ссылку чтобы просмотреть запись. Передача ссылки кому либо позволит им получить доступ к записи тоже.",
"URL shortener may expose your decrypt key in URL.": "Сервис сокращения ссылок может получить ваш ключ расшифровки из ссылки.", "URL shortener may expose your decrypt key in URL.": "Сервис сокращения ссылок может получить ваш ключ расшифровки из ссылки.",
"Save paste": "Сохранить запись", "URL shortener is enabled by default.": "URL shortener is enabled by default.",
"Your IP is not authorized to create pastes.": "Вашему IP адресу не разрешено создавать записи.", "Save document": "Сохранить запись",
"Your IP is not authorized to create documents.": "Вашему IP адресу не разрешено создавать записи.",
"Trying to shorten a URL that isn't pointing at our instance.": "Попытка сократить URL, который указывает не на наш сервер.", "Trying to shorten a URL that isn't pointing at our instance.": "Попытка сократить URL, который указывает не на наш сервер.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Ошибка обращения к YOURLS. Возможно в конфигурации допущена ошибка, например неверный или отсутствующий параметр \"apiurl\" или \"signature\".", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Ошибка обращения к YOURLS. Возможно в конфигурации допущена ошибка, например неверный или отсутствующий параметр \"apiurl\" или \"signature\".",
"Error parsing YOURLS response.": "Ошибка разбора ответа от YOURLS.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Ошибка разбора ответа от YOURLS.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"This secret message can only be displayed once. Would you like to see it now?": "Записи, удаляемые после прочтения, могут быть отображены после загрузки только один раз. Вы хотите открыть её сейчас?", "This secret message can only be displayed once. Would you like to see it now?": "Записи, удаляемые после прочтения, могут быть отображены после загрузки только один раз. Вы хотите открыть её сейчас?",
"Yes, see it": "Да, загрузить", "Yes, see it": "Да, загрузить",
"Dark Mode": "Тёмная", "Dark Mode": "Тёмная",
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.", "Error compressing document, due to missing WebAssembly support.": "Error compressing document, due to missing WebAssembly support.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.",
"Start over": "Start over", "Start over": "Start over",
"Paste copied to clipboard": "Запись скопирована в буфер обмена", "Document copied to clipboard": "Запись скопирована в буфер обмена",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "Чтобы скопировать запись нажмите на кнопку копирования или используйте комбинацию клавиш <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "Чтобы скопировать запись нажмите на кнопку копирования или используйте комбинацию клавиш <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Скопировать ссылку", "Copy link": "Скопировать ссылку",
"Link copied to clipboard": "Ссылка скопирована в буфер обмена", "Link copied to clipboard": "Ссылка скопирована в буфер обмена",
"Paste text": "Paste text", "Document text": "Document text",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)",
"Show password": "Show password",
"Hide password": "Hide password",
"Theme": "Тема" "Theme": "Тема"
} }
+36 -40
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s je minimalistický, open source online pastebin, kde server nemá žiadne znalosti o vložených údajoch. Údaje sú šifrované/dešifrované %sv prehliadači%s pomocou 256-bitového AES.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s je minimalistický, open source online pastebin, kde server nemá žiadne znalosti o vložených údajoch. Údaje sú šifrované/dešifrované %sv prehliadači%s pomocou 256-bitového AES.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Viac informácií na <a href=\"https://privatebin.info/\">stránke projektu</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Viac informácií na <a href=\"https://privatebin.info/\">stránke projektu</a>.",
"Because ignorance is bliss": "Pretože nevedomosť je sladká", "Because ignorance is bliss": "Pretože nevedomosť je sladká",
"Paste does not exist, has expired or has been deleted.": "Vložený text neexistuje, jeho platnosť vypršala alebo bol vymazaný.", "Document does not exist, has expired or has been deleted.": "Vložený text neexistuje, jeho platnosť vypršala alebo bol vymazaný.",
"%s requires php %s or above to work. Sorry.": "%s vyžaduje php %s alebo vyššie. Prepáčte.", "%s requires php %s or above to work. Sorry.": "%s vyžaduje php %s alebo vyššie. Prepáčte.",
"%s requires configuration section [%s] to be present in configuration file.": "%s vyžaduje, aby bola v konfiguračnom súbore prítomná sekcia [%s].", "%s requires configuration section [%s] to be present in configuration file.": "%s vyžaduje, aby bola v konfiguračnom súbore prítomná sekcia [%s].",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Počet sekúnd do ďalšieho príspevku: %d", "Počet sekúnd do ďalšieho príspevku: %d",
"Počet sekúnd do ďalšieho príspevku: %d" "Počet sekúnd do ďalšieho príspevku: %d"
], ],
"Paste is limited to %s of encrypted data.": "Príspevok je obmedzený na %s zašifrovaných údajov.", "Document is limited to %s of encrypted data.": "Príspevok je obmedzený na %s zašifrovaných údajov.",
"Invalid data.": "Neplatné údaje.", "Invalid data.": "Neplatné údaje.",
"You are unlucky. Try again.": "Ľutujem. Skúste to znova.", "You are unlucky. Try again.": "Ľutujem. Skúste to znova.",
"Error saving comment. Sorry.": "Pri ukladaní komentára sa vyskytla chyba.", "Error saving comment. Sorry.": "Pri ukladaní komentára sa vyskytla chyba.",
"Error saving paste. Sorry.": "Pri ukladaní príspevku sa vyskytla chyba.", "Error saving document. Sorry.": "Pri ukladaní príspevku sa vyskytla chyba.",
"Invalid paste ID.": "Chybne vložené ID.", "Invalid document ID.": "Chybne vložené ID.",
"Paste is not of burn-after-reading type.": "Príspevok nieje nastavený na zmazanie po prečítaní.", "Document is not of burn-after-reading type.": "Príspevok nieje nastavený na zmazanie po prečítaní.",
"Wrong deletion token. Paste was not deleted.": "Nesprávny token odstránenia. Príspevok nebol odstránený.", "Wrong deletion token. Document was not deleted.": "Nesprávny token odstránenia. Príspevok nebol odstránený.",
"Paste was properly deleted.": "Príspevok bol správne vymazaný.", "Document was properly deleted.": "Príspevok bol správne vymazaný.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Na fungovanie %s je potrebný JavaScript. Ospravedlňujeme sa za nepríjemnosti.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "Na fungovanie %s je potrebný JavaScript. Ospravedlňujeme sa za nepríjemnosti.",
"%s requires a modern browser to work.": "%s vyžaduje na fungovanie moderný prehliadač.", "%s requires a modern browser to work.": "%s vyžaduje na fungovanie moderný prehliadač.",
"New": "Nový", "New": "Nový",
@@ -133,9 +133,9 @@
"Platnosť tohto dokumentu vyprší o %d mesiacov.", "Platnosť tohto dokumentu vyprší o %d mesiacov.",
"Platnosť tohto dokumentu vyprší o %d mesiacov." "Platnosť tohto dokumentu vyprší o %d mesiacov."
], ],
"Please enter the password for this paste:": "Zadajte prosím heslo:", "Please enter the password for this document:": "Zadajte prosím heslo:",
"Could not decrypt data (Wrong key?)": "Nepodarilo sa dešifrovať údaje (nesprávny kľúč?)", "Could not decrypt data (Wrong key?)": "Nepodarilo sa dešifrovať údaje (nesprávny kľúč?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Nepodarilo sa odstrániť príspevok, nebol uložený v režime zmazania po prečítaní.", "Could not delete the document, it was not stored in burn after reading mode.": "Nepodarilo sa odstrániť príspevok, nebol uložený v režime zmazania po prečítaní.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "IBA PRE VAŠE OČI. Toto okno nezatvárajte, táto správa sa nedá znova zobraziť.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "IBA PRE VAŠE OČI. Toto okno nezatvárajte, táto správa sa nedá znova zobraziť.",
"Could not decrypt comment; Wrong key?": "Nepodarilo sa dešifrovať komentár. Nesprávny kľúč?", "Could not decrypt comment; Wrong key?": "Nepodarilo sa dešifrovať komentár. Nesprávny kľúč?",
"Reply": "Odpovedať", "Reply": "Odpovedať",
@@ -150,20 +150,12 @@
"unknown status": "neznámy stav", "unknown status": "neznámy stav",
"server error or not responding": "chyba servera alebo server neodpovedá", "server error or not responding": "chyba servera alebo server neodpovedá",
"Could not post comment: %s": "Nepodarilo sa pridať komentár: %s", "Could not post comment: %s": "Nepodarilo sa pridať komentár: %s",
"Sending paste…": "Odosiela sa príspevok…", "Sending document…": "Odosiela sa príspevok…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Váš príspevok je <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(skopírujte stlačením <kbd>Ctrl</kbd>+<kbd>c</kbd>)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Váš príspevok je <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(skopírujte stlačením <kbd>Ctrl</kbd>+<kbd>c</kbd>)</span>",
"Delete data": "Odstrániť dáta", "Delete data": "Odstrániť dáta",
"Could not create paste: %s": "Nepodarilo sa vytvoriť príspevok: %s", "Could not create document: %s": "Nepodarilo sa vytvoriť príspevok: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Nie je možné dešifrovať príspevok: V URL adrese chýba dešifrovací kľúč (Použili ste presmerovač alebo skracovač adresy, ktorý odstráni časť adresy URL?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Nie je možné dešifrovať príspevok: V URL adrese chýba dešifrovací kľúč (Použili ste presmerovač alebo skracovač adresy, ktorý odstráni časť adresy URL?)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Stiahnuť prílohu", "Download attachment": "Stiahnuť prílohu",
"Cloned: '%s'": "Naklonované: '%s'", "Cloned: '%s'": "Naklonované: '%s'",
"The cloned file '%s' was attached to this paste.": "K tomuto príspevku bol pripojený klonovaný súbor '%s'.", "The cloned file '%s' was attached to this document.": "K tomuto príspevku bol pripojený klonovaný súbor '%s'.",
"Attach a file": "Priložiť súbor", "Attach a file": "Priložiť súbor",
"alternatively drag & drop a file or paste an image from the clipboard": "prípadne presuňte súbor myšou alebo vložte obrázok zo schránky", "alternatively drag & drop a file or paste an image from the clipboard": "prípadne presuňte súbor myšou alebo vložte obrázok zo schránky",
"File too large, to display a preview. Please download the attachment.": "Súbor je príliš veľký na zobrazenie ukážky. Stiahnite si prosím prílohu.", "File too large, to display a preview. Please download the attachment.": "Súbor je príliš veľký na zobrazenie ukážky. Stiahnite si prosím prílohu.",
@@ -193,11 +185,11 @@
"Decrypt": "Dešifrovať", "Decrypt": "Dešifrovať",
"Enter password": "Zadajte heslo", "Enter password": "Zadajte heslo",
"Loading…": "Načítava sa…", "Loading…": "Načítava sa…",
"Decrypting paste…": "Dešifrovanie príspevku…", "Decrypting document…": "Dešifrovanie príspevku…",
"Preparing new paste…": "Príprava nového príspevku…", "Preparing new document…": "Príprava nového príspevku…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "V prípade, že táto správa nezmizne, pozrite si <a href=\"%s\">tieto často kladené otázky, kde nájdete informácie na riešenie problémov</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "V prípade, že táto správa nezmizne, pozrite si <a href=\"%s\">tieto často kladené otázky, kde nájdete informácie na riešenie problémov</a>.",
"+++ no paste text +++": "+++ žiadny vložený text +++", "+++ no document text +++": "+++ žiadny vložený text +++",
"Could not get paste data: %s": "Nepodarilo sa načítať údaje príspevku: %s", "Could not get document data: %s": "Nepodarilo sa načítať údaje príspevku: %s",
"QR code": "QR kód", "QR code": "QR kód",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Táto webová stránka používa nezabezpečené pripojenie HTTP! Používajte ju len na testovanie.", "This website is using an insecure HTTP connection! Please use it only for testing.": "Táto webová stránka používa nezabezpečené pripojenie HTTP! Používajte ju len na testovanie.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Pre viac informácií si pozrite <a href=\"%s\">tento záznam FAQ</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "Pre viac informácií si pozrite <a href=\"%s\">tento záznam FAQ</a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "Zašifrovaná poznámka na %s", "Encrypted note on %s": "Zašifrovaná poznámka na %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Ak chcete zobraziť poznámku, navštívte tento odkaz. Poskytnutie adresy URL komukoľvek im umožní prístup aj k poznámke.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Ak chcete zobraziť poznámku, navštívte tento odkaz. Poskytnutie adresy URL komukoľvek im umožní prístup aj k poznámke.",
"URL shortener may expose your decrypt key in URL.": "Skracovač adries URL môže odhaliť váš dešifrovací kľúč v adrese URL.", "URL shortener may expose your decrypt key in URL.": "Skracovač adries URL môže odhaliť váš dešifrovací kľúč v adrese URL.",
"Save paste": "Uložiť príspevok", "URL shortener is enabled by default.": "URL shortener is enabled by default.",
"Your IP is not authorized to create pastes.": "Vaša IP adresa nie je oprávnená vytvárať príspevky.", "Save document": "Uložiť príspevok",
"Your IP is not authorized to create documents.": "Vaša IP adresa nie je oprávnená vytvárať príspevky.",
"Trying to shorten a URL that isn't pointing at our instance.": "Pokúšate sa skrátiť adresu URL, ktorá neukazuje na túto inštanciu.", "Trying to shorten a URL that isn't pointing at our instance.": "Pokúšate sa skrátiť adresu URL, ktorá neukazuje na túto inštanciu.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.",
"Error parsing YOURLS response.": "Error parsing YOURLS response.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?", "This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
"Yes, see it": "Yes, see it", "Yes, see it": "Áno, zobraziť",
"Dark Mode": "Tmavý Režim", "Dark Mode": "Tmavý Režim",
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.", "Error compressing document, due to missing WebAssembly support.": "Error compressing document, due to missing WebAssembly support.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.",
"Start over": "Start over", "Start over": "Začať odznova",
"Paste copied to clipboard": "Paste copied to clipboard", "Document copied to clipboard": "Kópia vložená do schránky",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Copy link", "Copy link": "Kopírovať odkaz",
"Link copied to clipboard": "Link copied to clipboard", "Link copied to clipboard": "Odkaz vložený do schránky",
"Paste text": "Paste text", "Document text": "Document text",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)",
"Show password": "Show password",
"Hide password": "Hide password",
"Theme": "Theme" "Theme": "Theme"
} }
+32 -36
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s je minimalističen, odprtokodni spletni 'pastebin', kjer server ne ve ničesar o prilepljenih podatkih. Podatki so zakodirani/odkodirani %sv brskalniku%s z uporabo 256 bitnega AES.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s je minimalističen, odprtokodni spletni 'pastebin', kjer server ne ve ničesar o prilepljenih podatkih. Podatki so zakodirani/odkodirani %sv brskalniku%s z uporabo 256 bitnega AES.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Več informacij na <a href=\"https://privatebin.info/\">spletni strani projekta.</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Več informacij na <a href=\"https://privatebin.info/\">spletni strani projekta.</a>.",
"Because ignorance is bliss": "Ker kar ne veš ne boli.", "Because ignorance is bliss": "Ker kar ne veš ne boli.",
"Paste does not exist, has expired or has been deleted.": "Prilepek ne obstaja, mu je potekla življenjska doba, ali pa je izbrisan.", "Document does not exist, has expired or has been deleted.": "Prilepek ne obstaja, mu je potekla življenjska doba, ali pa je izbrisan.",
"%s requires php %s or above to work. Sorry.": "Oprosti, %s za delovanje potrebuje vsaj php %s.", "%s requires php %s or above to work. Sorry.": "Oprosti, %s za delovanje potrebuje vsaj php %s.",
"%s requires configuration section [%s] to be present in configuration file.": "%s potrebuje sekcijo konfiguracij [%s] v konfiguracijski datoteki.", "%s requires configuration section [%s] to be present in configuration file.": "%s potrebuje sekcijo konfiguracij [%s] v konfiguracijski datoteki.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Prosim počakaj vsaj %d sekund pred vsako naslednjo objavo.", "Prosim počakaj vsaj %d sekund pred vsako naslednjo objavo.",
"Prosim počakaj vsaj %d sekund pred vsako naslednjo objavo." "Prosim počakaj vsaj %d sekund pred vsako naslednjo objavo."
], ],
"Paste is limited to %s of encrypted data.": "Velikost prilepka je omejena na %s zakodiranih podatkov.", "Document is limited to %s of encrypted data.": "Velikost prilepka je omejena na %s zakodiranih podatkov.",
"Invalid data.": "Neveljavni podatki.", "Invalid data.": "Neveljavni podatki.",
"You are unlucky. Try again.": "Nimaš sreče, poskusi ponovno.", "You are unlucky. Try again.": "Nimaš sreče, poskusi ponovno.",
"Error saving comment. Sorry.": "Nekaj je šlo narobe pri shranjevanju komentarja. Oprosti.", "Error saving comment. Sorry.": "Nekaj je šlo narobe pri shranjevanju komentarja. Oprosti.",
"Error saving paste. Sorry.": "Nekaj je šlo narobe pri shranjevanju prilepka. Oprosti.", "Error saving document. Sorry.": "Nekaj je šlo narobe pri shranjevanju prilepka. Oprosti.",
"Invalid paste ID.": "Napačen ID prilepka.", "Invalid document ID.": "Napačen ID prilepka.",
"Paste is not of burn-after-reading type.": "Prilepek ni tipa zažgi-po-branju.", "Document is not of burn-after-reading type.": "Prilepek ni tipa zažgi-po-branju.",
"Wrong deletion token. Paste was not deleted.": "Napačen token za izbris. Prilepek ni bil izbrisan..", "Wrong deletion token. Document was not deleted.": "Napačen token za izbris. Prilepek ni bil izbrisan..",
"Paste was properly deleted.": "Prilepek je uspešno izbrisan.", "Document was properly deleted.": "Prilepek je uspešno izbrisan.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Da %s deluje, moraš vklopiti JavaScript. Oprosti za povročene nevšečnosti.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "Da %s deluje, moraš vklopiti JavaScript. Oprosti za povročene nevšečnosti.",
"%s requires a modern browser to work.": "%s za svoje delovanje potrebuje moderen brskalnik.", "%s requires a modern browser to work.": "%s za svoje delovanje potrebuje moderen brskalnik.",
"New": "Nov prilepek", "New": "Nov prilepek",
@@ -133,9 +133,9 @@
"Ta dokument bo potekel čez %d mesecev.", "Ta dokument bo potekel čez %d mesecev.",
"Ta dokument bo potekel čez %d mesecev." "Ta dokument bo potekel čez %d mesecev."
], ],
"Please enter the password for this paste:": "Prosim vnesi geslo tega prilepka:", "Please enter the password for this document:": "Prosim vnesi geslo tega prilepka:",
"Could not decrypt data (Wrong key?)": "Nemogoče odkodirati podakte (Imaš napačen ključ?)", "Could not decrypt data (Wrong key?)": "Nemogoče odkodirati podakte (Imaš napačen ključ?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Prilepek je nemogoče izbrisati, ni bil shranjen v načinu \"zažgi po branju\".", "Could not delete the document, it was not stored in burn after reading mode.": "Prilepek je nemogoče izbrisati, ni bil shranjen v načinu \"zažgi po branju\".",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "SAMO ZA TVOJE OČI. Ne zapri tega okna (zavihka), to sporočilo ne bo prikazano nikoli več.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "SAMO ZA TVOJE OČI. Ne zapri tega okna (zavihka), to sporočilo ne bo prikazano nikoli več.",
"Could not decrypt comment; Wrong key?": "Ne morem odkodirati komentarja: Imaš napačen ključ?", "Could not decrypt comment; Wrong key?": "Ne morem odkodirati komentarja: Imaš napačen ključ?",
"Reply": "Odgovori", "Reply": "Odgovori",
@@ -150,20 +150,12 @@
"unknown status": "neznan status", "unknown status": "neznan status",
"server error or not responding": "napaka na strežniku, ali pa se strežnik ne odziva", "server error or not responding": "napaka na strežniku, ali pa se strežnik ne odziva",
"Could not post comment: %s": "Komentarja ni bilo mogoče objaviti : %s", "Could not post comment: %s": "Komentarja ni bilo mogoče objaviti : %s",
"Sending paste…": "Pošiljam prilepek…", "Sending document…": "Pošiljam prilepek…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Tvoj prilepek je dostopen na naslovu: <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Pritisni <kbd>Ctrl</kbd>+<kbd>c</kbd> ali [Cmd] + [c] in skopiraj)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Tvoj prilepek je dostopen na naslovu: <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Pritisni <kbd>Ctrl</kbd>+<kbd>c</kbd> ali [Cmd] + [c] in skopiraj)</span>",
"Delete data": "Izbriši podatke", "Delete data": "Izbriši podatke",
"Could not create paste: %s": "Ne morem ustvariti prilepka: %s", "Could not create document: %s": "Ne morem ustvariti prilepka: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Ne morem odkodirati prilepka: V URL-ju manjka ključ (A si uporabil krajšalnik URL-jev, ki odstrani del URL-ja?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Ne morem odkodirati prilepka: V URL-ju manjka ključ (A si uporabil krajšalnik URL-jev, ki odstrani del URL-ja?)",
"B": "o", "B": "o",
"KiB": "KB",
"MiB": "MB",
"GiB": "GB",
"TiB": "TB",
"PiB": "PB",
"EiB": "EB",
"ZiB": "ZB",
"YiB": "YB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Pretoči priponko", "Download attachment": "Pretoči priponko",
"Cloned: '%s'": "'%s' klonirana", "Cloned: '%s'": "'%s' klonirana",
"The cloned file '%s' was attached to this paste.": "The cloned file '%s' was attached to this paste.", "The cloned file '%s' was attached to this document.": "The cloned file '%s' was attached to this document.",
"Attach a file": "Pripni datoteko", "Attach a file": "Pripni datoteko",
"alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard", "alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard",
"File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.", "File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.",
@@ -193,11 +185,11 @@
"Decrypt": "Decrypt", "Decrypt": "Decrypt",
"Enter password": "Prosim vnesi geslo", "Enter password": "Prosim vnesi geslo",
"Loading…": "Loading…", "Loading…": "Loading…",
"Decrypting paste…": "Decrypting paste…", "Decrypting document…": "Decrypting document…",
"Preparing new paste…": "Preparing new paste…", "Preparing new document…": "Preparing new document…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a> (in English).", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a> (in English).",
"+++ no paste text +++": "+++ no paste text +++", "+++ no document text +++": "+++ no document text +++",
"Could not get paste data: %s": "Could not get paste data: %s", "Could not get document data: %s": "Could not get document data: %s",
"QR code": "QR code", "QR code": "QR code",
"This website is using an insecure HTTP connection! Please use it only for testing.": "This website is using an insecure HTTP connection! Please use it only for testing.", "This website is using an insecure HTTP connection! Please use it only for testing.": "This website is using an insecure HTTP connection! Please use it only for testing.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "Encrypted note on %s", "Encrypted note on %s": "Encrypted note on %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.", "URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
"Save paste": "Save paste", "URL shortener is enabled by default.": "URL shortener is enabled by default.",
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.", "Save document": "Save document",
"Your IP is not authorized to create documents.": "Your IP is not authorized to create documents.",
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", "Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.",
"Error parsing YOURLS response.": "Error parsing YOURLS response.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?", "This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
"Yes, see it": "Yes, see it", "Yes, see it": "Yes, see it",
"Dark Mode": "Temni način", "Dark Mode": "Temni način",
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.", "Error compressing document, due to missing WebAssembly support.": "Error compressing document, due to missing WebAssembly support.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.",
"Start over": "Start over", "Start over": "Start over",
"Paste copied to clipboard": "Paste copied to clipboard", "Document copied to clipboard": "Document copied to clipboard",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Copy link", "Copy link": "Copy link",
"Link copied to clipboard": "Link copied to clipboard", "Link copied to clipboard": "Link copied to clipboard",
"Paste text": "Paste text", "Document text": "Document text",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)",
"Show password": "Show password",
"Hide password": "Hide password",
"Theme": "Theme" "Theme": "Theme"
} }
+32 -36
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "More information on the <a href=\"https://privatebin.info/\">project page</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "More information on the <a href=\"https://privatebin.info/\">project page</a>.",
"Because ignorance is bliss": "Because ignorance is bliss", "Because ignorance is bliss": "Because ignorance is bliss",
"Paste does not exist, has expired or has been deleted.": "Paste does not exist, has expired or has been deleted.", "Document does not exist, has expired or has been deleted.": "Document does not exist, has expired or has been deleted.",
"%s requires php %s or above to work. Sorry.": "%s requires php %s or above to work. Sorry.", "%s requires php %s or above to work. Sorry.": "%s requires php %s or above to work. Sorry.",
"%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.", "%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Please wait %d seconds between each post. (4th plural)", "Please wait %d seconds between each post. (4th plural)",
"Please wait %d seconds between each post. (5th plural)" "Please wait %d seconds between each post. (5th plural)"
], ],
"Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.", "Document is limited to %s of encrypted data.": "Document is limited to %s of encrypted data.",
"Invalid data.": "Invalid data.", "Invalid data.": "Invalid data.",
"You are unlucky. Try again.": "You are unlucky. Try again.", "You are unlucky. Try again.": "You are unlucky. Try again.",
"Error saving comment. Sorry.": "Error saving comment. Sorry.", "Error saving comment. Sorry.": "Error saving comment. Sorry.",
"Error saving paste. Sorry.": "Error saving paste. Sorry.", "Error saving document. Sorry.": "Error saving document. Sorry.",
"Invalid paste ID.": "Invalid paste ID.", "Invalid document ID.": "Invalid document ID.",
"Paste is not of burn-after-reading type.": "Paste is not of burn-after-reading type.", "Document is not of burn-after-reading type.": "Document is not of burn-after-reading type.",
"Wrong deletion token. Paste was not deleted.": "Wrong deletion token. Paste was not deleted.", "Wrong deletion token. Document was not deleted.": "Wrong deletion token. Document was not deleted.",
"Paste was properly deleted.": "Paste was properly deleted.", "Document was properly deleted.": "Document was properly deleted.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.",
"%s requires a modern browser to work.": "%s requires a modern browser to work.", "%s requires a modern browser to work.": "%s requires a modern browser to work.",
"New": "New", "New": "New",
@@ -133,9 +133,9 @@
"This document will expire in %d months. (4th plural)", "This document will expire in %d months. (4th plural)",
"This document will expire in %d months. (5th plural)" "This document will expire in %d months. (5th plural)"
], ],
"Please enter the password for this paste:": "Please enter the password for this paste:", "Please enter the password for this document:": "Please enter the password for this document:",
"Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)", "Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Could not delete the paste, it was not stored in burn after reading mode.", "Could not delete the document, it was not stored in burn after reading mode.": "Could not delete the document, it was not stored in burn after reading mode.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.",
"Could not decrypt comment; Wrong key?": "Could not decrypt comment; Wrong key?", "Could not decrypt comment; Wrong key?": "Could not decrypt comment; Wrong key?",
"Reply": "Reply", "Reply": "Reply",
@@ -150,20 +150,12 @@
"unknown status": "unknown status", "unknown status": "unknown status",
"server error or not responding": "server error or not responding", "server error or not responding": "server error or not responding",
"Could not post comment: %s": "Could not post comment: %s", "Could not post comment: %s": "Could not post comment: %s",
"Sending paste…": "Sending paste…", "Sending document…": "Sending document…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>",
"Delete data": "Delete data", "Delete data": "Delete data",
"Could not create paste: %s": "Could not create paste: %s", "Could not create document: %s": "Could not create document: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Download attachment", "Download attachment": "Download attachment",
"Cloned: '%s'": "Cloned: '%s'", "Cloned: '%s'": "Cloned: '%s'",
"The cloned file '%s' was attached to this paste.": "The cloned file '%s' was attached to this paste.", "The cloned file '%s' was attached to this document.": "The cloned file '%s' was attached to this document.",
"Attach a file": "Attach a file", "Attach a file": "Attach a file",
"alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard", "alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard",
"File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.", "File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.",
@@ -193,11 +185,11 @@
"Decrypt": "Decrypt", "Decrypt": "Decrypt",
"Enter password": "Enter password", "Enter password": "Enter password",
"Loading…": "Loading…", "Loading…": "Loading…",
"Decrypting paste…": "Decrypting paste…", "Decrypting document…": "Decrypting document…",
"Preparing new paste…": "Preparing new paste…", "Preparing new document…": "Preparing new document…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.",
"+++ no paste text +++": "+++ no paste text +++", "+++ no document text +++": "+++ no document text +++",
"Could not get paste data: %s": "Could not get paste data: %s", "Could not get document data: %s": "Could not get document data: %s",
"QR code": "QR code", "QR code": "QR code",
"This website is using an insecure HTTP connection! Please use it only for testing.": "This website is using an insecure HTTP connection! Please use it only for testing.", "This website is using an insecure HTTP connection! Please use it only for testing.": "This website is using an insecure HTTP connection! Please use it only for testing.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "Encrypted note on %s", "Encrypted note on %s": "Encrypted note on %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.", "URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
"Save paste": "Save paste", "URL shortener is enabled by default.": "URL shortener is enabled by default.",
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.", "Save document": "Save document",
"Your IP is not authorized to create documents.": "Your IP is not authorized to create documents.",
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", "Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.",
"Error parsing YOURLS response.": "Error parsing YOURLS response.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?", "This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
"Yes, see it": "Yes, see it", "Yes, see it": "Yes, see it",
"Dark Mode": "Mörkt Läge", "Dark Mode": "Mörkt Läge",
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.", "Error compressing document, due to missing WebAssembly support.": "Error compressing document, due to missing WebAssembly support.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.",
"Start over": "Start over", "Start over": "Start over",
"Paste copied to clipboard": "Paste copied to clipboard", "Document copied to clipboard": "Document copied to clipboard",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Copy link", "Copy link": "Copy link",
"Link copied to clipboard": "Link copied to clipboard", "Link copied to clipboard": "Link copied to clipboard",
"Paste text": "Paste text", "Document text": "Document text",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)",
"Show password": "Show password",
"Hide password": "Hide password",
"Theme": "Theme" "Theme": "Theme"
} }
+36 -40
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s เป็น pastebin ออนไลน์แบบโอเพ่นซอร์สที่มีรูปแบบการใช้งานที่เรียบง่าย เซิร์ฟเวอร์ไม่สามารถรู้ได้ว่าข้อมูลโค้ดที่มาฝากนั้นเป็นข้อมูลอะไร โดยจะถูกเข้ารหัส/ถอดรหัสด้วยกระบวนการ AES จำนวน 256 บิต%sผ่านเบราว์เซอร์%s", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s เป็น pastebin ออนไลน์แบบโอเพ่นซอร์สที่มีรูปแบบการใช้งานที่เรียบง่าย เซิร์ฟเวอร์ไม่สามารถรู้ได้ว่าข้อมูลโค้ดที่มาฝากนั้นเป็นข้อมูลอะไร โดยจะถูกเข้ารหัส/ถอดรหัสด้วยกระบวนการ AES จำนวน 256 บิต%sผ่านเบราว์เซอร์%s",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "ข้อมูลเพิ่มเติม ดูได้ที่<a href=\"https://privatebin.info/\">หน้าโครงการ</a>", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "ข้อมูลเพิ่มเติม ดูได้ที่<a href=\"https://privatebin.info/\">หน้าโครงการ</a>",
"Because ignorance is bliss": "ไม่รู้ไม่ชี้ดีที่สุด", "Because ignorance is bliss": "ไม่รู้ไม่ชี้ดีที่สุด",
"Paste does not exist, has expired or has been deleted.": "การฝากโค้ดไม่มีอยู่ อาจจะหมดอายุหรือถูกลบไปแล้ว", "Document does not exist, has expired or has been deleted.": "การฝากโค้ดไม่มีอยู่ อาจจะหมดอายุหรือถูกลบไปแล้ว",
"%s requires php %s or above to work. Sorry.": "ขออภัย %s ต้องใช้ PHP %s ขึ้นไปจึงจะใช้งานได้", "%s requires php %s or above to work. Sorry.": "ขออภัย %s ต้องใช้ PHP %s ขึ้นไปจึงจะใช้งานได้",
"%s requires configuration section [%s] to be present in configuration file.": "%s จำเป็นต้องตั้งค่าตัวแปร [%s] ในไฟล์กำหนดค่า", "%s requires configuration section [%s] to be present in configuration file.": "%s จำเป็นต้องตั้งค่าตัวแปร [%s] ในไฟล์กำหนดค่า",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"กรุณาเว้นระยะเวลาการส่งข้อมูลอย่างน้อย %d วินาที", "กรุณาเว้นระยะเวลาการส่งข้อมูลอย่างน้อย %d วินาที",
"กรุณาเว้นระยะเวลาการส่งข้อมูลอย่างน้อย %d วินาที" "กรุณาเว้นระยะเวลาการส่งข้อมูลอย่างน้อย %d วินาที"
], ],
"Paste is limited to %s of encrypted data.": "การฝากโค้ดแบบเข้ารหัส ขีดจำกัดสูงสุดคือ %s", "Document is limited to %s of encrypted data.": "การฝากโค้ดแบบเข้ารหัส ขีดจำกัดสูงสุดคือ %s",
"Invalid data.": "ข้อมูลไม่ถูกต้อง", "Invalid data.": "ข้อมูลไม่ถูกต้อง",
"You are unlucky. Try again.": "วันนี้คุณดวงไม่เฮงเลย ลองใหม่อีกครั้งนะ", "You are unlucky. Try again.": "วันนี้คุณดวงไม่เฮงเลย ลองใหม่อีกครั้งนะ",
"Error saving comment. Sorry.": "ขออภัย เกิดข้อผิดพลาดในระหว่างบันทึกความคิดเห็น", "Error saving comment. Sorry.": "ขออภัย เกิดข้อผิดพลาดในระหว่างบันทึกความคิดเห็น",
"Error saving paste. Sorry.": "ขออภัย เกิดข้อผิดพลาดในระหว่างบันทึกการฝากโค้ด", "Error saving document. Sorry.": "ขออภัย เกิดข้อผิดพลาดในระหว่างบันทึกการฝากโค้ด",
"Invalid paste ID.": "ID การฝากโค้ดไม่ถูกต้อง", "Invalid document ID.": "ID การฝากโค้ดไม่ถูกต้อง",
"Paste is not of burn-after-reading type.": "ข้อมูลการฝากโค้ดนี้ไม่ได้เป็นรูปแบบลบทันทีเมื่อเปิดอ่าน", "Document is not of burn-after-reading type.": "ข้อมูลการฝากโค้ดนี้ไม่ได้เป็นรูปแบบลบทันทีเมื่อเปิดอ่าน",
"Wrong deletion token. Paste was not deleted.": "โทเค็นการลบไม่ถูกต้อง ข้อมูลการฝากโค้ดไม่ถูกลบ", "Wrong deletion token. Document was not deleted.": "โทเค็นการลบไม่ถูกต้อง ข้อมูลการฝากโค้ดไม่ถูกลบ",
"Paste was properly deleted.": "ข้อมูลการฝากโค้ดถูกลบออกเรียบร้อยแล้ว", "Document was properly deleted.": "ข้อมูลการฝากโค้ดถูกลบออกเรียบร้อยแล้ว",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "จำเป็นต้องใช้ JavaScript เพื่อให้ %s สามารถทำงานได้ ขออภัยในความไม่สะดวก", "JavaScript is required for %s to work. Sorry for the inconvenience.": "จำเป็นต้องใช้ JavaScript เพื่อให้ %s สามารถทำงานได้ ขออภัยในความไม่สะดวก",
"%s requires a modern browser to work.": "%s ต้องใช้เบราว์เซอร์สมัยใหม่ถึงจะสามารถใช้งานได้", "%s requires a modern browser to work.": "%s ต้องใช้เบราว์เซอร์สมัยใหม่ถึงจะสามารถใช้งานได้",
"New": "ใหม่", "New": "ใหม่",
@@ -133,9 +133,9 @@
"เอกสารนี้จะหมดอายุใน %d เดือน", "เอกสารนี้จะหมดอายุใน %d เดือน",
"เอกสารนี้จะหมดอายุใน %d เดือน" "เอกสารนี้จะหมดอายุใน %d เดือน"
], ],
"Please enter the password for this paste:": "กรุณากรอกรหัสผ่านเพื่อเปิดข้อมูลการฝากโค้ดนี้:", "Please enter the password for this document:": "กรุณากรอกรหัสผ่านเพื่อเปิดข้อมูลการฝากโค้ดนี้:",
"Could not decrypt data (Wrong key?)": "ไม่สามารถถอดรหัสข้อมูลได้ (คีย์ไม่ถูกต้องหรือไม่)", "Could not decrypt data (Wrong key?)": "ไม่สามารถถอดรหัสข้อมูลได้ (คีย์ไม่ถูกต้องหรือไม่)",
"Could not delete the paste, it was not stored in burn after reading mode.": "ไม่สามารถลบการฝากโค้ดนี้ได้ เนื่องจากว่าไม่ได้ถูกเก็บไว้ในโหมดลบทันทีเมื่อเปิดอ่าน", "Could not delete the document, it was not stored in burn after reading mode.": "ไม่สามารถลบการฝากโค้ดนี้ได้ เนื่องจากว่าไม่ได้ถูกเก็บไว้ในโหมดลบทันทีเมื่อเปิดอ่าน",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "เก็บไว้ดูคนเดียวนะ อย่าปิดหน้าต่างนี้ ข้อความนี้จะไม่สามารถแสดงได้อีก", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "เก็บไว้ดูคนเดียวนะ อย่าปิดหน้าต่างนี้ ข้อความนี้จะไม่สามารถแสดงได้อีก",
"Could not decrypt comment; Wrong key?": "ไม่สามารถถอดรหัสความคิดเห็นได้ คีย์ไม่ถูกต้องหรือไม่", "Could not decrypt comment; Wrong key?": "ไม่สามารถถอดรหัสความคิดเห็นได้ คีย์ไม่ถูกต้องหรือไม่",
"Reply": "ตอบกลับ", "Reply": "ตอบกลับ",
@@ -150,20 +150,12 @@
"unknown status": "ไม่ทราบสถานะ", "unknown status": "ไม่ทราบสถานะ",
"server error or not responding": "เซิร์ฟเวอร์มีข้อผิดพลาดหรือไม่ตอบสนอง", "server error or not responding": "เซิร์ฟเวอร์มีข้อผิดพลาดหรือไม่ตอบสนอง",
"Could not post comment: %s": "ไม่สามารถส่งความคิดเห็นได้: %s", "Could not post comment: %s": "ไม่สามารถส่งความคิดเห็นได้: %s",
"Sending paste…": "กำลังส่งข้อมูล…", "Sending document…": "กำลังส่งข้อมูล…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "การฝากโค้ดของคุณอยู่ที่ <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(กดปุ่ม <kbd>Ctrl</kbd>+<kbd>c</kbd> เพื่อคัดลอก)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "การฝากโค้ดของคุณอยู่ที่ <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(กดปุ่ม <kbd>Ctrl</kbd>+<kbd>c</kbd> เพื่อคัดลอก)</span>",
"Delete data": "ลบข้อมูล", "Delete data": "ลบข้อมูล",
"Could not create paste: %s": "ไม่สามารถสร้างข้อมูลการฝากโค้ดได้: %s", "Could not create document: %s": "ไม่สามารถสร้างข้อมูลการฝากโค้ดได้: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "ไม่สามารถถอดรหัสข้อมูลการฝากโค้ดได้: คีย์ถอดรหัสที่อยู่ใน URL หายไป (คุณได้ใช้ตัวเปลี่ยนเส้นทางหรือตัวย่อ URL ที่มีการตัดส่วนของ URL ออกหรือไม่)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "ไม่สามารถถอดรหัสข้อมูลการฝากโค้ดได้: คีย์ถอดรหัสที่อยู่ใน URL หายไป (คุณได้ใช้ตัวเปลี่ยนเส้นทางหรือตัวย่อ URL ที่มีการตัดส่วนของ URL ออกหรือไม่)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "ดาวน์โหลดไฟล์แนบ", "Download attachment": "ดาวน์โหลดไฟล์แนบ",
"Cloned: '%s'": "โคลนแล้ว: '%s'", "Cloned: '%s'": "โคลนแล้ว: '%s'",
"The cloned file '%s' was attached to this paste.": "การโคลนข้อมูลการฝากโค้ด มีไฟล์ '%s' แนบมาด้วย", "The cloned file '%s' was attached to this document.": "การโคลนข้อมูลการฝากโค้ด มีไฟล์ '%s' แนบมาด้วย",
"Attach a file": "แนบไฟล์", "Attach a file": "แนบไฟล์",
"alternatively drag & drop a file or paste an image from the clipboard": "หรือสามารถลากและวางไฟล์หรือวางรูปภาพจากคลิปบอร์ดได้", "alternatively drag & drop a file or paste an image from the clipboard": "หรือสามารถลากและวางไฟล์หรือวางรูปภาพจากคลิปบอร์ดได้",
"File too large, to display a preview. Please download the attachment.": "ไฟล์มีขนาดใหญ่เกินไปที่จะแสดงตัวอย่าง กรุณาดาวน์โหลดเป็นไฟล์แนบแทน", "File too large, to display a preview. Please download the attachment.": "ไฟล์มีขนาดใหญ่เกินไปที่จะแสดงตัวอย่าง กรุณาดาวน์โหลดเป็นไฟล์แนบแทน",
@@ -193,11 +185,11 @@
"Decrypt": "ถอดรหัส", "Decrypt": "ถอดรหัส",
"Enter password": "กรอกรหัสผ่าน", "Enter password": "กรอกรหัสผ่าน",
"Loading…": "กำลังโหลด…", "Loading…": "กำลังโหลด…",
"Decrypting paste…": "กำลังถอดรหัสข้อมูลการฝากโค้ด…", "Decrypting document…": "กำลังถอดรหัสข้อมูลการฝากโค้ด…",
"Preparing new paste…": "กำลังเตรียมข้อมูลการฝากโค้ดใหม่…", "Preparing new document…": "กำลังเตรียมข้อมูลการฝากโค้ดใหม่…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "ในกรณีที่ข้อความนี้ยังปรากฎให้เห็นอยู่ กรุณาดู<a href=\"%s\">คำถามที่พบบ่อยนี้เพื่อใช้แก้ไขปัญหา</a>", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "ในกรณีที่ข้อความนี้ยังปรากฎให้เห็นอยู่ กรุณาดู<a href=\"%s\">คำถามที่พบบ่อยนี้เพื่อใช้แก้ไขปัญหา</a>",
"+++ no paste text +++": "+++ ไม่มีข้อความการฝากโค้ด +++", "+++ no document text +++": "+++ ไม่มีข้อความการฝากโค้ด +++",
"Could not get paste data: %s": "ไม่สามารถดึงข้อมูลการฝากโค้ดได้: %s", "Could not get document data: %s": "ไม่สามารถดึงข้อมูลการฝากโค้ดได้: %s",
"QR code": "คิวอาร์โค้ด", "QR code": "คิวอาร์โค้ด",
"This website is using an insecure HTTP connection! Please use it only for testing.": "เว็บไซต์นี้ใช้การเชื่อมต่อแบบ HTTP ที่ไม่ปลอดภัย! กรุณาใช้เพื่อการทดสอบเท่านั้น", "This website is using an insecure HTTP connection! Please use it only for testing.": "เว็บไซต์นี้ใช้การเชื่อมต่อแบบ HTTP ที่ไม่ปลอดภัย! กรุณาใช้เพื่อการทดสอบเท่านั้น",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "สำหรับข้อมูลเพิ่มเติม <a href=\"%s\">กรุณาดูรายการคำถามที่พบบ่อยนี้</a>", "For more information <a href=\"%s\">see this FAQ entry</a>.": "สำหรับข้อมูลเพิ่มเติม <a href=\"%s\">กรุณาดูรายการคำถามที่พบบ่อยนี้</a>",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "เขารหัสบันทึกย่อบน %s", "Encrypted note on %s": "เขารหัสบันทึกย่อบน %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "ไปที่ลิงก์นี้เพื่อดูบันทึกย่อทั้งหมด ส่ง URL นี้ให้ใครก็ได้เพื่อให้สามารถเข้าถึงบันทึกย่อได้", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "ไปที่ลิงก์นี้เพื่อดูบันทึกย่อทั้งหมด ส่ง URL นี้ให้ใครก็ได้เพื่อให้สามารถเข้าถึงบันทึกย่อได้",
"URL shortener may expose your decrypt key in URL.": "เครื่องมือสร้างลิงก์ย่ออาจเปิดเผยคีย์ถอดรหัสของคุณใน URL ได้", "URL shortener may expose your decrypt key in URL.": "เครื่องมือสร้างลิงก์ย่ออาจเปิดเผยคีย์ถอดรหัสของคุณใน URL ได้",
"Save paste": "ดาวน์โหลดข้อมูลการฝากโค้ด", "URL shortener is enabled by default.": "URL shortener is enabled by default.",
"Your IP is not authorized to create pastes.": "IP ของคุณไม่ได้รับอนุญาตให้สร้างการฝากโค้ด", "Save document": "ดาวน์โหลดข้อมูลการฝากโค้ด",
"Your IP is not authorized to create documents.": "IP ของคุณไม่ได้รับอนุญาตให้สร้างการฝากโค้ด",
"Trying to shorten a URL that isn't pointing at our instance.": "กำลังพยายามใช้เครื่องมือสร้างลิงก์ย่อ ที่ไม่ได้ชี้ไปที่อินสแตนซ์ของเรา", "Trying to shorten a URL that isn't pointing at our instance.": "กำลังพยายามใช้เครื่องมือสร้างลิงก์ย่อ ที่ไม่ได้ชี้ไปที่อินสแตนซ์ของเรา",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "เกิดข้อผิดพลาดในการเรียก YOURLS อาจเป็นปัญหามาจากการกำหนดค่า เช่น \"apiurl\" หรือ \"signature\" ไม่ถูกต้องหรือขาดหายไป", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "เกิดข้อผิดพลาดในการเรียก YOURLS อาจเป็นปัญหามาจากการกำหนดค่า เช่น \"apiurl\" หรือ \"signature\" ไม่ถูกต้องหรือขาดหายไป",
"Error parsing YOURLS response.": "เกิดข้อผิดพลาดในการแยกวิเคราะห์การตอบสนองของ YOURLS", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "เกิดข้อผิดพลาดในการแยกวิเคราะห์การตอบสนองของ YOURLS",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"This secret message can only be displayed once. Would you like to see it now?": "ข้อความลับนี้จะแสดงได้เพียงครั้งเดียวเท่านั้น คุณต้องการดูข้อความนี้ตอนนี้เลยใช่หรือไม่", "This secret message can only be displayed once. Would you like to see it now?": "ข้อความลับนี้จะแสดงได้เพียงครั้งเดียวเท่านั้น คุณต้องการดูข้อความนี้ตอนนี้เลยใช่หรือไม่",
"Yes, see it": "ใช่ ดูเลย", "Yes, see it": "ใช่ ดูเลย",
"Dark Mode": "โหมดสีเข้ม", "Dark Mode": "โหมดสีเข้ม",
"Error compressing paste, due to missing WebAssembly support.": "ไม่สามารถบีบอัดข้อมูลที่คุณต้องการฝากโค้ดได้ เนื่องจากอุปกรณ์ของคุณขาดการรองรับ WebAssembly", "Error compressing document, due to missing WebAssembly support.": "ไม่สามารถบีบอัดข้อมูลที่คุณต้องการฝากโค้ดได้ เนื่องจากอุปกรณ์ของคุณขาดการรองรับ WebAssembly",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "ไม่สามารถอ่านข้อมูลที่คุณได้ฝากโค้ดไว้ เบราว์เซอร์ของคุณไม่รองรับ WebAssembly กรุณาลองเปลี่ยนใช้เบราว์เซอร์ตัวอื่นเพื่อดูการฝากโค้ดนี้อีกครั้ง", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "ไม่สามารถอ่านข้อมูลที่คุณได้ฝากโค้ดไว้ เบราว์เซอร์ของคุณไม่รองรับ WebAssembly กรุณาลองเปลี่ยนใช้เบราว์เซอร์ตัวอื่นเพื่อดูการฝากโค้ดนี้อีกครั้ง",
"Start over": "เริ่มใหม่", "Start over": "เริ่มใหม่",
"Paste copied to clipboard": "Paste copied to clipboard", "Document copied to clipboard": "คัดลอกการฝากโค้ดไปที่คลิปบอร์ดแล้ว",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "หากต้องการคัดลอกและวาง กรุณากดปุ่มคัดลอก หรือใช้ปุ่มลัด <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd> สำหรับคลิปบอร์ด",
"Copy link": "Copy link", "Copy link": "คัดลอกลิงก์",
"Link copied to clipboard": "Link copied to clipboard", "Link copied to clipboard": "คัดลอกลิงก์ไปที่คลิปบอร์ดแล้ว",
"Paste text": "Paste text", "Document text": "ฝากข้อความ",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "ปุ่ม Tabulator ใช้เป็นอักขระ (กด <kbd>Ctrl</kbd>+<kbd>m</kbd> หรือ <kbd>Esc</kbd> เพื่อสลับ)",
"Theme": "Theme" "Show password": "Show password",
"Hide password": "Hide password",
"Theme": "ธีม"
} }
+32 -36
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s sunucunun burada paylaştığınız veriyi görmediği, minimal, açık kaynak bir pastebindir. Veriler tarayıcıda 256 bit AES kullanılarak şifrelenir/çözülür.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s sunucunun burada paylaştığınız veriyi görmediği, minimal, açık kaynak bir pastebindir. Veriler tarayıcıda 256 bit AES kullanılarak şifrelenir/çözülür.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Daha fazla bilgi için <a href=\"https://privatebin.info/\">proje sayfası</a>'na göz atabilirsiniz.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Daha fazla bilgi için <a href=\"https://privatebin.info/\">proje sayfası</a>'na göz atabilirsiniz.",
"Because ignorance is bliss": "Çünkü, cehalet mutluluktur", "Because ignorance is bliss": "Çünkü, cehalet mutluluktur",
"Paste does not exist, has expired or has been deleted.": "Bu mevcut değil, süresi dolmuş veya silinmiş.", "Document does not exist, has expired or has been deleted.": "Bu mevcut değil, süresi dolmuş veya silinmiş.",
"%s requires php %s or above to work. Sorry.": "%s PHP %s veya daha üstünü gerektirir.", "%s requires php %s or above to work. Sorry.": "%s PHP %s veya daha üstünü gerektirir.",
"%s requires configuration section [%s] to be present in configuration file.": "%s konfigürasyon bölümünün [%s] bulunmasını gerektir.", "%s requires configuration section [%s] to be present in configuration file.": "%s konfigürasyon bölümünün [%s] bulunmasını gerektir.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"Lütfen paylaşımlar arasında %d saniye bekleyiniz.", "Lütfen paylaşımlar arasında %d saniye bekleyiniz.",
"Lütfen paylaşımlar arasında %d saniye bekleyiniz." "Lütfen paylaşımlar arasında %d saniye bekleyiniz."
], ],
"Paste is limited to %s of encrypted data.": "Yazılar %s şifreli veriyle sınırlıdır.", "Document is limited to %s of encrypted data.": "Yazılar %s şifreli veriyle sınırlıdır.",
"Invalid data.": "Geçersiz veri.", "Invalid data.": "Geçersiz veri.",
"You are unlucky. Try again.": "Lütfen tekrar deneyiniz.", "You are unlucky. Try again.": "Lütfen tekrar deneyiniz.",
"Error saving comment. Sorry.": "Yorum kaydedilemedi.", "Error saving comment. Sorry.": "Yorum kaydedilemedi.",
"Error saving paste. Sorry.": "Yazı kaydedilemedi. Üzgünüz.", "Error saving document. Sorry.": "Yazı kaydedilemedi. Üzgünüz.",
"Invalid paste ID.": "Geçersiz yazı ID'si.", "Invalid document ID.": "Geçersiz yazı ID'si.",
"Paste is not of burn-after-reading type.": "Yazı okunduğunda silinmeyecek şekilde ayarlanmış.", "Document is not of burn-after-reading type.": "Yazı okunduğunda silinmeyecek şekilde ayarlanmış.",
"Wrong deletion token. Paste was not deleted.": "Yanlış silme anahtarı. Yazı silinemedi.", "Wrong deletion token. Document was not deleted.": "Yanlış silme anahtarı. Yazı silinemedi.",
"Paste was properly deleted.": "Yazı başarıyla silindi.", "Document was properly deleted.": "Yazı başarıyla silindi.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript %s 'in çalışması için gereklidir. Rahatsızlıktan dolayı özür dileriz.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript %s 'in çalışması için gereklidir. Rahatsızlıktan dolayı özür dileriz.",
"%s requires a modern browser to work.": "%s çalışmak için çağdaş bir tarayıcı gerektirir.", "%s requires a modern browser to work.": "%s çalışmak için çağdaş bir tarayıcı gerektirir.",
"New": "Yeni", "New": "Yeni",
@@ -133,9 +133,9 @@
"Bu belge %d ayda silinecektir.", "Bu belge %d ayda silinecektir.",
"Bu belge %d ayda silinecektir." "Bu belge %d ayda silinecektir."
], ],
"Please enter the password for this paste:": "Lütfen bu yazı için şifrenizi girin:", "Please enter the password for this document:": "Lütfen bu yazı için şifrenizi girin:",
"Could not decrypt data (Wrong key?)": "Şifre çözülemedi (Yanlış anahtar mı kullandınız?)", "Could not decrypt data (Wrong key?)": "Şifre çözülemedi (Yanlış anahtar mı kullandınız?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Yazı silinemedi, okunduktan sonra silinmek için ayarlanmadı.", "Could not delete the document, it was not stored in burn after reading mode.": "Yazı silinemedi, okunduktan sonra silinmek için ayarlanmadı.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "BU DOSYAYI SADECE SİZ GÖRÜNTÜLEYEBİLİRSİNİZ. Bu pencereyi kapatmayın, yazıyı tekrar görüntüleyemeyeceksiniz.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "BU DOSYAYI SADECE SİZ GÖRÜNTÜLEYEBİLİRSİNİZ. Bu pencereyi kapatmayın, yazıyı tekrar görüntüleyemeyeceksiniz.",
"Could not decrypt comment; Wrong key?": "Dosya şifresi çözülemedi, doğru anahtarı girdiğinizden emin misiniz?", "Could not decrypt comment; Wrong key?": "Dosya şifresi çözülemedi, doğru anahtarı girdiğinizden emin misiniz?",
"Reply": "Cevapla", "Reply": "Cevapla",
@@ -150,20 +150,12 @@
"unknown status": "bilinmeyen durum", "unknown status": "bilinmeyen durum",
"server error or not responding": "sunucu hatası veya yanıt vermiyor", "server error or not responding": "sunucu hatası veya yanıt vermiyor",
"Could not post comment: %s": "Yorum paylaşılamadı: %s", "Could not post comment: %s": "Yorum paylaşılamadı: %s",
"Sending paste…": "Yazı gönderiliyor…", "Sending document…": "Yazı gönderiliyor…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Yazınız: <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(<kbd>Ctrl</kbd>+<kbd>c</kbd> tuşlarına basarak kopyalayın.)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Yazınız: <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(<kbd>Ctrl</kbd>+<kbd>c</kbd> tuşlarına basarak kopyalayın.)</span>",
"Delete data": "Veriyi sil", "Delete data": "Veriyi sil",
"Could not create paste: %s": "Yazı oluşturulamadı: %s", "Could not create document: %s": "Yazı oluşturulamadı: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Yazı şifresi çözülemedi, çözme anahtarı URL'de bulunamadı. (Buraya bir yönlendirici veya URL kısaltıcı kullanarak gelmiş olabilirsiniz.)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Yazı şifresi çözülemedi, çözme anahtarı URL'de bulunamadı. (Buraya bir yönlendirici veya URL kısaltıcı kullanarak gelmiş olabilirsiniz.)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "Eki indir", "Download attachment": "Eki indir",
"Cloned: '%s'": "Klonlandı: '%s'", "Cloned: '%s'": "Klonlandı: '%s'",
"The cloned file '%s' was attached to this paste.": "Klonlanmış dosya '%s' bu yazıya eklendi.", "The cloned file '%s' was attached to this document.": "Klonlanmış dosya '%s' bu yazıya eklendi.",
"Attach a file": "Dosya ekle", "Attach a file": "Dosya ekle",
"alternatively drag & drop a file or paste an image from the clipboard": "alternatif olarak dosyayı yapıştırabilir veya sürükleyip bırakabilirsiniz", "alternatively drag & drop a file or paste an image from the clipboard": "alternatif olarak dosyayı yapıştırabilir veya sürükleyip bırakabilirsiniz",
"File too large, to display a preview. Please download the attachment.": "Dosya önizleme için çok büyük. Lütfen eki indirin.", "File too large, to display a preview. Please download the attachment.": "Dosya önizleme için çok büyük. Lütfen eki indirin.",
@@ -193,11 +185,11 @@
"Decrypt": "Şifreyi çöz", "Decrypt": "Şifreyi çöz",
"Enter password": "Şifreyi girin", "Enter password": "Şifreyi girin",
"Loading…": "Yükleniyor…", "Loading…": "Yükleniyor…",
"Decrypting paste…": "Yazı şifresi çözülüyor…", "Decrypting document…": "Yazı şifresi çözülüyor…",
"Preparing new paste…": "Yeni yazı hazırlanıyor…", "Preparing new document…": "Yeni yazı hazırlanıyor…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Bu mesaj hiç kaybolmazsa, sorun giderme bilgileri için <a href=\"%s\">bu SSS'ye göz atın</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Bu mesaj hiç kaybolmazsa, sorun giderme bilgileri için <a href=\"%s\">bu SSS'ye göz atın</a>.",
"+++ no paste text +++": "+++ yazı içeriği yok +++", "+++ no document text +++": "+++ yazı içeriği yok +++",
"Could not get paste data: %s": "Yazı verisi alınamıyor: %s", "Could not get document data: %s": "Yazı verisi alınamıyor: %s",
"QR code": "QR kodu", "QR code": "QR kodu",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Bu web sitesi güvensiz bir HTTP bağlantısı kullanıyor! Lütfen bunu yalnızca test için kullanın.", "This website is using an insecure HTTP connection! Please use it only for testing.": "Bu web sitesi güvensiz bir HTTP bağlantısı kullanıyor! Lütfen bunu yalnızca test için kullanın.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Daha fazla bilgi için <a href=\"%s\">bu SSS girişine bakın</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": "Daha fazla bilgi için <a href=\"%s\">bu SSS girişine bakın</a>.",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "%s üzerinde şifrelenmiş not", "Encrypted note on %s": "%s üzerinde şifrelenmiş not",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Notu görmek için bu bağlantıyı ziyaret edin. URL'yi birine vermek, onların da nota erişmesini sağlar.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Notu görmek için bu bağlantıyı ziyaret edin. URL'yi birine vermek, onların da nota erişmesini sağlar.",
"URL shortener may expose your decrypt key in URL.": "URL kısaltıcı, şifre çözme anahtarınızı URL içinde gösterebilir.", "URL shortener may expose your decrypt key in URL.": "URL kısaltıcı, şifre çözme anahtarınızı URL içinde gösterebilir.",
"Save paste": "Yazıyı kaydet", "URL shortener is enabled by default.": "URL shortener is enabled by default.",
"Your IP is not authorized to create pastes.": "IP adresinizin yazı oluşturmaya yetkisi yoktur.", "Save document": "Yazıyı kaydet",
"Your IP is not authorized to create documents.": "IP adresinizin yazı oluşturmaya yetkisi yoktur.",
"Trying to shorten a URL that isn't pointing at our instance.": "URL'yi kısaltmaya çalışırken, bizim sunucumuza işaret etmeyen bir URL kullanıyorsunuz.", "Trying to shorten a URL that isn't pointing at our instance.": "URL'yi kısaltmaya çalışırken, bizim sunucumuza işaret etmeyen bir URL kullanıyorsunuz.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "YOURLS çağrısı başarısız oldu. Muhtemelen \"apiurl\" veya \"signature\" gibi yanlış veya eksik yapılandırma hatası.", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "YOURLS çağrısı başarısız oldu. Muhtemelen \"apiurl\" veya \"signature\" gibi yanlış veya eksik yapılandırma hatası.",
"Error parsing YOURLS response.": "YOURLS yanıtı ayrıştırılamadı.", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "YOURLS yanıtı ayrıştırılamadı.",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.",
"This secret message can only be displayed once. Would you like to see it now?": "Bu gizli mesaj yalnızca bir kez görüntülenebilir. Şimdi görmek ister misiniz?", "This secret message can only be displayed once. Would you like to see it now?": "Bu gizli mesaj yalnızca bir kez görüntülenebilir. Şimdi görmek ister misiniz?",
"Yes, see it": "Evet, gör", "Yes, see it": "Evet, gör",
"Dark Mode": "Koyu Mod", "Dark Mode": "Koyu Mod",
"Error compressing paste, due to missing WebAssembly support.": "WebAssembly desteği eksik olduğundan yazı sıkıştırılamadı.", "Error compressing document, due to missing WebAssembly support.": "WebAssembly desteği eksik olduğundan yazı sıkıştırılamadı.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Yazı açılırken hata oluştu, tarayıcınız WebAssembly'i desteklemiyor. Lütfen bu yazıyı görüntülemek için başka bir tarayıcı kullanın.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Yazı açılırken hata oluştu, tarayıcınız WebAssembly'i desteklemiyor. Lütfen bu yazıyı görüntülemek için başka bir tarayıcı kullanın.",
"Start over": "Baştan başla", "Start over": "Baştan başla",
"Paste copied to clipboard": "Paste copied to clipboard", "Document copied to clipboard": "Document copied to clipboard",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Copy link", "Copy link": "Copy link",
"Link copied to clipboard": "Link copied to clipboard", "Link copied to clipboard": "Link copied to clipboard",
"Paste text": "Paste text", "Document text": "Document text",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)",
"Show password": "Show password",
"Hide password": "Hide password",
"Theme": "Theme" "Theme": "Theme"
} }
+108 -112
View File
@@ -1,10 +1,10 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s це мінімалістичний Open Source проєкт для створення нотаток, де сервер не знає нічого про дані, що зберігаються. Дані шифруються/розшифровуються %sу браузері%s з використанням 256-бітного шифрування AES.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s мінімалістична вільна програма для створення нотаток, сервер якої не знає нічого про дані, що зберігаються. Дані шифруються/розшифровуються %sу браузері%s з використанням 256-бітного шифрування AES.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Подробиці можна дізнатися на <a href=\"https://privatebin.info/\">сайті проєкту</a>.", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Докладніше — на <a href=\"https://privatebin.info/\">сайті проєкту</a>.",
"Because ignorance is bliss": "Бо незнання - благо", "Because ignorance is bliss": "Менше знаєш — краще спиш",
"Paste does not exist, has expired or has been deleted.": "Допис не існує, протермінований чи був видалений.", "Document does not exist, has expired or has been deleted.": "Документ не існує. Можливо, його протерміновано чи видалено.",
"%s requires php %s or above to work. Sorry.": "Для роботи %s потрібен php %s и вище. Вибачте.", "%s requires php %s or above to work. Sorry.": "Для роботи %s потрібен php %s чи вище. Вибачте.",
"%s requires configuration section [%s] to be present in configuration file.": "%s потрібна секція [%s] в конфігураційному файлі.", "%s requires configuration section [%s] to be present in configuration file.": "%s потрібна секція [%s] в конфігураційному файлі.",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
"Будь ласка, зачекайте %d секунду між створеннями.", "Будь ласка, зачекайте %d секунду між створеннями.",
@@ -14,18 +14,18 @@
"Будь ласка, зачекайте %d секунд між створеннями.", "Будь ласка, зачекайте %d секунд між створеннями.",
"Будь ласка, зачекайте %d секунд між створеннями." "Будь ласка, зачекайте %d секунд між створеннями."
], ],
"Paste is limited to %s of encrypted data.": "Розмір допису обмежений %s зашифрованих даних.", "Document is limited to %s of encrypted data.": "Розмір документа обмежено %s зашифрованих даних.",
"Invalid data.": "Неправильні дані.", "Invalid data.": "Неправильні дані.",
"You are unlucky. Try again.": "Якась халепа! Спробуйте ще раз.", "You are unlucky. Try again.": "Якась халепа! Спробуйте ще раз.",
"Error saving comment. Sorry.": "Помилка при збереженні коментаря. Вибачте.", "Error saving comment. Sorry.": "Не вдалося зберегти коментар. Вибачте.",
"Error saving paste. Sorry.": "Помилка при збереженні допису. Вибачте.", "Error saving document. Sorry.": "Не вдалося зберегти документ. Вибачте.",
"Invalid paste ID.": "Неправильний ID допису.", "Invalid document ID.": "Хибний ідентифікатор документа.",
"Paste is not of burn-after-reading type.": "Тип допису не \"Знищити після прочитання\".", "Document is not of burn-after-reading type.": "Тип документа не «Знищити після прочитання».",
"Wrong deletion token. Paste was not deleted.": "Неправильний жетон вилучення допису. Допис не вилучено.", "Wrong deletion token. Document was not deleted.": "Хибний токен видалення. Документ не видалено.",
"Paste was properly deleted.": "Допис був вилучений повністю.", "Document was properly deleted.": "Документ видалено повністю.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Для роботи %s потрібен увімкнутий JavaScript. Вибачте.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "Для роботи %s потрібен увімкнутий JavaScript. Вибачте.",
"%s requires a modern browser to work.": "Для роботи %s потрібен більш сучасний браузер.", "%s requires a modern browser to work.": "Для роботи %s потрібен більш сучасний браузер.",
"New": "Новий допис", "New": "Новий документ",
"Create": "Створити", "Create": "Створити",
"Clone": "Дублювати", "Clone": "Дублювати",
"Raw text": "Початковий текст", "Raw text": "Початковий текст",
@@ -36,8 +36,8 @@
"Discussion": "Обговорення", "Discussion": "Обговорення",
"Toggle navigation": "Перемкнути навігацію", "Toggle navigation": "Перемкнути навігацію",
"%d seconds": [ "%d seconds": [
"%d секунд", "%d секунду",
"%d секунд", "%d секунди",
"%d секунд", "%d секунд",
"%d секунд", "%d секунд",
"%d секунд", "%d секунд",
@@ -92,148 +92,144 @@
"%d років" "%d років"
], ],
"Never": "Ніколи", "Never": "Ніколи",
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Примітка: Це тестовий сервіс: Дані можуть бути вилучені в будь який момент. Кошенята помруть, якщо ви будете зловживати сервісом.", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Примітка: це тестовий сервіс, і дані можуть бути видалені в будь-який момент. Будете зловживати — пси вам марша зіграють.",
"This document will expire in %d seconds.": [ "This document will expire in %d seconds.": [
"Документ буде вилучений через %d секунду.", "Документ буде видалено через %d секунду.",
"Документ буде вилучений через %d секунди.", "Документ буде видалено через %d секунди.",
"Документ буде вилучений через %d секунд.", "Документ буде видалено через %d секунд.",
"Документ буде вилучений через %d секунд.", "Документ буде видалено через %d секунд.",
"Документ буде вилучений через %d секунд.", "Документ буде видалено через %d секунд.",
"Документ буде вилучений через %d секунд." "Документ буде видалено через %d секунд."
], ],
"This document will expire in %d minutes.": [ "This document will expire in %d minutes.": [
"Документ буде вилучений через %d хвилину.", "Документ буде видалено через %d хвилину.",
"Документ буде вилучений через %d хвилини.", "Документ буде видалено через %d хвилини.",
"Документ буде вилучений через %d хвилин.", "Документ буде видалено через %d хвилин.",
"Документ буде вилучений через %d хвилин.", "Документ буде видалено через %d хвилин.",
"Документ буде вилучений через %d хвилин.", "Документ буде видалено через %d хвилин.",
"Документ буде вилучений через %d хвилин." "Документ буде видалено через %d хвилин."
], ],
"This document will expire in %d hours.": [ "This document will expire in %d hours.": [
"Документ буде вилучений через %d годину.", "Документ буде видалено через %d годину.",
"Документ буде вилучений через %d години.", "Документ буде видалено через %d години.",
"Документ буде вилучений через %d годин.", "Документ буде видалено через %d годин.",
"Документ буде вилучений через %d годин.", "Документ буде видалено через %d годин.",
"Документ буде вилучений через %d годин.", "Документ буде видалено через %d годин.",
"Документ буде вилучений через %d годин." "Документ буде видалено через %d годин."
], ],
"This document will expire in %d days.": [ "This document will expire in %d days.": [
"Документ буде вилучений через %d день.", "Документ буде видалено через %d день.",
"Документ буде вилучений через %d дні.", "Документ буде видалено через %d дні.",
"Документ буде вилучений через %d днів.", "Документ буде видалено через %d днів.",
"Документ буде вилучений через %d днів.", "Документ буде видалено через %d днів.",
"Документ буде вилучений через %d днів.", "Документ буде видалено через %d днів.",
"Документ буде вилучений через %d днів." "Документ буде видалено через %d днів."
], ],
"This document will expire in %d months.": [ "This document will expire in %d months.": [
"Документ буде вилучений через %d місяць.", "Документ буде видалено через %d місяць.",
"Документ буде вилучений через %d місяці.", "Документ буде видалено через %d місяці.",
"Документ буде вилучений через %d місяців.", "Документ буде видалено через %d місяців.",
"Документ буде вилучений через %d місяців.", "Документ буде видалено через %d місяців.",
"Документ буде вилучений через %d місяців.", "Документ буде видалено через %d місяців.",
"Документ буде вилучений через %d місяців." "Документ буде видалено через %d місяців."
], ],
"Please enter the password for this paste:": "Будь ласка, введіть пароль від допису:", "Please enter the password for this document:": "Введіть пароль від документа:",
"Could not decrypt data (Wrong key?)": "Неможливо розшифрувати дані (можливо, невірний ключ?)", "Could not decrypt data (Wrong key?)": "Неможливо розшифрувати дані (хибний ключ?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Неможливо вилучити допис, він не був збережений в режимі знищити після прочитання.", "Could not delete the document, it was not stored in burn after reading mode.": "Неможливо видалити документ, його не збережено в режимі «Знищити після прочитання».",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "ЛИШЕ ДЛЯ ВАШИХ ОЧЕЙ. Не закривайте це вікно, це повідомлення не може бути показано знову.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "ЛИШЕ ДЛЯ ВАС. Не закривайте вікно, це повідомлення одноразове.",
"Could not decrypt comment; Wrong key?": "Неможливо розшифрувати коментар; Неправильний ключ?", "Could not decrypt comment; Wrong key?": "Неможливо розшифрувати коментар. Хибний ключ?",
"Reply": "Відповісти", "Reply": "Відповісти",
"Anonymous": "Анонім", "Anonymous": "Анонім",
"Avatar generated from IP address": "Аватар зґенерований з IP-адреси", "Avatar generated from IP address": "Аватар зґенеровано з IP-адреси",
"Add comment": "Додати коментар", "Add comment": "Додати коментар",
"Optional nickname…": "Необов’язкове прізвисько…", "Optional nickname…": "Необов’язкове прізвисько…",
"Post comment": "Відправити коментар", "Post comment": "Надіслати коментар",
"Sending comment…": "Відправка коментаря…", "Sending comment…": "Надсилання коментаря…",
"Comment posted.": "Коментар опублікований.", "Comment posted.": "Коментар опубліковано.",
"Could not refresh display: %s": "Не вдалося оновити екран: %s", "Could not refresh display: %s": "Не вдалося оновити екран: %s",
"unknown status": "невідома причина", "unknown status": "невідома причина",
"server error or not responding": "помилка на сервері чи немає відповіді", "server error or not responding": "помилка на сервері чи немає відповіді",
"Could not post comment: %s": "Не вдалося опублікувати коментар: %s", "Could not post comment: %s": "Не вдалося опублікувати коментар: %s",
"Sending paste…": "Відправка допису…", "Sending document…": "Надсилання документа…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Посилання на допис <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Тисніть <kbd>Ctrl</kbd>+<kbd>c</kbd>, щоб скопіювати посилання)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "Документ: <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(копіювати: <kbd>Ctrl</kbd>+<kbd>c</kbd>)</span>",
"Delete data": "Видалити допис", "Delete data": "Видалити дані",
"Could not create paste: %s": "Не вдалося опублікувати допис: %s", "Could not create document: %s": "Не вдалося опублікувати документ: %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Неможливо розшифрувати запис: Ключ дешифрування відсутній в посиланні (Можливо, ви використовуєте скорочувач посилань, що видаляє частину посилання?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Не вдається розшифрувати документ: ключ дешифрування відсутній у посиланні (можливо, ваш сервіс переспрямування чи скорочення посилань видаляє частину посилання?)",
"B": "байт", "B": "Б",
"KiB": "Кбайт", "kB": "кБ",
"MiB": "Мбайт", "MB": "МБ",
"GiB": байт", "GB": Б",
"TiB": "Тбайт", "TB": "ТБ",
"PiB": байт", "PB": Б",
"EiB": "Ебайт", "EB": "ЕБ",
"ZiB": "Збайт", "ZB": "ЗБ",
"YiB": байт", "YB": Б",
"kB": "кбайт",
"MB": "Мбайт",
"GB": "Гбайт",
"TB": "Тбайт",
"PB": "Пбайт",
"EB": "Ебайт",
"ZB": "Збайт",
"YB": "Йбайт",
"Format": "Формат", "Format": "Формат",
"Plain Text": "Звичайний текст", "Plain Text": "Звичайний текст",
"Source Code": "Вихідний код", "Source Code": "Вихідний код",
"Markdown": "Мова розмітки", "Markdown": "Мова розмітки",
"Download attachment": "Звантажити прикріплений файл", "Download attachment": "Завантажити вкладення",
"Cloned: '%s'": "Дубльовано: '%s'", "Cloned: '%s'": "Дубльовано: «%s»",
"The cloned file '%s' was attached to this paste.": "Дублікат файлу '%s' був прикріплений до цього запису.", "The cloned file '%s' was attached to this document.": "Дублікат файлу «%s» вкладено до цього документа.",
"Attach a file": "Прикріпити файл", "Attach a file": "Вкласти файл",
"alternatively drag & drop a file or paste an image from the clipboard": "також можна перенести файл у вікно переглядача чи вставити зображення з буфера", "alternatively drag & drop a file or paste an image from the clipboard": "також можна перенести файл у вікно браузера чи вставити зображення з буфера",
"File too large, to display a preview. Please download the attachment.": "Файл завеликий для відображення передогляду. Будь ласка, звантажте прикріплений файл.", "File too large, to display a preview. Please download the attachment.": "Файл завеликий для передогляду. Будь ласка, завантажте вкладення.",
"Remove attachment": "Видалити вкладення", "Remove attachment": "Видалити вкладення",
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Ваш переглядач не підтримує відправлення зашифрованих файлів. Використовуйте сучасніший переглядач.", "Your browser does not support uploading encrypted files. Please use a newer browser.": "Ваш браузер не підтримує надсилання зашифрованих файлів. Використовуйте сучасніший браузер.",
"Invalid attachment.": "Невідоме вкладення.", "Invalid attachment.": "Непідтримуване вкладення.",
"Options": "Опції", "Options": "Опції",
"Shorten URL": "Коротке посилання", "Shorten URL": "Коротке посилання",
"Editor": "Редактор", "Editor": "Редактор",
"Preview": "Передогляд", "Preview": "Передогляд",
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "Змінна PATH необхідна %s в конці \"%s\". Будь ласка, оновіть змінну PATH у вашому index.php.", "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "Для роботи %s у кінці змінної PATH має бути «%s». Будь ласка, оновіть змінну PATH у вашому index.php.",
"Decrypt": "Розшифрувати", "Decrypt": "Розшифрувати",
"Enter password": "Введіть пароль", "Enter password": "Введіть пароль",
"Loading…": "Завантаження…", "Loading…": "Завантаження…",
"Decrypting paste…": "Розшифровування допису…", "Decrypting document…": "Розшифрування документа…",
"Preparing new paste…": риготування нового допису…", "Preparing new document…": ідготовка нового документа…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Якщо це повідомлення не зникатиме тривалий час, подивіться <a href=\"%s\">цей FAQ з інформацією про можливе вирішення проблеми</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Якщо це повідомлення не зникатиме тривалий час, подивіться <a href=\"%s\">цей FAQ з інформацією про можливе вирішення проблеми</a>.",
"+++ no paste text +++": "+++ у дописі немає тексту +++", "+++ no document text +++": "+++ документ без тексту +++",
"Could not get paste data: %s": "Не вдалося отримати дані допису: %s", "Could not get document data: %s": "Не вдалося отримати дані документа: %s",
"QR code": "QR код", "QR code": "QR код",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Цей сайт використовує незахищене HTTP підключення! Будь ласка, використовуйте його лише для тестування.", "This website is using an insecure HTTP connection! Please use it only for testing.": "Сайт використовує незахищене HTTP-з'єднання! Користуйтесь лише для тестування.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": ля подробиць <a href=\"%s\">дивіться інформацію в FAQ</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.": окладніше — <a href=\"%s\">в FAQ</a>.",
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Ваш переглядач вимагає підключення HTTPS для підтримки WebCrypto API. Спробуйте <a href=\"%s\">перемкнутися на HTTPS</a>.", "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "WebCrypto API може не працювати у вашому браузері без HTTPS-з'єднання. Спробуйте <a href=\"%s\">перемкнутися на HTTPS</a>.",
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Ваш переглядач не підтримує WebAssembly, що використовується для стиснення zlib. Ви можете створювати нестиснені документи, але не зможете читати стиснені.", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Ваш браузер не підтримує WebAssembly, без якого zlib-стиснення не працює. Ви можете створювати нестиснені документи, але не можете читати стиснені.",
"waiting on user to provide a password": "очікування користувача для вводу паролю", "waiting on user to provide a password": "очікування користувача для вводу пароля",
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Не вдалося розшифрувати дані. Може, ви ввели неправильний пароль? Спробуйте знову за допомогою верхньої кнопки.", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Не вдалося розшифрувати дані. Може, ви ввели неправильний пароль? Спробуйте знову за допомогою верхньої кнопки.",
"Retry": "Спробуйте ще раз", "Retry": "Спробуйте ще раз",
"Showing raw text…": "Відображається неформатований текст…", "Showing raw text…": "Показано неформатований текст…",
"Notice:": "Зверніть увагу:", "Notice:": "Зверніть увагу:",
"This link will expire after %s.": "Термін дії цього посилання сплине через %s.", "This link will expire after %s.": "Термін дії цього посилання сплине через %s.",
"This link can only be accessed once, do not use back or refresh button in your browser.": "Дане посилання доступна тільки один раз, не натискайте кнопку назад та не обновляйте сторінку браузера.", "This link can only be accessed once, do not use back or refresh button in your browser.": "Посилання доступне тільки один раз, не натискайте кнопку «Назад» і не оновлюйте сторінку браузера.",
"Link:": "Посилання:", "Link:": "Посилання:",
"Recipient may become aware of your timezone, convert time to UTC?": "Отримувач дізнається ваш часовий пояс, перетворити час в UTC?", "Recipient may become aware of your timezone, convert time to UTC?": "Отримувач дізнається ваш часовий пояс, перетворити час в UTC?",
"Use Current Timezone": "Використовувати поточний часовий пояс", "Use Current Timezone": "Використовувати поточний часовий пояс",
"Convert To UTC": "Конвертувати в UTC", "Convert To UTC": "Конвертувати в UTC",
"Close": "Закрити", "Close": "Закрити",
"Encrypted note on %s": "Зашифрована нотатка на %s", "Encrypted note on %s": "Зашифрована нотатка в %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Відвідайте посилання, щоб переглянути нотатку. Передача посилання будь-кому дозволить їм переглянути нотатку.", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Відвідайте посилання, щоб переглянути нотатку. Передача посилання будь-кому дозволить їм переглянути нотатку.",
"URL shortener may expose your decrypt key in URL.": "Сервіс скорочення посилань може викрити ваш ключ дешифрування з URL.", "URL shortener may expose your decrypt key in URL.": "Сервіс скорочення посилань може викрити ваш ключ дешифрування з URL.",
"Save paste": "Зберегти вставку", "URL shortener is enabled by default.": "Скорочення посилань типово увімкнено.",
"Your IP is not authorized to create pastes.": "Вашому IP не дозволено створювати вставки.", "Save document": "Зберегти документ",
"Trying to shorten a URL that isn't pointing at our instance.": "Спроба скоротити URL, який не вказує на наш екземпляр.", "Your IP is not authorized to create documents.": "Вашій IP-адресі не дозволено створювати документи.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Помилка виклику YOURLS. Ймовірно проблема з налаштуванням, наприклад \"apiurl\" чи \"signature\".", "Trying to shorten a URL that isn't pointing at our instance.": "Спроба скоротити URL, який не вказує на наш сервер.",
"Error parsing YOURLS response.": "Помилка розбору відповіді YOURLS.", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Помилка проксі: не вказано URL-адреси проксі. Ймовірно, проблема в налаштуваннях: ключі конфігурації можуть бути відсутні або містити одрук.",
"Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Помилка проксі: не вдається розпізнати відповідь проксі. Ймовірно, проблема в налаштуваннях: ключі конфігурації можуть бути відсутні або містити одрук",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Помилка проксі: хибна відповідь. Ймовірно, проблема в налаштуваннях: ключі конфігурації можуть бути відсутні або містити одрук.",
"This secret message can only be displayed once. Would you like to see it now?": "Це таємне повідомлення можна надіслати лише один раз. Хочете переглянути його зараз?", "This secret message can only be displayed once. Would you like to see it now?": "Це таємне повідомлення можна надіслати лише один раз. Хочете переглянути його зараз?",
"Yes, see it": "Так, побачити", "Yes, see it": "Так, побачити",
"Dark Mode": "Темний режим", "Dark Mode": "Темний режим",
"Error compressing paste, due to missing WebAssembly support.": "Помилка при стисканні допису, через відсутність підтримки WebAssembly сервера.", "Error compressing document, due to missing WebAssembly support.": "Помилка стиснення документа: сервер не підтримує WebAssembly.",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Помилка при розпакуванні допису, бо ваш браузер не підтримує WebAssembly. Будь ласка, відкрийте в іншому браузері для перегляду цього допису.", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Помилка розпакування документа: браузер не підтримує WebAssembly. Спробуйте відкрити документ в іншому браузері.",
"Start over": "Почати знову", "Start over": "Почати знову",
"Paste copied to clipboard": "Paste copied to clipboard", "Document copied to clipboard": "Документ скопійовано до буфера",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "Щоб скопіювати документ, натисніть кнопку «Копіювати» чи клавіші <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
"Copy link": "Copy link", "Copy link": "Копіювати посилання",
"Link copied to clipboard": "Link copied to clipboard", "Link copied to clipboard": "Посилання скопійовано до буфера",
"Paste text": "Paste text", "Document text": "Текст документа",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Клавіша Tab вводить символ табуляції (перемикається клавішами <kbd>Ctrl</kbd>+<kbd>m</kbd> чи <kbd>Esc</kbd>)",
"Theme": "Theme" "Show password": "Показати пароль",
"Hide password": "Сховати пароль",
"Theme": "Тема"
} }
+32 -36
View File
@@ -1,9 +1,9 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s 是一个极简、开源、对粘贴内容毫不知情的在线粘贴板,数据%s在浏览器内%s进行 AES-256 加密和解密。", "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s 是一个极简、开源、对粘贴内容毫不知情的在线粘贴板,数据%s在浏览器内%s进行 AES-256 加密和解密。",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "更多信息请查看<a href=\"https://privatebin.info/\">项目主页</a>。", "More information on the <a href=\"https://privatebin.info/\">project page</a>.": "更多信息请查看<a href=\"https://privatebin.info/\">项目主页</a>。",
"Because ignorance is bliss": "以不知为幸", "Because ignorance is bliss": "以不知为幸",
"Paste does not exist, has expired or has been deleted.": "粘贴内容不存在、已过期或已被删除。", "Document does not exist, has expired or has been deleted.": "粘贴内容不存在、已过期或已被删除。",
"%s requires php %s or above to work. Sorry.": "抱歉,%s 需要 PHP %s 及以上版本才能运行。", "%s requires php %s or above to work. Sorry.": "抱歉,%s 需要 PHP %s 及以上版本才能运行。",
"%s requires configuration section [%s] to be present in configuration file.": "%s 需要设置配置文件中的 [%s] 部分。", "%s requires configuration section [%s] to be present in configuration file.": "%s 需要设置配置文件中的 [%s] 部分。",
"Please wait %d seconds between each post.": [ "Please wait %d seconds between each post.": [
@@ -14,15 +14,15 @@
"每 %d 秒只能创建一次粘贴。", "每 %d 秒只能创建一次粘贴。",
"每 %d 秒只能创建一次粘贴。" "每 %d 秒只能创建一次粘贴。"
], ],
"Paste is limited to %s of encrypted data.": "对于加密数据,上限为 %s。", "Document is limited to %s of encrypted data.": "对于加密数据,上限为 %s。",
"Invalid data.": "无效的数据。", "Invalid data.": "无效的数据。",
"You are unlucky. Try again.": "请再试一次。", "You are unlucky. Try again.": "请再试一次。",
"Error saving comment. Sorry.": "保存评论时出现错误,抱歉。", "Error saving comment. Sorry.": "保存评论时出现错误,抱歉。",
"Error saving paste. Sorry.": "保存粘贴内容时出现错误,抱歉。", "Error saving document. Sorry.": "保存粘贴内容时出现错误,抱歉。",
"Invalid paste ID.": "无效的 ID。", "Invalid document ID.": "无效的 ID。",
"Paste is not of burn-after-reading type.": "粘贴内容不是阅后即焚类型。", "Document is not of burn-after-reading type.": "粘贴内容不是阅后即焚类型。",
"Wrong deletion token. Paste was not deleted.": "错误的删除token,粘贴内容没有被删除。", "Wrong deletion token. Document was not deleted.": "错误的删除token,粘贴内容没有被删除。",
"Paste was properly deleted.": "粘贴内容已被正确删除。", "Document was properly deleted.": "粘贴内容已被正确删除。",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "%s 需要 JavaScript 来进行加解密。 给你带来的不便敬请谅解。", "JavaScript is required for %s to work. Sorry for the inconvenience.": "%s 需要 JavaScript 来进行加解密。 给你带来的不便敬请谅解。",
"%s requires a modern browser to work.": "%s 需要在现代浏览器上工作。", "%s requires a modern browser to work.": "%s 需要在现代浏览器上工作。",
"New": "新建", "New": "新建",
@@ -133,9 +133,9 @@
"这份文档将在 %d 个月后过期。", "这份文档将在 %d 个月后过期。",
"这份文档将在 %d 个月后过期。" "这份文档将在 %d 个月后过期。"
], ],
"Please enter the password for this paste:": "请输入这份粘贴内容的密码:", "Please enter the password for this document:": "请输入这份粘贴内容的密码:",
"Could not decrypt data (Wrong key?)": "无法解密数据(密钥错误?)", "Could not decrypt data (Wrong key?)": "无法解密数据(密钥错误?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "无法删除此粘贴内容,它没有以阅后即焚模式保存。", "Could not delete the document, it was not stored in burn after reading mode.": "无法删除此粘贴内容,它没有以阅后即焚模式保存。",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "睁大眼睛看清楚!不要关闭窗口,否则你再也见不到这条消息了。", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "睁大眼睛看清楚!不要关闭窗口,否则你再也见不到这条消息了。",
"Could not decrypt comment; Wrong key?": "无法解密评论;密钥错误?", "Could not decrypt comment; Wrong key?": "无法解密评论;密钥错误?",
"Reply": "回复", "Reply": "回复",
@@ -150,20 +150,12 @@
"unknown status": "未知状态", "unknown status": "未知状态",
"server error or not responding": "服务器错误或无回应", "server error or not responding": "服务器错误或无回应",
"Could not post comment: %s": "无法发送评论: %s", "Could not post comment: %s": "无法发送评论: %s",
"Sending paste…": "正在发送粘贴内容…", "Sending document…": "正在发送粘贴内容…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "您粘贴内容的链接是 <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(按下 <kbd>Ctrl</kbd>+<kbd>c</kbd> 以复制)</span>", "Your document is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>": "您粘贴内容的链接是 <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(按下 <kbd>Ctrl</kbd>+<kbd>c</kbd> 以复制)</span>",
"Delete data": "删除数据", "Delete data": "删除数据",
"Could not create paste: %s": "无法创建粘贴:%s", "Could not create document: %s": "无法创建粘贴:%s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "无法解密粘贴:URL中缺失解密密钥(是否使用了重定向或者短链接导致密钥丢失?)", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "无法解密粘贴:URL中缺失解密密钥(是否使用了重定向或者短链接导致密钥丢失?)",
"B": "B", "B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"kB": "kB", "kB": "kB",
"MB": "MB", "MB": "MB",
"GB": "GB", "GB": "GB",
@@ -178,7 +170,7 @@
"Markdown": "Markdown", "Markdown": "Markdown",
"Download attachment": "下载附件", "Download attachment": "下载附件",
"Cloned: '%s'": "副本:“%s”", "Cloned: '%s'": "副本:“%s”",
"The cloned file '%s' was attached to this paste.": "副本“%s”已附加到此粘贴内容。", "The cloned file '%s' was attached to this document.": "副本“%s”已附加到此粘贴内容。",
"Attach a file": "添加一个附件", "Attach a file": "添加一个附件",
"alternatively drag & drop a file or paste an image from the clipboard": "拖放文件或从剪贴板粘贴图片", "alternatively drag & drop a file or paste an image from the clipboard": "拖放文件或从剪贴板粘贴图片",
"File too large, to display a preview. Please download the attachment.": "文件过大,无法显示预览。请下载附件。", "File too large, to display a preview. Please download the attachment.": "文件过大,无法显示预览。请下载附件。",
@@ -193,11 +185,11 @@
"Decrypt": "解密", "Decrypt": "解密",
"Enter password": "输入密码", "Enter password": "输入密码",
"Loading…": "载入中…", "Loading…": "载入中…",
"Decrypting paste…": "正在解密…", "Decrypting document…": "正在解密…",
"Preparing new paste…": "正在准备新的粘贴内容…", "Preparing new document…": "正在准备新的粘贴内容…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "如果此消息一直存在,请参考 <a href=\"%s\">这里的 FAQ(英文版)</a>排除故障。", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "如果此消息一直存在,请参考 <a href=\"%s\">这里的 FAQ(英文版)</a>排除故障。",
"+++ no paste text +++": "+++ 无粘贴内容 +++", "+++ no document text +++": "+++ 无粘贴内容 +++",
"Could not get paste data: %s": "无法获取粘贴数据:%s", "Could not get document data: %s": "无法获取粘贴数据:%s",
"QR code": "二维码", "QR code": "二维码",
"This website is using an insecure HTTP connection! Please use it only for testing.": "该网站使用了不安全的 HTTP 连接!请仅将其用于测试。", "This website is using an insecure HTTP connection! Please use it only for testing.": "该网站使用了不安全的 HTTP 连接!请仅将其用于测试。",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "有关更多信息,请参阅<a href=\"%s\">此常见问题解答</a>。", "For more information <a href=\"%s\">see this FAQ entry</a>.": "有关更多信息,请参阅<a href=\"%s\">此常见问题解答</a>。",
@@ -218,22 +210,26 @@
"Encrypted note on %s": "%s 上的加密笔记", "Encrypted note on %s": "%s 上的加密笔记",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "访问此链接来查看该笔记。将此 URL 发送给任何人即可允许其访问该笔记。", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "访问此链接来查看该笔记。将此 URL 发送给任何人即可允许其访问该笔记。",
"URL shortener may expose your decrypt key in URL.": "短链接服务可能会暴露您在 URL 中的解密密钥。", "URL shortener may expose your decrypt key in URL.": "短链接服务可能会暴露您在 URL 中的解密密钥。",
"Save paste": "保存内容", "URL shortener is enabled by default.": "默认已启用 URL 缩短功能。",
"Your IP is not authorized to create pastes.": "您的 IP 无权创建粘贴。", "Save document": "保存内容",
"Your IP is not authorized to create documents.": "您的 IP 无权创建粘贴。",
"Trying to shorten a URL that isn't pointing at our instance.": "尝试缩短一个不指向我们实例的URL。", "Trying to shorten a URL that isn't pointing at our instance.": "尝试缩短一个不指向我们实例的URL。",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "调用 YOURLS 时出错。可能是配置问题,例如“apiurl”或“signature”错误或缺失。", "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "调用 YOURLS 时出错。可能是配置问题,例如“apiurl”或“signature”错误或缺失。",
"Error parsing YOURLS response.": "解析 YOURLS 响应时出错。", "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "解析 YOURLS 响应时出错。",
"Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "代理错误:响应无效。这可能是配置问题,例如配置密钥错误或丢失,或者临时中断。",
"This secret message can only be displayed once. Would you like to see it now?": "读取粘贴后只能在加载时显示一次。您想现在打开吗?", "This secret message can only be displayed once. Would you like to see it now?": "读取粘贴后只能在加载时显示一次。您想现在打开吗?",
"Yes, see it": "是的,加载它", "Yes, see it": "是的,加载它",
"Dark Mode": "夜间模式", "Dark Mode": "夜间模式",
"Error compressing paste, due to missing WebAssembly support.": "由于缺少 WebAssembly 支持,在压缩粘贴时出错。", "Error compressing document, due to missing WebAssembly support.": "由于缺少 WebAssembly 支持,在压缩粘贴时出错。",
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "解压粘贴时出错,您的浏览器不支持 WebAssembly。请使用其他浏览器查看此粘贴。", "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "解压粘贴时出错,您的浏览器不支持 WebAssembly。请使用其他浏览器查看此粘贴。",
"Start over": "重新开始", "Start over": "重新开始",
"Paste copied to clipboard": "粘贴内容已复制到剪贴板", "Document copied to clipboard": "粘贴内容已复制到剪贴板",
"To copy paste press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "要复制粘贴内容,请点击复制按钮或使用快捷键 <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>。", "To copy document press on the copy button or use the clipboard shortcut <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>": "要复制粘贴内容,请点击复制按钮或使用快捷键 <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>。",
"Copy link": "复制链接", "Copy link": "复制链接",
"Link copied to clipboard": "链接已复制到剪贴板", "Link copied to clipboard": "链接已复制到剪贴板",
"Paste text": "粘贴文本", "Document text": "粘贴文本",
"Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tab 键可作为字符(按 <kbd>Ctrl</kbd>+<kbd>m</kbd> 或 <kbd>Esc</kbd> 切换开关)", "Tabulator key serves as character (Hit <kbd>Ctrl</kbd>+<kbd>m</kbd> or <kbd>Esc</kbd> to toggle)": "Tab 键可作为字符(按 <kbd>Ctrl</kbd>+<kbd>m</kbd> 或 <kbd>Esc</kbd> 切换开关)",
"Show password": "显示密码",
"Hide password": "隐藏密码",
"Theme": "主题" "Theme": "主题"
} }
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 9.5 KiB

After

Width:  |  Height:  |  Size: 11 KiB

-237
View File
@@ -1,237 +0,0 @@
/*
* $Id: base64.js,v 1.7 2012/08/23 10:30:18 dankogai Exp dankogai $
*
* Licensed under the MIT license.
* https://www.opensource.org/licenses/mit-license.php
*
* References:
* https://en.wikipedia.org/wiki/Base64
*/
(function(global){
var b64chars
= 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
var b64charcodes = function(){
var a = [];
var codeA = 'A'.charCodeAt(0);
var codea = 'a'.charCodeAt(0);
var code0 = '0'.charCodeAt(0);
for (var i = 0; i < 26; i ++) a.push(codeA + i);
for (var i = 0; i < 26; i ++) a.push(codea + i);
for (var i = 0; i < 10; i ++) a.push(code0 + i);
a.push('+'.charCodeAt(0));
a.push('/'.charCodeAt(0));
return a;
}();
var b64tab = function(bin){
var t = {};
for (var i = 0, l = bin.length; i < l; i++) t[bin.charAt(i)] = i;
return t;
}(b64chars);
var stringToArray = function(s){
var a = [];
for (var i = 0, l = s.length; i < l; i ++) a[i] = s.charCodeAt(i);
return a;
};
var convertUTF8ArrayToBase64 = function(bin){
var padlen = 0;
while (bin.length % 3){
bin.push(0);
padlen++;
};
var b64 = [];
for (var i = 0, l = bin.length; i < l; i += 3){
var c0 = bin[i], c1 = bin[i+1], c2 = bin[i+2];
if (c0 >= 256 || c1 >= 256 || c2 >= 256)
throw 'unsupported character found';
var n = (c0 << 16) | (c1 << 8) | c2;
b64.push(
b64charcodes[ n >>> 18],
b64charcodes[(n >>> 12) & 63],
b64charcodes[(n >>> 6) & 63],
b64charcodes[ n & 63]
);
}
while (padlen--) b64[b64.length - padlen - 1] = '='.charCodeAt(0);
return chunkStringFromCharCodeApply(b64);
};
var convertBase64ToUTF8Array = function(b64){
b64 = b64.replace(/[^A-Za-z0-9+\/]+/g, '');
var bin = [];
var padlen = b64.length % 4;
for (var i = 0, l = b64.length; i < l; i += 4){
var n = ((b64tab[b64.charAt(i )] || 0) << 18)
| ((b64tab[b64.charAt(i+1)] || 0) << 12)
| ((b64tab[b64.charAt(i+2)] || 0) << 6)
| ((b64tab[b64.charAt(i+3)] || 0));
bin.push(
( n >> 16 ),
( (n >> 8) & 0xff ),
( n & 0xff )
);
}
bin.length -= [0,0,2,1][padlen];
return bin;
};
var convertUTF16ArrayToUTF8Array = function(uni){
var bin = [];
for (var i = 0, l = uni.length; i < l; i++){
var n = uni[i];
if (n < 0x80)
bin.push(n);
else if (n < 0x800)
bin.push(
0xc0 | (n >>> 6),
0x80 | (n & 0x3f));
else
bin.push(
0xe0 | ((n >>> 12) & 0x0f),
0x80 | ((n >>> 6) & 0x3f),
0x80 | (n & 0x3f));
}
return bin;
};
var convertUTF8ArrayToUTF16Array = function(bin){
var uni = [];
for (var i = 0, l = bin.length; i < l; i++){
var c0 = bin[i];
if (c0 < 0x80){
uni.push(c0);
}else{
var c1 = bin[++i];
if (c0 < 0xe0){
uni.push(((c0 & 0x1f) << 6) | (c1 & 0x3f));
}else{
var c2 = bin[++i];
uni.push(
((c0 & 0x0f) << 12) | ((c1 & 0x3f) << 6) | (c2 & 0x3f)
);
}
}
}
return uni;
};
var convertUTF8StringToBase64 = function(bin){
return convertUTF8ArrayToBase64(stringToArray(bin));
};
var convertBase64ToUTF8String = function(b64){
return chunkStringFromCharCodeApply(convertBase64ToUTF8Array(b64));
};
var convertUTF8StringToUTF16Array = function(bin){
return convertUTF8ArrayToUTF16Array(stringToArray(bin));
};
var convertUTF8ArrayToUTF16String = function(bin){
return chunkStringFromCharCodeApply(convertUTF8ArrayToUTF16Array(bin));
};
var convertUTF8StringToUTF16String = function(bin){
return chunkStringFromCharCodeApply(
convertUTF8ArrayToUTF16Array(stringToArray(bin))
);
};
var convertUTF16StringToUTF8Array = function(uni){
return convertUTF16ArrayToUTF8Array(stringToArray(uni));
};
var convertUTF16ArrayToUTF8String = function(uni){
return chunkStringFromCharCodeApply(convertUTF16ArrayToUTF8Array(uni));
};
var convertUTF16StringToUTF8String = function(uni){
return chunkStringFromCharCodeApply(
convertUTF16ArrayToUTF8Array(stringToArray(uni))
);
};
/*
* String.fromCharCode.apply will only handle arrays as big as 65536,
* after that it'll return a truncated string with no warning.
*/
var chunkStringFromCharCodeApply = function(arr){
var strs = [], i;
for (i = 0; i < arr.length; i += 65536){
strs.push(String.fromCharCode.apply(String, arr.slice(i, i+65536)));
}
return strs.join('');
};
if (global.btoa){
var btoa = global.btoa;
var convertUTF16StringToBase64 = function (uni){
return btoa(convertUTF16StringToUTF8String(uni));
};
}
else {
var btoa = convertUTF8StringToBase64;
var convertUTF16StringToBase64 = function (uni){
return convertUTF8ArrayToBase64(convertUTF16StringToUTF8Array(uni));
};
}
if (global.atob){
var atob = global.atob;
var convertBase64ToUTF16String = function (b64){
return convertUTF8StringToUTF16String(atob(b64));
};
}
else {
var atob = convertBase64ToUTF8String;
var convertBase64ToUTF16String = function (b64){
return convertUTF8ArrayToUTF16String(convertBase64ToUTF8Array(b64));
};
}
global.Base64 = {
convertUTF8ArrayToBase64:convertUTF8ArrayToBase64,
convertByteArrayToBase64:convertUTF8ArrayToBase64,
convertBase64ToUTF8Array:convertBase64ToUTF8Array,
convertBase64ToByteArray:convertBase64ToUTF8Array,
convertUTF16ArrayToUTF8Array:convertUTF16ArrayToUTF8Array,
convertUTF16ArrayToByteArray:convertUTF16ArrayToUTF8Array,
convertUTF8ArrayToUTF16Array:convertUTF8ArrayToUTF16Array,
convertByteArrayToUTF16Array:convertUTF8ArrayToUTF16Array,
convertUTF8StringToBase64:convertUTF8StringToBase64,
convertBase64ToUTF8String:convertBase64ToUTF8String,
convertUTF8StringToUTF16Array:convertUTF8StringToUTF16Array,
convertUTF8ArrayToUTF16String:convertUTF8ArrayToUTF16String,
convertByteArrayToUTF16String:convertUTF8ArrayToUTF16String,
convertUTF8StringToUTF16String:convertUTF8StringToUTF16String,
convertUTF16StringToUTF8Array:convertUTF16StringToUTF8Array,
convertUTF16StringToByteArray:convertUTF16StringToUTF8Array,
convertUTF16ArrayToUTF8String:convertUTF16ArrayToUTF8String,
convertUTF16StringToUTF8String:convertUTF16StringToUTF8String,
convertUTF16StringToBase64:convertUTF16StringToBase64,
convertBase64ToUTF16String:convertBase64ToUTF16String,
fromBase64:convertBase64ToUTF8String,
toBase64:convertUTF8StringToBase64,
atob:atob,
btoa:btoa,
utob:convertUTF16StringToUTF8String,
btou:convertUTF8StringToUTF16String,
encode:convertUTF16StringToBase64,
encodeURI:function(u){
return convertUTF16StringToBase64(u).replace(/[+\/]/g, function(m0){
return m0 == '+' ? '-' : '_';
}).replace(/=+$/, '');
},
decode:function(a){
return convertBase64ToUTF16String(a.replace(/[-_]/g, function(m0){
return m0 == '-' ? '+' : '/';
}));
}
};
})(this);
+1 -3
View File
@@ -10,7 +10,6 @@ global.WebCrypto = require('@peculiar/webcrypto').Crypto;
// application libraries to test // application libraries to test
global.$ = global.jQuery = require('./jquery-3.7.1'); global.$ = global.jQuery = require('./jquery-3.7.1');
global.RawDeflate = require('./rawinflate-0.3').RawDeflate;
global.zlib = require('./zlib-1.3.1-1').zlib; global.zlib = require('./zlib-1.3.1-1').zlib;
require('./prettify'); require('./prettify');
global.prettyPrint = window.PR.prettyPrint; global.prettyPrint = window.PR.prettyPrint;
@@ -19,7 +18,6 @@ global.showdown = require('./showdown-2.1.0');
global.DOMPurify = require('./purify-3.3.0'); global.DOMPurify = require('./purify-3.3.0');
global.baseX = require('./base-x-5.0.1').baseX; global.baseX = require('./base-x-5.0.1').baseX;
global.Legacy = require('./legacy').Legacy; global.Legacy = require('./legacy').Legacy;
require('./bootstrap-3.4.1');
require('./privatebin'); require('./privatebin');
// internal variables // internal variables
@@ -134,7 +132,7 @@ exports.jscMimeTypes = function() {
return jsc.elements(mimeTypes); return jsc.elements(mimeTypes);
}; };
// provides a random PrivateBin paste formatter // provides a random PrivateBin document formatter
exports.jscFormats = function() { exports.jscFormats = function() {
return jsc.elements(formats); return jsc.elements(formats);
}; };
+226
View File
@@ -0,0 +1,226 @@
const globals = require('globals');
const { globalIgnores } = require('eslint/config')
module.exports = [globalIgnores(["./*.js", "!./privatebin.js"]), {
languageOptions: {
globals: {
...globals.amd,
...globals.browser,
...globals.jquery,
...globals.node,
...globals.mocha,
DOMPurify: "readonly",
cleanup: "writable",
describe: "readonly",
jsc: "readonly",
jsdom: "writable",
kjua: "writable",
WebCrypto: "writable",
},
// async & await are ECMAScript 2017 features, unicode character class escape are ECMAScript 2018 features
ecmaVersion: 2018,
sourceType: "commonjs",
},
rules: {
"comma-dangle": ["error", "never"],
"no-cond-assign": 2,
"no-console": 0,
"no-constant-condition": 2,
"no-control-regex": 2,
"no-debugger": 2,
"no-dupe-args": 2,
"no-dupe-keys": 2,
"no-duplicate-case": 2,
"no-empty": 2,
"no-empty-character-class": 2,
"no-ex-assign": 2,
"no-extra-boolean-cast": 2,
"no-extra-parens": 0,
"no-extra-semi": 2,
"no-func-assign": 2,
"no-inner-declarations": ["error", "functions"],
"no-invalid-regexp": 2,
"no-irregular-whitespace": 2,
"no-negated-in-lhs": 2,
"no-obj-calls": 2,
"no-regex-spaces": 2,
"no-sparse-arrays": 2,
"no-unexpected-multiline": 2,
"no-unreachable": 2,
"use-isnan": 2,
"valid-jsdoc": 0,
"valid-typeof": 2,
// Best Practices
"accessor-pairs": 2,
"block-scoped-var": 0,
complexity: ["error", 20],
"consistent-return": 0,
curly: 0,
"default-case": 0,
"dot-location": 0,
"dot-notation": 0,
eqeqeq: 2,
"guard-for-in": 2,
"no-alert": 0,
"no-caller": 2,
"no-case-declarations": 2,
"no-div-regex": 2,
"no-else-return": 0,
"no-empty-pattern": 2,
"no-eq-null": 2,
"no-eval": 2,
"no-extend-native": 2,
"no-extra-bind": 2,
"no-fallthrough": 2,
"no-floating-decimal": 0,
"no-implicit-coercion": 0,
"no-implied-eval": 2,
"no-invalid-this": 0,
"no-iterator": 2,
"no-labels": 0,
"no-lone-blocks": 2,
"no-loop-func": 2,
"no-magic-number": 0,
"no-multi-spaces": 0,
"no-multi-str": 0,
"no-native-reassign": 2,
"no-new-func": 2,
"no-new-wrappers": 2,
"no-new": 2,
"no-octal-escape": 2,
"no-octal": 2,
"no-proto": 2,
"no-redeclare": 0,
"no-return-assign": 2,
"no-script-url": 2,
"no-self-compare": 2,
"no-sequences": 0,
"no-throw-literal": 0,
"no-unused-expressions": 2,
"no-useless-call": 2,
"no-useless-concat": 2,
"no-void": 2,
"no-warning-comments": 0,
"no-with": 2,
radix: 2,
"vars-on-top": 0,
"wrap-iife": 0,
yoda: 0,
// Strict
strict: 0,
// Variables
"init-declarations": 0,
"no-catch-shadow": 2,
"no-delete-var": 2,
"no-label-var": 2,
"no-shadow-restricted-names": 2,
"no-shadow": 0,
"no-undef-init": 2,
"no-undef": 0,
"no-undefined": 0,
"no-unused-vars": 0,
"no-use-before-define": 0,
// Node.js and CommonJS
"callback-return": 2,
"global-require": 2,
"handle-callback-err": 2,
"no-mixed-requires": 0,
"no-new-require": 0,
"no-path-concat": 2,
"no-process-exit": 2,
"no-restricted-modules": 0,
"no-sync": 0,
// Stylistic Issues
"array-bracket-spacing": 0,
"block-spacing": 0,
"brace-style": 0,
camelcase: 0,
"comma-spacing": 0,
"comma-style": 0,
"computed-property-spacing": 0,
"consistent-this": 0,
"eol-last": 0,
"func-names": 0,
"func-style": 0,
"id-length": 0,
"id-match": 0,
indent: 0,
"jsx-quotes": 0,
"key-spacing": 0,
"linebreak-style": 0,
"lines-around-comment": 0,
"max-depth": 0,
"max-len": 0,
"max-nested-callbacks": 0,
"max-params": 0,
"max-statements": ["error", 60],
"new-cap": 0,
"new-parens": 0,
"newline-after-var": 0,
"no-array-constructor": 0,
"no-bitwise": 0,
"no-continue": 0,
"no-inline-comments": 0,
"no-lonely-if": 0,
"no-mixed-spaces-and-tabs": 0,
"no-multiple-empty-lines": 0,
"no-negated-condition": 0,
"no-nested-ternary": 0,
"no-new-object": 0,
"no-plusplus": 0,
"no-restricted-syntax": 0,
"no-spaced-func": 0,
"no-ternary": 0,
"no-trailing-spaces": 0,
"no-underscore-dangle": 0,
"no-unneeded-ternary": 0,
"object-curly-spacing": 0,
"one-var": 0,
"operator-assignment": 0,
"operator-linebreak": 0,
"padded-blocks": 0,
"quote-props": 0,
quotes: ["error", "single"],
"require-jsdoc": 0,
"semi-spacing": 0,
semi: 0,
"sort-vars": 0,
"space-after-keywords": 0,
"space-before-blocks": 0,
"space-before-function-paren": 0,
"space-before-keywords": 0,
"space-in-parens": 0,
"space-infix-ops": 0,
"space-return-throw-case": 0,
"space-unary-ops": 0,
"spaced-comment": 0,
"wrap-regex": 0,
// ECMAScript 6 (2015)
"arrow-body-style": 0,
"arrow-parens": 0,
"arrow-spacing": 0,
"constructor-super": 0,
"generator-star-spacing": 0,
"no-arrow-condition": 0,
"no-class-assign": 0,
"no-const-assign": 0,
"no-dupe-class-members": 0,
"no-this-before-super": 0,
"no-var": 0,
"object-shorthand": 0,
"prefer-arrow-callback": 0,
"prefer-const": 0,
"prefer-reflect": 0,
"prefer-spread": 0,
"prefer-template": 0,
"require-yield": 0,
},
}];
+1 -1
View File
@@ -251,7 +251,7 @@
return; return;
} }
// prevent bots from viewing a paste and potentially deleting data // prevent bots from viewing a document and potentially deleting data
// when burn-after-reading is set // when burn-after-reading is set
if (isBadBot()) { if (isBadBot()) {
showError('I love you too, bot…'); showError('I love you too, bot…');
+2014 -8
View File
File diff suppressed because it is too large Load Diff
+3 -2
View File
@@ -1,13 +1,14 @@
{ {
"name": "privatebin", "name": "privatebin",
"version": "1.7.9", "version": "2.0.3",
"description": "PrivateBin is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted in the browser using 256 bit AES in Galois Counter mode (GCM).", "description": "PrivateBin is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted in the browser using 256 bit AES in Galois Counter mode (GCM).",
"main": "privatebin.js", "main": "privatebin.js",
"directories": { "directories": {
"test": "test" "test": "test"
}, },
"devDependencies": { "devDependencies": {
"@peculiar/webcrypto": "^1.5.0", "@peculiar/webcrypto": "^1.5.0",
"eslint": "^9.37.0",
"jsdom": "^26.0.0", "jsdom": "^26.0.0",
"jsdom-global": "^3.0.2", "jsdom-global": "^3.0.2",
"jsverify": "^0.8.3" "jsverify": "^0.8.3"
+296 -306
View File
File diff suppressed because it is too large Load Diff
-755
View File
@@ -1,755 +0,0 @@
/*
* $Id: rawinflate.js,v 0.3 2013/04/09 14:25:38 dankogai Exp dankogai $
*
* GNU General Public License, version 2 (GPL-2.0)
* https://opensource.org/licenses/GPL-2.0
* original:
* http://www.onicos.com/staff/iz/amuse/javascript/expert/inflate.txt
*/
(function(ctx){
/* Copyright (C) 1999 Masanao Izumo <iz@onicos.co.jp>
* Version: 1.0.0.1
* LastModified: Dec 25 1999
*/
/* Interface:
* data = zip_inflate(src);
*/
/* constant parameters */
var zip_WSIZE = 32768; // Sliding Window size
var zip_STORED_BLOCK = 0;
var zip_STATIC_TREES = 1;
var zip_DYN_TREES = 2;
/* for inflate */
var zip_lbits = 9; // bits in base literal/length lookup table
var zip_dbits = 6; // bits in base distance lookup table
var zip_INBUFSIZ = 32768; // Input buffer size
var zip_INBUF_EXTRA = 64; // Extra buffer
/* variables (inflate) */
var zip_slide;
var zip_wp; // current position in slide
var zip_fixed_tl = null; // inflate static
var zip_fixed_td; // inflate static
var zip_fixed_bl, fixed_bd; // inflate static
var zip_bit_buf; // bit buffer
var zip_bit_len; // bits in bit buffer
var zip_method;
var zip_eof;
var zip_copy_leng;
var zip_copy_dist;
var zip_tl, zip_td; // literal/length and distance decoder tables
var zip_bl, zip_bd; // number of bits decoded by tl and td
var zip_inflate_data;
var zip_inflate_pos;
/* constant tables (inflate) */
var zip_MASK_BITS = new Array(
0x0000,
0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff,
0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff);
// Tables for deflate from PKZIP's appnote.txt.
var zip_cplens = new Array( // Copy lengths for literal codes 257..285
3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0);
/* note: see note #13 above about the 258 in this list. */
var zip_cplext = new Array( // Extra bits for literal codes 257..285
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,
3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 99, 99); // 99==invalid
var zip_cpdist = new Array( // Copy offsets for distance codes 0..29
1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
8193, 12289, 16385, 24577);
var zip_cpdext = new Array( // Extra bits for distance codes
0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,
7, 7, 8, 8, 9, 9, 10, 10, 11, 11,
12, 12, 13, 13);
var zip_border = new Array( // Order of the bit length code lengths
16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15);
/* objects (inflate) */
var zip_HuftList = function() {
this.next = null;
this.list = null;
}
var zip_HuftNode = function() {
this.e = 0; // number of extra bits or operation
this.b = 0; // number of bits in this code or subcode
// union
this.n = 0; // literal, length base, or distance base
this.t = null; // (zip_HuftNode) pointer to next level of table
}
var zip_HuftBuild = function(b, // code lengths in bits (all assumed <= BMAX)
n, // number of codes (assumed <= N_MAX)
s, // number of simple-valued codes (0..s-1)
d, // list of base values for non-simple codes
e, // list of extra bits for non-simple codes
mm // maximum lookup bits
) {
this.BMAX = 16; // maximum bit length of any code
this.N_MAX = 288; // maximum number of codes in any set
this.status = 0; // 0: success, 1: incomplete table, 2: bad input
this.root = null; // (zip_HuftList) starting table
this.m = 0; // maximum lookup bits, returns actual
/* Given a list of code lengths and a maximum table size, make a set of
tables to decode that set of codes. Return zero on success, one if
the given code set is incomplete (the tables are still built in this
case), two if the input is invalid (all zero length codes or an
oversubscribed set of lengths), and three if not enough memory.
The code with value 256 is special, and the tables are constructed
so that no bits beyond that code are fetched when that code is
decoded. */
{
var a; // counter for codes of length k
var c = new Array(this.BMAX+1); // bit length count table
var el; // length of EOB code (value 256)
var f; // i repeats in table every f entries
var g; // maximum code length
var h; // table level
var i; // counter, current code
var j; // counter
var k; // number of bits in current code
var lx = new Array(this.BMAX+1); // stack of bits per table
var p; // pointer into c[], b[], or v[]
var pidx; // index of p
var q; // (zip_HuftNode) points to current table
var r = new zip_HuftNode(); // table entry for structure assignment
var u = new Array(this.BMAX); // zip_HuftNode[BMAX][] table stack
var v = new Array(this.N_MAX); // values in order of bit length
var w;
var x = new Array(this.BMAX+1);// bit offsets, then code stack
var xp; // pointer into x or c
var y; // number of dummy codes added
var z; // number of entries in current table
var o;
var tail; // (zip_HuftList)
tail = this.root = null;
for(i = 0; i < c.length; i++)
c[i] = 0;
for(i = 0; i < lx.length; i++)
lx[i] = 0;
for(i = 0; i < u.length; i++)
u[i] = null;
for(i = 0; i < v.length; i++)
v[i] = 0;
for(i = 0; i < x.length; i++)
x[i] = 0;
// Generate counts for each bit length
el = n > 256 ? b[256] : this.BMAX; // set length of EOB code, if any
p = b; pidx = 0;
i = n;
do {
c[p[pidx]]++; // assume all entries <= BMAX
pidx++;
} while(--i > 0);
if(c[0] == n) { // null input--all zero length codes
this.root = null;
this.m = 0;
this.status = 0;
return;
}
// Find minimum and maximum length, bound *m by those
for(j = 1; j <= this.BMAX; j++)
if(c[j] != 0)
break;
k = j; // minimum code length
if(mm < j)
mm = j;
for(i = this.BMAX; i != 0; i--)
if(c[i] != 0)
break;
g = i; // maximum code length
if(mm > i)
mm = i;
// Adjust last length count to fill out codes, if needed
for(y = 1 << j; j < i; j++, y <<= 1)
if((y -= c[j]) < 0) {
this.status = 2; // bad input: more codes than bits
this.m = mm;
return;
}
if((y -= c[i]) < 0) {
this.status = 2;
this.m = mm;
return;
}
c[i] += y;
// Generate starting offsets into the value table for each length
x[1] = j = 0;
p = c;
pidx = 1;
xp = 2;
while(--i > 0) // note that i == g from above
x[xp++] = (j += p[pidx++]);
// Make a table of values in order of bit lengths
p = b; pidx = 0;
i = 0;
do {
if((j = p[pidx++]) != 0)
v[x[j]++] = i;
} while(++i < n);
n = x[g]; // set n to length of v
// Generate the Huffman codes and for each, make the table entries
x[0] = i = 0; // first Huffman code is zero
p = v; pidx = 0; // grab values in bit order
h = -1; // no tables yet--level -1
w = lx[0] = 0; // no bits decoded yet
q = null; // ditto
z = 0; // ditto
// go through the bit lengths (k already is bits in shortest code)
for(; k <= g; k++) {
a = c[k];
while(a-- > 0) {
// here i is the Huffman code of length k bits for value p[pidx]
// make tables up to required level
while(k > w + lx[1 + h]) {
w += lx[1 + h]; // add bits already decoded
h++;
// compute minimum size table less than or equal to *m bits
z = (z = g - w) > mm ? mm : z; // upper limit
if((f = 1 << (j = k - w)) > a + 1) { // try a k-w bit table
// too few codes for k-w bit table
f -= a + 1; // deduct codes from patterns left
xp = k;
while(++j < z) { // try smaller tables up to z bits
if((f <<= 1) <= c[++xp])
break; // enough codes to use up j bits
f -= c[xp]; // else deduct codes from patterns
}
}
if(w + j > el && w < el)
j = el - w; // make EOB code end at table
z = 1 << j; // table entries for j-bit table
lx[1 + h] = j; // set table size in stack
// allocate and link in new table
q = new Array(z);
for(o = 0; o < z; o++) {
q[o] = new zip_HuftNode();
}
if(tail == null)
tail = this.root = new zip_HuftList();
else
tail = tail.next = new zip_HuftList();
tail.next = null;
tail.list = q;
u[h] = q; // table starts after link
/* connect to last table, if there is one */
if(h > 0) {
x[h] = i; // save pattern for backing up
r.b = lx[h]; // bits to dump before this table
r.e = 16 + j; // bits in this table
r.t = q; // pointer to this table
j = (i & ((1 << w) - 1)) >> (w - lx[h]);
u[h-1][j].e = r.e;
u[h-1][j].b = r.b;
u[h-1][j].n = r.n;
u[h-1][j].t = r.t;
}
}
// set up table entry in r
r.b = k - w;
if(pidx >= n)
r.e = 99; // out of values--invalid code
else if(p[pidx] < s) {
r.e = (p[pidx] < 256 ? 16 : 15); // 256 is end-of-block code
r.n = p[pidx++]; // simple code is just the value
} else {
r.e = e[p[pidx] - s]; // non-simple--look up in lists
r.n = d[p[pidx++] - s];
}
// fill code-like entries with r //
f = 1 << (k - w);
for(j = i >> w; j < z; j += f) {
q[j].e = r.e;
q[j].b = r.b;
q[j].n = r.n;
q[j].t = r.t;
}
// backwards increment the k-bit code i
for(j = 1 << (k - 1); (i & j) != 0; j >>= 1)
i ^= j;
i ^= j;
// backup over finished tables
while((i & ((1 << w) - 1)) != x[h]) {
w -= lx[h]; // don't need to update q
h--;
}
}
}
/* return actual size of base table */
this.m = lx[1];
/* Return true (1) if we were given an incomplete table */
this.status = ((y != 0 && g != 1) ? 1 : 0);
} /* end of constructor */
}
/* routines (inflate) */
var zip_GET_BYTE = function() {
if(zip_inflate_data.length == zip_inflate_pos)
return -1;
return zip_inflate_data.charCodeAt(zip_inflate_pos++) & 0xff;
}
var zip_NEEDBITS = function(n) {
while(zip_bit_len < n) {
zip_bit_buf |= zip_GET_BYTE() << zip_bit_len;
zip_bit_len += 8;
}
}
var zip_GETBITS = function(n) {
return zip_bit_buf & zip_MASK_BITS[n];
}
var zip_DUMPBITS = function(n) {
zip_bit_buf >>= n;
zip_bit_len -= n;
}
var zip_inflate_codes = function(buff, off, size) {
/* inflate (decompress) the codes in a deflated (compressed) block.
Return an error code or zero if it all goes ok. */
var e; // table entry flag/number of extra bits
var t; // (zip_HuftNode) pointer to table entry
var n;
if(size == 0)
return 0;
// inflate the coded data
n = 0;
for(;;) { // do until end of block
zip_NEEDBITS(zip_bl);
t = zip_tl.list[zip_GETBITS(zip_bl)];
e = t.e;
while(e > 16) {
if(e == 99)
return -1;
zip_DUMPBITS(t.b);
e -= 16;
zip_NEEDBITS(e);
t = t.t[zip_GETBITS(e)];
e = t.e;
}
zip_DUMPBITS(t.b);
if(e == 16) { // then it's a literal
zip_wp &= zip_WSIZE - 1;
buff[off + n++] = zip_slide[zip_wp++] = t.n;
if(n == size)
return size;
continue;
}
// exit if end of block
if(e == 15)
break;
// it's an EOB or a length
// get length of block to copy
zip_NEEDBITS(e);
zip_copy_leng = t.n + zip_GETBITS(e);
zip_DUMPBITS(e);
// decode distance of block to copy
zip_NEEDBITS(zip_bd);
t = zip_td.list[zip_GETBITS(zip_bd)];
e = t.e;
while(e > 16) {
if(e == 99)
return -1;
zip_DUMPBITS(t.b);
e -= 16;
zip_NEEDBITS(e);
t = t.t[zip_GETBITS(e)];
e = t.e;
}
zip_DUMPBITS(t.b);
zip_NEEDBITS(e);
zip_copy_dist = zip_wp - t.n - zip_GETBITS(e);
zip_DUMPBITS(e);
// do the copy
while(zip_copy_leng > 0 && n < size) {
zip_copy_leng--;
zip_copy_dist &= zip_WSIZE - 1;
zip_wp &= zip_WSIZE - 1;
buff[off + n++] = zip_slide[zip_wp++]
= zip_slide[zip_copy_dist++];
}
if(n == size)
return size;
}
zip_method = -1; // done
return n;
}
var zip_inflate_stored = function(buff, off, size) {
/* "decompress" an inflated type 0 (stored) block. */
var n;
// go to byte boundary
n = zip_bit_len & 7;
zip_DUMPBITS(n);
// get the length and its complement
zip_NEEDBITS(16);
n = zip_GETBITS(16);
zip_DUMPBITS(16);
zip_NEEDBITS(16);
if(n != ((~zip_bit_buf) & 0xffff))
return -1; // error in compressed data
zip_DUMPBITS(16);
// read and output the compressed data
zip_copy_leng = n;
n = 0;
while(zip_copy_leng > 0 && n < size) {
zip_copy_leng--;
zip_wp &= zip_WSIZE - 1;
zip_NEEDBITS(8);
buff[off + n++] = zip_slide[zip_wp++] =
zip_GETBITS(8);
zip_DUMPBITS(8);
}
if(zip_copy_leng == 0)
zip_method = -1; // done
return n;
}
var zip_inflate_fixed = function(buff, off, size) {
/* decompress an inflated type 1 (fixed Huffman codes) block. We should
either replace this with a custom decoder, or at least precompute the
Huffman tables. */
// if first time, set up tables for fixed blocks
if(zip_fixed_tl == null) {
var i; // temporary variable
var l = new Array(288); // length list for huft_build
var h; // zip_HuftBuild
// literal table
for(i = 0; i < 144; i++)
l[i] = 8;
for(; i < 256; i++)
l[i] = 9;
for(; i < 280; i++)
l[i] = 7;
for(; i < 288; i++) // make a complete, but wrong code set
l[i] = 8;
zip_fixed_bl = 7;
h = new zip_HuftBuild(l, 288, 257, zip_cplens, zip_cplext,
zip_fixed_bl);
if(h.status != 0) {
alert("HufBuild error: "+h.status);
return -1;
}
zip_fixed_tl = h.root;
zip_fixed_bl = h.m;
// distance table
for(i = 0; i < 30; i++) // make an incomplete code set
l[i] = 5;
zip_fixed_bd = 5;
h = new zip_HuftBuild(l, 30, 0, zip_cpdist, zip_cpdext, zip_fixed_bd);
if(h.status > 1) {
zip_fixed_tl = null;
alert("HufBuild error: "+h.status);
return -1;
}
zip_fixed_td = h.root;
zip_fixed_bd = h.m;
}
zip_tl = zip_fixed_tl;
zip_td = zip_fixed_td;
zip_bl = zip_fixed_bl;
zip_bd = zip_fixed_bd;
return zip_inflate_codes(buff, off, size);
}
var zip_inflate_dynamic = function(buff, off, size) {
// decompress an inflated type 2 (dynamic Huffman codes) block.
var i; // temporary variables
var j;
var l; // last length
var n; // number of lengths to get
var t; // (zip_HuftNode) literal/length code table
var nb; // number of bit length codes
var nl; // number of literal/length codes
var nd; // number of distance codes
var ll = new Array(286+30); // literal/length and distance code lengths
var h; // (zip_HuftBuild)
for(i = 0; i < ll.length; i++)
ll[i] = 0;
// read in table lengths
zip_NEEDBITS(5);
nl = 257 + zip_GETBITS(5); // number of literal/length codes
zip_DUMPBITS(5);
zip_NEEDBITS(5);
nd = 1 + zip_GETBITS(5); // number of distance codes
zip_DUMPBITS(5);
zip_NEEDBITS(4);
nb = 4 + zip_GETBITS(4); // number of bit length codes
zip_DUMPBITS(4);
if(nl > 286 || nd > 30)
return -1; // bad lengths
// read in bit-length-code lengths
for(j = 0; j < nb; j++)
{
zip_NEEDBITS(3);
ll[zip_border[j]] = zip_GETBITS(3);
zip_DUMPBITS(3);
}
for(; j < 19; j++)
ll[zip_border[j]] = 0;
// build decoding table for trees--single level, 7 bit lookup
zip_bl = 7;
h = new zip_HuftBuild(ll, 19, 19, null, null, zip_bl);
if(h.status != 0)
return -1; // incomplete code set
zip_tl = h.root;
zip_bl = h.m;
// read in literal and distance code lengths
n = nl + nd;
i = l = 0;
while(i < n) {
zip_NEEDBITS(zip_bl);
t = zip_tl.list[zip_GETBITS(zip_bl)];
j = t.b;
zip_DUMPBITS(j);
j = t.n;
if(j < 16) // length of code in bits (0..15)
ll[i++] = l = j; // save last length in l
else if(j == 16) { // repeat last length 3 to 6 times
zip_NEEDBITS(2);
j = 3 + zip_GETBITS(2);
zip_DUMPBITS(2);
if(i + j > n)
return -1;
while(j-- > 0)
ll[i++] = l;
} else if(j == 17) { // 3 to 10 zero length codes
zip_NEEDBITS(3);
j = 3 + zip_GETBITS(3);
zip_DUMPBITS(3);
if(i + j > n)
return -1;
while(j-- > 0)
ll[i++] = 0;
l = 0;
} else { // j == 18: 11 to 138 zero length codes
zip_NEEDBITS(7);
j = 11 + zip_GETBITS(7);
zip_DUMPBITS(7);
if(i + j > n)
return -1;
while(j-- > 0)
ll[i++] = 0;
l = 0;
}
}
// build the decoding tables for literal/length and distance codes
zip_bl = zip_lbits;
h = new zip_HuftBuild(ll, nl, 257, zip_cplens, zip_cplext, zip_bl);
if(zip_bl == 0) // no literals or lengths
h.status = 1;
if(h.status != 0) {
if(h.status == 1)
;// **incomplete literal tree**
return -1; // incomplete code set
}
zip_tl = h.root;
zip_bl = h.m;
for(i = 0; i < nd; i++)
ll[i] = ll[i + nl];
zip_bd = zip_dbits;
h = new zip_HuftBuild(ll, nd, 0, zip_cpdist, zip_cpdext, zip_bd);
zip_td = h.root;
zip_bd = h.m;
if(zip_bd == 0 && nl > 257) { // lengths but no distances
// **incomplete distance tree**
return -1;
}
if(h.status == 1) {
;// **incomplete distance tree**
}
if(h.status != 0)
return -1;
// decompress until an end-of-block code
return zip_inflate_codes(buff, off, size);
}
var zip_inflate_start = function() {
var i;
if(zip_slide == null)
zip_slide = new Array(2 * zip_WSIZE);
zip_wp = 0;
zip_bit_buf = 0;
zip_bit_len = 0;
zip_method = -1;
zip_eof = false;
zip_copy_leng = zip_copy_dist = 0;
zip_tl = null;
}
var zip_inflate_internal = function(buff, off, size) {
// decompress an inflated entry
var n, i;
n = 0;
while(n < size) {
if(zip_eof && zip_method == -1)
return n;
if(zip_copy_leng > 0) {
if(zip_method != zip_STORED_BLOCK) {
// STATIC_TREES or DYN_TREES
while(zip_copy_leng > 0 && n < size) {
zip_copy_leng--;
zip_copy_dist &= zip_WSIZE - 1;
zip_wp &= zip_WSIZE - 1;
buff[off + n++] = zip_slide[zip_wp++] =
zip_slide[zip_copy_dist++];
}
} else {
while(zip_copy_leng > 0 && n < size) {
zip_copy_leng--;
zip_wp &= zip_WSIZE - 1;
zip_NEEDBITS(8);
buff[off + n++] = zip_slide[zip_wp++] = zip_GETBITS(8);
zip_DUMPBITS(8);
}
if(zip_copy_leng == 0)
zip_method = -1; // done
}
if(n == size)
return n;
}
if(zip_method == -1) {
if(zip_eof)
break;
// read in last block bit
zip_NEEDBITS(1);
if(zip_GETBITS(1) != 0)
zip_eof = true;
zip_DUMPBITS(1);
// read in block type
zip_NEEDBITS(2);
zip_method = zip_GETBITS(2);
zip_DUMPBITS(2);
zip_tl = null;
zip_copy_leng = 0;
}
switch(zip_method) {
case 0: // zip_STORED_BLOCK
i = zip_inflate_stored(buff, off + n, size - n);
break;
case 1: // zip_STATIC_TREES
if(zip_tl != null)
i = zip_inflate_codes(buff, off + n, size - n);
else
i = zip_inflate_fixed(buff, off + n, size - n);
break;
case 2: // zip_DYN_TREES
if(zip_tl != null)
i = zip_inflate_codes(buff, off + n, size - n);
else
i = zip_inflate_dynamic(buff, off + n, size - n);
break;
default: // error
i = -1;
break;
}
if(i == -1) {
if(zip_eof)
return 0;
return -1;
}
n += i;
}
return n;
}
var zip_inflate = function(str) {
var i, j;
zip_inflate_start();
zip_inflate_data = str;
zip_inflate_pos = 0;
var buff = new Array(1024);
var aout = [];
while((i = zip_inflate_internal(buff, 0, buff.length)) > 0) {
var cbuf = new Array(i);
for(j = 0; j < i; j++){
cbuf[j] = String.fromCharCode(buff[j]);
}
aout[aout.length] = cbuf.join("");
}
zip_inflate_data = null; // G.C.
return aout.join("");
}
if (! ctx.RawDeflate) ctx.RawDeflate = {};
ctx.RawDeflate.inflate = zip_inflate;
})(this);
+4 -9
View File
@@ -306,10 +306,8 @@ describe('Alert', function () {
$('body').addClass('loading'); $('body').addClass('loading');
$.PrivateBin.Alert.init(); $.PrivateBin.Alert.init();
$.PrivateBin.Alert.hideLoading(); $.PrivateBin.Alert.hideLoading();
assert.ok( assert.ok(!$('body').hasClass('loading'));
!$('body').hasClass('loading') && assert.ok($('#loadingindicator').hasClass('hidden'));
$('#loadingindicator').hasClass('hidden')
);
} }
); );
}); });
@@ -328,10 +326,8 @@ describe('Alert', function () {
); );
$.PrivateBin.Alert.init(); $.PrivateBin.Alert.init();
$.PrivateBin.Alert.hideMessages(); $.PrivateBin.Alert.hideMessages();
assert.ok( assert.ok($('#status').hasClass('hidden'));
$('#status').hasClass('hidden') && assert.ok($('#errormessage').hasClass('hidden'));
$('#errormessage').hasClass('hidden')
);
} }
); );
}); });
@@ -381,4 +377,3 @@ describe('Alert', function () {
); );
}); });
}); });
+47 -2
View File
@@ -12,6 +12,7 @@ describe('AttachmentViewer', function () {
'string', 'string',
'string', 'string',
'string', 'string',
// eslint-disable-next-line complexity
function (mimeType, rawdata, filename, prefix, postfix) { function (mimeType, rawdata, filename, prefix, postfix) {
let clean = jsdom(), let clean = jsdom(),
data = 'data:' + mimeType + ';base64,' + common.btoa(rawdata), data = 'data:' + mimeType + ';base64,' + common.btoa(rawdata),
@@ -24,8 +25,12 @@ describe('AttachmentViewer', function () {
), ),
results = [], results = [],
result = ''; result = '';
// text node of attachment will truncate at null byte
if (filename === '\u0000') {
filename = '';
}
prefix = prefix.replace(/%(s|d)/g, '%%'); prefix = prefix.replace(/%(s|d)/g, '%%');
postfix = postfix.replace(/%(s|d)/g, '%%'); postfix = postfix.replace(/%(s|d)/g, '%%').replace(/<|>/g, '');
$('body').html( $('body').html(
'<div id="attachmentPreview" class="col-md-12 text-center hidden"></div>' + '<div id="attachmentPreview" class="col-md-12 text-center hidden"></div>' +
'<div id="attachment" class="hidden"></div>' + '<div id="attachment" class="hidden"></div>' +
@@ -124,6 +129,46 @@ describe('AttachmentViewer', function () {
return results.every(element => element); return results.every(element => element);
} }
); );
it(
'sanitizes file names in attachments',
function() {
const clean = jsdom();
$('body').html(
'<div id="attachmentPreview" class="col-md-12 text-center hidden"></div>' +
'<div id="attachment" class="hidden"></div>' +
'<div id="templates">' +
'<div id="attachmenttemplate" role="alert" class="attachment hidden alert alert-info">' +
'<span class="glyphicon glyphicon-download-alt" aria-hidden="true"></span>' +
'<a class="alert-link">Download attachment</a>' +
'</div>' +
'</div>'
);
// mock createObjectURL for jsDOM
if (typeof window.URL.createObjectURL === 'undefined') {
Object.defineProperty(
window.URL,
'createObjectURL',
{value: function(blob) {
return 'blob:' + location.origin + '/1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed';
}}
)
}
$.PrivateBin.AttachmentViewer.init();
$.PrivateBin.Model.init();
global.atob = common.atob;
const maliciousFileNames = [
'<script>alert("☹️");//<a',
'"><meta http-equiv="refresh" content="0;url=http://example.com/">.txt'
];
for (const filename of maliciousFileNames) {
$.PrivateBin.AttachmentViewer.setAttachment('data:;base64,', filename);
assert.ok(!$('body').html().includes(filename));
}
clean();
}
);
}); });
}); });
+11 -4
View File
@@ -50,7 +50,11 @@ describe('Check', function () {
result2 = isSecureContext === (document.getElementById('insecurecontextnotice').className === 'hidden'), result2 = isSecureContext === (document.getElementById('insecurecontextnotice').className === 'hidden'),
result3 = (document.getElementById('oldnotice').className !== 'hidden'); result3 = (document.getElementById('oldnotice').className !== 'hidden');
clean(); clean();
return result1 && result2 && result3; if (result1 && result2 && result3) {
return true;
}
console.log(result1, result2, result3);
return false;
} }
); );
@@ -68,15 +72,18 @@ describe('Check', function () {
); );
Object.defineProperty(window, 'crypto', { Object.defineProperty(window, 'crypto', {
value: new WebCrypto(), value: new WebCrypto(),
writeable: false, writeable: false
}); });
Legacy.Check.init(); Legacy.Check.init();
const result1 = Legacy.Check.getInit() && Legacy.Check.getStatus(), const result1 = Legacy.Check.getInit() && Legacy.Check.getStatus(),
result2 = secureProtocol === (document.getElementById('httpnotice').className === 'hidden'); result2 = secureProtocol === (document.getElementById('httpnotice').className === 'hidden');
clean(); clean();
return result1 && result2; if (result1 && result2) {
return true;
}
console.log(result1, result2);
return false;
} }
); );
}); });
}); });
+4 -4
View File
@@ -4,7 +4,7 @@ const common = require('../common');
describe('CopyToClipboard', function() { describe('CopyToClipboard', function() {
this.timeout(30000); this.timeout(30000);
describe ('Copy paste to clipboard', function () { describe ('Copy document to clipboard', function () {
jsc.property('Copy with button click', jsc.property('Copy with button click',
common.jscFormats(), common.jscFormats(),
'nestring', 'nestring',
@@ -13,7 +13,7 @@ describe('CopyToClipboard', function() {
common.enableClipboard(); common.enableClipboard();
$('body').html( $('body').html(
'<div id="placeholder" class="hidden">+++ no paste text ' + '<div id="placeholder" class="hidden">+++ no document text ' +
'+++</div><div id="prettymessage" class="hidden">' + '+++</div><div id="prettymessage" class="hidden">' +
'<button type="button" id="prettyMessageCopyBtn"><svg id="copyIcon"></svg>' + '<button type="button" id="prettyMessageCopyBtn"><svg id="copyIcon"></svg>' +
'<svg id="copySuccessIcon"></svg></button><pre ' + '<svg id="copySuccessIcon"></svg></button><pre ' +
@@ -40,7 +40,7 @@ describe('CopyToClipboard', function() {
/** /**
* Unfortunately in JSVerify impossible to check if copy with shortcut when user selected some text on the page * Unfortunately in JSVerify impossible to check if copy with shortcut when user selected some text on the page
* (the copy paste to clipboard should not work in this case) due to lacking window.getSelection() in jsdom. * (the copy document to clipboard should not work in this case) due to lacking window.getSelection() in jsdom.
*/ */
jsc.property('Copy with keyboard shortcut', jsc.property('Copy with keyboard shortcut',
common.jscFormats(), common.jscFormats(),
@@ -50,7 +50,7 @@ describe('CopyToClipboard', function() {
common.enableClipboard(); common.enableClipboard();
$('body').html( $('body').html(
'<div id="placeholder">+++ no paste text ' + '<div id="placeholder">+++ no document text ' +
'+++</div><div id="prettymessage" class="hidden">' + '+++</div><div id="prettymessage" class="hidden">' +
'<button type="button" id="prettyMessageCopyBtn"><svg id="copyIcon"></svg>' + '<button type="button" id="prettyMessageCopyBtn"><svg id="copyIcon"></svg>' +
'<svg id="copySuccessIcon"></svg></button><pre ' + '<svg id="copySuccessIcon"></svg></button><pre ' +
+8 -192
View File
@@ -20,7 +20,7 @@ describe('CryptTool', function () {
$.PrivateBin.Controller.initZ(); $.PrivateBin.Controller.initZ();
Object.defineProperty(window, 'crypto', { Object.defineProperty(window, 'crypto', {
value: new WebCrypto(), value: new WebCrypto(),
writeable: false, writeable: false
}); });
global.atob = common.atob; global.atob = common.atob;
global.btoa = common.btoa; global.btoa = common.btoa;
@@ -40,197 +40,12 @@ describe('CryptTool', function () {
{tests: 3}); {tests: 3});
}); });
// The below static unit tests are included to ensure deciphering of "classic"
// SJCL based pastes still works
it(
'supports PrivateBin v1 ciphertext with password (SJCL & browser atob)',
async function () {
delete global.Base64;
const clean = jsdom();
Object.defineProperty(window, 'crypto', {
value: new WebCrypto(),
writeable: false,
});
global.atob = common.atob;
// Of course you can easily decipher the following texts, if you like.
// Bonus points for finding their sources and hidden meanings.
const paste = await $.PrivateBin.CryptTool.decipher(
'6t2qsmLyfXIokNCL+3/yl15rfTUBQvm5SOnFPvNE7Q8=',
// -- "That's amazing. I've got the same combination on my luggage."
Array.apply(0, Array(6)).map((_,b) => b + 1).join(''),
'{"iv":"4HNFIl7eYbCh6HuShctTIA==","v":1,"iter":10000,"ks"' +
':256,"ts":128,"mode":"gcm","adata":"","cipher":"aes","sa' +
'lt":"u0lQvePq6L0=","ct":"fGPUVrDyaVr1ZDGb+kqQ3CPEW8x4YKG' +
'fzHDmA0Vjkh250aWNe7Cnigkps9aaFVMX9AaerrTp3yZbojJtNqVGMfL' +
'dUTu+53xmZHqRKxCCqSfDNSNoW4Oxk5OVgAtRyuG4bXHDsWTXDNz2xce' +
'qzVFqhkwTwlUchrV7uuFK/XUKTNjPFM744moivIcBbfM2FOeKlIFs8RY' +
'PYuvqQhp2rMLlNGwwKh//4kykQsHMQDeSDuJl8stMQzgWR/btUBZuwNZ' +
'EydkMH6IPpTdf5WTSrZ+wC2OK0GutCm4UaEe6txzaTMfu+WRVu4PN6q+' +
'N+2zljWJ1XdpVcN/i0Sv4QVMym0Xa6y0eccEhj/69o47PmExmMMeEwEx' +
'ImPalMNT9JUSiZdOZJ/GdzwrwoIuq1mdQR6vSH+XJ/8jXJQ7bjjJVJYX' +
'TcT0Di5jixArI2Kpp1GGlGVFbLgPugwU1wczg+byqeDOAECXRRnQcoge' +
'aJtVcRwXwfy4j3ORFcblYMilxyHqKBewcYPRVBGtBs50cVjSIkAfR84r' +
'nc1nfvnxK/Gmm+4VBNHI6ODWNpRolVMCzXjbKYnV3Are5AgSpsTqaGl4' +
'1VJGpcco6cAwi4K0Bys1seKR+bLSdUgqRrkEqSRSdu3/VTu9HhEk8an0' +
'rjTE4CBB5/LMn16p0TGLoOb32odKFIEtpanVvLjeyiVMvSxcgYLNnTi/' +
'5FiaAC4pJxRD+AZHedU1FICUeEXxIcac/4E5qjkHjX9SpQtLl80QLIVn' +
'jNliZm7QLB/nKu7W8Jb0+/CiTdV3Q9LhxlH4ciprnX+W0B00BKYFHnL9' +
'jRVzKdXhf1EHydbXMAfpCjHAXIVCkFakJinQBDIIw/SC6Yig0u0ddEID' +
'2B7LYAP1iE4RZwzTrxCB+ke2jQr8c20Jj6u6ShFOPC9DCw9XupZ4HAal' +
'VG00kSgjus+b8zrVji3/LKEhb4EBzp1ctBJCFTeXwej8ZETLoXTylev5' +
'dlwZSYAbuBPPcbFR/xAIPx3uDabd1E1gTqUc68ICIGhd197Mb2eRWiSv' +
'Hr5SPsASerMxId6XA6+iQlRiI+NDR+TGVNmCnfxSlyPFMOHGTmslXOGI' +
'qGfBR8l4ft8YVZ70lCwmwTuViGc75ULSf9mM57/LmRzQFMYQtvI8IFK9' +
'JaQEMY5xz0HLtR4iyQUUdwR9e0ytBNdWF2a2WPDEnJuY/QJo4GzTlgv4' +
'QUxMXI5htsn2rf0HxCFu7Po8DNYLxTS+67hYjDIYWYaEIc8LXWMLyDm9' +
'C5fARPJ4F2BIWgzgzkNj+dVjusft2XnziamWdbS5u3kuRlVuz5LQj+R5' +
'imnqQAincdZTkTT1nYx+DatlOLllCYIHffpI="}'
);
clean();
const result = typeof paste === 'string' && paste.includes('securely packed in iron');
if (!result) console.log(paste);
assert.ok(result);
}
);
it(
'supports PrivateBin v1 ciphertext no password (SJCL & browser atob)',
async function () {
delete global.Base64;
const clean = jsdom();
// ensure zlib is getting loaded
$.PrivateBin.Controller.initZ();
Object.defineProperty(window, 'crypto', {
value: new WebCrypto(),
writeable: false,
});
global.atob = common.atob;
// Of course you can easily decipher the following texts, if you like.
// Bonus points for finding their sources and hidden meanings.
const paste = await $.PrivateBin.CryptTool.decipher(
's9pmKZKOBN7EVvHpTA8jjLFH3Xlz/0l8lB4+ONPACrM=',
'', // no password
'{"iv":"WA42mdxIVXUwBqZu7JYNiw==","v":1,"iter":10000,"ks"' +
':256,"ts":128,"mode":"gcm","adata":"","cipher":"aes","sa' +
'lt":"jN6CjbQMJCM=","ct":"kYYMo5DFG1+w0UHiYXT5pdV0IUuXxzO' +
'lslkW/c3DRCbGFROCVkAskHce7HoRczee1N9c5MhHjVMJUIZE02qIS8U' +
'yHdJ/GqcPVidTUcj9rnDNWsTXkjVv8jCwHS/cwmAjDTWpwp5ThECN+ov' +
'/wNp/NdtTj8Qj7f/T3rfZIOCWfwLH9s4Des35UNcUidfPTNQ1l0Gm0X+' +
'r98CCUSYZjQxkZc6hRZBLPQ8EaNVooUwd5eP4GiYlmSDNA0wOSA+5isP' +
'YxomVCt+kFf58VBlNhpfNi7BLYAUTPpXT4SfH5drR9+C7NTeZ+tTCYjb' +
'U94PzYItOpu8vgnB1/a6BAM5h3m9w+giUb0df4hgTWeZnZxLjo5BN8WV' +
'+kdTXMj3/Vv0gw0DQrDcCuX/cBAjpy3lQGwlAN1vXoOIyZJUjMpQRrOL' +
'dKvLB+zcmVNtGDbgnfP2IYBzk9NtodpUa27ne0T0ZpwOPlVwevsIVZO2' +
'24WLa+iQmmHOWDFFpVDlS0t0fLfOk7Hcb2xFsTxiCIiyKMho/IME1Du3' +
'X4e6BVa3hobSSZv0rRtNgY1KcyYPrUPW2fxZ+oik3y9SgGvb7XpjVIta' +
'8DWlDWRfZ9kzoweWEYqz9IA8Xd373RefpyuWI25zlHoX3nwljzsZU6dC' +
'//h/Dt2DNr+IAvKO3+u23cWoB9kgcZJ2FJuqjLvVfCF+OWcig7zs2pTY' +
'JW6Rg6lqbBCxiUUlae6xJrjfv0pzD2VYCLY7v1bVTagppwKzNI3WaluC' +
'OrdDYUCxUSe56yd1oAoLPRVbYvomRboUO6cjQhEknERyvt45og2kORJO' +
'EJayHW+jZgR0Y0jM3Nk17ubpij2gHxNx9kiLDOiCGSV5mn9mV7qd3HHc' +
'OMSykiBgbyzjobi96LT2dIGLeDXTIdPOog8wyobO4jWq0GGs0vBB8oSY' +
'XhHvixZLcSjX2KQuHmEoWzmJcr3DavdoXZmAurGWLKjzEdJc5dSD/eNr' +
'99gjHX7wphJ6umKMM+fn6PcbYJkhDh2GlJL5COXjXfm/5aj/vuyaRRWZ' +
'MZtmnYpGAtAPg7AUG"}'
);
clean();
const result = typeof paste === 'string' && paste.includes('Sol is right');
if (!result) console.log(paste);
assert.ok(result);
}
);
it(
'supports ZeroBin ciphertext with password (SJCL & Base64 1.7)',
async function () {
global.Base64 = require('../base64-1.7').Base64;
const clean = jsdom();
Object.defineProperty(window, 'crypto', {
value: new WebCrypto(),
writeable: false,
});
global.atob = common.atob;
// Of course you can easily decipher the following texts, if you like.
// Bonus points for finding their sources and hidden meanings.
const paste = await $.PrivateBin.CryptTool.decipher(
'6t2qsmLyfXIokNCL+3/yl15rfTUBQvm5SOnFPvNE7Q8=',
// -- "That's amazing. I've got the same combination on my luggage."
Array.apply(0, Array(6)).map((_,b) => b + 1).join(''),
'{"iv":"aTnR2qBL1CAmLX8FdWe3VA==","v":1,"iter":10000,"ks"' +
':256,"ts":128,"mode":"gcm","adata":"","cipher":"aes","sa' +
'lt":"u0lQvePq6L0=","ct":"A3nBTvICZtYy6xqbIJE0c8Veored5lM' +
'JUGgGUm4581wjrPFlU0Q0tUZSf+RUUoZj2jqDa4kiyyZ5YNMe30hNMV0' +
'oVSalNhRgD9svVMnPuF162IbyhVCwr7ULjT981CHxVlGNqGqmIU6L/Xi' +
'xgdArxAA8x1GCrfAkBWWGeq8Qw5vJPG/RCHpwR4Wy3azrluqeyERBzma' +
'OQjO/kM35TiI6IrLYFyYyL7upYlxAaxS0XBMZvN8QU8Lnerwvh5JVC6O' +
'kkKrhogajTJIKozCF79yI78c50LUh7tTuI3Yoh7+fXxhoODvQdYFmoiU' +
'lrutN7Y5ZMRdITvVu8fTYtX9c7Fiufmcq5icEimiHp2g1bvfpOaGOsFT' +
'+XNFgC9215jcp5mpBdN852xs7bUtw+nDrf+LsDEX6iRpRZ+PYgLDN5xQ' +
'T1ByEtYbeP+tO38pnx72oZdIB3cj8UkOxnxdNiZM5YB5egn4jUj1fHot' +
'1I69WoTiUJipZ5PIATv7ScymRB+AYzjxjurQ9lVfX9QtAbEH2dhdmoUo' +
'3IDRSXpWNCe9RC1aUIyWfZO7oI7FEohNscHNTLEcT+wFnFUPByLlXmjN' +
'Z7FKeNpvUm3jTY4t4sbZH8o2dUl624PAw1INcJ6FKqWGWwoFT2j1MYC+' +
'YV/LkLTdjuWfayvwLMh27G/FfKCRbW36vqinegqpPDylsx9+3oFkEw3y' +
'5Z8+44oN91rE/4Md7JhPJeRVlFC9TNCj4dA+EVhbbQqscvSnIH2uHkMw' +
'7mNNo7xba/YT9KoPDaniqnYqb+q2pX1WNWE7dLS2wfroMAS3kh8P22DA' +
'V37AeiNoD2PcI6ZcHbRdPa+XRrRcJhSPPW7UQ0z4OvBfjdu/w390QxAx' +
'SxvZewoh49fKKB6hTsRnZb4tpHkjlww=="}'
);
clean();
delete global.Base64;
const result = typeof paste === 'string' && paste.includes('securely packed in iron');
if (!result) console.log(paste);
assert.ok(result);
}
);
it(
'supports ZeroBin ciphertext no password (SJCL & Base64 1.7)',
async function () {
global.Base64 = require('../base64-1.7').Base64;
const clean = jsdom();
Object.defineProperty(window, 'crypto', {
value: new WebCrypto(),
writeable: false,
});
global.atob = common.atob;
const paste = await $.PrivateBin.CryptTool.decipher(
's9pmKZKOBN7EVvHpTA8jjLFH3Xlz/0l8lB4+ONPACrM=',
'', // no password
'{"iv":"Z7lAZQbkrqGMvruxoSm6Pw==","v":1,"iter":10000,"ks"' +
':256,"ts":128,"mode":"gcm","adata":"","cipher":"aes","sa' +
'lt":"jN6CjbQMJCM=","ct":"PuOPWB3i2FPcreSrLYeQf84LdE8RHjs' +
'c+MGtiOr4b7doNyWKYtkNorbRadxaPnEee2/Utrp1MIIfY5juJSy8RGw' +
'EPX5ciWcYe6EzsXWznsnvhmpKNj9B7eIIrfSbxfy8E2e/g7xav1nive+' +
'ljToka3WT1DZ8ILQd/NbnJeHWaoSEOfvz8+d8QJPb1tNZvs7zEY95Dum' +
'QwbyOsIMKAvcZHJ9OJNpujXzdMyt6DpcFcqlldWBZ/8q5rAUTw0HNx/r' +
'CgbhAxRYfNoTLIcMM4L0cXbPSgCjwf5FuO3EdE13mgEDhcClW79m0Qvc' +
'nIh8xgzYoxLbp0+AwvC/MbZM8savN/0ieWr2EKkZ04ggiOIEyvfCUuNp' +
'rQBYO+y8kKduNEN6by0Yf4LRCPfmwN+GezDLuzTnZIMhPbGqUAdgV6Ex' +
'qK2ULEEIrQEMoOuQIxfoMhqLlzG79vXGt2O+BY+4IiYfvmuRLks4UXfy' +
'HqxPXTJg48IYbGs0j4TtJPUgp3523EyYLwEGyVTAuWhYAmVIwd/hoV7d' +
'7tmfcF73w9dufDFI3LNca2KxzBnWNPYvIZKBwWbq8ncxkb191dP6mjEi' +
'7NnhqVk5A6vIBbu4AC5PZf76l6yep4xsoy/QtdDxCMocCXeAML9MQ9uP' +
'QbuspOKrBvMfN5igA1kBqasnxI472KBNXsdZnaDddSVUuvhTcETM="}'
);
clean();
delete global.Base64;
const result = typeof paste === 'string' && paste.includes('Sol is right');
if (!result) console.log(paste);
assert.ok(result);
}
);
it('does not truncate messages', async function () { it('does not truncate messages', async function () {
const message = fs.readFileSync('test/compression-sample.txt', 'ascii').trim(), const message = fs.readFileSync('test/compression-sample.txt', 'ascii').trim(),
clean = jsdom(); clean = jsdom();
Object.defineProperty(window, 'crypto', { Object.defineProperty(window, 'crypto', {
value: new WebCrypto(), value: new WebCrypto(),
writeable: false, writeable: false
}); });
// ensure zlib is getting loaded // ensure zlib is getting loaded
$.PrivateBin.Controller.initZ(); $.PrivateBin.Controller.initZ();
@@ -243,9 +58,10 @@ describe('CryptTool', function () {
'foo', 'bar', cipherMessage 'foo', 'bar', cipherMessage
); );
clean(); clean();
const result = (message === plaintext); if (message !== plaintext) {
if (!result) console.log(plaintext, cipherMessage); console.log(plaintext, cipherMessage);
assert.ok(result); }
assert.strictEqual(message, plaintext);
}); });
it('can en- and decrypt a particular message (#260)', function () { it('can en- and decrypt a particular message (#260)', function () {
@@ -280,7 +96,7 @@ conseq_or_bottom inv (interp (nth_iterate sBody n) (MemElem mem))
$.PrivateBin.Controller.initZ(); $.PrivateBin.Controller.initZ();
Object.defineProperty(window, 'crypto', { Object.defineProperty(window, 'crypto', {
value: new WebCrypto(), value: new WebCrypto(),
writeable: false, writeable: false
}); });
const cipherMessage = await $.PrivateBin.CryptTool.cipher( const cipherMessage = await $.PrivateBin.CryptTool.cipher(
key, password, message, [] key, password, message, []
@@ -310,7 +126,7 @@ conseq_or_bottom inv (interp (nth_iterate sBody n) (MemElem mem))
const clean = jsdom(); const clean = jsdom();
Object.defineProperty(window, 'crypto', { Object.defineProperty(window, 'crypto', {
value: new WebCrypto(), value: new WebCrypto(),
writeable: false, writeable: false
}); });
const key = $.PrivateBin.CryptTool.getSymmetricKey(), const key = $.PrivateBin.CryptTool.getSymmetricKey(),
result = (key !== '' && keys.indexOf(key) === -1); result = (key !== '' && keys.indexOf(key) === -1);
+1 -1
View File
@@ -16,7 +16,7 @@ describe('Editor', function () {
'role="presentation" class="active"><a id="messageedit" ' + 'role="presentation" class="active"><a id="messageedit" ' +
'href="#">Editor</a></li><li role="presentation"><a ' + 'href="#">Editor</a></li><li role="presentation"><a ' +
'id="messagepreview" href="#">Preview</a></li></ul><div ' + 'id="messagepreview" href="#">Preview</a></li></ul><div ' +
'id="placeholder" class="hidden">+++ no paste text +++</div>' + 'id="placeholder" class="hidden">+++ no document text +++</div>' +
'<div id="prettymessage" class="hidden"><pre id="prettyprint" ' + '<div id="prettymessage" class="hidden"><pre id="prettyprint" ' +
'class="prettyprint linenums:1"></pre></div><div ' + 'class="prettyprint linenums:1"></pre></div><div ' +
'id="plaintext" class="hidden"></div><p><textarea ' + 'id="plaintext" class="hidden"></div><p><textarea ' +
+45 -12
View File
@@ -82,7 +82,8 @@ describe('Helper', function () {
'ignores non-URL content', 'ignores non-URL content',
'string', 'string',
function (content) { function (content) {
content = content.replace(/\r|\f/g, '\n').replace(/\u0000/g, '').replace(/\u000b/g, ''); // eslint-disable-next-line no-control-regex
content = content.replace(/\r|\f/g, '\n').replace(/\u0000|\u000b/g, '');
let clean = jsdom(); let clean = jsdom();
$('body').html('<div id="foo"></div>'); $('body').html('<div id="foo"></div>');
let e = $('#foo'); let e = $('#foo');
@@ -100,7 +101,9 @@ describe('Helper', function () {
jsc.array(common.jscHashString()), jsc.array(common.jscHashString()),
'string', 'string',
function (prefix, url, fragment, postfix) { function (prefix, url, fragment, postfix) {
prefix = prefix.replace(/\r|\f/g, '\n').replace(/\u0000/g, '').replace(/\u000b/g, ''); // eslint-disable-next-line no-control-regex
prefix = prefix.replace(/\r|\f/g, '\n').replace(/\u0000|\u000b/g, '');
// eslint-disable-next-line no-control-regex
postfix = ' ' + postfix.replace(/\r/g, '\n').replace(/\u0000/g, ''); postfix = ' ' + postfix.replace(/\r/g, '\n').replace(/\u0000/g, '');
url.fragment = fragment.join(''); url.fragment = fragment.join('');
let urlString = common.urlToString(url), let urlString = common.urlToString(url),
@@ -132,9 +135,11 @@ describe('Helper', function () {
jsc.array(common.jscQueryString()), jsc.array(common.jscQueryString()),
'string', 'string',
function (prefix, query, postfix) { function (prefix, query, postfix) {
prefix = prefix.replace(/\r|\f/g, '\n').replace(/\u0000/g, '').replace(/\u000b/g, ''); // eslint-disable-next-line no-control-regex
prefix = prefix.replace(/\r|\f/g, '\n').replace(/\u0000|\u000b/g, '');
// eslint-disable-next-line no-control-regex
postfix = ' ' + postfix.replace(/\r/g, '\n').replace(/\u0000/g, ''); postfix = ' ' + postfix.replace(/\r/g, '\n').replace(/\u0000/g, '');
let url = 'magnet:?' + query.join('').replace(/^&+|&+$/gm,''), let url = 'magnet:?' + query.join('').replace(/^&+|&+$/gm, ''),
clean = jsdom(); clean = jsdom();
$('body').html('<div id="foo"></div>'); $('body').html('<div id="foo"></div>');
let e = $('#foo'); let e = $('#foo');
@@ -300,21 +305,49 @@ describe('Helper', function () {
return $.PrivateBin.Helper.formatBytes(500) === '500 B'; return $.PrivateBin.Helper.formatBytes(500) === '500 B';
}); });
jsc.property('formats kibibytes correctly', function () { jsc.property('formats kilobytes correctly', function () {
return $.PrivateBin.Helper.formatBytes(1500) === '1.46 KiB'; return $.PrivateBin.Helper.formatBytes(1500) === '1.5 kB';
}); });
jsc.property('formats mebibytes correctly', function () { jsc.property('formats megabytes correctly', function () {
return $.PrivateBin.Helper.formatBytes(2 * 1000 * 1000) === '1.91 MiB'; return $.PrivateBin.Helper.formatBytes(2 * 1000 * 1000) === '2 MB';
}); });
jsc.property('formats gibibytes correctly', function () { jsc.property('formats gigabytes correctly', function () {
return $.PrivateBin.Helper.formatBytes(3.45 * 1000 * 1000 * 1000) === '3.21 GiB'; return $.PrivateBin.Helper.formatBytes(3.45 * 1000 * 1000 * 1000) === '3.45 GB';
});
jsc.property('formats terabytes correctly', function () {
return $.PrivateBin.Helper.formatBytes(1.75 * 1000 ** 4) === '1.75 TB';
});
jsc.property('formats petabytes correctly', function () {
return $.PrivateBin.Helper.formatBytes(1.5 * 1000 ** 5) === '1.5 PB';
});
jsc.property('formats exabytes correctly', function () {
return $.PrivateBin.Helper.formatBytes(1.2345 * 1000 ** 6).startsWith('1.23 EB');
});
jsc.property('formats yottabytes correctly', function () {
return $.PrivateBin.Helper.formatBytes(1.23 * 1000 ** 8).startsWith('1.23 YB');
}); });
jsc.property('rounds to two decimal places', function () { jsc.property('rounds to two decimal places', function () {
return $.PrivateBin.Helper.formatBytes(1234567) === '1.18 MiB'; return $.PrivateBin.Helper.formatBytes(1234567) === '1.23 MB';
});
});
describe('isBootstrap5', function () {
jsc.property('Bootstrap 5 has been detected', function () {
global.bootstrap = {};
return $.PrivateBin.Helper.isBootstrap5() === true;
});
jsc.property('Bootstrap 5 has not been detected', function () {
delete global.bootstrap;
return $.PrivateBin.Helper.isBootstrap5() === false;
}); });
}); });
}); });
+1
View File
@@ -192,6 +192,7 @@ describe('I18n', function () {
// mock // mock
clean = jsdom('', {cookie: ['lang=' + language]}); clean = jsdom('', {cookie: ['lang=' + language]});
// eslint-disable-next-line global-require
$.PrivateBin.I18n.reset(language, require('../../i18n/' + language + '.json')); $.PrivateBin.I18n.reset(language, require('../../i18n/' + language + '.json'));
var loadedLang = $.PrivateBin.I18n.getLanguage(), var loadedLang = $.PrivateBin.I18n.getLanguage(),
result = $.PrivateBin.I18n.translate('Never'), result = $.PrivateBin.I18n.translate('Never'),
+12 -6
View File
@@ -104,8 +104,8 @@ describe('Model', function () {
'throws exception on empty query string', 'throws exception on empty query string',
common.jscUrl(true, false), common.jscUrl(true, false),
function (url) { function (url) {
let clean = jsdom('', {url: common.urlToString(url)}), const clean = jsdom('', {url: common.urlToString(url)});
result = false; let result = false;
try { try {
$.PrivateBin.Model.getPasteId(); $.PrivateBin.Model.getPasteId();
} }
@@ -126,15 +126,21 @@ describe('Model', function () {
}); });
jsc.property( jsc.property(
'returns the fragment of a v1 URL', 'throws exception on v1 URLs',
common.jscUrl(), common.jscUrl(),
function (url) { function (url) {
url.fragment = '0OIl'; // any non-base58 string url.fragment = '0OIl'; // any non-base58 string
const clean = jsdom('', {url: common.urlToString(url)}), const clean = jsdom('', {url: common.urlToString(url)});
result = $.PrivateBin.Model.getPasteKey(); let result = false;
try {
$.PrivateBin.Model.getPasteId();
}
catch(err) {
result = true;
}
$.PrivateBin.Model.reset(); $.PrivateBin.Model.reset();
clean(); clean();
return url.fragment === result; return result;
} }
); );
jsc.property( jsc.property(
+12 -44
View File
@@ -23,7 +23,7 @@ describe('PasteStatus', function () {
this.timeout(30000); this.timeout(30000);
jsc.property( jsc.property(
'creates a notification after a successfull paste upload', 'creates a notification after a successful document upload',
common.jscUrl(), common.jscUrl(),
common.jscUrl(false), common.jscUrl(false),
function (url1, url2) { function (url1, url2) {
@@ -50,7 +50,7 @@ describe('PasteStatus', function () {
'nestring', 'nestring',
common.jscUrl(), common.jscUrl(),
function (schema, domain, url) { function (schema, domain, url) {
domain = domain.replace(/\P{Letter}|[\u00AA-\u00BA]/gu, '').toLowerCase(); domain = domain.replace(/\P{Letter}|[\u{AA}-\u{BA}]/gu, '').toLowerCase();
if (domain.length === 0) { if (domain.length === 0) {
domain = 'a'; domain = 'a';
} }
@@ -88,13 +88,13 @@ describe('PasteStatus', function () {
url: { url: {
keyword: longUrl.address.join(''), keyword: longUrl.address.join(''),
url: longUrlString, url: longUrlString,
title: "example title", title: 'example title',
date: "2014-10-24 16:01:39", date: '2014-10-24 16:01:39',
ip: "127.0.0.1" ip: '127.0.0.1'
}, },
status: "success", status: 'success',
message: longUrlString + " added to database", message: longUrlString + ' added to database',
title: "example title", title: 'example title',
shorturl: shortUrlString, shorturl: shortUrlString,
statusCode: 200 statusCode: 200
}, },
@@ -149,13 +149,12 @@ describe('PasteStatus', function () {
'<html lang="en">\n' + '<html lang="en">\n' +
'\t<head>\n' + '\t<head>\n' +
'\t\t<meta charset="utf-8" />\n' + '\t\t<meta charset="utf-8" />\n' +
'\t\t<meta http-equiv="Content-Security-Policy" content="default-src \'none\'; base-uri \'self\'; form-action \'none\'; manifest-src \'self\'; connect-src * blob:; script-src \'self\' \'unsafe-eval\'; style-src \'self\'; font-src \'self\'; frame-ancestors \'none\'; img-src \'self\' data: blob:; media-src blob:; object-src blob:; sandbox allow-same-origin allow-scripts allow-forms allow-popups allow-modals allow-downloads">\n' +
'\t\t<meta name="robots" content="noindex" />\n' + '\t\t<meta name="robots" content="noindex" />\n' +
'\t\t<meta name="google" content="notranslate">\n' + '\t\t<meta name="google" content="notranslate">\n' +
'\t\t<title>PrivateBin</title>\n' + '\t\t<title>PrivateBin</title>\n' +
'\t</head>\n' + '\t</head>\n' +
'\t<body>\n' + '\t<body>\n' +
'\t\t<p>Your paste is <a id="pasteurl" href="' + shortUrlString + '">' + shortUrlString + '</a> <span id="copyhint">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span></p>\n' + '\t\t<p>Your document is <a id="pasteurl" href="' + shortUrlString + '">' + shortUrlString + '</a> <span id="copyhint">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span></p>\n' +
'\t</body>\n' + '\t</body>\n' +
'</html>', '</html>',
clean = jsdom(); clean = jsdom();
@@ -177,36 +176,7 @@ describe('PasteStatus', function () {
this.timeout(30000); this.timeout(30000);
jsc.property( jsc.property(
'shows burn after reading message or remaining time v1', 'shows burn after reading message or remaining time',
'bool',
'nat',
common.jscUrl(),
function (burnafterreading, remainingTime, url) {
let clean = jsdom('', {url: common.urlToString(url)}),
result;
$('body').html('<div id="remainingtime" class="hidden"></div>');
$.PrivateBin.PasteStatus.init();
$.PrivateBin.PasteStatus.showRemainingTime($.PrivateBin.Helper.PasteFactory({'meta': {
'burnafterreading': burnafterreading,
'remaining_time': remainingTime
}}));
if (burnafterreading) {
result = $('#remainingtime').hasClass('foryoureyesonly') &&
!$('#remainingtime').hasClass('hidden');
} else if (remainingTime) {
result =!$('#remainingtime').hasClass('foryoureyesonly') &&
!$('#remainingtime').hasClass('hidden');
} else {
result = $('#remainingtime').hasClass('hidden') &&
!$('#remainingtime').hasClass('foryoureyesonly');
}
clean();
return result;
}
);
jsc.property(
'shows burn after reading message or remaining time v2',
'bool', 'bool',
'nat', 'nat',
common.jscUrl(), common.jscUrl(),
@@ -247,10 +217,8 @@ describe('PasteStatus', function () {
); );
$.PrivateBin.PasteStatus.init(); $.PrivateBin.PasteStatus.init();
$.PrivateBin.PasteStatus.hideMessages(); $.PrivateBin.PasteStatus.hideMessages();
assert.ok( assert.ok($('#remainingtime').hasClass('hidden'));
$('#remainingtime').hasClass('hidden') && assert.ok($('#pastesuccess').hasClass('hidden'));
$('#pastesuccess').hasClass('hidden')
);
} }
); );
}); });
+5 -5
View File
@@ -13,7 +13,7 @@ describe('PasteViewer', function () {
var clean = jsdom(), var clean = jsdom(),
results = []; results = [];
$('body').html( $('body').html(
'<div id="placeholder" class="hidden">+++ no paste text ' + '<div id="placeholder" class="hidden">+++ no document text ' +
'+++</div><div id="prettymessage" class="hidden"><pre ' + '+++</div><div id="prettymessage" class="hidden"><pre ' +
'id="prettyprint" class="prettyprint linenums:1"></pre>' + 'id="prettyprint" class="prettyprint linenums:1"></pre>' +
'</div><div id="plaintext" class="hidden"></div>' '</div><div id="plaintext" class="hidden"></div>'
@@ -75,8 +75,9 @@ describe('PasteViewer', function () {
'<SCRIPT SRC=http://example.com/xss.js></SCRIPT>', '<SCRIPT SRC=http://example.com/xss.js></SCRIPT>',
'\'">><marquee><img src=x onerror=confirm(1)></marquee>">' + '\'">><marquee><img src=x onerror=confirm(1)></marquee>">' +
'</plaintext\\></|\\><plaintext/onmouseover=prompt(1)>' + '</plaintext\\></|\\><plaintext/onmouseover=prompt(1)>' +
'<script>prompt(1)</script>@gmail.com<isindex formaction=' + '<script>prompt(1)</script>@gmail.com<isindex formaction=java' +
'javascript:alert(/XSS/) type=submit>\'-->"></script>' + // obfuscate script URL from eslint rule: no-script-url
'script:alert(/XSS/) type=submit>\'-->"></script>' +
'<script>alert(document.cookie)</script>"><img/id="confirm' + '<script>alert(document.cookie)</script>"><img/id="confirm' +
'&lpar;1)"/alt="/"src="/"onerror=eval(id)>\'">', '&lpar;1)"/alt="/"src="/"onerror=eval(id)>\'">',
'<IMG SRC="javascript:alert(\'XSS\');">', '<IMG SRC="javascript:alert(\'XSS\');">',
@@ -99,7 +100,7 @@ describe('PasteViewer', function () {
var clean = jsdom(), var clean = jsdom(),
text = prefix + xss + suffix; text = prefix + xss + suffix;
$('body').html( $('body').html(
'<div id="placeholder" class="hidden">+++ no paste text ' + '<div id="placeholder" class="hidden">+++ no document text ' +
'+++</div><div id="prettymessage" class="hidden"><pre ' + '+++</div><div id="prettymessage" class="hidden"><pre ' +
'id="prettyprint" class="prettyprint linenums:1"></pre>' + 'id="prettyprint" class="prettyprint linenums:1"></pre>' +
'</div><div id="plaintext" class="hidden"></div>' '</div><div id="plaintext" class="hidden"></div>'
@@ -115,4 +116,3 @@ describe('PasteViewer', function () {
); );
}); });
}); });
+2 -4
View File
@@ -2,8 +2,6 @@
require('../common'); require('../common');
describe('Prompt', function () { describe('Prompt', function () {
// TODO: this does not test the prompt() fallback, since that isn't available
// in nodejs -> replace the prompt in the "page" template with a modal
describe('requestPassword & getPassword', function () { describe('requestPassword & getPassword', function () {
this.timeout(30000); this.timeout(30000);
@@ -12,7 +10,7 @@ describe('Prompt', function () {
'string', 'string',
function (password) { function (password) {
password = password.replace(/\r+|\n+/g, ''); password = password.replace(/\r+|\n+/g, '');
var clean = jsdom('', {url: 'ftp://example.com/?0000000000000000'}); const clean = jsdom('', {url: 'ftp://example.com/?0000000000000000'});
$('body').html( $('body').html(
'<div id="passwordmodal" class="modal fade" role="dialog">' + '<div id="passwordmodal" class="modal fade" role="dialog">' +
'<div class="modal-dialog"><div class="modal-content">' + '<div class="modal-dialog"><div class="modal-content">' +
@@ -32,7 +30,7 @@ describe('Prompt', function () {
// TODO triggers error messages in current jsDOM version, find better solution // TODO triggers error messages in current jsDOM version, find better solution
//$('#passwordform').submit(); //$('#passwordform').submit();
//var result = $.PrivateBin.Prompt.getPassword(); //var result = $.PrivateBin.Prompt.getPassword();
var result = $('#passworddecrypt').val(); const result = $('#passworddecrypt').val();
$.PrivateBin.Model.reset(); $.PrivateBin.Model.reset();
// TODO triggers error messages in jsDOM since version 11 // TODO triggers error messages in jsDOM since version 11
//clean(); //clean();
+1 -1
View File
@@ -8,7 +8,7 @@ describe('ServerInteraction', function () {
await new Promise(resolve => setTimeout(resolve, 1900)); await new Promise(resolve => setTimeout(resolve, 1900));
}); });
this.timeout(30000); this.timeout(30000);
it('can prepare an encrypted paste', function () { it('can prepare an encrypted document', function () {
jsc.assert(jsc.forall( jsc.assert(jsc.forall(
'string', 'string',
'string', 'string',
+103 -39
View File
@@ -8,7 +8,7 @@ describe('TopNav', function () {
}); });
it( it(
'displays & hides navigation elements for viewing an existing paste', 'displays & hides navigation elements for viewing an existing document',
function () { function () {
var results = []; var results = [];
$('body').html( $('body').html(
@@ -52,7 +52,11 @@ describe('TopNav', function () {
$('#qrcodelink').hasClass('hidden') $('#qrcodelink').hasClass('hidden')
); );
cleanup(); cleanup();
assert.ok(results.every(element => element)); const result = results.every(element => element);
if (!result) {
console.log(results);
}
assert.ok(result);
} }
); );
}); });
@@ -63,8 +67,8 @@ describe('TopNav', function () {
}); });
it( it(
'displays & hides navigation elements for creating a paste', 'displays & hides navigation elements for creating a document',
function () { function () { // eslint-disable-line complexity
var results = []; var results = [];
$('body').html( $('body').html(
'<nav><div id="navbar"><ul><li><button id="newbutton" ' + '<nav><div id="navbar"><ul><li><button id="newbutton" ' +
@@ -113,7 +117,11 @@ describe('TopNav', function () {
$('#attach').hasClass('hidden') $('#attach').hasClass('hidden')
); );
cleanup(); cleanup();
assert.ok(results.every(element => element)); const result = results.every(element => element);
if (!result) {
console.log(results);
}
assert.ok(result);
} }
); );
}); });
@@ -124,7 +132,7 @@ describe('TopNav', function () {
}); });
it( it(
'displays the button for creating a paste', 'displays the button for creating a document',
function () { function () {
var results = []; var results = [];
$('body').html( $('body').html(
@@ -140,7 +148,11 @@ describe('TopNav', function () {
!$('#newbutton').hasClass('hidden') !$('#newbutton').hasClass('hidden')
); );
cleanup(); cleanup();
assert.ok(results.every(element => element)); const result = results.every(element => element);
if (!result) {
console.log(results);
}
assert.ok(result);
} }
); );
}); });
@@ -151,7 +163,7 @@ describe('TopNav', function () {
}); });
it( it(
'hides the button for cloning a paste', 'hides the button for cloning a document',
function () { function () {
var results = []; var results = [];
$('body').html( $('body').html(
@@ -169,7 +181,11 @@ describe('TopNav', function () {
$('#clonebutton').hasClass('hidden') $('#clonebutton').hasClass('hidden')
); );
cleanup(); cleanup();
assert.ok(results.every(element => element)); const result = results.every(element => element);
if (!result) {
console.log(results);
}
assert.ok(result);
} }
); );
}); });
@@ -199,7 +215,11 @@ describe('TopNav', function () {
$('#rawtextbutton').hasClass('hidden') $('#rawtextbutton').hasClass('hidden')
); );
cleanup(); cleanup();
assert.ok(results.every(element => element)); const result = results.every(element => element);
if (!result) {
console.log(results);
}
assert.ok(result);
} }
); );
}); });
@@ -233,7 +253,11 @@ describe('TopNav', function () {
$('#filewrap').hasClass('hidden') $('#filewrap').hasClass('hidden')
); );
cleanup(); cleanup();
assert.ok(results.every(element => element)); const result = results.every(element => element);
if (!result) {
console.log(results);
}
assert.ok(result);
} }
); );
}); });
@@ -267,7 +291,11 @@ describe('TopNav', function () {
!$('#customattachment').hasClass('hidden') !$('#customattachment').hasClass('hidden')
); );
cleanup(); cleanup();
assert.ok(results.every(element => element)); const result = results.every(element => element);
if (!result) {
console.log(results);
}
assert.ok(result);
} }
); );
}); });
@@ -295,12 +323,12 @@ describe('TopNav', function () {
$.PrivateBin.TopNav.init(); $.PrivateBin.TopNav.init();
results.push( results.push(
$('.navbar-toggle').hasClass('collapsed') && $('.navbar-toggle').hasClass('collapsed') &&
$('#navbar').attr('aria-expanded') != 'true' $('#navbar').attr('aria-expanded') !== 'true'
); );
$.PrivateBin.TopNav.collapseBar(); $.PrivateBin.TopNav.collapseBar();
results.push( results.push(
$('.navbar-toggle').hasClass('collapsed') && $('.navbar-toggle').hasClass('collapsed') &&
$('#navbar').attr('aria-expanded') != 'true' $('#navbar').attr('aria-expanded') !== 'true'
); );
/* /*
with the upgrade for bootstrap-3.3.7.js to bootstrap-3.4.1.js with the upgrade for bootstrap-3.3.7.js to bootstrap-3.4.1.js
@@ -318,7 +346,11 @@ describe('TopNav', function () {
); );
*/ */
clean(); clean();
assert.ok(results.every(element => element)); const result = results.every(element => element);
if (!result) {
console.log(results);
}
assert.ok(result);
} }
); );
}); });
@@ -364,7 +396,11 @@ describe('TopNav', function () {
!$.PrivateBin.TopNav.getOpenDiscussion() !$.PrivateBin.TopNav.getOpenDiscussion()
); );
cleanup(); cleanup();
assert.ok(results.every(element => element)); const result = results.every(element => element);
if (!result) {
console.log(results);
}
assert.ok(result);
} }
); );
@@ -403,7 +439,11 @@ describe('TopNav', function () {
!$.PrivateBin.TopNav.getOpenDiscussion() !$.PrivateBin.TopNav.getOpenDiscussion()
); );
cleanup(); cleanup();
assert.ok(results.every(element => element)); const result = results.every(element => element);
if (!result) {
console.log(results);
}
assert.ok(result);
} }
); );
@@ -443,7 +483,11 @@ describe('TopNav', function () {
$.PrivateBin.TopNav.getOpenDiscussion() $.PrivateBin.TopNav.getOpenDiscussion()
); );
cleanup(); cleanup();
assert.ok(results.every(element => element)); const result = results.every(element => element);
if (!result) {
console.log(results);
}
assert.ok(result);
} }
); );
}); });
@@ -462,7 +506,7 @@ describe('TopNav', function () {
'<option value="never">Never</option></select>' '<option value="never">Never</option></select>'
); );
$.PrivateBin.TopNav.init(); $.PrivateBin.TopNav.init();
assert.ok($.PrivateBin.TopNav.getExpiration() === '1day'); assert.strictEqual($.PrivateBin.TopNav.getExpiration(), '1day');
cleanup(); cleanup();
} }
); );
@@ -475,8 +519,8 @@ describe('TopNav', function () {
var File = window.File, var File = window.File,
FileList = window.FileList, FileList = window.FileList,
path = require('path'), path = require('path'), // eslint-disable-line global-require
mime = require('mime-types'); mime = require('mime-types'); // eslint-disable-line global-require
// mocking file input as per https://github.com/jsdom/jsdom/issues/1272 // mocking file input as per https://github.com/jsdom/jsdom/issues/1272
function createFile(file_path) { function createFile(file_path) {
@@ -489,27 +533,27 @@ describe('TopNav', function () {
path.basename(file_path), path.basename(file_path),
{ {
lastModified, lastModified,
type: mime.lookup(file_path) || '', type: mime.lookup(file_path) || ''
} }
) );
} }
function addFileList(input, file_paths) { function addFileList(input, file_paths) {
if (typeof file_paths === 'string') if (typeof file_paths === 'string') {
file_paths = [file_paths] file_paths = [file_paths];
else if (!Array.isArray(file_paths)) { } else if (!Array.isArray(file_paths)) {
throw new Error('file_paths needs to be a file path string or an Array of file path strings') throw new Error('file_paths needs to be a file path string or an Array of file path strings');
} }
const file_list = file_paths.map(fp => createFile(fp)) const file_list = file_paths.map(fp => createFile(fp));
file_list.__proto__ = Object.create(FileList.prototype) Object.setPrototypeOf(file_list, Object.create(FileList.prototype));
Object.defineProperty(input, 'files', { Object.defineProperty(input, 'files', {
value: file_list, value: file_list,
writeable: false, writeable: false
}) });
return input return input;
} }
it( it(
@@ -541,7 +585,11 @@ describe('TopNav', function () {
files[1].name === 'busy.gif' files[1].name === 'busy.gif'
); );
cleanup(); cleanup();
assert.ok(results.every(element => element)); const result = results.every(element => element);
if (!result) {
console.log(results);
}
assert.ok(result);
} }
); );
}); });
@@ -574,7 +622,11 @@ describe('TopNav', function () {
!$.PrivateBin.TopNav.getBurnAfterReading() !$.PrivateBin.TopNav.getBurnAfterReading()
); );
cleanup(); cleanup();
assert.ok(results.every(element => element)); const result = results.every(element => element);
if (!result) {
console.log(results);
}
assert.ok(result);
} }
); );
}); });
@@ -607,7 +659,11 @@ describe('TopNav', function () {
!$.PrivateBin.TopNav.getOpenDiscussion() !$.PrivateBin.TopNav.getOpenDiscussion()
); );
cleanup(); cleanup();
assert.ok(results.every(element => element)); const result = results.every(element => element);
if (!result) {
console.log(results);
}
assert.ok(result);
} }
); );
}); });
@@ -642,7 +698,11 @@ describe('TopNav', function () {
$.PrivateBin.TopNav.getPassword() === '' $.PrivateBin.TopNav.getPassword() === ''
); );
cleanup(); cleanup();
return results.every(element => element); const result = results.every(element => element);
if (!result) {
console.log(results);
}
return result;
} }
); );
}); });
@@ -676,7 +736,11 @@ describe('TopNav', function () {
$.PrivateBin.TopNav.getCustomAttachment().hasClass('test') $.PrivateBin.TopNav.getCustomAttachment().hasClass('test')
); );
cleanup(); cleanup();
assert.ok(results.every(element => element)); const result = results.every(element => element);
if (!result) {
console.log(results);
}
assert.ok(result);
} }
); );
}); });
@@ -731,14 +795,14 @@ describe('TopNav', function () {
it( it(
'displays raw text view correctly', 'displays raw text view correctly',
function () { function () {
const clean = jsdom('', {url: 'https://privatebin.net/?0123456789abcdef#0'}); const clean = jsdom('', {url: 'https://privatebin.net/?0123456789abcdef#1'});
$('body').html('<button id="rawtextbutton"></button>'); $('body').html('<button id="rawtextbutton"></button>');
const sample = 'example'; const sample = 'example';
$.PrivateBin.PasteViewer.setText(sample); $.PrivateBin.PasteViewer.setText(sample);
$.PrivateBin.Helper.reset(); $.PrivateBin.Helper.reset();
$.PrivateBin.TopNav.init(); $.PrivateBin.TopNav.init();
$('#rawtextbutton').click(); $('#rawtextbutton').click();
assert.equal($('pre').text(), sample); assert.strictEqual($('pre').text(), sample);
clean(); clean();
} }
); );
+1 -1
View File
@@ -27,7 +27,7 @@ describe('UiHelper', function () {
); );
jsc.property( jsc.property(
'does not redirect to home, when a new paste is created', 'does not redirect to home, when a new document is created',
common.jscUrl(false), common.jscUrl(false),
jsc.nearray(common.jscBase64String()), jsc.nearray(common.jscBase64String()),
function (url, fragment) { function (url, fragment) {
+137
View File
@@ -0,0 +1,137 @@
'use strict';
var common = require('../common');
const assert = require('assert');
// DOM builder that mirrors bootstrap5.php navbar
function buildEmailDomNoShortUrl() {
$('body').html(
// TopNav expects initially hidden #emaillink BUTTON.
'<nav><div id="navbar"><ul>' +
'<li>' +
'<button id="clonebutton" type="button" class="btn btn-warning navbar-btn">' +
'<span class="glyphicon glyphicon-duplicate" aria-hidden="true"></span> Clone' +
'</button>' +
'</li>' +
'<li>' +
'<button id="emaillink" type="button" class="hidden btn btn-secondary">Email</button>' +
'</li>' +
'</ul></div></nav>' +
'<input id="burnafterreadingoption" type="checkbox">'
);
}
// DOM builder that adds the shortener result block
function buildEmailDomWithShortUrl() {
buildEmailDomNoShortUrl();
$('body').html(
// TopNav expectsinitially hidden #emaillink BUTTON.
'<nav><div id="navbar"><ul>' +
'<li>' +
'<button id="clonebutton" type="button" class="btn btn-warning navbar-btn">' +
'<span class="glyphicon glyphicon-duplicate" aria-hidden="true"></span> Clone' +
'</button>' +
'</li>' +
'<li>' +
'<button id="emaillink" type="button" class="hidden btn btn-secondary">Email</button>' +
'</li>' +
'</ul></div></nav>' +
'<input id="burnafterreadingoption" type="checkbox">' +
'<div id="pastelink">Your document is ' +
'<a id="pasteurl" href="https://short.example/xYz">https://short.example/xYz</a> ' +
'<span id="copyhint">(Hit <kbd>Ctrl</kbd>+<kbd>c</kbd> to copy)</span>' +
'</div>'
);
}
function stubWinOpen($element) {
const win = $element[0].ownerDocument.defaultView;
// Some helpers in privatebin.js expect a global document.
global.document = win.document;
let openedUrl = null;
const origOpen = win.open;
// Prefer simple assignment; if blocked, fall back to defineProperty.
try {
win.open = function (url) {
openedUrl = url;
return {};
};
} catch (e) {
Object.defineProperty(win, 'open', {
value: function (url) {
openedUrl = url;
return {};
},
configurable: true,
writable: true
});
}
return {
getUrl: () => openedUrl,
restore: () => { try { win.open = origOpen; } catch (e) { /* suppress exception in restore */ } },
win
};
}
// Extract and decode the body from a "mailto:?body=..." URL.
function extractMailtoBody(mailtoUrl) {
assert.match(mailtoUrl, /^mailto:\?body=/, 'expected a mailto:?body= URL');
return decodeURIComponent(mailtoUrl.replace(/^mailto:\?body=/, ''));
}
describe('Email - mail body content (short URL vs. fallback)', function () {
before(function () {
cleanup(); // provided by common
});
it('Uses the short URL when #pasteurl is present and never includes "undefined"', function () {
buildEmailDomWithShortUrl(); // with #pastelink/#pasteurl
$.PrivateBin.TopNav.init();
$.PrivateBin.TopNav.showEmailButton(0);
const $emailBtn = $('#emaillink');
assert.ok(!$emailBtn.hasClass('hidden'), '#emaillink should be visible after showEmailButton');
const { getUrl, restore } = stubWinOpen($emailBtn);
try {
$emailBtn.trigger('click');
const openedUrl = getUrl();
assert.ok(openedUrl, 'window.open should have been called');
const body = extractMailtoBody(openedUrl);
assert.match(body, /https:\/\/short\.example\/xYz/, 'email body should include the short URL');
assert.doesNotMatch(body, /undefined/, 'email body must not contain "undefined"');
} finally {
restore();
cleanup();
}
});
it('Falls back to window.location.href when #pasteurl is absent and never includes "undefined"', function () {
buildEmailDomNoShortUrl(); // No #pasteurl
$.PrivateBin.TopNav.init();
$.PrivateBin.TopNav.showEmailButton(0);
const $emailBtn = $('#emaillink');
assert.ok(!$emailBtn.hasClass('hidden'), '#emaillink should be visible after showEmailButton');
const { getUrl, restore, win } = stubWinOpen($emailBtn);
try {
$emailBtn.trigger('click');
const openedUrl = getUrl();
assert.ok(openedUrl, 'window.open should have been called');
const body = extractMailtoBody(openedUrl);
assert.match(body, new RegExp(win.location.href), 'email body should include the fallback page URL');
assert.doesNotMatch(body, /undefined/, 'email body must not contain "undefined"');
} finally {
restore();
cleanup();
}
});
});
+17 -34
View File
@@ -25,7 +25,7 @@ class Configuration
* *
* @var array * @var array
*/ */
private $_configuration; protected $_configuration;
/** /**
* default configuration * default configuration
@@ -46,7 +46,7 @@ class Configuration
'syntaxhighlightingtheme' => '', 'syntaxhighlightingtheme' => '',
'sizelimit' => 10485760, 'sizelimit' => 10485760,
'templateselection' => false, 'templateselection' => false,
'template' => 'bootstrap', 'template' => 'bootstrap5',
'availabletemplates' => array( 'availabletemplates' => array(
'bootstrap5', 'bootstrap5',
'bootstrap', 'bootstrap',
@@ -55,18 +55,17 @@ class Configuration
'bootstrap-dark-page', 'bootstrap-dark-page',
'bootstrap-compact', 'bootstrap-compact',
'bootstrap-compact-page', 'bootstrap-compact-page',
'page',
), ),
'info' => 'More information on the <a href=\'https://privatebin.info/\'>project page</a>.', 'info' => 'More information on the <a href=\'https://privatebin.info/\'>project page</a>.',
'notice' => '', 'notice' => '',
'languageselection' => false, 'languageselection' => false,
'languagedefault' => '', 'languagedefault' => '',
'urlshortener' => '', 'urlshortener' => '',
'shortenbydefault' => false,
'qrcode' => true, 'qrcode' => true,
'email' => true, 'email' => true,
'icon' => 'identicon', 'icon' => 'jdenticon',
'cspheader' => 'default-src \'none\'; base-uri \'self\'; form-action \'none\'; manifest-src \'self\'; connect-src * blob:; script-src \'self\' \'wasm-unsafe-eval\'; style-src \'self\'; font-src \'self\'; frame-ancestors \'none\'; frame-src blob:; img-src \'self\' data: blob:; media-src blob:; object-src blob:; sandbox allow-same-origin allow-scripts allow-forms allow-popups allow-modals allow-downloads', 'cspheader' => 'default-src \'none\'; base-uri \'self\'; form-action \'none\'; manifest-src \'self\'; connect-src * blob:; script-src \'self\' \'wasm-unsafe-eval\'; style-src \'self\'; font-src \'self\'; frame-ancestors \'none\'; frame-src blob:; img-src \'self\' data: blob:; media-src blob:; object-src blob:; sandbox allow-same-origin allow-scripts allow-forms allow-modals allow-downloads',
'zerobincompatibility' => false,
'httpwarning' => true, 'httpwarning' => true,
'compression' => 'zlib', 'compression' => 'zlib',
), ),
@@ -108,20 +107,22 @@ class Configuration
'signature' => '', 'signature' => '',
'apiurl' => '', 'apiurl' => '',
), ),
'shlink' => array(
'apikey' => '',
'apiurl' => '',
),
// update this array when adding/changing/removing js files // update this array when adding/changing/removing js files
'sri' => array( 'sri' => array(
'js/base-x-5.0.1.js' => 'sha512-FmhlnjIxQyxkkxQmzf0l6IRGsGbgyCdgqPxypFsEtHMF1naRqaLLo6mcyN5rEaT16nKx1PeJ4g7+07D6gnk/Tg==', 'js/base-x-5.0.1.js' => 'sha512-FmhlnjIxQyxkkxQmzf0l6IRGsGbgyCdgqPxypFsEtHMF1naRqaLLo6mcyN5rEaT16nKx1PeJ4g7+07D6gnk/Tg==',
'js/base64-1.7.js' => 'sha512-JdwsSP3GyHR+jaCkns9CL9NTt4JUJqm/BsODGmYhBcj5EAPKcHYh+OiMfyHbcDLECe17TL0hjXADFkusAqiYgA==',
'js/bootstrap-3.4.1.js' => 'sha512-oBTprMeNEKCnqfuqKd6sbvFzmFQtlXS3e0C/RGFV0hD6QzhHV+ODfaQbAlmY6/q0ubbwlAM/nCJjkrgA3waLzg==', 'js/bootstrap-3.4.1.js' => 'sha512-oBTprMeNEKCnqfuqKd6sbvFzmFQtlXS3e0C/RGFV0hD6QzhHV+ODfaQbAlmY6/q0ubbwlAM/nCJjkrgA3waLzg==',
'js/bootstrap-5.3.8.js' => 'sha512-BkZvJ5rZ3zbDCod5seWHpRGg+PRd6ZgE8Nua/OMtcxqm8Wtg0PqwhUUXK5bqvl3oclMt5O+3zjRVX0L+L2j7fA==', 'js/bootstrap-5.3.8.js' => 'sha512-BkZvJ5rZ3zbDCod5seWHpRGg+PRd6ZgE8Nua/OMtcxqm8Wtg0PqwhUUXK5bqvl3oclMt5O+3zjRVX0L+L2j7fA==',
'js/dark-mode-switch.js' => 'sha512-BhY7dNU14aDN5L+muoUmA66x0CkYUWkQT0nxhKBLP/o2d7jE025+dvWJa4OiYffBGEFgmhrD/Sp+QMkxGMTz2g==', 'js/dark-mode-switch.js' => 'sha512-BhY7dNU14aDN5L+muoUmA66x0CkYUWkQT0nxhKBLP/o2d7jE025+dvWJa4OiYffBGEFgmhrD/Sp+QMkxGMTz2g==',
'js/jquery-3.7.1.js' => 'sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g==', 'js/jquery-3.7.1.js' => 'sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g==',
'js/kjua-0.10.0.js' => 'sha512-BYj4xggowR7QD150VLSTRlzH62YPfhpIM+b/1EUEr7RQpdWAGKulxWnOvjFx1FUlba4m6ihpNYuQab51H6XlYg==', 'js/kjua-0.10.0.js' => 'sha512-BYj4xggowR7QD150VLSTRlzH62YPfhpIM+b/1EUEr7RQpdWAGKulxWnOvjFx1FUlba4m6ihpNYuQab51H6XlYg==',
'js/legacy.js' => 'sha512-iP69buypAHBJOgt7AyDcfaelVxBES9/k3dVfd6hPxTRizVRH2dijEpMWCt1D8OH4FNgytKsDI/J7+9y7IgXPaA==', 'js/legacy.js' => 'sha512-rGXYUpIqbFoHAgBXZ0UlJBdNAIMOC9EQ67MG0X46D5uRB8LvwzgKirbSQRGdYfk8I2jsUcm+tvHXYboUnC6DUg==',
'js/prettify.js' => 'sha512-puO0Ogy++IoA2Pb9IjSxV1n4+kQkKXYAEUtVzfZpQepyDPyXk8hokiYDS7ybMogYlyyEIwMLpZqVhCkARQWLMg==', 'js/prettify.js' => 'sha512-puO0Ogy++IoA2Pb9IjSxV1n4+kQkKXYAEUtVzfZpQepyDPyXk8hokiYDS7ybMogYlyyEIwMLpZqVhCkARQWLMg==',
'js/privatebin.js' => 'sha512-ehY9hXpKGr1xhUaZbD6n2IyfyUvTVHDtcobY/azlnuOnXmdwgH4dHSGUSNxscyeMxHAktS/9K8UTYyCka4Cnlg==', 'js/privatebin.js' => 'sha512-ZwoUDxBdEE+zNoGqr9o7X7CJYS4JStEeNvcOnhz69YVbXjiibNoYSY7i3vc6MLI3M/K1K6sIUmSFm8sjoUdF5Q==',
'js/purify-3.3.0.js' => 'sha512-lsHD5zxs4lu/NDzaaibe27Vd2t7Cy9JQ3qDHUvDfb4oZvKoWDNEhwUY+4bT3R68cGgpgCYp8U1x2ifeVxqurdQ==', 'js/purify-3.3.0.js' => 'sha512-lsHD5zxs4lu/NDzaaibe27Vd2t7Cy9JQ3qDHUvDfb4oZvKoWDNEhwUY+4bT3R68cGgpgCYp8U1x2ifeVxqurdQ==',
'js/rawinflate-0.3.js' => 'sha512-g8uelGgJW9A/Z1tB6Izxab++oj5kdD7B4qC7DHwZkB6DGMXKyzx7v5mvap2HXueI2IIn08YlRYM56jwWdm2ucQ==',
'js/showdown-2.1.0.js' => 'sha512-WYXZgkTR0u/Y9SVIA4nTTOih0kXMEd8RRV6MLFdL6YU8ymhR528NLlYQt1nlJQbYz4EW+ZsS0fx1awhiQJme1Q==', 'js/showdown-2.1.0.js' => 'sha512-WYXZgkTR0u/Y9SVIA4nTTOih0kXMEd8RRV6MLFdL6YU8ymhR528NLlYQt1nlJQbYz4EW+ZsS0fx1awhiQJme1Q==',
'js/zlib-1.3.1-1.js' => 'sha512-5bU9IIP4PgBrOKLZvGWJD4kgfQrkTz8Z3Iqeu058mbQzW3mCumOU6M3UVbVZU9rrVoVwaW4cZK8U8h5xjF88eQ==', 'js/zlib-1.3.1-1.js' => 'sha512-5bU9IIP4PgBrOKLZvGWJD4kgfQrkTz8Z3Iqeu058mbQzW3mCumOU6M3UVbVZU9rrVoVwaW4cZK8U8h5xjF88eQ==',
), ),
@@ -166,10 +167,8 @@ class Configuration
} }
// provide different defaults for database model // provide different defaults for database model
elseif ( elseif (
$section == 'model_options' && in_array( $section == 'model_options' &&
$this->_configuration['model']['class'], $this->_configuration['model']['class'] === 'Database'
array('Database', 'privatebin_db', 'zerobin_db')
)
) { ) {
$values = array( $values = array(
'dsn' => 'sqlite:' . PATH . 'data' . DIRECTORY_SEPARATOR . 'db.sq3', 'dsn' => 'sqlite:' . PATH . 'data' . DIRECTORY_SEPARATOR . 'db.sq3',
@@ -179,10 +178,8 @@ class Configuration
'opt' => array(), 'opt' => array(),
); );
} elseif ( } elseif (
$section == 'model_options' && in_array( $section == 'model_options' &&
$this->_configuration['model']['class'], $this->_configuration['model']['class'] === 'GoogleCloudStorage'
array('GoogleCloudStorage')
)
) { ) {
$values = array( $values = array(
'bucket' => getenv('PRIVATEBIN_GCS_BUCKET') ? getenv('PRIVATEBIN_GCS_BUCKET') : null, 'bucket' => getenv('PRIVATEBIN_GCS_BUCKET') ? getenv('PRIVATEBIN_GCS_BUCKET') : null,
@@ -190,10 +187,8 @@ class Configuration
'uniformacl' => false, 'uniformacl' => false,
); );
} elseif ( } elseif (
$section == 'model_options' && in_array( $section == 'model_options' &&
$this->_configuration['model']['class'], $this->_configuration['model']['class'] === 'S3Storage'
array('S3Storage')
)
) { ) {
$values = array( $values = array(
'region' => null, 'region' => null,
@@ -254,18 +249,6 @@ class Configuration
} }
} }
// support for old config file format, before the fork was renamed and PSR-4 introduced
$this->_configuration['model']['class'] = str_replace(
'zerobin_', 'privatebin_',
$this->_configuration['model']['class']
);
$this->_configuration['model']['class'] = str_replace(
array('privatebin_data', 'privatebin_db'),
array('Filesystem', 'Database'),
$this->_configuration['model']['class']
);
// ensure a valid expire default key is set // ensure a valid expire default key is set
if (!array_key_exists($this->_configuration['expire']['default'], $this->_configuration['expire_options'])) { if (!array_key_exists($this->_configuration['expire']['default'], $this->_configuration['expire_options'])) {
$this->_configuration['expire']['default'] = key($this->_configuration['expire_options']); $this->_configuration['expire']['default'] = key($this->_configuration['expire_options']);
+41 -39
View File
@@ -14,6 +14,9 @@ namespace PrivateBin;
use Exception; use Exception;
use PrivateBin\Persistence\ServerSalt; use PrivateBin\Persistence\ServerSalt;
use PrivateBin\Persistence\TrafficLimiter; use PrivateBin\Persistence\TrafficLimiter;
use PrivateBin\Proxy\AbstractProxy;
use PrivateBin\Proxy\ShlinkProxy;
use PrivateBin\Proxy\YourlsProxy;
/** /**
* Controller * Controller
@@ -27,21 +30,21 @@ class Controller
* *
* @const string * @const string
*/ */
const VERSION = '1.7.9'; const VERSION = '2.0.3';
/** /**
* minimal required PHP version * minimal required PHP version
* *
* @const string * @const string
*/ */
const MIN_PHP_VERSION = '7.3.0'; const MIN_PHP_VERSION = '7.4.0';
/** /**
* show the same error message if the paste expired or does not exist * show the same error message if the document expired or does not exist
* *
* @const string * @const string
*/ */
const GENERIC_ERROR = 'Paste does not exist, has expired or has been deleted.'; const GENERIC_ERROR = 'Document does not exist, has expired or has been deleted.';
/** /**
* configuration * configuration
@@ -149,7 +152,10 @@ class Controller
$this->_jsonld($this->_request->getParam('jsonld')); $this->_jsonld($this->_request->getParam('jsonld'));
return; return;
case 'yourlsproxy': case 'yourlsproxy':
$this->_yourlsproxy($this->_request->getParam('link')); $this->_shortenerproxy(new YourlsProxy($this->_conf, $this->_request->getParam('link')));
break;
case 'shlinkproxy':
$this->_shortenerproxy(new ShlinkProxy($this->_conf, $this->_request->getParam('link')));
break; break;
} }
@@ -243,19 +249,15 @@ class Controller
/** /**
* Store new paste or comment * Store new paste or comment
* *
* POST contains one or both: * POST contains:
* data = json encoded FormatV2 encrypted text (containing keys: iv,v,iter,ks,ts,mode,adata,cipher,salt,ct) * JSON encoded object with mandatory keys:
* attachment = json encoded FormatV2 encrypted text (containing keys: iv,v,iter,ks,ts,mode,adata,cipher,salt,ct) * v = 2 (version)
* * adata (array)
* All optional data will go to meta information: * ct (base64 encoded, encrypted text)
* expire (optional) = expiration delay (never,5min,10min,1hour,1day,1week,1month,1year,burn) (default:never) * meta (optional):
* formatter (optional) = format to display the paste as (plaintext,syntaxhighlighting,markdown) (default:syntaxhighlighting) * expire = expiration delay (never,5min,10min,1hour,1day,1week,1month,1year,burn) (default:1week)
* burnafterreading (optional) = if this paste may only viewed once ? (0/1) (default:0) * parentid (optional) = in discussions, which comment this comment replies to.
* opendiscusssion (optional) = is the discussion allowed on this paste ? (0/1) (default:0) * pasteid (optional) = in discussions, which paste this comment belongs to.
* attachmentname = json encoded FormatV2 encrypted text (containing keys: iv,v,iter,ks,ts,mode,adata,cipher,salt,ct)
* nickname (optional) = in discussion, encoded FormatV2 encrypted text nickname of author of comment (containing keys: iv,v,iter,ks,ts,mode,adata,cipher,salt,ct)
* parentid (optional) = in discussion, which comment this comment replies to.
* pasteid (optional) = in discussion, which paste this comment belongs to.
* *
* @access private * @access private
* @return string * @return string
@@ -288,7 +290,7 @@ class Controller
$this->_return_message( $this->_return_message(
1, 1,
I18n::_( I18n::_(
'Paste is limited to %s of encrypted data.', 'Document is limited to %s of encrypted data.',
Filter::formatHumanReadableSize($sizelimit) Filter::formatHumanReadableSize($sizelimit)
) )
); );
@@ -317,7 +319,7 @@ class Controller
try { try {
$this->_model->purge(); $this->_model->purge();
} catch (Exception $e) { } catch (Exception $e) {
error_log('Error purging pastes: ' . $e->getMessage() . PHP_EOL . error_log('Error purging documents: ' . $e->getMessage() . PHP_EOL .
'Use the administration scripts statistics to find ' . 'Use the administration scripts statistics to find ' .
'damaged paste IDs and either delete them or restore them ' . 'damaged paste IDs and either delete them or restore them ' .
'from backup.'); 'from backup.');
@@ -327,14 +329,15 @@ class Controller
$paste->setData($data); $paste->setData($data);
$paste->store(); $paste->store();
} catch (Exception $e) { } catch (Exception $e) {
return $this->_return_message(1, $e->getMessage()); $this->_return_message(1, $e->getMessage());
return;
} }
$this->_return_message(0, $paste->getId(), array('deletetoken' => $paste->getDeleteToken())); $this->_return_message(0, $paste->getId(), array('deletetoken' => $paste->getDeleteToken()));
} }
} }
/** /**
* Delete an existing paste * Delete an existing document
* *
* @access private * @access private
* @param string $dataid * @param string $dataid
@@ -345,16 +348,16 @@ class Controller
try { try {
$paste = $this->_model->getPaste($dataid); $paste = $this->_model->getPaste($dataid);
if ($paste->exists()) { if ($paste->exists()) {
// accessing this method ensures that the paste would be // accessing this method ensures that the document would be
// deleted if it has already expired // deleted if it has already expired
$paste->get(); $paste->get();
if (hash_equals($paste->getDeleteToken(), $deletetoken)) { if (hash_equals($paste->getDeleteToken(), $deletetoken)) {
// Paste exists and deletion token is valid: Delete the paste. // Document exists and deletion token is valid: Delete the it.
$paste->delete(); $paste->delete();
$this->_status = 'Paste was properly deleted.'; $this->_status = 'Document was properly deleted.';
$this->_is_deleted = true; $this->_is_deleted = true;
} else { } else {
$this->_error = 'Wrong deletion token. Paste was not deleted.'; $this->_error = 'Wrong deletion token. Document was not deleted.';
} }
} else { } else {
$this->_error = self::GENERIC_ERROR; $this->_error = self::GENERIC_ERROR;
@@ -372,7 +375,7 @@ class Controller
} }
/** /**
* Read an existing paste or comment, only allowed via a JSON API call * Read an existing document, only allowed via a JSON API call
* *
* @access private * @access private
* @param string $dataid * @param string $dataid
@@ -409,7 +412,7 @@ class Controller
header('Content-Security-Policy: ' . $this->_conf->getKey('cspheader')); header('Content-Security-Policy: ' . $this->_conf->getKey('cspheader'));
header('Cross-Origin-Resource-Policy: same-origin'); header('Cross-Origin-Resource-Policy: same-origin');
header('Cross-Origin-Embedder-Policy: require-corp'); header('Cross-Origin-Embedder-Policy: require-corp');
// disabled, because it prevents links from a paste to the same site to // disabled, because it prevents links from a document to the same site to
// be opened. Didn't work with `same-origin-allow-popups` either. // be opened. Didn't work with `same-origin-allow-popups` either.
// See issue https://github.com/PrivateBin/PrivateBin/issues/970 for details. // See issue https://github.com/PrivateBin/PrivateBin/issues/970 for details.
// header('Cross-Origin-Opener-Policy: same-origin'); // header('Cross-Origin-Opener-Policy: same-origin');
@@ -446,7 +449,7 @@ class Controller
$metacspheader = str_replace( $metacspheader = str_replace(
array( array(
'frame-ancestors \'none\'; ', 'frame-ancestors \'none\'; ',
'; sandbox allow-same-origin allow-scripts allow-forms allow-popups allow-modals allow-downloads', '; sandbox allow-same-origin allow-scripts allow-forms allow-modals allow-downloads',
), ),
'', '',
$this->_conf->getKey('cspheader') $this->_conf->getKey('cspheader')
@@ -456,9 +459,9 @@ class Controller
$page->assign('CSPHEADER', $metacspheader); $page->assign('CSPHEADER', $metacspheader);
$page->assign('ERROR', I18n::_($this->_error)); $page->assign('ERROR', I18n::_($this->_error));
$page->assign('NAME', $this->_conf->getKey('name')); $page->assign('NAME', $this->_conf->getKey('name'));
if ($this->_request->getOperation() === 'yourlsproxy') { if (in_array($this->_request->getOperation(), array('shlinkproxy', 'yourlsproxy'), true)) {
$page->assign('SHORTURL', $this->_status); $page->assign('SHORTURL', $this->_status);
$page->draw('yourlsproxy'); $page->draw('shortenerproxy');
return; return;
} }
$page->assign('BASEPATH', I18n::_($this->_conf->getKey('basepath'))); $page->assign('BASEPATH', I18n::_($this->_conf->getKey('basepath')));
@@ -477,7 +480,6 @@ class Controller
$page->assign('BURNAFTERREADINGSELECTED', $this->_conf->getKey('burnafterreadingselected')); $page->assign('BURNAFTERREADINGSELECTED', $this->_conf->getKey('burnafterreadingselected'));
$page->assign('PASSWORD', $this->_conf->getKey('password')); $page->assign('PASSWORD', $this->_conf->getKey('password'));
$page->assign('FILEUPLOAD', $this->_conf->getKey('fileupload')); $page->assign('FILEUPLOAD', $this->_conf->getKey('fileupload'));
$page->assign('ZEROBINCOMPATIBILITY', $this->_conf->getKey('zerobincompatibility'));
$page->assign('LANGUAGESELECTION', $languageselection); $page->assign('LANGUAGESELECTION', $languageselection);
$page->assign('LANGUAGES', I18n::getLanguageLabels(I18n::getAvailableLanguages())); $page->assign('LANGUAGES', I18n::getLanguageLabels(I18n::getAvailableLanguages()));
$page->assign('TEMPLATESELECTION', $templateselection); $page->assign('TEMPLATESELECTION', $templateselection);
@@ -485,6 +487,7 @@ class Controller
$page->assign('EXPIRE', $expire); $page->assign('EXPIRE', $expire);
$page->assign('EXPIREDEFAULT', $this->_conf->getKey('default', 'expire')); $page->assign('EXPIREDEFAULT', $this->_conf->getKey('default', 'expire'));
$page->assign('URLSHORTENER', $this->_conf->getKey('urlshortener')); $page->assign('URLSHORTENER', $this->_conf->getKey('urlshortener'));
$page->assign('SHORTENBYDEFAULT', $this->_conf->getKey('shortenbydefault'));
$page->assign('QRCODE', $this->_conf->getKey('qrcode')); $page->assign('QRCODE', $this->_conf->getKey('qrcode'));
$page->assign('EMAIL', $this->_conf->getKey('email')); $page->assign('EMAIL', $this->_conf->getKey('email'));
$page->assign('HTTPWARNING', $this->_conf->getKey('httpwarning')); $page->assign('HTTPWARNING', $this->_conf->getKey('httpwarning'));
@@ -535,18 +538,17 @@ class Controller
} }
/** /**
* proxies link to YOURLS, updates status or error with response * Proxies a link using the specified proxy class, and updates the status or error with the response.
* *
* @access private * @access private
* @param string $link * @param AbstractProxy $proxy The instance of the proxy class.
*/ */
private function _yourlsproxy($link) private function _shortenerproxy(AbstractProxy $proxy)
{ {
$yourls = new YourlsProxy($this->_conf, $link); if ($proxy->isError()) {
if ($yourls->isError()) { $this->_error = $proxy->getError();
$this->_error = $yourls->getError();
} else { } else {
$this->_status = $yourls->getUrl(); $this->_status = $proxy->getUrl();
} }
} }
+11 -27
View File
@@ -171,44 +171,28 @@ abstract class AbstractData
abstract public function getAllPastes(); abstract public function getAllPastes();
/** /**
* Get next free slot for comment from postdate. * Get next free slot for comment from the creation timestamp
*
* The creation timestamp is usually a unix timestamp in seconds, but if a
* comment already exists at that timestamp, a number, separated by a dot is
* appended to it and incremented, then the function recurses until a free
* slot is found.
* *
* @access protected * @access protected
* @param array $comments * @param array $comments
* @param int|string $postdate * @param int|string $created
* @return int|string * @return int|string
*/ */
protected function getOpenSlot(array &$comments, $postdate) protected function getOpenSlot(array &$comments, $created)
{ {
if (array_key_exists($postdate, $comments)) { if (array_key_exists($created, $comments)) {
$parts = explode('.', (string) $postdate, 2); $parts = explode('.', (string) $created, 2);
if (!array_key_exists(1, $parts)) { if (!array_key_exists(1, $parts)) {
$parts[1] = 0; $parts[1] = 0;
} }
++$parts[1]; ++$parts[1];
return $this->getOpenSlot($comments, implode('.', $parts)); return $this->getOpenSlot($comments, implode('.', $parts));
} }
return $postdate; return $created;
}
/**
* Upgrade pre-version 1 pastes with attachment to version 1 format.
*
* @access protected
* @static
* @param array $paste
* @return array
*/
protected static function upgradePreV1Format(array &$paste)
{
if (array_key_exists('attachment', $paste['meta'])) {
$paste['attachment'] = $paste['meta']['attachment'];
unset($paste['meta']['attachment']);
if (array_key_exists('attachmentname', $paste['meta'])) {
$paste['attachmentname'] = $paste['meta']['attachmentname'];
unset($paste['meta']['attachmentname']);
}
}
return $paste;
} }
} }
+79 -134
View File
@@ -143,51 +143,24 @@ class Database extends AbstractData
public function create($pasteid, array &$paste) public function create($pasteid, array &$paste)
{ {
$expire_date = 0; $expire_date = 0;
$opendiscussion = $burnafterreading = false;
$attachment = $attachmentname = null;
$meta = $paste['meta']; $meta = $paste['meta'];
$isVersion1 = array_key_exists('data', $paste);
if (array_key_exists('expire_date', $meta)) { if (array_key_exists('expire_date', $meta)) {
$expire_date = (int) $meta['expire_date']; $expire_date = (int) $meta['expire_date'];
unset($meta['expire_date']); unset($meta['expire_date']);
} }
if (array_key_exists('opendiscussion', $meta)) {
$opendiscussion = $meta['opendiscussion'];
unset($meta['opendiscussion']);
}
if (array_key_exists('burnafterreading', $meta)) {
$burnafterreading = $meta['burnafterreading'];
unset($meta['burnafterreading']);
}
if ($isVersion1) {
if (array_key_exists('attachment', $meta)) {
$attachment = $meta['attachment'];
unset($meta['attachment']);
}
if (array_key_exists('attachmentname', $meta)) {
$attachmentname = $meta['attachmentname'];
unset($meta['attachmentname']);
}
} else {
$opendiscussion = $paste['adata'][2];
$burnafterreading = $paste['adata'][3];
}
try { try {
return $this->_exec( return $this->_exec(
'INSERT INTO "' . $this->_sanitizeIdentifier('paste') . 'INSERT INTO "' . $this->_sanitizeIdentifier('paste') .
'" VALUES(?,?,?,?,?,?,?,?)', '" VALUES(?,?,?,?)',
array( array(
$pasteid, $pasteid,
$isVersion1 ? $paste['data'] : Json::encode($paste), Json::encode($paste),
$expire_date, $expire_date,
(int) $opendiscussion,
(int) $burnafterreading,
Json::encode($meta), Json::encode($meta),
$attachment,
$attachmentname,
) )
); );
} catch (Exception $e) { } catch (Exception $e) {
error_log('Error while attempting to insert a paste into the database: ' . $e->getMessage());
return false; return false;
} }
} }
@@ -213,38 +186,17 @@ class Database extends AbstractData
return false; return false;
} }
// create array // create array
$data = Json::decode($row['data']); $paste = Json::decode($row['data']);
$isVersion2 = array_key_exists('v', $data) && $data['v'] >= 2;
$paste = $isVersion2 ? $data : array('data' => $row['data']);
try { try {
$row['meta'] = Json::decode($row['meta']); $paste['meta'] = Json::decode($row['meta']);
} catch (Exception $e) { } catch (Exception $e) {
$row['meta'] = array(); $paste['meta'] = array();
} }
$row = self::upgradePreV1Format($row); $expire_date = (int) $row['expiredate'];
$paste['meta'] = $row['meta'];
$expire_date = (int) $row['expiredate'];
if ($expire_date > 0) { if ($expire_date > 0) {
$paste['meta']['expire_date'] = $expire_date; $paste['meta']['expire_date'] = $expire_date;
} }
if ($isVersion2) {
return $paste;
}
// support v1 attachments
if (array_key_exists('attachment', $row) && !empty($row['attachment'])) {
$paste['attachment'] = $row['attachment'];
if (array_key_exists('attachmentname', $row) && !empty($row['attachmentname'])) {
$paste['attachmentname'] = $row['attachmentname'];
}
}
if ($row['opendiscussion']) {
$paste['meta']['opendiscussion'] = true;
}
if ($row['burnafterreading']) {
$paste['meta']['burnafterreading'] = true;
}
return $paste; return $paste;
} }
@@ -299,40 +251,31 @@ class Database extends AbstractData
*/ */
public function createComment($pasteid, $parentid, $commentid, array &$comment) public function createComment($pasteid, $parentid, $commentid, array &$comment)
{ {
if (array_key_exists('data', $comment)) { try {
$version = 1; $data = Json::encode($comment);
$data = $comment['data']; } catch (Exception $e) {
} else { error_log('Error while attempting to insert a comment into the database: ' . $e->getMessage());
try { return false;
$version = 2;
$data = Json::encode($comment);
} catch (Exception $e) {
return false;
}
} }
list($createdKey, $iconKey) = $this->_getVersionedKeys($version); $meta = $comment['meta'];
$meta = $comment['meta']; if (!array_key_exists('icon', $meta)) {
unset($comment['meta']); $meta['icon'] = null;
foreach (array('nickname', $iconKey) as $key) {
if (!array_key_exists($key, $meta)) {
$meta[$key] = null;
}
} }
try { try {
return $this->_exec( return $this->_exec(
'INSERT INTO "' . $this->_sanitizeIdentifier('comment') . 'INSERT INTO "' . $this->_sanitizeIdentifier('comment') .
'" VALUES(?,?,?,?,?,?,?)', '" VALUES(?,?,?,?,?,?)',
array( array(
$commentid, $commentid,
$pasteid, $pasteid,
$parentid, $parentid,
$data, $data,
$meta['nickname'], $meta['icon'],
$meta[$iconKey], $meta['created'],
$meta[$createdKey],
) )
); );
} catch (Exception $e) { } catch (Exception $e) {
error_log('Error while attempting to insert a comment into the database: ' . $e->getMessage());
return false; return false;
} }
} }
@@ -353,25 +296,15 @@ class Database extends AbstractData
// create comment list // create comment list
$comments = array(); $comments = array();
if (is_array($rows) && count($rows)) { if (count($rows)) {
foreach ($rows as $row) { foreach ($rows as $row) {
$i = $this->getOpenSlot($comments, (int) $row['postdate']); $i = $this->getOpenSlot($comments, (int) $row['postdate']);
$data = Json::decode($row['data']); $comments[$i] = Json::decode($row['data']);
if (array_key_exists('v', $data) && $data['v'] >= 2) {
$version = 2;
$comments[$i] = $data;
} else {
$version = 1;
$comments[$i] = array('data' => $row['data']);
}
list($createdKey, $iconKey) = $this->_getVersionedKeys($version);
$comments[$i]['id'] = $row['dataid']; $comments[$i]['id'] = $row['dataid'];
$comments[$i]['parentid'] = $row['parentid']; $comments[$i]['parentid'] = $row['parentid'];
$comments[$i]['meta'] = array($createdKey => (int) $row['postdate']); $comments[$i]['meta'] = array('created' => (int) $row['postdate']);
foreach (array('nickname' => 'nickname', 'vizhash' => $iconKey) as $rowKey => $commentKey) { if (array_key_exists('vizhash', $row) && !empty($row['vizhash'])) {
if (array_key_exists($rowKey, $row) && !empty($row[$rowKey])) { $comments[$i]['meta']['icon'] = $row['vizhash'];
$comments[$i]['meta'][$commentKey] = $row[$rowKey];
}
} }
} }
ksort($comments); ksort($comments);
@@ -453,7 +386,7 @@ class Database extends AbstractData
$fs = new Filesystem(array('dir' => 'data')); $fs = new Filesystem(array('dir' => 'data'));
$value = $fs->getValue('salt'); $value = $fs->getValue('salt');
$this->setValue($value, 'salt'); $this->setValue($value, 'salt');
@unlink($file); unlink($file);
return $value; return $value;
} }
} }
@@ -534,7 +467,7 @@ class Database extends AbstractData
* @param array $params * @param array $params
* @param bool $firstOnly if only the first row should be returned * @param bool $firstOnly if only the first row should be returned
* @throws PDOException * @throws PDOException
* @return array|false * @return array
*/ */
private function _select($sql, array $params, $firstOnly = false) private function _select($sql, array $params, $firstOnly = false)
{ {
@@ -542,6 +475,10 @@ class Database extends AbstractData
$statement->execute($params); $statement->execute($params);
if ($firstOnly) { if ($firstOnly) {
$result = $statement->fetch(PDO::FETCH_ASSOC); $result = $statement->fetch(PDO::FETCH_ASSOC);
if ($this->_type === 'oci' && is_array($result)) {
// returned CLOB values are streams, convert these into strings
$result = array_map('PrivateBin\Data\Database::_sanitizeClob', $result);
}
} elseif ($this->_type === 'oci') { } elseif ($this->_type === 'oci') {
// workaround for https://bugs.php.net/bug.php?id=46728 // workaround for https://bugs.php.net/bug.php?id=46728
$result = array(); $result = array();
@@ -552,30 +489,9 @@ class Database extends AbstractData
$result = $statement->fetchAll(PDO::FETCH_ASSOC); $result = $statement->fetchAll(PDO::FETCH_ASSOC);
} }
$statement->closeCursor(); $statement->closeCursor();
if ($this->_type === 'oci' && is_array($result)) {
// returned CLOB values are streams, convert these into strings
$result = $firstOnly ?
array_map('PrivateBin\Data\Database::_sanitizeClob', $result) :
$result;
}
return $result; return $result;
} }
/**
* get version dependent key names
*
* @access private
* @param int $version
* @return array
*/
private function _getVersionedKeys($version)
{
if ($version === 1) {
return array('postdate', 'vizhash');
}
return array('created', 'icon');
}
/** /**
* get table list query, depending on the database type * get table list query, depending on the database type
* *
@@ -729,7 +645,6 @@ class Database extends AbstractData
private function _createPasteTable() private function _createPasteTable()
{ {
list($main_key, $after_key) = $this->_getPrimaryKeyClauses(); list($main_key, $after_key) = $this->_getPrimaryKeyClauses();
$dataType = $this->_getDataType();
$attachmentType = $this->_getAttachmentType(); $attachmentType = $this->_getAttachmentType();
$metaType = $this->_getMetaType(); $metaType = $this->_getMetaType();
$this->_db->exec( $this->_db->exec(
@@ -737,16 +652,12 @@ class Database extends AbstractData
"\"dataid\" CHAR(16) NOT NULL$main_key, " . "\"dataid\" CHAR(16) NOT NULL$main_key, " .
"\"data\" $attachmentType, " . "\"data\" $attachmentType, " .
'"expiredate" INT, ' . '"expiredate" INT, ' .
'"opendiscussion" INT, ' . "\"meta\" $metaType$after_key )"
'"burnafterreading" INT, ' .
"\"meta\" $metaType, " .
"\"attachment\" $attachmentType, " .
"\"attachmentname\" $dataType$after_key )"
); );
} }
/** /**
* create the paste table * create the comment table
* *
* @access private * @access private
*/ */
@@ -760,7 +671,6 @@ class Database extends AbstractData
'"pasteid" CHAR(16), ' . '"pasteid" CHAR(16), ' .
'"parentid" CHAR(16), ' . '"parentid" CHAR(16), ' .
"\"data\" $dataType, " . "\"data\" $dataType, " .
"\"nickname\" $dataType, " .
"\"vizhash\" $dataType, " . "\"vizhash\" $dataType, " .
"\"postdate\" INT$after_key )" "\"postdate\" INT$after_key )"
); );
@@ -789,7 +699,7 @@ class Database extends AbstractData
} }
/** /**
* create the paste table * create the config table
* *
* @access private * @access private
*/ */
@@ -839,6 +749,26 @@ class Database extends AbstractData
return preg_replace('/[^A-Za-z0-9_]+/', '', $this->_prefix . $identifier); return preg_replace('/[^A-Za-z0-9_]+/', '', $this->_prefix . $identifier);
} }
/**
* check if the current database type supports dropping columns
*
* @access private
* @return bool
*/
private function _supportsDropColumn()
{
$supportsDropColumn = true;
if ($this->_type === 'sqlite') {
try {
$row = $this->_select('SELECT sqlite_version() AS "v"', array(), true);
$supportsDropColumn = (bool) version_compare($row['v'], '3.35.0', '>=');
} catch (PDOException $e) {
$supportsDropColumn = false;
}
}
return $supportsDropColumn;
}
/** /**
* upgrade the database schema from an old version * upgrade the database schema from an old version
* *
@@ -910,22 +840,37 @@ class Database extends AbstractData
} }
} }
if (version_compare($oldversion, '1.7.1', '<=')) { if (version_compare($oldversion, '1.7.1', '<=')) {
$supportsDropColumn = true; if ($this->_supportsDropColumn()) {
if ($this->_type === 'sqlite') {
try {
$row = $this->_select('SELECT sqlite_version() AS "v"', array(), true);
$supportsDropColumn = version_compare($row['v'], '3.35.0', '>=');
} catch (PDOException $e) {
$supportsDropColumn = false;
}
}
if ($supportsDropColumn) {
$this->_db->exec( $this->_db->exec(
'ALTER TABLE "' . $this->_sanitizeIdentifier('paste') . 'ALTER TABLE "' . $this->_sanitizeIdentifier('paste') .
'" DROP COLUMN "postdate"' '" DROP COLUMN "postdate"'
); );
} }
} }
if (version_compare($oldversion, '1.7.8', '<=')) {
if ($this->_supportsDropColumn()) {
$this->_db->exec(
'ALTER TABLE "' . $this->_sanitizeIdentifier('paste') .
'" DROP COLUMN "opendiscussion"'
);
$this->_db->exec(
'ALTER TABLE "' . $this->_sanitizeIdentifier('paste') .
'" DROP COLUMN "burnafterreading"'
);
$this->_db->exec(
'ALTER TABLE "' . $this->_sanitizeIdentifier('paste') .
'" DROP COLUMN "attachment"'
);
$this->_db->exec(
'ALTER TABLE "' . $this->_sanitizeIdentifier('paste') .
'" DROP COLUMN "attachmentname"'
);
$this->_db->exec(
'ALTER TABLE "' . $this->_sanitizeIdentifier('comment') .
'" DROP COLUMN "nickname"'
);
}
}
$this->_exec( $this->_exec(
'UPDATE "' . $this->_sanitizeIdentifier('config') . 'UPDATE "' . $this->_sanitizeIdentifier('config') .
'" SET "value" = ? WHERE "id" = ?', '" SET "value" = ? WHERE "id" = ?',
+19 -29
View File
@@ -69,10 +69,7 @@ class Filesystem extends AbstractData
public function __construct(array $options) public function __construct(array $options)
{ {
// if given update the data directory // if given update the data directory
if ( if (array_key_exists('dir', $options)) {
is_array($options) &&
array_key_exists('dir', $options)
) {
$this->_path = $options['dir']; $this->_path = $options['dir'];
} }
} }
@@ -113,7 +110,7 @@ class Filesystem extends AbstractData
) { ) {
return false; return false;
} }
return self::upgradePreV1Format($paste); return $paste;
} }
/** /**
@@ -229,9 +226,7 @@ class Filesystem extends AbstractData
// Store in array // Store in array
$key = $this->getOpenSlot( $key = $this->getOpenSlot(
$comments, $comments,
(int) array_key_exists('created', $comment['meta']) ? $comment['meta']['created']
$comment['meta']['created'] : // v2 comments
$comment['meta']['postdate'] // v1 comments
); );
$comments[$key] = $comment; $comments[$key] = $comment;
} }
@@ -272,31 +267,25 @@ class Filesystem extends AbstractData
*/ */
public function setValue($value, $namespace, $key = '') public function setValue($value, $namespace, $key = '')
{ {
$file = $this->_path . DIRECTORY_SEPARATOR . $namespace . '.php';
if (function_exists('opcache_invalidate')) {
opcache_invalidate($file);
}
switch ($namespace) { switch ($namespace) {
case 'purge_limiter': case 'purge_limiter':
if (function_exists('opcache_invalidate')) { $content = '<?php' . PHP_EOL . '$GLOBALS[\'purge_limiter\'] = ' . var_export($value, true) . ';';
opcache_invalidate($this->_path . DIRECTORY_SEPARATOR . 'purge_limiter.php'); break;
}
return $this->_storeString(
$this->_path . DIRECTORY_SEPARATOR . 'purge_limiter.php',
'<?php' . PHP_EOL . '$GLOBALS[\'purge_limiter\'] = ' . var_export($value, true) . ';'
);
case 'salt': case 'salt':
return $this->_storeString( $content = '<?php # |' . $value . '|';
$this->_path . DIRECTORY_SEPARATOR . 'salt.php', break;
'<?php # |' . $value . '|'
);
case 'traffic_limiter': case 'traffic_limiter':
$this->_last_cache[$key] = $value; $this->_last_cache[$key] = $value;
if (function_exists('opcache_invalidate')) { $content = '<?php' . PHP_EOL . '$GLOBALS[\'traffic_limiter\'] = ' . var_export($this->_last_cache, true) . ';';
opcache_invalidate($this->_path . DIRECTORY_SEPARATOR . 'traffic_limiter.php'); break;
} default:
return $this->_storeString( return false;
$this->_path . DIRECTORY_SEPARATOR . 'traffic_limiter.php',
'<?php' . PHP_EOL . '$GLOBALS[\'traffic_limiter\'] = ' . var_export($this->_last_cache, true) . ';'
);
} }
return false; return $this->_storeString($file, $content);
} }
/** /**
@@ -323,7 +312,7 @@ class Filesystem extends AbstractData
$file = $this->_path . DIRECTORY_SEPARATOR . 'salt.php'; $file = $this->_path . DIRECTORY_SEPARATOR . 'salt.php';
if (is_readable($file)) { if (is_readable($file)) {
$items = explode('|', file_get_contents($file)); $items = explode('|', file_get_contents($file));
if (is_array($items) && count($items) == 3) { if (count($items) == 3) {
return $items[1]; return $items[1];
} }
} }
@@ -462,6 +451,7 @@ class Filesystem extends AbstractData
self::PROTECTION_LINE . PHP_EOL . Json::encode($data) self::PROTECTION_LINE . PHP_EOL . Json::encode($data)
); );
} catch (Exception $e) { } catch (Exception $e) {
error_log('Error while trying to store data to the filesystem at path "' . $filename . '": ' . $e->getMessage());
return false; return false;
} }
} }
@@ -512,7 +502,7 @@ class Filesystem extends AbstractData
if ($fileCreated === false || $writtenBytes === false || $writtenBytes < strlen($data)) { if ($fileCreated === false || $writtenBytes === false || $writtenBytes < strlen($data)) {
return false; return false;
} }
@chmod($filename, 0640); // protect file from access by other users on the host chmod($filename, 0640); // protect file from access by other users on the host
return true; return true;
} }
+5 -6
View File
@@ -62,13 +62,13 @@ class GoogleCloudStorage extends AbstractData
if (getenv('PRIVATEBIN_GCS_BUCKET')) { if (getenv('PRIVATEBIN_GCS_BUCKET')) {
$bucket = getenv('PRIVATEBIN_GCS_BUCKET'); $bucket = getenv('PRIVATEBIN_GCS_BUCKET');
} }
if (is_array($options) && array_key_exists('bucket', $options)) { if (array_key_exists('bucket', $options)) {
$bucket = $options['bucket']; $bucket = $options['bucket'];
} }
if (is_array($options) && array_key_exists('prefix', $options)) { if (array_key_exists('prefix', $options)) {
$this->_prefix = $options['prefix']; $this->_prefix = $options['prefix'];
} }
if (is_array($options) && array_key_exists('uniformacl', $options)) { if (array_key_exists('uniformacl', $options)) {
$this->_uniformacl = $options['uniformacl']; $this->_uniformacl = $options['uniformacl'];
} }
@@ -98,8 +98,7 @@ class GoogleCloudStorage extends AbstractData
/** /**
* Uploads the payload in the $this->_bucket under the specified key. * Uploads the payload in the $this->_bucket under the specified key.
* The entire payload is stored as a JSON document. The metadata is replicated * The entire payload is stored as a JSON document. The metadata is replicated
* as the GCS object's metadata except for the fields attachment, attachmentname * as the GCS object's metadata except for the field salt.
* and salt.
* *
* @param $key string to store the payload under * @param $key string to store the payload under
* @param $payload array to store * @param $payload array to store
@@ -108,7 +107,7 @@ class GoogleCloudStorage extends AbstractData
private function _upload($key, &$payload) private function _upload($key, &$payload)
{ {
$metadata = array_key_exists('meta', $payload) ? $payload['meta'] : array(); $metadata = array_key_exists('meta', $payload) ? $payload['meta'] : array();
unset($metadata['attachment'], $metadata['attachmentname'], $metadata['salt']); unset($metadata['salt']);
foreach ($metadata as $k => $v) { foreach ($metadata as $k => $v) {
$metadata[$k] = strval($v); $metadata[$k] = strval($v);
} }
+28 -30
View File
@@ -81,33 +81,31 @@ class S3Storage extends AbstractData
*/ */
public function __construct(array $options) public function __construct(array $options)
{ {
if (is_array($options)) { // AWS SDK will try to load credentials from environment if credentials are not passed via configuration
// AWS SDK will try to load credentials from environment if credentials are not passed via configuration // ref: https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials.html#default-credential-chain
// ref: https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials.html#default-credential-chain if (isset($options['accesskey']) && isset($options['secretkey'])) {
if (isset($options['accesskey']) && isset($options['secretkey'])) { $this->_options['credentials'] = array();
$this->_options['credentials'] = array();
$this->_options['credentials']['key'] = $options['accesskey']; $this->_options['credentials']['key'] = $options['accesskey'];
$this->_options['credentials']['secret'] = $options['secretkey']; $this->_options['credentials']['secret'] = $options['secretkey'];
} }
if (array_key_exists('region', $options)) { if (array_key_exists('region', $options)) {
$this->_options['region'] = $options['region']; $this->_options['region'] = $options['region'];
} }
if (array_key_exists('version', $options)) { if (array_key_exists('version', $options)) {
$this->_options['version'] = $options['version']; $this->_options['version'] = $options['version'];
} }
if (array_key_exists('endpoint', $options)) { if (array_key_exists('endpoint', $options)) {
$this->_options['endpoint'] = $options['endpoint']; $this->_options['endpoint'] = $options['endpoint'];
} }
if (array_key_exists('use_path_style_endpoint', $options)) { if (array_key_exists('use_path_style_endpoint', $options)) {
$this->_options['use_path_style_endpoint'] = filter_var($options['use_path_style_endpoint'], FILTER_VALIDATE_BOOLEAN); $this->_options['use_path_style_endpoint'] = filter_var($options['use_path_style_endpoint'], FILTER_VALIDATE_BOOLEAN);
} }
if (array_key_exists('bucket', $options)) { if (array_key_exists('bucket', $options)) {
$this->_bucket = $options['bucket']; $this->_bucket = $options['bucket'];
} }
if (array_key_exists('prefix', $options)) { if (array_key_exists('prefix', $options)) {
$this->_prefix = $options['prefix']; $this->_prefix = $options['prefix'];
}
} }
$this->_client = new S3Client($this->_options); $this->_client = new S3Client($this->_options);
@@ -158,8 +156,7 @@ class S3Storage extends AbstractData
/** /**
* Uploads the payload in the $this->_bucket under the specified key. * Uploads the payload in the $this->_bucket under the specified key.
* The entire payload is stored as a JSON document. The metadata is replicated * The entire payload is stored as a JSON document. The metadata is replicated
* as the S3 object's metadata except for the fields attachment, attachmentname * as the S3 object's metadata except for the field salt.
* and salt.
* *
* @param $key string to store the payload under * @param $key string to store the payload under
* @param $payload array to store * @param $payload array to store
@@ -168,7 +165,7 @@ class S3Storage extends AbstractData
private function _upload($key, &$payload) private function _upload($key, &$payload)
{ {
$metadata = array_key_exists('meta', $payload) ? $payload['meta'] : array(); $metadata = array_key_exists('meta', $payload) ? $payload['meta'] : array();
unset($metadata['attachment'], $metadata['attachmentname'], $metadata['salt']); unset($metadata['salt']);
foreach ($metadata as $k => $v) { foreach ($metadata as $k => $v) {
$metadata[$k] = strval($v); $metadata[$k] = strval($v);
} }
@@ -286,7 +283,8 @@ class S3Storage extends AbstractData
'Bucket' => $this->_bucket, 'Bucket' => $this->_bucket,
'Key' => $entry['Key'], 'Key' => $entry['Key'],
)); ));
$body = JSON::decode($object['Body']->getContents()); $data = $object['Body']->getContents();
$body = JSON::decode($data);
$items = explode('/', $entry['Key']); $items = explode('/', $entry['Key']);
$body['id'] = $items[3]; $body['id'] = $items[3];
$body['parentid'] = $items[2]; $body['parentid'] = $items[2];
+3 -3
View File
@@ -59,10 +59,10 @@ class Filter
*/ */
public static function formatHumanReadableSize($size) public static function formatHumanReadableSize($size)
{ {
$iec = array('B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'); $iec = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
$i = 0; $i = 0;
while (($size / 1024) >= 1) { while (($size / 1000) >= 1) {
$size = $size / 1024; $size = $size / 1000;
++$i; ++$i;
} }
return number_format($size, $i ? 2 : 0, '.', ' ') . ' ' . I18n::_($iec[$i]); return number_format($size, $i ? 2 : 0, '.', ' ') . ' ' . I18n::_($iec[$i]);
+1 -9
View File
@@ -88,7 +88,7 @@ abstract class AbstractModel
public function setId($id) public function setId($id)
{ {
if (!self::isValidId($id)) { if (!self::isValidId($id)) {
throw new Exception('Invalid paste ID.', 60); throw new Exception('Invalid document ID.', 60);
} }
$this->_id = $id; $this->_id = $id;
} }
@@ -129,14 +129,6 @@ abstract class AbstractModel
*/ */
abstract public function store(); abstract public function store();
/**
* Delete the current instance.
*
* @access public
* @throws Exception
*/
abstract public function delete();
/** /**
* Test if current instance exists in store. * Test if current instance exists in store.
* *
+2 -13
View File
@@ -46,7 +46,7 @@ class Comment extends AbstractModel
throw new Exception('Invalid data.', 67); throw new Exception('Invalid data.', 67);
} }
// Make sure the discussion is opened in this paste and in configuration. // Make sure the discussion is opened in this paste and allowed in the configuration.
if (!$this->getPaste()->isOpendiscussion() || !$this->_conf->getKey('discussion')) { if (!$this->getPaste()->isOpendiscussion() || !$this->_conf->getKey('discussion')) {
throw new Exception('Invalid data.', 68); throw new Exception('Invalid data.', 68);
} }
@@ -71,17 +71,6 @@ class Comment extends AbstractModel
} }
} }
/**
* Delete the comment.
*
* @access public
* @throws Exception
*/
public function delete()
{
throw new Exception('To delete a comment, delete its parent paste', 64);
}
/** /**
* Test if comment exists in store. * Test if comment exists in store.
* *
@@ -131,7 +120,7 @@ class Comment extends AbstractModel
public function setParentId($id) public function setParentId($id)
{ {
if (!self::isValidId($id)) { if (!self::isValidId($id)) {
throw new Exception('Invalid paste ID.', 65); throw new Exception('Invalid document ID.', 65);
} }
$this->_data['parentid'] = $id; $this->_data['parentid'] = $id;
} }
+42 -40
View File
@@ -22,6 +22,27 @@ use PrivateBin\Persistence\ServerSalt;
*/ */
class Paste extends AbstractModel class Paste extends AbstractModel
{ {
/**
* authenticated data index of paste formatter (plaintext/syntaxhighlighting/markdown)
*
* @const int
*/
const ADATA_FORMATTER = 1;
/**
* authenticated data index of open-discussion flag (0/1)
*
* @const int
*/
const ADATA_OPEN_DISCUSSION = 2;
/**
* authenticated data index of burn-after-reading flag (0/1)
*
* @const int
*/
const ADATA_BURN_AFTER_READING = 3;
/** /**
* Get paste data. * Get paste data.
* *
@@ -38,42 +59,27 @@ class Paste extends AbstractModel
// check if paste has expired and delete it if necessary. // check if paste has expired and delete it if necessary.
if (array_key_exists('expire_date', $data['meta'])) { if (array_key_exists('expire_date', $data['meta'])) {
if ($data['meta']['expire_date'] < time()) { $now = time();
if ($data['meta']['expire_date'] < $now) {
$this->delete(); $this->delete();
throw new Exception(Controller::GENERIC_ERROR, 63); throw new Exception(Controller::GENERIC_ERROR, 63);
} }
// We kindly provide the remaining time before expiration (in seconds) // We kindly provide the remaining time before expiration (in seconds)
$data['meta']['time_to_live'] = $data['meta']['expire_date'] - time(); $data['meta']['time_to_live'] = $data['meta']['expire_date'] - $now;
unset($data['meta']['expire_date']); unset($data['meta']['expire_date']);
} }
foreach (array('created', 'postdate') as $key) { if (array_key_exists('created', $data['meta'])) {
if (array_key_exists($key, $data['meta'])) { unset($data['meta']['created']);
unset($data['meta'][$key]);
}
} }
// check if non-expired burn after reading paste needs to be deleted // check if non-expired burn after reading paste needs to be deleted
if ( if (
(array_key_exists('adata', $data) && $data['adata'][3] === 1) || array_key_exists('adata', $data) &&
(array_key_exists('burnafterreading', $data['meta']) && $data['meta']['burnafterreading']) $data['adata'][self::ADATA_BURN_AFTER_READING] === 1
) { ) {
$this->delete(); $this->delete();
} }
// set formatter for the view in version 1 pastes.
if (array_key_exists('data', $data) && !array_key_exists('formatter', $data['meta'])) {
// support < 0.21 syntax highlighting
if (array_key_exists('syntaxcoloring', $data['meta']) && $data['meta']['syntaxcoloring'] === true) {
$data['meta']['formatter'] = 'syntaxhighlighting';
} else {
$data['meta']['formatter'] = $this->_conf->getKey('defaultformatter');
}
}
// support old paste format with server wide salt
if (!array_key_exists('salt', $data['meta'])) {
$data['meta']['salt'] = ServerSalt::get();
}
$data['comments'] = array_values($this->getComments()); $data['comments'] = array_values($this->getComments());
$data['comment_count'] = count($data['comments']); $data['comment_count'] = count($data['comments']);
$data['comment_offset'] = 0; $data['comment_offset'] = 0;
@@ -105,7 +111,7 @@ class Paste extends AbstractModel
$this->_data $this->_data
) === false ) === false
) { ) {
throw new Exception('Error saving paste. Sorry.', 76); throw new Exception('Error saving document. Sorry.', 76);
} }
} }
@@ -166,10 +172,8 @@ class Paste extends AbstractModel
return $this->_store->readComments($this->getId()); return $this->_store->readComments($this->getId());
} }
return array_map(function ($comment) { return array_map(function ($comment) {
foreach (array('created', 'postdate') as $key) { if (array_key_exists('created', $comment['meta'])) {
if (array_key_exists($key, $comment['meta'])) { unset($comment['meta']['created']);
unset($comment['meta'][$key]);
}
} }
return $comment; return $comment;
}, $this->_store->readComments($this->getId())); }, $this->_store->readComments($this->getId()));
@@ -190,11 +194,7 @@ class Paste extends AbstractModel
if (!array_key_exists('salt', $this->_data['meta'])) { if (!array_key_exists('salt', $this->_data['meta'])) {
$this->get(); $this->get();
} }
return hash_hmac( return hash_hmac('sha256', $this->getId(), $this->_data['meta']['salt']);
$this->_conf->getKey('zerobincompatibility') ? 'sha1' : 'sha256',
$this->getId(),
$this->_data['meta']['salt']
);
} }
/** /**
@@ -209,9 +209,8 @@ class Paste extends AbstractModel
if (!array_key_exists('adata', $this->_data) && !array_key_exists('data', $this->_data)) { if (!array_key_exists('adata', $this->_data) && !array_key_exists('data', $this->_data)) {
$this->get(); $this->get();
} }
return return array_key_exists('adata', $this->_data) &&
(array_key_exists('adata', $this->_data) && $this->_data['adata'][2] === 1) || $this->_data['adata'][self::ADATA_OPEN_DISCUSSION] === 1;
(array_key_exists('opendiscussion', $this->_data['meta']) && $this->_data['meta']['opendiscussion']);
} }
/** /**
@@ -246,23 +245,26 @@ class Paste extends AbstractModel
protected function _validate(array &$data) protected function _validate(array &$data)
{ {
// reject invalid or disabled formatters // reject invalid or disabled formatters
if (!array_key_exists($data['adata'][1], $this->_conf->getSection('formatter_options'))) { if (!array_key_exists($data['adata'][self::ADATA_FORMATTER], $this->_conf->getSection('formatter_options'))) {
throw new Exception('Invalid data.', 75); throw new Exception('Invalid data.', 75);
} }
// discussion requested, but disabled in config or burn after reading requested as well, or invalid integer // discussion requested, but disabled in config or burn after reading requested as well, or invalid integer
if ( if (
($data['adata'][2] === 1 && ( // open discussion flag ($data['adata'][self::ADATA_OPEN_DISCUSSION] === 1 && (
!$this->_conf->getKey('discussion') || !$this->_conf->getKey('discussion') ||
$data['adata'][3] === 1 // burn after reading flag $data['adata'][self::ADATA_BURN_AFTER_READING] === 1
)) || )) ||
($data['adata'][2] !== 0 && $data['adata'][2] !== 1) ($data['adata'][self::ADATA_OPEN_DISCUSSION] !== 0 && $data['adata'][self::ADATA_OPEN_DISCUSSION] !== 1)
) { ) {
throw new Exception('Invalid data.', 74); throw new Exception('Invalid data.', 74);
} }
// reject invalid burn after reading // reject invalid burn after reading
if ($data['adata'][3] !== 0 && $data['adata'][3] !== 1) { if (
$data['adata'][self::ADATA_BURN_AFTER_READING] !== 0 &&
$data['adata'][self::ADATA_BURN_AFTER_READING] !== 1
) {
throw new Exception('Invalid data.', 73); throw new Exception('Invalid data.', 73);
} }
} }
+1 -1
View File
@@ -181,7 +181,7 @@ class TrafficLimiter extends AbstractPersistence
return true; return true;
} }
} }
throw new Exception(I18n::_('Your IP is not authorized to create pastes.')); throw new Exception(I18n::_('Your IP is not authorized to create documents.'));
} }
// disable limits if set to less then 1 // disable limits if set to less then 1
+172
View File
@@ -0,0 +1,172 @@
<?php declare(strict_types=1);
/**
* PrivateBin
*
* a zero-knowledge paste bin
*
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
*/
namespace PrivateBin\Proxy;
use Exception;
use PrivateBin\Configuration;
use PrivateBin\Json;
/**
* AbstractProxy
*
* Forwards a URL for shortening and stores the result.
*/
abstract class AbstractProxy
{
/**
* error message
*
* @access private
* @var string
*/
private $_error = '';
/**
* shortened URL
*
* @access private
* @var string
*/
private $_url = '';
/**
* constructor
*
* initializes and runs the proxy class
*
* @access public
* @param Configuration $conf
* @param string $link
*/
public function __construct(Configuration $conf, string $link)
{
if (!filter_var($link, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED | FILTER_FLAG_QUERY_REQUIRED)) {
$this->_error = 'Invalid URL given.';
return;
}
if (!str_starts_with($link, $conf->getKey('basepath') . '?') ||
parse_url($link, PHP_URL_HOST) != parse_url($conf->getKey('basepath'), PHP_URL_HOST)
) {
$this->_error = 'Trying to shorten a URL that isn\'t pointing at our instance.';
return;
}
$proxyUrl = $this->_getProxyUrl($conf);
if (empty($proxyUrl)) {
$this->_error = 'Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.';
$this->logErrorWithClassName($this->_error);
return;
}
$data = file_get_contents($proxyUrl, false,
stream_context_create(
array(
'http' => $this->_getProxyPayload($conf, $link),
)
)
);
if ($data === false) {
$http_response_header = $http_response_header ?? array();
$statusCode = '';
if (!empty($http_response_header) && preg_match('/HTTP\/\d+\.\d+\s+(\d+)/', $http_response_header[0], $matches)) {
$statusCode = $matches[1];
}
$this->_error = 'Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.';
$this->logErrorWithClassName($this->_error . ' Status code: ' . $statusCode);
return;
}
try {
$jsonData = Json::decode($data);
} catch (Exception $e) {
$this->_error = 'Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.';
$this->logErrorWithClassName('Error calling proxy: ' . $e->getMessage());
return;
}
$url = $this->_extractShortUrl($jsonData);
if ($url === null || empty($url)) {
$this->_error = 'Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.';
$this->logErrorWithClassName('Error calling proxy: ' . $data);
} else {
$this->_url = $url;
}
}
private function logErrorWithClassName(string $error)
{
error_log('[' . get_class($this) . '] ' . $error);
}
/**
* Returns the (untranslated) error message
*
* @access public
* @return string
*/
public function getError()
{
return $this->_error;
}
/**
* Returns the shortened URL
*
* @access public
* @return string
*/
public function getUrl()
{
return $this->_url;
}
/**
* Returns true if any error has occurred
*
* @access public
* @return bool
*/
public function isError()
{
return !empty($this->_error);
}
/**
* Abstract method to get the payload to send to the URL shortener
*
* @access protected
* @param Configuration $conf
* @param string $link
* @return array
*/
abstract protected function _getProxyPayload(Configuration $conf, string $link): array;
/**
* Abstract method to extract the shortUrl from the response
*
* @param array $data
* @return ?string
*/
abstract protected function _extractShortUrl(array $data): ?string;
/**
* Abstract method to get the proxy URL
*
* @param Configuration $conf
* @return string
*/
abstract protected function _getProxyUrl(Configuration $conf): string;
}
+75
View File
@@ -0,0 +1,75 @@
<?php declare(strict_types=1);
/**
* PrivateBin
*
* a zero-knowledge paste bin
*
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
*/
namespace PrivateBin\Proxy;
use PrivateBin\Configuration;
use PrivateBin\Json;
/**
* ShlinkProxy
*
* Forwards a URL for shortening to shlink and stores the result.
*/
class ShlinkProxy extends AbstractProxy
{
/**
* Overrides the abstract parent function to get the proxy URL.
*
* @param Configuration $conf
* @return string
*/
protected function _getProxyUrl(Configuration $conf): string
{
return $conf->getKey('apiurl', 'shlink');
}
/**
* Overrides the abstract parent function to get contents from Shlink API.
*
* @access protected
* @param Configuration $conf
* @param string $link
* @return array
*/
protected function _getProxyPayload(Configuration $conf, string $link): array
{
$shlink_api_key = $conf->getKey('apikey', 'shlink');
$body = array(
'longUrl' => $link,
);
return array(
'method' => 'POST',
'header' => "Content-Type: application/json\r\n" .
'X-Api-Key: ' . $shlink_api_key . "\r\n",
'content' => Json::encode($body),
);
}
/**
* Extracts the short URL from the shlink API response.
*
* @access protected
* @param array $data
* @return ?string
*/
protected function _extractShortUrl(array $data): ?string
{
if (
array_key_exists('shortUrl', $data)
) {
return $data['shortUrl'];
}
return null;
}
}
+77
View File
@@ -0,0 +1,77 @@
<?php declare(strict_types=1);
/**
* PrivateBin
*
* a zero-knowledge paste bin
*
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
*/
namespace PrivateBin\Proxy;
use PrivateBin\Configuration;
/**
* YourlsProxy
*
* Forwards a URL for shortening to YOURLS (your own URL shortener) and stores
* the result.
*/
class YourlsProxy extends AbstractProxy
{
/**
* Overrides the abstract parent function to get the proxy URL.
*
* @param Configuration $conf
* @return string
*/
protected function _getProxyUrl(Configuration $conf): string
{
return $conf->getKey('apiurl', 'yourls');
}
/**
* Overrides the abstract parent function to get contents from YOURLS API.
*
* @access protected
* @param Configuration $conf
* @param string $link
* @return array
*/
protected function _getProxyPayload(Configuration $conf, string $link): array
{
return array(
'method' => 'POST',
'header' => "Content-Type: application/x-www-form-urlencoded\r\n",
'content' => http_build_query(
array(
'signature' => $conf->getKey('signature', 'yourls'),
'format' => 'json',
'action' => 'shorturl',
'url' => $link,
)
),
);
}
/**
* Extracts the short URL from the YOURLS API response.
*
* @access protected
* @param array $data
* @return ?string
*/
protected function _extractShortUrl(array $data): ?string
{
if (
array_key_exists('statusCode', $data) &&
$data['statusCode'] == 200 &&
array_key_exists('shorturl', $data)
) {
return $data['shorturl'];
}
return null;
}
}
+5 -1
View File
@@ -75,7 +75,7 @@ class Request
private $_isJsonApi = false; private $_isJsonApi = false;
/** /**
* Return the paste ID of the current paste. * Return the paste ID of the current document.
* *
* @access private * @access private
* @return string * @return string
@@ -124,6 +124,7 @@ class Request
'link' => FILTER_SANITIZE_URL, 'link' => FILTER_SANITIZE_URL,
'pasteid' => FILTER_SANITIZE_SPECIAL_CHARS, 'pasteid' => FILTER_SANITIZE_SPECIAL_CHARS,
'shortenviayourls' => FILTER_SANITIZE_SPECIAL_CHARS, 'shortenviayourls' => FILTER_SANITIZE_SPECIAL_CHARS,
'shortenviashlink' => FILTER_SANITIZE_SPECIAL_CHARS,
), false); ), false);
} }
if ( if (
@@ -149,6 +150,9 @@ class Request
if (str_contains($this->getRequestUri(), '/shortenviayourls') || array_key_exists('shortenviayourls', $this->_params)) { if (str_contains($this->getRequestUri(), '/shortenviayourls') || array_key_exists('shortenviayourls', $this->_params)) {
$this->_operation = 'yourlsproxy'; $this->_operation = 'yourlsproxy';
} }
if (str_contains($this->getRequestUri(), '/shortenviashlink') || array_key_exists('shortenviashlink', $this->_params)) {
$this->_operation = 'shlinkproxy';
}
} }
} }
+1 -1
View File
@@ -25,7 +25,7 @@ class TemplateSwitcher
* @static * @static
* @var string * @var string
*/ */
protected static $_templateFallback = 'bootstrap'; protected static $_templateFallback = 'bootstrap5';
/** /**
* available templates * available templates
+6 -3
View File
@@ -93,6 +93,9 @@ class Vizhash16x16
// Then use these integers to drive the creation of an image. // Then use these integers to drive the creation of an image.
$image = imagecreatetruecolor($this->width, $this->height); $image = imagecreatetruecolor($this->width, $this->height);
if ($image === false) {
return '';
}
$r = $r0 = $this->getInt(); $r = $r0 = $this->getInt();
$g = $g0 = $this->getInt(); $g = $g0 = $this->getInt();
@@ -168,11 +171,11 @@ class Vizhash16x16
* @link https://www.supportduweb.com/scripts_tutoriaux-code-source-41-gd-faire-un-degrade-en-php-gd-fonction-degrade-imagerie.html * @link https://www.supportduweb.com/scripts_tutoriaux-code-source-41-gd-faire-un-degrade-en-php-gd-fonction-degrade-imagerie.html
* *
* @access private * @access private
* @param resource $img * @param resource|\GdImage $img
* @param string $direction * @param string $direction
* @param array $color1 * @param array $color1
* @param array $color2 * @param array $color2
* @return resource * @return resource|\GdImage
*/ */
private function degrade($img, $direction, $color1, $color2) private function degrade($img, $direction, $color1, $color2)
{ {
@@ -205,7 +208,7 @@ class Vizhash16x16
* Draw a shape * Draw a shape
* *
* @access private * @access private
* @param resource $image * @param resource|\GdImage $image
* @param int $action * @param int $action
* @param int $color * @param int $color
*/ */

Some files were not shown because too many files have changed in this diff Show More