Compare commits
No commits in common. "master" and "1.7.4" have entirely different histories.
@ -1,9 +1,5 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
export PATH="$PATH:$HOME/.composer/vendor/bin"
|
|
||||||
ln -s ./conf.sample.php cfg/conf.php
|
|
||||||
composer install --no-dev --optimize-autoloader
|
composer install --no-dev --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
.github/workflows/release.yml
vendored
@ -43,7 +43,7 @@ jobs:
|
|||||||
actions: read
|
actions: read
|
||||||
id-token: write
|
id-token: write
|
||||||
contents: write
|
contents: write
|
||||||
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.1.0
|
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.0.0
|
||||||
with:
|
with:
|
||||||
base64-subjects: "${{ needs.release.outputs.hashes }}"
|
base64-subjects: "${{ needs.release.outputs.hashes }}"
|
||||||
draft-release: true
|
draft-release: true
|
||||||
|
2
.github/workflows/test-results.yml
vendored
@ -24,7 +24,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Download and Extract Artifacts
|
- name: Download and Extract Artifacts
|
||||||
uses: dawidd6/action-download-artifact@07ab29fd4a977ae4d2b275087cf67563dfdf0295
|
uses: dawidd6/action-download-artifact@bf251b5aa9c2f7eeb574a96ee720e24f801b7c11
|
||||||
with:
|
with:
|
||||||
run_id: ${{ github.event.workflow_run.id }}
|
run_id: ${{ github.event.workflow_run.id }}
|
||||||
path: artifacts
|
path: artifacts
|
||||||
|
11
.github/workflows/tests.yml
vendored
@ -22,12 +22,11 @@ jobs:
|
|||||||
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.3', '7.4', '8.0', '8.1', '8.2', '8.3']
|
||||||
experimental: [false]
|
experimental: [false]
|
||||||
# uncomment this to start testing on development release
|
include:
|
||||||
# include:
|
- php-versions: '8.4' # development release, things can break
|
||||||
# - php-versions: '8.5' # development release, things can break
|
experimental: true
|
||||||
# experimental: true
|
|
||||||
env:
|
env:
|
||||||
extensions: gd, sqlite3
|
extensions: gd, sqlite3
|
||||||
extensions-cache-key-name: phpextensions
|
extensions-cache-key-name: phpextensions
|
||||||
@ -121,7 +120,7 @@ jobs:
|
|||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: '18'
|
node-version: '20'
|
||||||
cache: 'npm'
|
cache: 'npm'
|
||||||
cache-dependency-path: 'js/package-lock.json'
|
cache-dependency-path: 'js/package-lock.json'
|
||||||
|
|
||||||
|
@ -2,7 +2,6 @@ RewriteEngine on
|
|||||||
RewriteCond !%{HTTP_USER_AGENT} "Let's Encrypt validation server" [NC]
|
RewriteCond !%{HTTP_USER_AGENT} "Let's Encrypt validation server" [NC]
|
||||||
RewriteCond %{HTTP_USER_AGENT} ^.*(bot|spider|crawl|https?://|WhatsApp|SkypeUriPreview|facebookexternalhit) [NC]
|
RewriteCond %{HTTP_USER_AGENT} ^.*(bot|spider|crawl|https?://|WhatsApp|SkypeUriPreview|facebookexternalhit) [NC]
|
||||||
RewriteRule .* - [R=403,L]
|
RewriteRule .* - [R=403,L]
|
||||||
AddType application/wasm .wasm
|
|
||||||
|
|
||||||
<IfModule mod_php7.c>
|
<IfModule mod_php7.c>
|
||||||
php_value max_execution_time 30
|
php_value max_execution_time 30
|
||||||
|
26
CHANGELOG.md
@ -1,31 +1,5 @@
|
|||||||
# PrivateBin version history
|
# PrivateBin version history
|
||||||
|
|
||||||
## 1.7.7 (not yet released)
|
|
||||||
* ADDED: Switching templates using the web ui (#1501)
|
|
||||||
* CHANGED: Passing large data structures by reference to reduce memory consumption (#858)
|
|
||||||
* CHANGED: Removed use of ctype functions and polyfill library for ctype
|
|
||||||
* CHANGED: Upgrading libraries to: DOMpurify 3.2.5, ip-lib 1.20.0
|
|
||||||
|
|
||||||
## 1.7.6 (2025-02-01)
|
|
||||||
* ADDED: Ability to copy the paste by clicking the copy icon button or using the keyboard shortcut ctrl+c/cmd+c (#1390 & #12)
|
|
||||||
* CHANGED: Allow toggling tab-key-support using `[Ctrl]+[m]` or `[Esc]` in textarea for keyboard navigation (#1386)
|
|
||||||
* CHANGED: Switched to WASM streaming and replace unsafe-eval with wasm-unsafe-eval CSP declaration (#1464), requires webserver to have `application/wasm` MIME type configured.
|
|
||||||
* CHANGED: Replaced usage of strpos with str_starts_with & str_contains (#1373)
|
|
||||||
* CHANGED: Added polyfill libraries for ctype, str_starts_with & str_contains functions (#1476)
|
|
||||||
* CHANGED: Turned paste delete link into a button (#266)
|
|
||||||
* CHANGED: Upgrading libraries to: DOMpurify 3.2.4, cloud-storage 1.45.0, aws-sdk-php 3.336.2
|
|
||||||
* CHANGED: `bootstrap5` template UI improvements
|
|
||||||
* FIXED: Redirect to the home page after changing the language (#92)
|
|
||||||
|
|
||||||
## 1.7.5 (2024-11-16)
|
|
||||||
* ADDED: Allow non persistent SQL connections, if configured (#1394)
|
|
||||||
* ADDED: Show a button (that redirects to the `basepath` URL) inside the alert after a paste is deleted
|
|
||||||
* CHANGED: Tweaked page footer of the `bootstrap5` template (#1392)
|
|
||||||
* CHANGED: Simpler PostgreSQL table lookup query (#1361)
|
|
||||||
* CHANGED: SRI hashes are now configurable, no longer hardcoded in templates (#1365)
|
|
||||||
* CHANGED: Upgrading libraries to: DOMpurify 3.1.7, ip-lib 1.18.1, cloud-storage 1.43.0, aws-sdk-php 3.325.0
|
|
||||||
* FIXED: Numeric array keys being cast to integer causing failures under strict type checking (#1435)
|
|
||||||
|
|
||||||
## 1.7.4 (2024-07-09)
|
## 1.7.4 (2024-07-09)
|
||||||
* CHANGED: Saving markdown pastes uses `.md` extension instead of `.txt` (#1293)
|
* CHANGED: Saving markdown pastes uses `.md` extension instead of `.txt` (#1293)
|
||||||
* CHANGED: Enable strict type checking in PHP (#1350)
|
* CHANGED: Enable strict type checking in PHP (#1350)
|
||||||
|
@ -33,7 +33,6 @@
|
|||||||
* Mounir Idrassi & J. Mozdzen - secure YOURLS integration
|
* Mounir Idrassi & J. Mozdzen - secure YOURLS integration
|
||||||
* Felipe Nakandakari - enabled AWS SDK to use default credential provider chain in the S3 Storage backend
|
* Felipe Nakandakari - enabled AWS SDK to use default credential provider chain in the S3 Storage backend
|
||||||
* Aaron Sherber - cache control headers for API calls & use of `shortenviayourls` in query parameters
|
* Aaron Sherber - cache control headers for API calls & use of `shortenviayourls` in query parameters
|
||||||
* Mikhail Romanov - copying to clipboard, UI/UX improvements, templates switching
|
|
||||||
|
|
||||||
## Translations
|
## Translations
|
||||||
* Hexalyse - French
|
* Hexalyse - French
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# License
|
# License
|
||||||
|
|
||||||
PrivateBin consists of PHP and JS code which was originally written by Sébastien
|
PrivateBin consists of PHP and JS code which was originally written by Sébastien
|
||||||
Sauvage in 2012 and falls under the Zlib/libpng license. Also included are
|
Sauvage in 2012 and falls unter the Zlib/libpng license. Also included are
|
||||||
libraries that fall under the GPLv2 (rawinflate), BSD 3-clause (Showdown), MIT
|
libraries that fall under the GPLv2 (rawinflate), BSD 3-clause (Showdown), MIT
|
||||||
(base64.js version 1.7, Bootstrap, Identicon, random_compat, composer, kjua,
|
(base64.js version 1.7, Bootstrap, Identicon, random_compat, composer, kjua,
|
||||||
base-x), Apache (prettify.js) and CC-BY (favicon, icon, logo) licenses. All of
|
base-x), Apache (prettify.js) and CC-BY (favicon, icon, logo) licenses. All of
|
||||||
|
6
Makefile
@ -1,7 +1,7 @@
|
|||||||
.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.6
|
CURRENT_VERSION = 1.7.4
|
||||||
VERSION ?= 1.7.7
|
VERSION ?= 1.7.4
|
||||||
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")
|
||||||
@ -33,7 +33,7 @@ increment: ## Increment and commit new version number, set target version using
|
|||||||
do \
|
do \
|
||||||
sed -i "s/$(REGEX_CURRENT_VERSION)/$(REGEX_VERSION)/g" $$F; \
|
sed -i "s/$(REGEX_CURRENT_VERSION)/$(REGEX_VERSION)/g" $$F; \
|
||||||
done
|
done
|
||||||
git add $(VERSION_FILES) CHANGELOG.md
|
git add $(VERSION_FILES)
|
||||||
git commit -m "incrementing version"
|
git commit -m "incrementing version"
|
||||||
|
|
||||||
sign: ## Sign a release.
|
sign: ## Sign a release.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# [](https://privatebin.info/)
|
# [](https://privatebin.info/)
|
||||||
|
|
||||||
*Current version: 1.7.6*
|
*Current version: 1.7.4*
|
||||||
|
|
||||||
**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)
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
|
|
||||||
| Version | Supported |
|
| Version | Supported |
|
||||||
| ------- | ------------------ |
|
| ------- | ------------------ |
|
||||||
| 1.7.6 | :heavy_check_mark: |
|
| 1.7.4 | :heavy_check_mark: |
|
||||||
| < 1.7.6 | :x: |
|
| < 1.7.4 | :x: |
|
||||||
|
|
||||||
## Reporting a Vulnerability
|
## Reporting a Vulnerability
|
||||||
|
|
||||||
@ -14,8 +14,5 @@ a response within a week (usually during the next weekend). The respondee will
|
|||||||
reply from their personal address and can offer you their GPG public key to
|
reply from their personal address and can offer you their GPG public key to
|
||||||
support end-to-end encrypted communication on sensitive topics or attachments.
|
support end-to-end encrypted communication on sensitive topics or attachments.
|
||||||
|
|
||||||
You can also [use the corresponding GitHub form](https://github.com/PrivateBin/PrivateBin/security/advisories/new)
|
|
||||||
to report a new vulnerability directly on GitHub.
|
|
||||||
|
|
||||||
You can also contact us via the regular issue tracker if the risk of early
|
You can also contact us via the regular issue tracker if the risk of early
|
||||||
publication is low or you would request input from other PrivateBin users.
|
publication is low or you would request input from other PrivateBin users.
|
||||||
|
@ -72,35 +72,6 @@ class Administration
|
|||||||
exit("paste $pasteId successfully deleted" . PHP_EOL);
|
exit("paste $pasteId successfully deleted" . PHP_EOL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* lists all stored paste IDs
|
|
||||||
*
|
|
||||||
* @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
|
|
||||||
*/
|
|
||||||
private function _delete_all()
|
|
||||||
{
|
|
||||||
$ids = $this->_store->getAllPastes();
|
|
||||||
foreach ($ids as $pasteid) {
|
|
||||||
echo "Deleting paste ID: $pasteid" . PHP_EOL;
|
|
||||||
$this->_store->delete($pasteid);
|
|
||||||
}
|
|
||||||
exit("All pastes successfully deleted" . PHP_EOL);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* removes empty directories, if current storage model uses Filesystem
|
* removes empty directories, if current storage model uses Filesystem
|
||||||
*
|
*
|
||||||
@ -153,15 +124,13 @@ class Administration
|
|||||||
{
|
{
|
||||||
echo <<<'EOT'
|
echo <<<'EOT'
|
||||||
Usage:
|
Usage:
|
||||||
administration [--delete <paste id> | --delete-all | --empty-dirs | --help | --list-ids | --purge | --statistics]
|
administration [--delete <paste id> | --empty-dirs | --help | --purge | --statistics]
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
-d, --delete deletes the requested paste ID
|
-d, --delete deletes the requested paste ID
|
||||||
--delete-all deletes all paste IDs
|
|
||||||
-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
|
|
||||||
-p, --purge purge all expired pastes
|
-p, --purge purge all expired pastes
|
||||||
-s, --statistics reads all stored pastes and comments and reports statistics
|
-s, --statistics reads all stored pastes and comments and reports statistics
|
||||||
EOT, PHP_EOL;
|
EOT, PHP_EOL;
|
||||||
@ -208,8 +177,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:eps', array('help', 'delete:', 'empty-dirs', 'purge', 'statistics'));
|
||||||
|
|
||||||
if (!$this->_opts) {
|
if (!$this->_opts) {
|
||||||
self::_error_echo('unsupported arguments given');
|
self::_error_echo('unsupported arguments given');
|
||||||
echo PHP_EOL;
|
echo PHP_EOL;
|
||||||
@ -340,12 +308,6 @@ 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) {
|
|
||||||
$this->_list_ids();
|
|
||||||
}
|
|
||||||
if ($this->_option(null, 'delete-all') !== null) {
|
|
||||||
$this->_delete_all();
|
|
||||||
}
|
|
||||||
if (($pasteId = $this->_option('d', 'delete')) !== null) {
|
if (($pasteId = $this->_option('d', 'delete')) !== null) {
|
||||||
$this->_delete($pasteId);
|
$this->_delete($pasteId);
|
||||||
}
|
}
|
||||||
|
@ -200,9 +200,9 @@ Options:
|
|||||||
-h, --help displays this help message
|
-h, --help displays this help message
|
||||||
-n dry run, do not copy data
|
-n dry run, do not copy data
|
||||||
-v be verbose
|
-v be verbose
|
||||||
<srcconfdir> use storage backend configuration from conf.php found in
|
<srcconfdir> use storage backend configration from conf.php found in
|
||||||
this directory as source
|
this directory as source
|
||||||
<dstconfdir> optionally, use storage backend configuration from conf.php
|
<dstconfdir> optionally, use storage backend configration from conf.php
|
||||||
found in this directory as destination; defaults to:
|
found in this directory as destination; defaults to:
|
||||||
" . PATH . "cfg" . DIRECTORY_SEPARATOR . "conf.php
|
" . PATH . "cfg" . DIRECTORY_SEPARATOR . "conf.php
|
||||||
");
|
");
|
||||||
|
@ -42,28 +42,13 @@ defaultformatter = "plaintext"
|
|||||||
; size limit per paste or comment in bytes, defaults to 10 Mebibytes
|
; size limit per paste or comment in bytes, defaults to 10 Mebibytes
|
||||||
sizelimit = 10485760
|
sizelimit = 10485760
|
||||||
|
|
||||||
; by default PrivateBin use "bootstrap" template (tpl/bootstrap.php).
|
; template to include, default is "bootstrap" (tpl/bootstrap.php), also
|
||||||
; Optionally you can enable the template selection menu, which uses
|
|
||||||
; a session cookie to store the choice until the browser is closed.
|
|
||||||
templateselection = false
|
|
||||||
|
|
||||||
; List of available for selection templates when "templateselection" option is enabled
|
|
||||||
availabletemplates[] = "bootstrap"
|
|
||||||
availabletemplates[] = "bootstrap-page"
|
|
||||||
availabletemplates[] = "bootstrap-dark"
|
|
||||||
availabletemplates[] = "bootstrap-dark-page"
|
|
||||||
availabletemplates[] = "bootstrap-compact"
|
|
||||||
availabletemplates[] = "bootstrap-compact-page"
|
|
||||||
availabletemplates[] = "bootstrap5"
|
|
||||||
availabletemplates[] = "page"
|
|
||||||
|
|
||||||
; set the template your installs defaults to, defaults to "bootstrap" (tpl/bootstrap.php), also
|
|
||||||
; available are "page" (tpl/page.php), the classic ZeroBin style and several
|
; available are "page" (tpl/page.php), the classic ZeroBin style and several
|
||||||
; bootstrap 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:
|
; and finally "bootstrap-compact-page" - previews at:
|
||||||
; https://privatebin.info/screenshots.html
|
; https://privatebin.info/screenshots.html
|
||||||
; template = "bootstrap"
|
template = "bootstrap"
|
||||||
|
|
||||||
; (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
|
||||||
@ -116,9 +101,11 @@ languageselection = false
|
|||||||
; they are embedded in pastes. If you wish to allow that, you can adjust the
|
; they are embedded in pastes. 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 'unsafe-eval' is used in two cases; to check if the browser supports
|
||||||
; compression). You can remove it if compression doesn't need to be supported.
|
; async functions and display an error if not and for Chrome to enable
|
||||||
; 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'; 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"
|
; webassembly support (used for zlib compression). You can remove it if Chrome
|
||||||
|
; doesn't need to be supported and old browsers don't need to be warned.
|
||||||
|
; cspheader = "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"
|
||||||
|
|
||||||
; stay compatible with PrivateBin Alpha 0.19, less secure
|
; 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
|
; if enabled will use base64.js version 1.7 instead of 2.1.9 and sha1 instead of
|
||||||
@ -272,7 +259,7 @@ dir = PATH "data"
|
|||||||
;version = "latest"
|
;version = "latest"
|
||||||
;bucket = "my-bucket"
|
;bucket = "my-bucket"
|
||||||
|
|
||||||
;[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
|
||||||
; credentials, and will be visible in public on the PrivateBin web page.
|
; credentials, and will be visible in public on the PrivateBin web page.
|
||||||
@ -288,9 +275,3 @@ dir = PATH "data"
|
|||||||
; signature = ""
|
; signature = ""
|
||||||
; (optional) the URL of the YOURLS API, called to shorten a PrivateBin URL
|
; (optional) the URL of the YOURLS API, called to shorten a PrivateBin URL
|
||||||
; apiurl = "https://yourls.example.com/yourls-api.php"
|
; apiurl = "https://yourls.example.com/yourls-api.php"
|
||||||
|
|
||||||
;[sri]
|
|
||||||
; Subresource integrity (SRI) hashes used in template files. Uncomment and set
|
|
||||||
; these for all js files used. See:
|
|
||||||
; https://github.com/PrivateBin/PrivateBin/wiki/FAQ#user-content-how-to-make-privatebin-work-when-i-have-changed-some-javascript-files
|
|
||||||
;js/privatebin.js = "sha512-[…]"
|
|
||||||
|
@ -24,7 +24,7 @@ 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@v2
|
||||||
|
|
||||||
# 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
|
||||||
|
@ -26,13 +26,12 @@
|
|||||||
"require" : {
|
"require" : {
|
||||||
"php": "^7.3 || ^8.0",
|
"php": "^7.3 || ^8.0",
|
||||||
"jdenticon/jdenticon": "1.0.2",
|
"jdenticon/jdenticon": "1.0.2",
|
||||||
"mlocati/ip-lib": "1.20.0",
|
"mlocati/ip-lib": "1.18.0",
|
||||||
"symfony/polyfill-php80": "1.31.0",
|
|
||||||
"yzalis/identicon": "2.0.0"
|
"yzalis/identicon": "2.0.0"
|
||||||
},
|
},
|
||||||
"suggest" : {
|
"suggest" : {
|
||||||
"google/cloud-storage" : "1.45.0",
|
"google/cloud-storage" : "1.41.0",
|
||||||
"aws/aws-sdk-php" : "3.336.2"
|
"aws/aws-sdk-php" : "3.302.0"
|
||||||
},
|
},
|
||||||
"require-dev" : {
|
"require-dev" : {
|
||||||
"phpunit/phpunit" : "^9"
|
"phpunit/phpunit" : "^9"
|
||||||
|
205
composer.lock
generated
@ -4,7 +4,7 @@
|
|||||||
"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": "6c7e6dea19e8bfd5641b220cb68c4b65",
|
"content-hash": "b76c0c25f93dc79c4525cb3c86e5af99",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "jdenticon/jdenticon",
|
"name": "jdenticon/jdenticon",
|
||||||
@ -57,16 +57,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "mlocati/ip-lib",
|
"name": "mlocati/ip-lib",
|
||||||
"version": "1.20.0",
|
"version": "1.18.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/mlocati/ip-lib.git",
|
"url": "https://github.com/mlocati/ip-lib.git",
|
||||||
"reference": "fd45fc3bf08ed6c7e665e2e70562082ac954afd4"
|
"reference": "c77bd0b1f3e3956c7e9661e75cb1f54ed67d95d2"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/mlocati/ip-lib/zipball/fd45fc3bf08ed6c7e665e2e70562082ac954afd4",
|
"url": "https://api.github.com/repos/mlocati/ip-lib/zipball/c77bd0b1f3e3956c7e9661e75cb1f54ed67d95d2",
|
||||||
"reference": "fd45fc3bf08ed6c7e665e2e70562082ac954afd4",
|
"reference": "c77bd0b1f3e3956c7e9661e75cb1f54ed67d95d2",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -112,7 +112,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/mlocati/ip-lib/issues",
|
"issues": "https://github.com/mlocati/ip-lib/issues",
|
||||||
"source": "https://github.com/mlocati/ip-lib/tree/1.20.0"
|
"source": "https://github.com/mlocati/ip-lib/tree/1.18.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -124,87 +124,7 @@
|
|||||||
"type": "other"
|
"type": "other"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-02-04T17:30:58+00:00"
|
"time": "2022-01-13T18:05:33+00:00"
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "symfony/polyfill-php80",
|
|
||||||
"version": "v1.31.0",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/symfony/polyfill-php80.git",
|
|
||||||
"reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8",
|
|
||||||
"reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": ">=7.2"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"thanks": {
|
|
||||||
"url": "https://github.com/symfony/polyfill",
|
|
||||||
"name": "symfony/polyfill"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"files": [
|
|
||||||
"bootstrap.php"
|
|
||||||
],
|
|
||||||
"psr-4": {
|
|
||||||
"Symfony\\Polyfill\\Php80\\": ""
|
|
||||||
},
|
|
||||||
"classmap": [
|
|
||||||
"Resources/stubs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Ion Bazan",
|
|
||||||
"email": "ion.bazan@gmail.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Nicolas Grekas",
|
|
||||||
"email": "p@tchwork.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Symfony Community",
|
|
||||||
"homepage": "https://symfony.com/contributors"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
|
|
||||||
"homepage": "https://symfony.com",
|
|
||||||
"keywords": [
|
|
||||||
"compatibility",
|
|
||||||
"polyfill",
|
|
||||||
"portable",
|
|
||||||
"shim"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0"
|
|
||||||
},
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"url": "https://symfony.com/sponsor",
|
|
||||||
"type": "custom"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://github.com/fabpot",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
|
||||||
"type": "tidelift"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"time": "2024-09-09T11:45:10+00:00"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "yzalis/identicon",
|
"name": "yzalis/identicon",
|
||||||
@ -337,16 +257,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "myclabs/deep-copy",
|
"name": "myclabs/deep-copy",
|
||||||
"version": "1.13.0",
|
"version": "1.11.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/myclabs/DeepCopy.git",
|
"url": "https://github.com/myclabs/DeepCopy.git",
|
||||||
"reference": "024473a478be9df5fdaca2c793f2232fe788e414"
|
"reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/024473a478be9df5fdaca2c793f2232fe788e414",
|
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
|
||||||
"reference": "024473a478be9df5fdaca2c793f2232fe788e414",
|
"reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -354,12 +274,11 @@
|
|||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"doctrine/collections": "<1.6.8",
|
"doctrine/collections": "<1.6.8",
|
||||||
"doctrine/common": "<2.13.3 || >=3 <3.2.2"
|
"doctrine/common": "<2.13.3 || >=3,<3.2.2"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"doctrine/collections": "^1.6.8",
|
"doctrine/collections": "^1.6.8",
|
||||||
"doctrine/common": "^2.13.3 || ^3.2.2",
|
"doctrine/common": "^2.13.3 || ^3.2.2",
|
||||||
"phpspec/prophecy": "^1.10",
|
|
||||||
"phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
|
"phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
@ -385,7 +304,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/myclabs/DeepCopy/issues",
|
"issues": "https://github.com/myclabs/DeepCopy/issues",
|
||||||
"source": "https://github.com/myclabs/DeepCopy/tree/1.13.0"
|
"source": "https://github.com/myclabs/DeepCopy/tree/1.11.1"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -393,20 +312,20 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-02-12T12:17:51+00:00"
|
"time": "2023-03-08T13:26:56+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "nikic/php-parser",
|
"name": "nikic/php-parser",
|
||||||
"version": "v4.19.4",
|
"version": "v4.19.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": "4e1b88d21c69391150ace211e9eaf05810858d0b"
|
||||||
},
|
},
|
||||||
"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/4e1b88d21c69391150ace211e9eaf05810858d0b",
|
||||||
"reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2",
|
"reference": "4e1b88d21c69391150ace211e9eaf05810858d0b",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -415,7 +334,7 @@
|
|||||||
},
|
},
|
||||||
"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": "^6.5 || ^7.0 || ^8.0 || ^9.0"
|
||||||
},
|
},
|
||||||
"bin": [
|
"bin": [
|
||||||
"bin/php-parse"
|
"bin/php-parse"
|
||||||
@ -447,9 +366,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/v4.19.1"
|
||||||
},
|
},
|
||||||
"time": "2024-09-29T15:01:53+00:00"
|
"time": "2024-03-17T08:10:35+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phar-io/manifest",
|
"name": "phar-io/manifest",
|
||||||
@ -571,35 +490,35 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/php-code-coverage",
|
"name": "phpunit/php-code-coverage",
|
||||||
"version": "9.2.32",
|
"version": "9.2.31",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
|
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
|
||||||
"reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5"
|
"reference": "48c34b5d8d983006bd2adc2d0de92963b9155965"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/85402a822d1ecf1db1096959413d35e1c37cf1a5",
|
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965",
|
||||||
"reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5",
|
"reference": "48c34b5d8d983006bd2adc2d0de92963b9155965",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"ext-dom": "*",
|
"ext-dom": "*",
|
||||||
"ext-libxml": "*",
|
"ext-libxml": "*",
|
||||||
"ext-xmlwriter": "*",
|
"ext-xmlwriter": "*",
|
||||||
"nikic/php-parser": "^4.19.1 || ^5.1.0",
|
"nikic/php-parser": "^4.18 || ^5.0",
|
||||||
"php": ">=7.3",
|
"php": ">=7.3",
|
||||||
"phpunit/php-file-iterator": "^3.0.6",
|
"phpunit/php-file-iterator": "^3.0.3",
|
||||||
"phpunit/php-text-template": "^2.0.4",
|
"phpunit/php-text-template": "^2.0.2",
|
||||||
"sebastian/code-unit-reverse-lookup": "^2.0.3",
|
"sebastian/code-unit-reverse-lookup": "^2.0.2",
|
||||||
"sebastian/complexity": "^2.0.3",
|
"sebastian/complexity": "^2.0",
|
||||||
"sebastian/environment": "^5.1.5",
|
"sebastian/environment": "^5.1.2",
|
||||||
"sebastian/lines-of-code": "^1.0.4",
|
"sebastian/lines-of-code": "^1.0.3",
|
||||||
"sebastian/version": "^3.0.2",
|
"sebastian/version": "^3.0.1",
|
||||||
"theseer/tokenizer": "^1.2.3"
|
"theseer/tokenizer": "^1.2.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/phpunit": "^9.6"
|
"phpunit/phpunit": "^9.3"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"ext-pcov": "PHP extension that provides line coverage",
|
"ext-pcov": "PHP extension that provides line coverage",
|
||||||
@ -608,7 +527,7 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-main": "9.2.x-dev"
|
"dev-master": "9.2-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@ -637,7 +556,7 @@
|
|||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
|
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
|
||||||
"security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
|
"security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
|
||||||
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.32"
|
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -645,7 +564,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2024-08-22T04:23:01+00:00"
|
"time": "2024-03-02T06:37:42+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/php-file-iterator",
|
"name": "phpunit/php-file-iterator",
|
||||||
@ -890,45 +809,45 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/phpunit",
|
"name": "phpunit/phpunit",
|
||||||
"version": "9.6.22",
|
"version": "9.6.19",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
||||||
"reference": "f80235cb4d3caa59ae09be3adf1ded27521d1a9c"
|
"reference": "a1a54a473501ef4cdeaae4e06891674114d79db8"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f80235cb4d3caa59ae09be3adf1ded27521d1a9c",
|
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a1a54a473501ef4cdeaae4e06891674114d79db8",
|
||||||
"reference": "f80235cb4d3caa59ae09be3adf1ded27521d1a9c",
|
"reference": "a1a54a473501ef4cdeaae4e06891674114d79db8",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"doctrine/instantiator": "^1.5.0 || ^2",
|
"doctrine/instantiator": "^1.3.1 || ^2",
|
||||||
"ext-dom": "*",
|
"ext-dom": "*",
|
||||||
"ext-json": "*",
|
"ext-json": "*",
|
||||||
"ext-libxml": "*",
|
"ext-libxml": "*",
|
||||||
"ext-mbstring": "*",
|
"ext-mbstring": "*",
|
||||||
"ext-xml": "*",
|
"ext-xml": "*",
|
||||||
"ext-xmlwriter": "*",
|
"ext-xmlwriter": "*",
|
||||||
"myclabs/deep-copy": "^1.12.1",
|
"myclabs/deep-copy": "^1.10.1",
|
||||||
"phar-io/manifest": "^2.0.4",
|
"phar-io/manifest": "^2.0.3",
|
||||||
"phar-io/version": "^3.2.1",
|
"phar-io/version": "^3.0.2",
|
||||||
"php": ">=7.3",
|
"php": ">=7.3",
|
||||||
"phpunit/php-code-coverage": "^9.2.32",
|
"phpunit/php-code-coverage": "^9.2.28",
|
||||||
"phpunit/php-file-iterator": "^3.0.6",
|
"phpunit/php-file-iterator": "^3.0.5",
|
||||||
"phpunit/php-invoker": "^3.1.1",
|
"phpunit/php-invoker": "^3.1.1",
|
||||||
"phpunit/php-text-template": "^2.0.4",
|
"phpunit/php-text-template": "^2.0.3",
|
||||||
"phpunit/php-timer": "^5.0.3",
|
"phpunit/php-timer": "^5.0.2",
|
||||||
"sebastian/cli-parser": "^1.0.2",
|
"sebastian/cli-parser": "^1.0.1",
|
||||||
"sebastian/code-unit": "^1.0.8",
|
"sebastian/code-unit": "^1.0.6",
|
||||||
"sebastian/comparator": "^4.0.8",
|
"sebastian/comparator": "^4.0.8",
|
||||||
"sebastian/diff": "^4.0.6",
|
"sebastian/diff": "^4.0.3",
|
||||||
"sebastian/environment": "^5.1.5",
|
"sebastian/environment": "^5.1.3",
|
||||||
"sebastian/exporter": "^4.0.6",
|
"sebastian/exporter": "^4.0.5",
|
||||||
"sebastian/global-state": "^5.0.7",
|
"sebastian/global-state": "^5.0.1",
|
||||||
"sebastian/object-enumerator": "^4.0.4",
|
"sebastian/object-enumerator": "^4.0.3",
|
||||||
"sebastian/resource-operations": "^3.0.4",
|
"sebastian/resource-operations": "^3.0.3",
|
||||||
"sebastian/type": "^3.2.1",
|
"sebastian/type": "^3.2",
|
||||||
"sebastian/version": "^3.0.2"
|
"sebastian/version": "^3.0.2"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
@ -973,7 +892,7 @@
|
|||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
|
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
|
||||||
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
|
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
|
||||||
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.22"
|
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.19"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -989,7 +908,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2024-12-05T13:48:26+00:00"
|
"time": "2024-04-05T04:35:58+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/cli-parser",
|
"name": "sebastian/cli-parser",
|
||||||
@ -2017,5 +1936,5 @@
|
|||||||
"platform-overrides": {
|
"platform-overrides": {
|
||||||
"php": "7.3"
|
"php": "7.3"
|
||||||
},
|
},
|
||||||
"plugin-api-version": "2.3.0"
|
"plugin-api-version": "2.6.0"
|
||||||
}
|
}
|
||||||
|
@ -69,8 +69,45 @@ body.loading {
|
|||||||
margin-right: 8px;
|
margin-right: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#qrcodemodalClose {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
#qrcode-display {
|
||||||
|
width: 200px;
|
||||||
|
height: 200px;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pastelink {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pastelink > a {
|
||||||
|
word-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
#preview {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#message, .replymessage {
|
||||||
|
font-family: monospace;
|
||||||
|
resize: vertical;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nickname {
|
||||||
|
margin: 5px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#comments, #comments button {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
.comment {
|
.comment {
|
||||||
|
border-left: 1px solid #ccc;
|
||||||
padding: 5px 0 5px 10px;
|
padding: 5px 0 5px 10px;
|
||||||
|
transition: background-color 0.75s ease-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
footer h4 {
|
footer h4 {
|
||||||
@ -138,31 +175,3 @@ html[dir="rtl"] #language {
|
|||||||
html[dir="rtl"] #deletelink, html[dir="rtl"] #qrcodemodalClose {
|
html[dir="rtl"] #deletelink, html[dir="rtl"] #qrcodemodalClose {
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
#prettyprint {
|
|
||||||
padding-right: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#prettyMessageCopyBtn {
|
|
||||||
position: absolute;
|
|
||||||
top: 8px;
|
|
||||||
right: 25px;
|
|
||||||
left: auto;
|
|
||||||
padding: 0;
|
|
||||||
background: none;
|
|
||||||
border: none;
|
|
||||||
z-index: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
html[dir="rtl"] #prettyMessageCopyBtn {
|
|
||||||
left: 25px;
|
|
||||||
right: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
#copySuccessIcon {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#copyShortcutHint {
|
|
||||||
margin-bottom: 5px;
|
|
||||||
}
|
|
@ -14,23 +14,55 @@
|
|||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.opacity-05-1-hover {
|
#qrcodemodalClose {
|
||||||
opacity: 0.5;
|
float: right;
|
||||||
transition: all 0.15s ease;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.opacity-05-1-hover:hover {
|
#qrcode-display {
|
||||||
opacity: 1;
|
width: 200px;
|
||||||
|
height: 200px;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pastelink {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pastelink > a {
|
||||||
|
word-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
#preview {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#message {
|
||||||
|
height: 70vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
#message, .replymessage {
|
||||||
|
font-family: monospace;
|
||||||
|
resize: vertical;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nickname {
|
||||||
|
margin: 5px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#comments, #comments button {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.comment {
|
||||||
|
border-left: 1px solid #ccc;
|
||||||
|
padding: 5px 0 5px 10px;
|
||||||
|
transition: background-color 0.75s ease-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dropdown-menu {
|
.dropdown-menu {
|
||||||
--bs-dropdown-min-width: 23rem;
|
--bs-dropdown-min-width: 23rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
pre {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-bs-theme=light] pre, [data-bs-theme=light] .card {
|
[data-bs-theme=light] pre, [data-bs-theme=light] .card {
|
||||||
background-color: RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1));
|
background-color: RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1));
|
||||||
}
|
}
|
||||||
@ -52,39 +84,3 @@ li.L0, li.L1, li.L2, li.L3, li.L4, li.L5, li.L6, li.L7, li.L8, li.L9 {
|
|||||||
html[dir="rtl"] #deletelink, html[dir="rtl"] #qrcodemodalClose {
|
html[dir="rtl"] #deletelink, html[dir="rtl"] #qrcodemodalClose {
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
#prettyprint {
|
|
||||||
padding-right: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#prettyMessageCopyBtn {
|
|
||||||
position: absolute;
|
|
||||||
top: 8px;
|
|
||||||
right: 8px;
|
|
||||||
left: auto;
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
padding: 0;
|
|
||||||
background: none;
|
|
||||||
border: none;
|
|
||||||
z-index: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
html[dir="rtl"] #prettyMessageCopyBtn {
|
|
||||||
left: 8px;
|
|
||||||
right: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
#prettyMessageCopyBtn svg {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
vertical-align: baseline;
|
|
||||||
}
|
|
||||||
|
|
||||||
#copySuccessIcon {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#sendbutton svg {
|
|
||||||
transform: translateY(1.5px);
|
|
||||||
}
|
|
||||||
|
@ -38,56 +38,6 @@
|
|||||||
outline-offset: -50px;
|
outline-offset: -50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#filewrap {
|
|
||||||
transition: background-color 0.75s ease-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
#deletelink {
|
|
||||||
float: right;
|
|
||||||
margin-left: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#qrcodemodalClose {
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
#qrcode-display {
|
|
||||||
width: 200px;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pastelink {
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pastelink > a, #plaintext > a {
|
|
||||||
word-wrap: break-word;
|
|
||||||
}
|
|
||||||
|
|
||||||
#message {
|
|
||||||
height: 70dvh;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media ((max-width: 450px) and (max-height: 950px)) {
|
|
||||||
#message {
|
|
||||||
height: 55dvh;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#message, .replymessage {
|
|
||||||
font-family: monospace;
|
|
||||||
resize: vertical;
|
|
||||||
}
|
|
||||||
|
|
||||||
.comment {
|
|
||||||
border-left: 1px solid #ccc;
|
|
||||||
transition: background-color 0.75s ease-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
.commentdata {
|
|
||||||
white-space: pre-wrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dragAndDropFile {
|
.dragAndDropFile {
|
||||||
color: #777;
|
color: #777;
|
||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
@ -95,7 +45,20 @@
|
|||||||
white-space: normal;
|
white-space: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#filewrap {
|
||||||
|
transition: background-color 0.75s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
.highlight {
|
.highlight {
|
||||||
background-color: #fd8;
|
background-color: #fd8;
|
||||||
transition: background-color 0.2s ease-in;
|
transition: background-color 0.2s ease-in;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#deletelink {
|
||||||
|
float: right;
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.commentdata {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
@ -86,7 +86,6 @@ h3.title {
|
|||||||
#aboutbox a { color: #94a3b4; }
|
#aboutbox a { color: #94a3b4; }
|
||||||
|
|
||||||
#message, #cleartext, #prettymessage, #attachment, .replymessage {
|
#message, #cleartext, #prettymessage, #attachment, .replymessage {
|
||||||
position: relative;
|
|
||||||
clear: both;
|
clear: both;
|
||||||
color: #000;
|
color: #000;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
@ -126,7 +125,7 @@ h3.title {
|
|||||||
|
|
||||||
#pasteresult button { margin-left: 11px; }
|
#pasteresult button { margin-left: 11px; }
|
||||||
|
|
||||||
#message, #plaintext, #prettymessage, #toolbar, #status { margin-bottom: 5px; }
|
#toolbar, #status { margin-bottom: 5px; }
|
||||||
|
|
||||||
#copyhint { color: #666; font-size: 0.85em }
|
#copyhint { color: #666; font-size: 0.85em }
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@ for more information.
|
|||||||
### Minimal Requirements
|
### Minimal Requirements
|
||||||
|
|
||||||
- PHP version 7.3 or above
|
- PHP version 7.3 or above
|
||||||
|
- ctype extension
|
||||||
- GD extension (when using identicon or vizhash icons, jdenticon works without it)
|
- GD extension (when using identicon or vizhash icons, jdenticon works without it)
|
||||||
- zlib extension
|
- zlib extension
|
||||||
- some disk space or a database supported by [PDO](https://php.net/manual/book.pdo.php)
|
- some disk space or a database supported by [PDO](https://php.net/manual/book.pdo.php)
|
||||||
@ -200,7 +201,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.6');
|
INSERT INTO prefix_config VALUES('VERSION', '1.7.4');
|
||||||
```
|
```
|
||||||
|
|
||||||
In **PostgreSQL**, the `data`, `attachment`, `nickname` and `vizhash` columns
|
In **PostgreSQL**, the `data`, `attachment`, `nickname` and `vizhash` columns
|
||||||
|
@ -43,14 +43,6 @@ Example for Debian and Ubuntu:
|
|||||||
$ sudo apt install phpunit php-gd php-sqlite3 php-xdebug
|
$ sudo apt install phpunit php-gd php-sqlite3 php-xdebug
|
||||||
```
|
```
|
||||||
|
|
||||||
Because the unit tests depend on this, you also need to install the optional. Otherwise they won't run:
|
|
||||||
```console
|
|
||||||
composer require google/cloud-storage
|
|
||||||
```
|
|
||||||
|
|
||||||
If you do this and want to develop further, please go into `.gitignore` and adjust it to ignore the whole
|
|
||||||
vendor directory. Otherwise your `git status` will be filled with lot's of unrelated PHP files.
|
|
||||||
|
|
||||||
To run the tests, change into the `tst` directory and run phpunit:
|
To run the tests, change into the `tst` directory and run phpunit:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
|
14
i18n/ar.json
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "يُرسل لصق…",
|
||||||
"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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "لصقك هو <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(اضغط على [Ctrl] + [c] للنسخ)</span>",
|
||||||
"Delete data": "حذف البيانات",
|
"Delete data": "حذف البيانات",
|
||||||
"Could not create paste: %s": "تعذر إنشاء اللصق: %s",
|
"Could not create paste: %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 paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "لا يمكن فك تشفير اللصق: مفتاح فك التشفير مفقود في URL (هل استخدمت معيد توجيه أو أداة تقصير لعناوين URL تزيل جزءًا من عنوان URL؟)",
|
||||||
@ -218,14 +218,6 @@
|
|||||||
"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 paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "خطأ في فك ضغط اللصق، متصفحك لا يدعم 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."
|
||||||
"Start over": "ابدأ من جديد",
|
|
||||||
"Paste 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>",
|
|
||||||
"Copy link": "نسخ الرابط",
|
|
||||||
"Link copied to clipboard": "تم نسخ الرابط إلى الحافظة",
|
|
||||||
"Paste 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> للتبديل)",
|
|
||||||
"Theme": "السمة"
|
|
||||||
}
|
}
|
||||||
|
12
i18n/bg.json
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "Изпращане на информацията Ви…",
|
||||||
"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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Вашата връзка е <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Натиснете [Ctrl]+[c] за да копирате)</span>",
|
||||||
"Delete data": "Изтриване на информацията",
|
"Delete data": "Изтриване на информацията",
|
||||||
"Could not create paste: %s": "Създаването на връзката ви беше неуспешно: %s",
|
"Could not create paste: %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 paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Дешифроването на информацията беше неуспешно: Ключа за декриптиране липсва във връзката (Да не сте използвали услуга за пренасочване или скъсяване на връзката, което би изрязало части от нея?)",
|
||||||
@ -219,13 +219,5 @@
|
|||||||
"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 paste, due to missing WebAssembly support.": "Error compressing paste, 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 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."
|
||||||
"Start over": "Start over",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Copy link",
|
|
||||||
"Link copied to clipboard": "Link copied to clipboard",
|
|
||||||
"Paste text": "Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
32
i18n/ca.json
@ -20,7 +20,7 @@
|
|||||||
"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 paste. Sorry.": "S'ha produït un error en desar l'enganxat. Ho sento.",
|
||||||
"Invalid paste ID.": "Identificador d'enganxament no vàlid.",
|
"Invalid paste 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.",
|
"Paste is not of burn-after-reading type.": "Paste is not of burn-after-reading type.",
|
||||||
"Wrong deletion token. Paste was not deleted.": "El token d'eliminació és incorrecte. El Paste no s'ha eliminat.",
|
"Wrong deletion token. Paste was not deleted.": "El token d'eliminació és incorrecte. El Paste no s'ha eliminat.",
|
||||||
"Paste was properly deleted.": "El Paste s'ha esborrat correctament.",
|
"Paste was properly deleted.": "El Paste 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.",
|
||||||
@ -92,7 +92,7 @@
|
|||||||
"%d anys"
|
"%d anys"
|
||||||
],
|
],
|
||||||
"Never": "Mai",
|
"Never": "Mai",
|
||||||
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Nota: Aquest és un servei de prova. Les dades s'eliminaran. Molts gatets moriran si abuses d'aquest servei.",
|
"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.": [
|
||||||
"Aquest document caducarà d'aquí %d segon.",
|
"Aquest document caducarà d'aquí %d segon.",
|
||||||
"Aquest document caducarà d'aquí %d segons.",
|
"Aquest document caducarà d'aquí %d segons.",
|
||||||
@ -151,10 +151,10 @@
|
|||||||
"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 paste…": "Enviant paste…",
|
||||||
"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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] 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 paste: %s": "Could not create paste: %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 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?)",
|
||||||
"B": "B",
|
"B": "B",
|
||||||
"KiB": "KiB",
|
"KiB": "KiB",
|
||||||
"MiB": "MiB",
|
"MiB": "MiB",
|
||||||
@ -172,8 +172,8 @@
|
|||||||
"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 paste.": "The cloned file '%s' was attached to this paste.",
|
||||||
"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": "alternatively drag & drop a file or paste an image from the clipboard",
|
||||||
"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.": "File too large, to display a preview. Please download the attachment.",
|
||||||
"Remove attachment": "Remove 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.",
|
"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.",
|
"Invalid attachment.": "Invalid attachment.",
|
||||||
@ -211,21 +211,13 @@
|
|||||||
"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",
|
"Save paste": "Save paste",
|
||||||
"Your IP is not authorized to create pastes.": "La teva IP no està autoritzada a crear notes.",
|
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.",
|
||||||
"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.": "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 en la crida a YOURLS. Probablement és un problema de configuració, com ara \"apiurl\" o \"signature\" incorrectes o que falten.",
|
"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\".",
|
||||||
"Error parsing YOURLS response.": "Error parsing YOURLS response.",
|
"Error parsing YOURLS response.": "Error parsing YOURLS response.",
|
||||||
"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?": "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 de compressió de la nota, no hi ha suport de WebAssembly.",
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, 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 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."
|
||||||
"Start over": "Start over",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Copy link",
|
|
||||||
"Link copied to clipboard": "Link copied to clipboard",
|
|
||||||
"Paste text": "Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
20
i18n/co.json
@ -151,7 +151,7 @@
|
|||||||
"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 l’appiccicu…",
|
"Sending paste…": "Inviu di l’appiccicu…",
|
||||||
"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 à l’indirizzu <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Appughjate nant’à <kbd>Ctrl</kbd>+<kbd>c</kbd> per cupià u liame)</span>",
|
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "U vostru appiccicu si trova à l’indirizzu<a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Appughjate [Ctrl]+[c] 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à l’appiccicu : %s",
|
"Could not create paste: %s": "Ùn si pò micca creà l’appiccicu : %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à l’appiccicu : A chjave di dicifratura hè assente in l’indirizzu. Averiate impiegatu un orientadore d’indirizzu o un riduttore chì ammuzzeghja una parte di l’indirizzu ?",
|
"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à l’appiccicu : A chjave di dicifratura hè assente in l’indirizzu. Averiate impiegatu un orientadore d’indirizzu o un riduttore chì ammuzzeghja una parte di l’indirizzu ?",
|
||||||
@ -168,15 +168,15 @@
|
|||||||
"Plain Text": "Testu in chjaru",
|
"Plain Text": "Testu in chjaru",
|
||||||
"Source Code": "Codice di fonte",
|
"Source Code": "Codice di fonte",
|
||||||
"Markdown": "Markdown",
|
"Markdown": "Markdown",
|
||||||
"Download attachment": "Scaricà a pezza ghjunta",
|
"Download attachment": "Scaricà a pezza aghjunta",
|
||||||
"Cloned: '%s'": "Duppiatu : « %s »",
|
"Cloned: '%s'": "Duppiatu : « %s »",
|
||||||
"The cloned file '%s' was attached to this paste.": "U schedariu duppiatu « %s » hè statu aghjuntu à st’appiccicu.",
|
"The cloned file '%s' was attached to this paste.": "U schedariu duppiatu « %s » hè statu aghjuntu à st’appiccicu.",
|
||||||
"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 preme’papei",
|
"alternatively drag & drop a file or paste an image from the clipboard": "in alternanza, sguillà è depone un schedariu o incullà una fiura da u preme’papei",
|
||||||
"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 aghjunta.",
|
||||||
"Remove attachment": "Caccià a pezza ghjunta",
|
"Remove attachment": "Caccià a pezza aghjunta",
|
||||||
"Your browser does not support uploading encrypted files. Please use a newer browser.": "U vostru navigatore ùn accetta micca l’inviu di i schedarii cifrati. Impiegate un navigatore più recente.",
|
"Your browser does not support uploading encrypted files. Please use a newer browser.": "U vostru navigatore ùn accetta micca l’inviu di i schedarii cifrati. Impiegate un navigatore più recente.",
|
||||||
"Invalid attachment.": "A pezza ghjunta hè inaccettevule.",
|
"Invalid attachment.": "A pezza aghjunta hè inaccettevule.",
|
||||||
"Options": "Ozzioni",
|
"Options": "Ozzioni",
|
||||||
"Shorten URL": "Ammuzzà l’indirizzu",
|
"Shorten URL": "Ammuzzà l’indirizzu",
|
||||||
"Editor": "Editore",
|
"Editor": "Editore",
|
||||||
@ -219,13 +219,5 @@
|
|||||||
"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 l’appiccicu, perchè WebAssembly ùn hè micca accettatu.",
|
"Error compressing paste, due to missing WebAssembly support.": "Sbagliu durante a cumpressione di l’appiccicu, 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 l’appiccicu, perchè u vostru navigatore ùn accetteghja micca WebAssembly. Ci vole à impiegà un altru navigatore per affissà st’appiccicu.",
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Sbagliu durante a scumpressione di l’appiccicu, perchè u vostru navigatore ùn accetteghja micca WebAssembly. Ci vole à impiegà un altru navigatore per affissà st’appiccicu."
|
||||||
"Start over": "Principià torna",
|
|
||||||
"Paste copied to clipboard": "L’appiccicu hè statu cupiatu in u preme’papei",
|
|
||||||
"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à l’appiccicu, appughjate nant’à u buttone di copia o impiegate l’accurtatoghju di u preme’papei <kbd>Ctrl</kbd>+<kbd>c</kbd>/<kbd>Cmd</kbd>+<kbd>c</kbd>",
|
|
||||||
"Copy link": "Cupià u liame",
|
|
||||||
"Link copied to clipboard": "U liame hè statu cupiatu in u preme’papei",
|
|
||||||
"Paste text": "Testu di l’appiccicu",
|
|
||||||
"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à)",
|
|
||||||
"Theme": "Tema"
|
|
||||||
}
|
}
|
||||||
|
248
i18n/cs.json
@ -1,34 +1,34 @@
|
|||||||
{
|
{
|
||||||
"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 pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s je minimalistický open source 'pastebin' server, který neanalyzuje vložená data. Data jsou šifrována %sv prohlížeči%s pomocí 256 bitů 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 projetu</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.",
|
"Paste 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.": [
|
||||||
"Vyčkejte prosím %d sekundu mezi následujícími příspěvky.",
|
"Počet sekund do dalšího příspěvku: %d.",
|
||||||
"Vyčkejte prosím %d sekundy mezi následujícími příspěvky.",
|
"Počet sekund do dalšího příspěvku: %d.",
|
||||||
"Vyčkejte prosím %d sekund mezi následujícími příspěvky.",
|
"Počet sekund do dalšího příspěvku: %d.",
|
||||||
"Vyčkejte prosím %d sekund mezi následujícími příspěvky.",
|
"Počet sekund do dalšího příspěvku: %d.",
|
||||||
"Vyčkejte prosím %d sekund mezi následujícími příspěvky.",
|
"Počet sekund do dalšího příspěvku: %d.",
|
||||||
"Vyčkejte prosím %d sekund mezi následujícími příspěvky."
|
"Počet sekund do dalšího příspěvku: %d."
|
||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "Příspěvek je limitován na %s šífrovaných dat",
|
"Paste 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.",
|
||||||
"Error saving paste. Sorry.": "Chyba při ukládání příspěvku. Promiňte.",
|
"Error saving paste. Sorry.": "Chyba při ukládání příspěvku.",
|
||||||
"Invalid paste ID.": "Chybné ID příspěvku.",
|
"Invalid paste ID.": "Chybně vložené ID.",
|
||||||
"Paste is not of burn-after-reading type.": "Příspěvek není nastaven na smazání po přečtení.",
|
"Paste is not of burn-after-reading type.": "Příspěvek není nastaven na smazaní 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. Paste 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.",
|
"Paste 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.": "%%s requires a modern browser to work.",
|
||||||
"New": "Nový",
|
"New": "Nový",
|
||||||
"Create": "Vytvořit",
|
"Create": "Vytvořit",
|
||||||
"Clone": "Klonovat",
|
"Clone": "Klonovat",
|
||||||
"Raw text": "Čistý text",
|
"Raw text": "Pouze Text",
|
||||||
"Expires": "Expirace",
|
"Expires": "Expirace",
|
||||||
"Burn after reading": "Po přečtení smazat",
|
"Burn after reading": "Po přečtení smazat",
|
||||||
"Open discussion": "Povolit komentáře",
|
"Open discussion": "Povolit komentáře",
|
||||||
@ -36,113 +36,113 @@
|
|||||||
"Discussion": "Komentáře",
|
"Discussion": "Komentáře",
|
||||||
"Toggle navigation": "Přepnout navigaci",
|
"Toggle navigation": "Přepnout navigaci",
|
||||||
"%d seconds": [
|
"%d seconds": [
|
||||||
"%d sekunda",
|
"%d sekuda",
|
||||||
"%d sekundy",
|
"%d sekundy",
|
||||||
"%d sekund",
|
"%d sekund",
|
||||||
"%d sekund",
|
"%d sekund",
|
||||||
"%d sekund",
|
"%d sekund",
|
||||||
"%d sekund"
|
"%d sekund"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"%d minuta",
|
"%d minuta",
|
||||||
"%d minuty",
|
"%d minuty",
|
||||||
"%d minut",
|
"%d minut",
|
||||||
"%d minut",
|
"%d minut",
|
||||||
"%d minut",
|
"%d minut",
|
||||||
"%d minut"
|
"%d minut"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d hodina",
|
"%d hodina",
|
||||||
"%d hodiny",
|
"%d hodiny",
|
||||||
"%d hodin",
|
"%d hodin",
|
||||||
"%d hodin",
|
"%d hodin",
|
||||||
"%d hodin",
|
"%d hodin",
|
||||||
"%d hodin"
|
"%d hodin"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d den",
|
"%d den",
|
||||||
"%d dny",
|
"%d dny",
|
||||||
"%d dní",
|
"%d dní",
|
||||||
"%d dní",
|
"%d dní",
|
||||||
"%d dní",
|
"%d dní",
|
||||||
"%d dní"
|
"%d dní"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d týden",
|
"%d týden",
|
||||||
"%d týdny",
|
"%d týdeny",
|
||||||
"%d týdnů",
|
"%d týdnů",
|
||||||
"%d týdnů",
|
"%d týdnů",
|
||||||
"%d týdnů",
|
"%d týdnů",
|
||||||
"%d týdnů"
|
"%d týdnů"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d měsíc",
|
"%d měsíc",
|
||||||
"%d měsíce",
|
"%d měsíce",
|
||||||
"%d měsíců",
|
"%d měsíců",
|
||||||
"%d měsíců",
|
"%d měsíců",
|
||||||
"%d měsíců",
|
"%d měsíců",
|
||||||
"%d měsíců"
|
"%d měsíců"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
"%d rok",
|
"%d rok",
|
||||||
"%d roky",
|
"%d roky",
|
||||||
"%d let",
|
"%d roků",
|
||||||
"%d let",
|
"%d roků",
|
||||||
"%d let",
|
"%d roků",
|
||||||
"%d let"
|
"%d roků"
|
||||||
],
|
],
|
||||||
"Never": "Nikdy",
|
"Never": "Nikdy",
|
||||||
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Poznámka: Toto je testovací služba: Data mohou být kdykoliv smazána. Při zneužití této služby zemřou koťátka.",
|
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Poznámka: Tato služba slouží k vyzkoušení: Data mohou být kdykoliv smazána. Při zneužití této služby zemřou koťátka.",
|
||||||
"This document will expire in %d seconds.": [
|
"This document will expire in %d seconds.": [
|
||||||
"Tento dokument expiruje za %d sekundu.",
|
"Tento dokument expiruje za %d sekundu.",
|
||||||
"Tento dokument expiruje za %d sekundy.",
|
"Tento dokument expiruje za %d sekundy.",
|
||||||
"Tento dokument expiruje za %d sekund.",
|
"Tento dokument expiruje za %d sekund.",
|
||||||
"Tento dokument expiruje za %d sekund.",
|
"Tento dokument expiruje za %d sekund.",
|
||||||
"Tento dokument expiruje za %d sekund.",
|
"Tento dokument expiruje za %d sekund.",
|
||||||
"Tento dokument expiruje za %d sekund."
|
"Tento dokument expiruje za %d sekund."
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"Tento dokument expiruje za %d minutu.",
|
"Tento dokument expiruje za %d minutu.",
|
||||||
"Tento dokument expiruje za %d minuty.",
|
"Tento dokument expiruje za %d minuty.",
|
||||||
"Tento dokument expiruje za %d minut.",
|
"Tento dokument expiruje za %d minut.",
|
||||||
"Tento dokument expiruje za %d minut.",
|
"Tento dokument expiruje za %d minut.",
|
||||||
"Tento dokument expiruje za %d minut.",
|
"Tento dokument expiruje za %d minut.",
|
||||||
"Tento dokument expiruje za %d minut."
|
"Tento dokument expiruje za %d minut."
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"Tento dokument expiruje za %d hodinu.",
|
"Tento dokument expiruje za %d hodinu.",
|
||||||
"Tento dokument expiruje za %d hodiny.",
|
"Tento dokument expiruje za %d hodiny.",
|
||||||
"Tento dokument expiruje za %d hodin.",
|
"Tento dokument expiruje za %d hodin.",
|
||||||
"Tento dokument expiruje za %d hodin.",
|
"Tento dokument expiruje za %d hodin.",
|
||||||
"Tento dokument expiruje za %d hodin.",
|
"Tento dokument expiruje za %d hodin.",
|
||||||
"Tento dokument expiruje za %d hodin."
|
"Tento dokument expiruje za %d hodin."
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"Tento dokument expiruje za %d den.",
|
"Tento dokument expiruje za %d den.",
|
||||||
"Tento dokument expiruje za %d dny.",
|
"Tento dokument expiruje za %d dny.",
|
||||||
"Tento dokument expiruje za %d dní.",
|
"Tento dokument expiruje za %d dny.",
|
||||||
"Tento dokument expiruje za %d dní.",
|
"Tento dokument expiruje za %d dny.",
|
||||||
"Tento dokument expiruje za %d dní.",
|
"Tento dokument expiruje za %d dny.",
|
||||||
"Tento dokument expiruje za %d dní."
|
"Tento dokument expiruje za %d dny."
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
"Tento dokument expiruje za %d měsíc.",
|
"Tento dokument expiruje za %d měsíc.",
|
||||||
"Tento dokument expiruje za %d měsíce.",
|
"Tento dokument expiruje za %d měsíce.",
|
||||||
"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ů.",
|
||||||
"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 paste:": "Zadejte prosím heslo:",
|
||||||
"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 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í.",
|
||||||
"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",
|
||||||
"Anonymous": "Anonym",
|
"Anonymous": "Anonym",
|
||||||
"Avatar generated from IP address": "Avatar vygenerován podle IP adresy",
|
"Avatar generated from IP address": "Avatar vygenerován z IP adresy",
|
||||||
"Add comment": "Přidat komentář",
|
"Add comment": "Přidat komentář",
|
||||||
"Optional nickname…": "Nepovinná přezdívka…",
|
"Optional nickname…": "Volitelný nickname…",
|
||||||
"Post comment": "Odeslat komentář",
|
"Post comment": "Odeslat komentář",
|
||||||
"Sending comment…": "Odesílání komentáře…",
|
"Sending comment…": "Odesílání komentáře…",
|
||||||
"Comment posted.": "Komentář odeslán.",
|
"Comment posted.": "Komentář odeslán.",
|
||||||
@ -151,10 +151,10 @@
|
|||||||
"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 paste…": "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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Váš link je <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Stiskněte [Ctrl]+[c] 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 paste: %s": "Nelze 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 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íč (Možnou příčinou může být URL shortener?)",
|
||||||
"B": "B",
|
"B": "B",
|
||||||
"KiB": "KiB",
|
"KiB": "KiB",
|
||||||
"MiB": "MiB",
|
"MiB": "MiB",
|
||||||
@ -165,67 +165,59 @@
|
|||||||
"ZiB": "ZiB",
|
"ZiB": "ZiB",
|
||||||
"YiB": "YiB",
|
"YiB": "YiB",
|
||||||
"Format": "Formát",
|
"Format": "Formát",
|
||||||
"Plain Text": "Prostý text",
|
"Plain Text": "Prostý Text",
|
||||||
"Source Code": "Zdrojový kód",
|
"Source Code": "Zdrojový kód",
|
||||||
"Markdown": "Markdown",
|
"Markdown": "Markdown",
|
||||||
"Download attachment": "Stáhnout přílohu",
|
"Download attachment": "Stáhnout přílohu",
|
||||||
"Cloned: '%s'": "Naklonováno: '%s'",
|
"Cloned: '%s'": "Klonová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 paste.": "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": "alternativně 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.",
|
||||||
"Remove attachment": "Odstranit přílohu",
|
"Remove attachment": "Odstranit přílohu",
|
||||||
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Váš prohlížeč nepodporuje nahrávání šifrovaných souborů. Použijte modernější verzi prohlížeče.",
|
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Váš prohlížeč nepodporuje nahrávání šifrovaných souborů. Použijte modernější verzi prohlížeče.",
|
||||||
"Invalid attachment.": "Chybná příloha.",
|
"Invalid attachment.": "Chybná příloha.",
|
||||||
"Options": "Možnosti",
|
"Options": "Volby",
|
||||||
"Shorten URL": "Zkrátit URL",
|
"Shorten URL": "Zkrátit URL",
|
||||||
"Editor": "Editor",
|
"Editor": "Editor",
|
||||||
"Preview": "Náhled",
|
"Preview": "Náhled",
|
||||||
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s vyžaduje, aby PATH končilo na „%s“. Aktualizujte PATH ve vašem souboru index.php.",
|
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s vyžaduje, aby PATH skončil s \"%s\". Aktualizujte PATH ve vašem souboru index.php.",
|
||||||
"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 paste…": "Dešifruji příspěvek…",
|
||||||
"Preparing new paste…": "Připravuji nový příspěvek…",
|
"Preparing new paste…": "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>.": "V případě, že tato zpráva nezmizí, se podívejte na <a href=\"%s\">tyto často kladené otázky pro řešení</a>.",
|
||||||
"+++ no paste text +++": "+++ žádný text příspěvku +++",
|
"+++ no paste text +++": "+++ žádný vložený text +++",
|
||||||
"Could not get paste data: %s": "Nepodařilo se získat data příspěvku: %s",
|
"Could not get paste 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ý připojení HTTP! 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>.",
|
||||||
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Váš prohlížeč může vyžadovat připojení HTTPS pro podporu WebCrypto API. Zkuste <a href=\"%s\">přepnout na HTTPS</a>.",
|
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Váš prohlížeč může vyžadovat připojení HTTPS pro podporu WebCrypto API. Zkuste <a href=\"%s\">přepnout na HTTPS</a>.",
|
||||||
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Váš prohlížeč nepodporuje WebAssembly, které se používá pro zlib kompresi. Můžete vytvořit nekomprimované dokumenty, ale nebudete moct číst ty komprimované.",
|
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Váš prohlížeč nepodporuje WebAssembly, který se používá pro zlib kompresi. Můžete vytvořit nekomprimované dokumenty, ale nebudete moct číst ty komprimované.",
|
||||||
"waiting on user to provide a password": "čekám na zadání hesla",
|
"waiting on user to provide a password": "čekám na zadání hesla",
|
||||||
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Nepodařilo se dešifrovat data. Zadali jste špatné heslo? Zkuste to znovu pomocí tlačítka nahoře.",
|
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Nepodařilo se dešifrovat data. Zadali jste špatné heslo? Zkuste to znovu pomocí tlačítka nahoře.",
|
||||||
"Retry": "Opakovat",
|
"Retry": "Opakovat",
|
||||||
"Showing raw text…": "Zobrazuji čistý text…",
|
"Showing raw text…": "Zobrazuji surový text…",
|
||||||
"Notice:": "Upozornění:",
|
"Notice:": "Upozornění:",
|
||||||
"This link will expire after %s.": "Tento odkaz vyprší za %s.",
|
"This link will expire after %s.": "Tento odkaz vyprší za %s.",
|
||||||
"This link can only be accessed once, do not use back or refresh button in your browser.": "Tento odkaz je přístupný pouze jednou, nepoužívejte tlačítko zpět ani neobnovujte tuto stránku v prohlížeči.",
|
"This link can only be accessed once, do not use back or refresh button in your browser.": "Tento odkaz je přístupný pouze jednou, nepoužívejte tlačítko zpět ani neobnovujte tuto stránku ve vašem prohlížeči.",
|
||||||
"Link:": "Odkaz:",
|
"Link:": "Odkaz:",
|
||||||
"Recipient may become aware of your timezone, convert time to UTC?": "Příjemce může zjistit vaše časové pásmo, převést čas na UTC?",
|
"Recipient may become aware of your timezone, convert time to UTC?": "Příjemce se může dozvědět o vašem časovém pásmu, převést čas na UTC?",
|
||||||
"Use Current Timezone": "Použít aktuální časové pásmo",
|
"Use Current Timezone": "Použít aktuální časové pásmo",
|
||||||
"Convert To UTC": "Převést na UTC",
|
"Convert To UTC": "Převést na UTC",
|
||||||
"Close": "Zavřít",
|
"Close": "Zavřít",
|
||||||
"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.": "Navštivte tento odkaz pro zobrazení poznámky. Přeposláním URL umožníte také jiným lidem přístup.",
|
||||||
"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 odhalit váš dešifrovací klíč v URL.",
|
||||||
"Save paste": "Uložit příspěvek",
|
"Save paste": "Uložit příspěvek",
|
||||||
"Your IP is not authorized to create pastes.": "Vaše IP adresa nemá oprávnění k vytváření příspěvků.",
|
"Your IP is not authorized to create pastes.": "Vaše IP adresa nemá oprávnění k vytvoření vložení.",
|
||||||
"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.": "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\".": "Chyba volání YOURLS. Pravděpodobně chyba konfigurace, např. nesprávné či chybějící „apiurl“ nebo „signature“.",
|
"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\".",
|
||||||
"Error parsing YOURLS response.": "Chyba čtení odpovědi YOURLS.",
|
"Error parsing YOURLS response.": "Error parsing YOURLS response.",
|
||||||
"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?": "This secret message can only be displayed once. Would you like to see it now?",
|
||||||
"Yes, see it": "Ano, zobrazit",
|
"Yes, see it": "Yes, see it",
|
||||||
"Dark Mode": "Tmavý režim",
|
"Dark Mode": "Dark Mode",
|
||||||
"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 paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
"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 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."
|
||||||
"Start over": "Start over",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Copy link",
|
|
||||||
"Link copied to clipboard": "Link copied to clipboard",
|
|
||||||
"Paste text": "Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
12
i18n/de.json
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "Sende Paste…",
|
||||||
"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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Dein Text ist unter <a id=\"pasteurl\" href=\"%s\">%s</a> zu finden <span id=\"copyhint\">(Drücke [Strg]+[c] 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 paste: %s": "Text 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 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?)",
|
||||||
@ -219,13 +219,5 @@
|
|||||||
"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 paste, 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 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."
|
||||||
"Start over": "Neuen Text erstellen",
|
|
||||||
"Paste copied to clipboard": "Text 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>",
|
|
||||||
"Copy link": "Verknüpfung kopieren",
|
|
||||||
"Link copied to clipboard": "Verknüpfung wurde in die Zwischenablage kopiert.",
|
|
||||||
"Paste text": "Text",
|
|
||||||
"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"
|
|
||||||
}
|
}
|
||||||
|
20
i18n/el.json
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"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 pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s είναι ένα λιτό, ανοικτού λογισμικού διαδικτυακής υπηρεσίας επικόλλησης όπου ο διακομιστής έχει πλήρη άγνια του περιεχομένου που επικολλήθηκαν. Τα Δεδομένα κρυπτογραφούνται και αποκρυπτογραφούνται %sστον φιλομετρητή (browser)%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.": "Η επικόλληση δεν υπάρχει, έληξε ή διαγράφηκε",
|
"Paste does not exist, has expired or has been deleted.": "Η επικόλληση δεν υπάρχει, έληξε ή διαγράφηκε",
|
||||||
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "Η επικόλληση αποστέλλεται…",
|
||||||
"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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Η επικόλλησή σας είναι <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Πληκτρολογήστε [Ctrl]+[c] για αντιγραφή)</span>",
|
||||||
"Delete data": "Διαγραφή δεδομένων",
|
"Delete data": "Διαγραφή δεδομένων",
|
||||||
"Could not create paste: %s": "Δεν ήταν δυνατή η δημιουργία επικόλλησης: %s",
|
"Could not create paste: %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 paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Δεν ήταν δυνατή η αποκρυπτογράφηση της επικόλλησης: Το κλειδί αποκρυπτογράφησης λείπει από τον σύνδεσμο (Μήπως χρησιμοποιήσατε ανακατεύθυνση συνδέσμου ή υπηρεσία συντόμευσης συνδέσμου;)",
|
||||||
@ -212,20 +212,12 @@
|
|||||||
"URL shortener may expose your decrypt key in URL.": "Συντομευτές συνδέσμων πιθανώς να δημοσιοποιήσουν το κλειδί αποκρυπτογράφισης στον σύνδεσμο.",
|
"URL shortener may expose your decrypt key in URL.": "Συντομευτές συνδέσμων πιθανώς να δημοσιοποιήσουν το κλειδί αποκρυπτογράφισης στον σύνδεσμο.",
|
||||||
"Save paste": "Αποθήκευση επικόλλησης",
|
"Save paste": "Αποθήκευση επικόλλησης",
|
||||||
"Your IP is not authorized to create pastes.": "Η IP σας δεν επιτρέπεται να δημιουργεί επικολλήσεις.",
|
"Your IP is not authorized to create pastes.": "Η 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\" ή \"υπογραφή\".",
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Σφάλμα κατά την κλήση YOURLS. Πιθανώς ένα ζήτημα διαμόρφωσης, όπως λάθος ή λείπει \"apiurl\" ή \"υπογραφή\".",
|
||||||
"Error parsing YOURLS response.": "Σφάλμα ανάλυσης της απόκρισης YOURLS.",
|
"Error parsing YOURLS response.": "Σφάλμα ανάλυσης της απόκρισης YOURLS.",
|
||||||
"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 paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Σφάλμα αποσυμπίεσης της επικόλλησης, ο περιηγητής σας δεν υποστηρίζει 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."
|
||||||
"Start over": "Start over",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Copy link",
|
|
||||||
"Link copied to clipboard": "Link copied to clipboard",
|
|
||||||
"Paste text": "Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
12
i18n/en.json
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "Sending paste…",
|
||||||
"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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>",
|
||||||
"Delete data": "Delete data",
|
"Delete data": "Delete data",
|
||||||
"Could not create paste: %s": "Could not create paste: %s",
|
"Could not create paste: %s": "Could not create paste: %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 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?)",
|
||||||
@ -219,13 +219,5 @@
|
|||||||
"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 paste, due to missing WebAssembly support.": "Error compressing paste, 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 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."
|
||||||
"Start over": "Start over",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Copy link",
|
|
||||||
"Link copied to clipboard": "Link copied to clipboard",
|
|
||||||
"Paste text": "Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
12
i18n/es.json
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "Enviando \"paste\"…",
|
||||||
"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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Su texto está en <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Presione [Ctrl]+[c] 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 paste: %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 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?)",
|
||||||
@ -219,13 +219,5 @@
|
|||||||
"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 paste, due to missing WebAssembly support.": "Error compressing paste, 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 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."
|
||||||
"Start over": "Start over",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Copy link",
|
|
||||||
"Link copied to clipboard": "Link copied to clipboard",
|
|
||||||
"Paste text": "Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
16
i18n/et.json
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Sinu kleebe on <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Kopeerimiseks vajuta [Ctrl]+[c])</span>",
|
||||||
"Delete data": "Kustuta andmed",
|
"Delete data": "Kustuta andmed",
|
||||||
"Could not create paste: %s": "Ei suutnud kleebet luua: %s",
|
"Could not create paste: %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 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?)",
|
||||||
@ -215,17 +215,9 @@
|
|||||||
"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\".",
|
"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\".",
|
||||||
"Error parsing YOURLS response.": "Viga YOURLS vastuse parsimisel.",
|
"Error parsing YOURLS response.": "Viga YOURLS vastuse parsimisel.",
|
||||||
"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?": "This secret message can only be displayed once. Would you like to see it now?",
|
||||||
"Yes, see it": "Jah, vaata seda",
|
"Yes, see it": "Yes, see it",
|
||||||
"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 paste, due to missing WebAssembly support.": "Error compressing paste, 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 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."
|
||||||
"Start over": "Alusta uuesti",
|
|
||||||
"Paste 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>",
|
|
||||||
"Copy link": "Kopeeri link",
|
|
||||||
"Link copied to clipboard": "Link kopeeriti lõikelauale",
|
|
||||||
"Paste 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)",
|
|
||||||
"Theme": "Teema"
|
|
||||||
}
|
}
|
||||||
|
14
i18n/fi.json
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Pastesi on <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Paina [Ctrl]+[c] kopioidaksesi)</span>",
|
||||||
"Delete data": "Poista data",
|
"Delete data": "Poista data",
|
||||||
"Could not create paste: %s": "Pastea ei voitu luoda: %s",
|
"Could not create paste: %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 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ä?)",
|
||||||
@ -218,14 +218,6 @@
|
|||||||
"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 paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
"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 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."
|
||||||
"Start over": "Aloita alusta",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Kopioi linkki",
|
|
||||||
"Link copied to clipboard": "Linkki kopioitu leikepöydälle",
|
|
||||||
"Paste 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)",
|
|
||||||
"Theme": "Teema"
|
|
||||||
}
|
}
|
||||||
|
12
i18n/fr.json
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "Envoi du paste…",
|
||||||
"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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Votre paste est disponible à l'adresse <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Appuyez sur [Ctrl]+[c] pour copier)</span>",
|
||||||
"Delete data": "Supprimer les données du paste",
|
"Delete data": "Supprimer les données du paste",
|
||||||
"Could not create paste: %s": "Impossible de créer le paste : %s",
|
"Could not create paste: %s": "Impossible de créer le paste : %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 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 ?)",
|
||||||
@ -219,13 +219,5 @@
|
|||||||
"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 paste, due to missing WebAssembly support.": "Erreur lors de la compression du paste, 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 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."
|
||||||
"Start over": "Recommencer",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Copier le lien",
|
|
||||||
"Link copied to clipboard": "Lien copié dans le presse-papier",
|
|
||||||
"Paste text": "Texte du paste",
|
|
||||||
"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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
124
i18n/he.json
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"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 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.",
|
||||||
"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>.": "More information on the <a href=\"https://privatebin.info/\">project page</a>.",
|
||||||
"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.": "ההדבקה לא קיימת, פגה או נמחקה.",
|
||||||
"%s requires php %s or above to work. Sorry.": "%s דורש PHP %s כדי לפעול.",
|
"%s requires php %s or above to work. Sorry.": "%s דורש PHP %s כדי לפעול.",
|
||||||
@ -29,7 +29,7 @@
|
|||||||
"Create": "צור",
|
"Create": "צור",
|
||||||
"Clone": "שכפול",
|
"Clone": "שכפול",
|
||||||
"Raw text": "טקסט גולמי",
|
"Raw text": "טקסט גולמי",
|
||||||
"Expires": "יפוג ב",
|
"Expires": "Expires",
|
||||||
"Burn after reading": "קוראים-שורפים",
|
"Burn after reading": "קוראים-שורפים",
|
||||||
"Open discussion": "פתיחת דיון",
|
"Open discussion": "פתיחת דיון",
|
||||||
"Password (recommended)": "ססמה (מומלץ)",
|
"Password (recommended)": "ססמה (מומלץ)",
|
||||||
@ -53,11 +53,11 @@
|
|||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"שעה אחת",
|
"שעה אחת",
|
||||||
"%d שעות",
|
"%d hours (1st plural)",
|
||||||
"%d שעות",
|
"%d hours (2nd plural)",
|
||||||
"%d שעות",
|
"%d hours (3rd plural)",
|
||||||
"%d שעות",
|
"%d hours (4th plural)",
|
||||||
"%d שעות"
|
"%d hours (5th plural)"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"יום אחד",
|
"יום אחד",
|
||||||
@ -94,44 +94,44 @@
|
|||||||
"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.": [
|
||||||
"מסמך זה יפוג בעוד שנייה אחת.",
|
"This document will expire in %d second. (singular)",
|
||||||
"מסמך זה יפוג בעוד %d שניות.",
|
"This document will expire in %d seconds. (1st plural)",
|
||||||
"מסמך זה יפוג בעוד %d שניות.",
|
"This document will expire in %d seconds. (2nd plural)",
|
||||||
"מסמך זה יפוג בעוד %d שניות.",
|
"This document will expire in %d seconds. (3rd plural)",
|
||||||
"מסמך זה יפוג בעוד %d שניות.",
|
"This document will expire in %d seconds. (4th plural)",
|
||||||
"מסמך זה יפוג בעוד %d שניות."
|
"This document will expire in %d seconds. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"מסמך זה יפוג בעוד דקה אחת.",
|
"This document will expire in %d minute. (singular)",
|
||||||
"מסמך זה יפוג בעוד %d דקות.",
|
"This document will expire in %d minutes. (1st plural)",
|
||||||
"מסמך זה יפוג בעוד %d דקות.",
|
"This document will expire in %d minutes. (2nd plural)",
|
||||||
"מסמך זה יפוג בעוד %d דקות.",
|
"This document will expire in %d minutes. (3rd plural)",
|
||||||
"מסמך זה יפוג בעוד %d דקות.",
|
"This document will expire in %d minutes. (4th plural)",
|
||||||
"מסמך זה יפוג בעוד %d דקות."
|
"This document will expire in %d minutes. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"מסמך זה יפוג בעוד שעה אחת.",
|
"This document will expire in %d hour. (singular)",
|
||||||
"מסמך זה יפוג בעוד %d שעות.",
|
"This document will expire in %d hours. (1st plural)",
|
||||||
"מסמך זה יפוג בעוד %d שעות.",
|
"This document will expire in %d hours. (2nd plural)",
|
||||||
"מסמך זה יפוג בעוד %d שעות.",
|
"This document will expire in %d hours. (3rd plural)",
|
||||||
"מסמך זה יפוג בעוד %d שעות.",
|
"This document will expire in %d hours. (4th plural)",
|
||||||
"מסמך זה יפוג בעוד %d שעות."
|
"This document will expire in %d hours. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"מסמך זה יפוג בעוד יום אחד.",
|
"This document will expire in %d day. (singular)",
|
||||||
"מסמך זה יפוג בעוד %d ימים.",
|
"This document will expire in %d days. (1st plural)",
|
||||||
"מסמך זה יפוג בעוד %d ימים.",
|
"This document will expire in %d days. (2nd plural)",
|
||||||
"מסמך זה יפוג בעוד %d ימים.",
|
"This document will expire in %d days. (3rd plural)",
|
||||||
"מסמך זה יפוג בעוד %d ימים.",
|
"This document will expire in %d days. (4th plural)",
|
||||||
"מסמך זה יפוג בעוד %d ימים."
|
"This document will expire in %d days. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
"מסמך זה יפוג בעוד חודש אחד.",
|
"This document will expire in %d month. (singular)",
|
||||||
"מסמך זה יפוג בעוד %d חודשים.",
|
"This document will expire in %d months. (1st plural)",
|
||||||
"מסמך זה יפוג בעוד %d חודשים.",
|
"This document will expire in %d months. (2nd plural)",
|
||||||
"מסמך זה יפוג בעוד %d חודשים.",
|
"This document will expire in %d months. (3rd plural)",
|
||||||
"מסמך זה יפוג בעוד %d חודשים.",
|
"This document will expire in %d months. (4th plural)",
|
||||||
"מסמך זה יפוג בעוד %d חודשים."
|
"This document will expire in %d months. (5th plural)"
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "נא למלא את הססמה להדבקה הזו:",
|
"Please enter the password for this paste:": "נא למלא את הססמה להדבקה הזו:",
|
||||||
"Could not decrypt data (Wrong key?)": "לא ניתן לפענח את הנתונים (מפתח שגוי?)",
|
"Could not decrypt data (Wrong key?)": "לא ניתן לפענח את הנתונים (מפתח שגוי?)",
|
||||||
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "ההדבקה נשלחת…",
|
||||||
"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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "ההדבקה שלך היא <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(יש ללחוץ [Ctrl]+[c] כדי להעתיק)</span>",
|
||||||
"Delete data": "מחיקת נתונים",
|
"Delete data": "מחיקת נתונים",
|
||||||
"Could not create paste: %s": "לא ניתן ליצור הדבקה: %s",
|
"Could not create paste: %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 paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "לא ניתן לפענח הדבקה: מפתח הפענוח חסר בכתובת (השתמשת במערכת הפנייה או מקצר כתובות שחותכים חלק מהכתובת?)",
|
||||||
@ -170,29 +170,29 @@
|
|||||||
"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 paste.": "The cloned file '%s' was attached to this paste.",
|
||||||
"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",
|
||||||
"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.",
|
||||||
"Remove 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.": "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.": "%s דורש שה-PATH יסתיים ב-\"%s\". אנא עדכן את ה-PATH בקובץ index.php שלך.",
|
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.",
|
||||||
"Decrypt": "פענוח",
|
"Decrypt": "פענוח",
|
||||||
"Enter password": "נא למלא ססמה",
|
"Enter password": "נא למלא ססמה",
|
||||||
"Loading…": "בטעינה…",
|
"Loading…": "בטעינה…",
|
||||||
"Decrypting paste…": "ההדבקה מפוענחת…",
|
"Decrypting paste…": "ההדבקה מפוענחת…",
|
||||||
"Preparing new paste…": "ההדבקה החדשה בהכנות…",
|
"Preparing new paste…": "ההדבקה החדשה בהכנות…",
|
||||||
"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>.": "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 +++": "+++ אין טקסט להדבקה +++",
|
||||||
"Could not get paste data: %s": "לא ניתן לקבל את נתוני ההדבקה: %s",
|
"Could not get paste 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>.",
|
||||||
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "יכול להיות שהדפדפן שלך ידרוש חיבור HTTPS כדי לתמוך ב־API של WebCrypto. כדי לנסות <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>.": "יכול להיות שהדפדפן שלך ידרוש חיבור HTTPS כדי לתמוך ב־API של WebCrypto. כדי לנסות <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": "בהמתנה למילוי הססמה מצד המשתמש",
|
||||||
@ -209,23 +209,15 @@
|
|||||||
"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.",
|
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
||||||
"Save paste": "שמור הדבקה",
|
"Save paste": "Save paste",
|
||||||
"Your IP is not authorized to create pastes.": "ה-IP שלך אינו מורשה ליצור הדבקות.",
|
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.",
|
||||||
"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.": "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\" שגויים או חסרים.",
|
"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\".",
|
||||||
"Error parsing YOURLS response.": "שגיאה בניתוח התגובה מ-YOURLS.",
|
"Error parsing YOURLS response.": "Error parsing YOURLS response.",
|
||||||
"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",
|
||||||
"Dark Mode": "מצב כהה",
|
"Dark Mode": "Dark Mode",
|
||||||
"Error compressing paste, due to missing WebAssembly support.": "שגיאה בדחיסת ההדבקה, עקב חוסר תמיכה ב-WebAssembly.",
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "שגיאה בהפקת ההדבקה, הדפדפן שלך לא תומך ב-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."
|
||||||
"Start over": "להתחיל מחדש",
|
|
||||||
"Paste 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>",
|
|
||||||
"Copy link": "העתק קישור",
|
|
||||||
"Link copied to clipboard": "הקישור הועתק ללוח",
|
|
||||||
"Paste 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> להחלפה)",
|
|
||||||
"Theme": "נושא"
|
|
||||||
}
|
}
|
||||||
|
12
i18n/hi.json
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "Sending paste…",
|
||||||
"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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>",
|
||||||
"Delete data": "Delete data",
|
"Delete data": "Delete data",
|
||||||
"Could not create paste: %s": "Could not create paste: %s",
|
"Could not create paste: %s": "Could not create paste: %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 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?)",
|
||||||
@ -219,13 +219,5 @@
|
|||||||
"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 paste, due to missing WebAssembly support.": "Error compressing paste, 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 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."
|
||||||
"Start over": "Start over",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Copy link",
|
|
||||||
"Link copied to clipboard": "Link copied to clipboard",
|
|
||||||
"Paste text": "Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
12
i18n/hu.json
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "A bejegyzésed a <a id=\"pasteurl\" href=\"%s\">%s</a> címen elérhető. <span id=\"copyhint\"> [Ctrl]+[c]-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 paste: %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 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?",
|
||||||
@ -219,13 +219,5 @@
|
|||||||
"Yes, see it": "Yes, see it",
|
"Yes, see it": "Yes, see it",
|
||||||
"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 paste, due to missing WebAssembly support.": "Error compressing paste, 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 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."
|
||||||
"Start over": "Start over",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Copy link",
|
|
||||||
"Link copied to clipboard": "Link copied to clipboard",
|
|
||||||
"Paste text": "Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
12
i18n/id.json
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "Mengirim paste…",
|
||||||
"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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Paste Anda adalah <a id=\"pasteurl\" href=\"%s\">%s</a><span id=\"copyhint\">(Tekan [Ctrl]+[c] untuk menyalin)</span>",
|
||||||
"Delete data": "Hapus data",
|
"Delete data": "Hapus data",
|
||||||
"Could not create paste: %s": "Tidak dapat membuat paste: %s",
|
"Could not create paste: %s": "Tidak dapat membuat paste: %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 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?)",
|
||||||
@ -219,13 +219,5 @@
|
|||||||
"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 paste, due to missing WebAssembly support.": "Error compressing paste, 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 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."
|
||||||
"Start over": "Start over",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Copy link",
|
|
||||||
"Link copied to clipboard": "Link copied to clipboard",
|
|
||||||
"Paste text": "Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
12
i18n/it.json
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Il tuo messaggio è qui: <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Premi [Ctrl]+[c] (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 paste: %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 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?)",
|
||||||
@ -219,13 +219,5 @@
|
|||||||
"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 paste, 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 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."
|
||||||
"Start over": "Ricominciare",
|
|
||||||
"Paste 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>",
|
|
||||||
"Copy link": "Copia il link",
|
|
||||||
"Link copied to clipboard": "Link copied to clipboard",
|
|
||||||
"Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
12
i18n/ja.json
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "ペーストを送信しています…",
|
||||||
"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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "ペーストは<a id=\"pasteurl\" href=\"%s\">%s</a>です<span id=\"copyhint\">(コピーするには[Ctrl]+[c]を押してください)</span>",
|
||||||
"Delete data": "データを削除",
|
"Delete data": "データを削除",
|
||||||
"Could not create paste: %s": "ペーストを作成できませんでした:%s",
|
"Could not create paste: %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 paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "ペーストを復号化できません:復号化キーがURLにありません(URLの一部を削除するリダイレクト機能またはURLの短縮アプリケーションを使いましたか?)",
|
||||||
@ -219,13 +219,5 @@
|
|||||||
"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 paste, due to missing WebAssembly support.": "Error compressing paste, 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 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."
|
||||||
"Start over": "Start over",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Copy link",
|
|
||||||
"Link copied to clipboard": "Link copied to clipboard",
|
|
||||||
"Paste text": "Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "Sending paste…",
|
||||||
"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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>",
|
||||||
"Delete data": "Delete data",
|
"Delete data": "Delete data",
|
||||||
"Could not create paste: %s": "Could not create paste: %s",
|
"Could not create paste: %s": "Could not create paste: %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 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?)",
|
||||||
@ -219,13 +219,5 @@
|
|||||||
"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 paste, due to missing WebAssembly support.": "Error compressing paste, 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 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."
|
||||||
"Start over": "Start over",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Copy link",
|
|
||||||
"Link copied to clipboard": "Link copied to clipboard",
|
|
||||||
"Paste text": "Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
231
i18n/ko.json
@ -1,231 +0,0 @@
|
|||||||
{
|
|
||||||
"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.",
|
|
||||||
"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",
|
|
||||||
"Paste does not exist, has expired or has been deleted.": "Paste 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 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 second between each post. (singular)",
|
|
||||||
"Please wait %d seconds between each post. (1st plural)",
|
|
||||||
"Please wait %d seconds between each post. (2nd plural)",
|
|
||||||
"Please wait %d seconds between each post. (3rd plural)",
|
|
||||||
"Please wait %d seconds between each post. (4th 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.",
|
|
||||||
"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 paste. Sorry.",
|
|
||||||
"Invalid paste ID.": "Invalid paste ID.",
|
|
||||||
"Paste is not of burn-after-reading type.": "Paste is not of burn-after-reading type.",
|
|
||||||
"Wrong deletion token. Paste was not deleted.": "Wrong deletion token. Paste was not deleted.",
|
|
||||||
"Paste was properly deleted.": "Paste 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.",
|
|
||||||
"%s requires a modern browser to work.": "%s requires a modern browser to work.",
|
|
||||||
"New": "New",
|
|
||||||
"Create": "Create",
|
|
||||||
"Clone": "Clone",
|
|
||||||
"Raw text": "Raw text",
|
|
||||||
"Expires": "Expires",
|
|
||||||
"Burn after reading": "Burn after reading",
|
|
||||||
"Open discussion": "Open discussion",
|
|
||||||
"Password (recommended)": "Password (recommended)",
|
|
||||||
"Discussion": "Discussion",
|
|
||||||
"Toggle navigation": "Toggle navigation",
|
|
||||||
"%d seconds": [
|
|
||||||
"%d second (singular)",
|
|
||||||
"%d seconds (1st plural)",
|
|
||||||
"%d seconds (2nd plural)",
|
|
||||||
"%d seconds (3rd plural)",
|
|
||||||
"%d seconds (4th plural)",
|
|
||||||
"%d seconds (5th plural)"
|
|
||||||
],
|
|
||||||
"%d minutes": [
|
|
||||||
"%d minute (singular)",
|
|
||||||
"%d minutes (1st plural)",
|
|
||||||
"%d minutes (2nd plural)",
|
|
||||||
"%d minutes (3rd plural)",
|
|
||||||
"%d minutes (4th plural)",
|
|
||||||
"%d minutes (5th plural)"
|
|
||||||
],
|
|
||||||
"%d hours": [
|
|
||||||
"%d hour (singular)",
|
|
||||||
"%d hours (1st plural)",
|
|
||||||
"%d hours (2nd plural)",
|
|
||||||
"%d hours (3rd plural)",
|
|
||||||
"%d hours (4th plural)",
|
|
||||||
"%d hours (5th plural)"
|
|
||||||
],
|
|
||||||
"%d days": [
|
|
||||||
"%d day (singular)",
|
|
||||||
"%d days (1st plural)",
|
|
||||||
"%d days (2nd plural)",
|
|
||||||
"%d days (3rd plural)",
|
|
||||||
"%d days (4th plural)",
|
|
||||||
"%d days (5th plural)"
|
|
||||||
],
|
|
||||||
"%d weeks": [
|
|
||||||
"%d week (singular)",
|
|
||||||
"%d weeks (1st plural)",
|
|
||||||
"%d weeks (2nd plural)",
|
|
||||||
"%d weeks (3rd plural)",
|
|
||||||
"%d weeks (4th plural)",
|
|
||||||
"%d weeks (5th plural)"
|
|
||||||
],
|
|
||||||
"%d months": [
|
|
||||||
"%d month (singular)",
|
|
||||||
"%d months (1st plural)",
|
|
||||||
"%d months (2nd plural)",
|
|
||||||
"%d months (3rd plural)",
|
|
||||||
"%d months (4th plural)",
|
|
||||||
"%d months (5th plural)"
|
|
||||||
],
|
|
||||||
"%d years": [
|
|
||||||
"%d year (singular)",
|
|
||||||
"%d years (1st plural)",
|
|
||||||
"%d years (2nd plural)",
|
|
||||||
"%d years (3rd plural)",
|
|
||||||
"%d years (4th plural)",
|
|
||||||
"%d years (5th plural)"
|
|
||||||
],
|
|
||||||
"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 second. (singular)",
|
|
||||||
"This document will expire in %d seconds. (1st plural)",
|
|
||||||
"This document will expire in %d seconds. (2nd plural)",
|
|
||||||
"This document will expire in %d seconds. (3rd plural)",
|
|
||||||
"This document will expire in %d seconds. (4th plural)",
|
|
||||||
"This document will expire in %d seconds. (5th plural)"
|
|
||||||
],
|
|
||||||
"This document will expire in %d minutes.": [
|
|
||||||
"This document will expire in %d minute. (singular)",
|
|
||||||
"This document will expire in %d minutes. (1st plural)",
|
|
||||||
"This document will expire in %d minutes. (2nd plural)",
|
|
||||||
"This document will expire in %d minutes. (3rd plural)",
|
|
||||||
"This document will expire in %d minutes. (4th plural)",
|
|
||||||
"This document will expire in %d minutes. (5th plural)"
|
|
||||||
],
|
|
||||||
"This document will expire in %d hours.": [
|
|
||||||
"This document will expire in %d hour. (singular)",
|
|
||||||
"This document will expire in %d hours. (1st plural)",
|
|
||||||
"This document will expire in %d hours. (2nd plural)",
|
|
||||||
"This document will expire in %d hours. (3rd plural)",
|
|
||||||
"This document will expire in %d hours. (4th plural)",
|
|
||||||
"This document will expire in %d hours. (5th plural)"
|
|
||||||
],
|
|
||||||
"This document will expire in %d days.": [
|
|
||||||
"This document will expire in %d day. (singular)",
|
|
||||||
"This document will expire in %d days. (1st plural)",
|
|
||||||
"This document will expire in %d days. (2nd plural)",
|
|
||||||
"This document will expire in %d days. (3rd plural)",
|
|
||||||
"This document will expire in %d days. (4th plural)",
|
|
||||||
"This document will expire in %d days. (5th plural)"
|
|
||||||
],
|
|
||||||
"This document will expire in %d months.": [
|
|
||||||
"This document will expire in %d month. (singular)",
|
|
||||||
"This document will expire in %d months. (1st plural)",
|
|
||||||
"This document will expire in %d months. (2nd plural)",
|
|
||||||
"This document will expire in %d months. (3rd plural)",
|
|
||||||
"This document will expire in %d months. (4th plural)",
|
|
||||||
"This document will expire in %d months. (5th plural)"
|
|
||||||
],
|
|
||||||
"Please enter the password for this paste:": "Please enter the password for this paste:",
|
|
||||||
"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.",
|
|
||||||
"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": "Avatar generated from IP address",
|
|
||||||
"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": "Could not refresh display: %s",
|
|
||||||
"unknown status": "unknown status",
|
|
||||||
"server error or not responding": "server error or not responding",
|
|
||||||
"Could not post comment: %s": "Could not post comment: %s",
|
|
||||||
"Sending paste…": "Sending paste…",
|
|
||||||
"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>",
|
|
||||||
"Delete data": "Delete data",
|
|
||||||
"Could not create paste: %s": "Could not create paste: %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?)",
|
|
||||||
"B": "B",
|
|
||||||
"KiB": "KiB",
|
|
||||||
"MiB": "MiB",
|
|
||||||
"GiB": "GiB",
|
|
||||||
"TiB": "TiB",
|
|
||||||
"PiB": "PiB",
|
|
||||||
"EiB": "EiB",
|
|
||||||
"ZiB": "ZiB",
|
|
||||||
"YiB": "YiB",
|
|
||||||
"Format": "Format",
|
|
||||||
"Plain Text": "Plain Text",
|
|
||||||
"Source Code": "Source Code",
|
|
||||||
"Markdown": "Markdown",
|
|
||||||
"Download attachment": "Download attachment",
|
|
||||||
"Cloned: '%s'": "Cloned: '%s'",
|
|
||||||
"The cloned file '%s' was attached to this paste.": "The cloned file '%s' was attached to this paste.",
|
|
||||||
"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.": "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.",
|
|
||||||
"Decrypt": "Decrypt",
|
|
||||||
"Enter password": "Enter password",
|
|
||||||
"Loading…": "Loading…",
|
|
||||||
"Decrypting paste…": "Decrypting paste…",
|
|
||||||
"Preparing new paste…": "Preparing new paste…",
|
|
||||||
"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 +++",
|
|
||||||
"Could not get paste data: %s": "Could not get paste data: %s",
|
|
||||||
"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.",
|
|
||||||
"For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.",
|
|
||||||
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.",
|
|
||||||
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.",
|
|
||||||
"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.": "This link will expire after %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?": "Recipient may become aware of your timezone, convert time to UTC?",
|
|
||||||
"Use Current Timezone": "Use Current Timezone",
|
|
||||||
"Convert To UTC": "Convert To UTC",
|
|
||||||
"Close": "Close",
|
|
||||||
"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.",
|
|
||||||
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
|
||||||
"Save paste": "Save paste",
|
|
||||||
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.",
|
|
||||||
"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\".",
|
|
||||||
"Error parsing YOURLS response.": "Error parsing YOURLS response.",
|
|
||||||
"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 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.",
|
|
||||||
"Start over": "Start over",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Copy link",
|
|
||||||
"Link copied to clipboard": "Link copied to clipboard",
|
|
||||||
"Paste text": "Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
|
12
i18n/ku.json
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "Sending paste…",
|
||||||
"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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>",
|
||||||
"Delete data": "Delete data",
|
"Delete data": "Delete data",
|
||||||
"Could not create paste: %s": "Could not create paste: %s",
|
"Could not create paste: %s": "Could not create paste: %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 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?)",
|
||||||
@ -219,13 +219,5 @@
|
|||||||
"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 paste, due to missing WebAssembly support.": "Error compressing paste, 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 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."
|
||||||
"Start over": "Start over",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Copy link",
|
|
||||||
"Link copied to clipboard": "Link copied to clipboard",
|
|
||||||
"Paste text": "Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
12
i18n/la.json
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "Sending paste…",
|
||||||
"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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>",
|
||||||
"Delete data": "Delete data",
|
"Delete data": "Delete data",
|
||||||
"Could not create paste: %s": "Could not create paste: %s",
|
"Could not create paste: %s": "Could not create paste: %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 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?)",
|
||||||
@ -219,13 +219,5 @@
|
|||||||
"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 paste, due to missing WebAssembly support.": "Error compressing paste, 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 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."
|
||||||
"Start over": "Start over",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Copy link",
|
|
||||||
"Link copied to clipboard": "Link copied to clipboard",
|
|
||||||
"Paste text": "Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
22
i18n/lt.json
@ -26,7 +26,7 @@
|
|||||||
"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",
|
||||||
"Create": "Sukurti",
|
"Create": "Kurti",
|
||||||
"Clone": "Dubliuoti",
|
"Clone": "Dubliuoti",
|
||||||
"Raw text": "Neapdorotas tekstas",
|
"Raw text": "Neapdorotas tekstas",
|
||||||
"Expires": "Baigs galioti po",
|
"Expires": "Baigs galioti po",
|
||||||
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "Siunčiamas įdėjimas…",
|
||||||
"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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Jūsų įdėjimas yra <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Paspauskite [Vald]+[c] 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 paste: %s": "Nepavyko sukurti įdėjimo: %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 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į?)",
|
||||||
@ -215,17 +215,9 @@
|
|||||||
"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.",
|
"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.",
|
||||||
"Error parsing YOURLS response.": "Klaida nagrinėjant YOURLS atsaką.",
|
"Error parsing YOURLS response.": "Klaida nagrinėjant YOURLS atsaką.",
|
||||||
"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?": "This secret message can only be displayed once. Would you like to see it now?",
|
||||||
"Yes, see it": "Taip, pamatyti",
|
"Yes, see it": "Yes, see it",
|
||||||
"Dark Mode": "Tamsi veiksena",
|
"Dark Mode": "Tamsus režimas",
|
||||||
"Error compressing paste, due to missing WebAssembly support.": "Klaida glaudinant įdėjimą, nes trūksta WebAssembly palaikymo.",
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
"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 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."
|
||||||
"Start over": "Start over",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Copy link",
|
|
||||||
"Link copied to clipboard": "Link copied to clipboard",
|
|
||||||
"Paste text": "Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
14
i18n/nl.json
@ -143,7 +143,7 @@
|
|||||||
"Avatar generated from IP address": "Anonieme avatar (van het IP-adres)",
|
"Avatar generated from IP address": "Anonieme avatar (van het IP-adres)",
|
||||||
"Add comment": "Commentaar toevoegen",
|
"Add comment": "Commentaar toevoegen",
|
||||||
"Optional nickname…": "Optionele bijnaam…",
|
"Optional nickname…": "Optionele bijnaam…",
|
||||||
"Post comment": "Plaats commentaar",
|
"Post comment": "Plaats een commentaar",
|
||||||
"Sending comment…": "Commentaar verzenden…",
|
"Sending comment…": "Commentaar verzenden…",
|
||||||
"Comment posted.": "Commentaar geplaatst.",
|
"Comment posted.": "Commentaar geplaatst.",
|
||||||
"Could not refresh display: %s": "Kon de weergave niet vernieuwen: %s",
|
"Could not refresh display: %s": "Kon de weergave niet vernieuwen: %s",
|
||||||
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "Paste 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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Je paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Druk [Ctrl]+[c] 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 paste: %s": "Kon de paste 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 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?)",
|
||||||
@ -219,13 +219,5 @@
|
|||||||
"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 paste, due to missing WebAssembly support.": "Fout bij het comprimeren van notitie 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 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."
|
||||||
"Start over": "Opnieuw beginnen",
|
|
||||||
"Paste copied to clipboard": "Notitie 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>",
|
|
||||||
"Copy link": "Kopieer link",
|
|
||||||
"Link copied to clipboard": "Link gekopieerd naar klembord",
|
|
||||||
"Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
16
i18n/no.json
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Ditt innlegg er <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Trykk [Ctrl]+[c] for å kopiere)</span>",
|
||||||
"Delete data": "Slett data",
|
"Delete data": "Slett data",
|
||||||
"Could not create paste: %s": "Kunne ikke opprette innlegg: %s",
|
"Could not create paste: %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 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?)",
|
||||||
@ -211,21 +211,13 @@
|
|||||||
"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",
|
"Save paste": "Lagre utklipp",
|
||||||
"Your IP is not authorized to create pastes.": "Din IP er ikke autorisert til å opprette dokumenter.",
|
"Your IP is not authorized to create pastes.": "Din IP er ikke autorisert til å opprette advarsler.",
|
||||||
"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\".",
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Feil ved å ringe YOURLS. Sannsynligvis et konfigurasjonsproblem, som feil eller mangler, \"apiurl\" eller \"signatur\".",
|
||||||
"Error parsing YOURLS response.": "Feil ved analyse av YOURLS svar.",
|
"Error parsing YOURLS response.": "Feil ved analyse av YOURLS svar.",
|
||||||
"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 paste, due to missing WebAssembly support.": "Error compressing paste, 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 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."
|
||||||
"Start over": "Start over",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Copy link",
|
|
||||||
"Link copied to clipboard": "Link copied to clipboard",
|
|
||||||
"Paste text": "Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
20
i18n/oc.json
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "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 l’adreça <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Picatz sus <kbd>Ctrl</kbd>+<kbd>c</kbd> per copiar)</span>",
|
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Vòstre tèxte es disponible a l’adreça <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Picatz sus [Ctrl]+[c] 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 paste: %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 l’URL (Avètz utilizat un redirector o un site de reduccion d’URL que suprimís una partida de l’URL ?)",
|
"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 l’URL (Avètz utilizat un redirector o un site de reduccion d’URL que suprimís una partida de l’URL ?)",
|
||||||
@ -215,17 +215,9 @@
|
|||||||
"Trying to shorten a URL that isn't pointing at our instance.": "Ensag d’abracar una URL que mena pas a nòstra instància.",
|
"Trying to shorten a URL that isn't pointing at our instance.": "Ensag d’abracar 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.",
|
"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.",
|
||||||
"Error parsing YOURLS response.": "Error d'analisi de la responsa YOURLS.",
|
"Error parsing YOURLS response.": "Error d'analisi de la responsa YOURLS.",
|
||||||
"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?": "This secret message can only be displayed once. Would you like to see it now?",
|
||||||
"Yes, see it": "Òc, afichatz-lo",
|
"Yes, see it": "Yes, see it",
|
||||||
"Dark Mode": "Mòde escur",
|
"Dark Mode": "Dark Mode",
|
||||||
"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 paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
"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 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."
|
||||||
"Start over": "Start over",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Copy link",
|
|
||||||
"Link copied to clipboard": "Link copied to clipboard",
|
|
||||||
"Paste text": "Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
70
i18n/pl.json
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "Wysyłanie wklejki…",
|
||||||
"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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Twoja wklejka to <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(wciśnij [Ctrl]+[c] aby skopiować)</span>",
|
||||||
"Delete data": "Skasuj dane",
|
"Delete data": "Skasuj dane",
|
||||||
"Could not create paste: %s": "Nie udało się utworzyć wklejki: %s",
|
"Could not create paste: %s": "Nie udało się utworzyć wklejki: %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 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?)",
|
||||||
@ -167,7 +167,7 @@
|
|||||||
"Format": "Format",
|
"Format": "Format",
|
||||||
"Plain Text": "Czysty tekst",
|
"Plain Text": "Czysty tekst",
|
||||||
"Source Code": "Kod źródłowy",
|
"Source Code": "Kod źródłowy",
|
||||||
"Markdown": "Znakowanie",
|
"Markdown": "Markdown",
|
||||||
"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 paste.": "Sklonowany plik '%s' był dołączony do tej wklejki.",
|
||||||
@ -181,7 +181,7 @@
|
|||||||
"Shorten URL": "Skróć adres URL",
|
"Shorten URL": "Skróć adres URL",
|
||||||
"Editor": "Edytować",
|
"Editor": "Edytować",
|
||||||
"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 requires the PATH to end in a \"%s\". Please update the PATH in your index.php.",
|
||||||
"Decrypt": "Odszyfruj",
|
"Decrypt": "Odszyfruj",
|
||||||
"Enter password": "Wpisz hasło",
|
"Enter password": "Wpisz hasło",
|
||||||
"Loading…": "Wczytywanie…",
|
"Loading…": "Wczytywanie…",
|
||||||
@ -191,41 +191,33 @@
|
|||||||
"+++ no paste text +++": "+++ brak wklejonego tekstu +++",
|
"+++ no paste text +++": "+++ brak wklejonego tekstu +++",
|
||||||
"Could not get paste data: %s": "Nie można było pobrać danych wklejki: %s",
|
"Could not get paste data: %s": "Nie można było pobrać danych wklejki: %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.": "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>.": "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>.": "For more information <a href=\"%s\">see this FAQ entry</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>.": "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to 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.": "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.",
|
||||||
"waiting on user to provide a password": "oczekiwanie na podanie hasła przez użytkownika",
|
"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.": "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.": "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.",
|
||||||
"Retry": "Ponów",
|
"Retry": "Retry",
|
||||||
"Showing raw text…": "Pokazywanie nieprzetworzonego tekstu…",
|
"Showing raw text…": "Showing raw text…",
|
||||||
"Notice:": "Uwaga:",
|
"Notice:": "Notice:",
|
||||||
"This link will expire after %s.": "Ten odnośnik wygaśnie po %s.",
|
"This link will expire after %s.": "This link will expire after %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.": "This link can only be accessed once, do not use back or refresh button in your browser.",
|
||||||
"Link:": "Odnośnik:",
|
"Link:": "Link:",
|
||||||
"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?": "Recipient may become aware of your timezone, convert time to UTC?",
|
||||||
"Use Current Timezone": "Użyj bieżącej strefy czasowej",
|
"Use Current Timezone": "Use Current Timezone",
|
||||||
"Convert To UTC": "Zamień na UTC",
|
"Convert To UTC": "Convert To UTC",
|
||||||
"Close": "Zamknij",
|
"Close": "Close",
|
||||||
"Encrypted note on %s": "Zaszyfrowana notatka na %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.": "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.": "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.": "Skrócenie adresu URL może ujawnić Twój klucz odszyfrowujący w adresie URL.",
|
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
||||||
"Save paste": "Zapisz wklejenie",
|
"Save paste": "Save paste",
|
||||||
"Your IP is not authorized to create pastes.": "Twój adres IP nie jest upoważniony do tworzenia wklejeń.",
|
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.",
|
||||||
"Trying to shorten a URL that isn't pointing at our instance.": "Próba skrócenia adresu URL wskazującego na inną instancję.",
|
"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\".": "Błąd wywoływania YOURLS. Możliwy błąd konfiguracji, taki jak błędne lub brakujące \"apiurl\" lub \"signature\".",
|
"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\".",
|
||||||
"Error parsing YOURLS response.": "Błąd przetwarzania odpowiedzi YOURLS.",
|
"Error parsing YOURLS response.": "Error parsing YOURLS response.",
|
||||||
"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?",
|
"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": "Tak, pokaż",
|
"Yes, see it": "Yes, see it",
|
||||||
"Dark Mode": "Ciemny motyw",
|
"Dark Mode": "Ciemny motyw",
|
||||||
"Error compressing paste, due to missing WebAssembly support.": "Błąd kompresowania wklejenia przez brak obsługi WebAssembly.",
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
"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 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."
|
||||||
"Start over": "Zacznij od nowa",
|
|
||||||
"Paste copied to clipboard": "Wklejka skopiowana 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>",
|
|
||||||
"Copy link": "Kopiuj link",
|
|
||||||
"Link copied to clipboard": "Link został skopiowany do schowka",
|
|
||||||
"Paste text": "Wklej tekst",
|
|
||||||
"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łączać)",
|
|
||||||
"Theme": "Motyw"
|
|
||||||
}
|
}
|
||||||
|
12
i18n/pt.json
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Sua cópia é <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Pressione [Ctrl]+[c] 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 paste: %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 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?)",
|
||||||
@ -219,13 +219,5 @@
|
|||||||
"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 paste, due to missing WebAssembly support.": "Error compressing paste, 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 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."
|
||||||
"Start over": "Start over",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Copy link",
|
|
||||||
"Link copied to clipboard": "Link copied to clipboard",
|
|
||||||
"Paste text": "Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
12
i18n/ro.json
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "Se trimite paste-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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Paste-ul dvs. este <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Apăsați [Ctrl]+[c] 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 paste: %s": "Nu s-a putut crea paste-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 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?)",
|
||||||
@ -219,13 +219,5 @@
|
|||||||
"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 paste, due to missing WebAssembly support.": "Eroare la compresia paste-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 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."
|
||||||
"Start over": "Start over",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Copy link",
|
|
||||||
"Link copied to clipboard": "Link copied to clipboard",
|
|
||||||
"Paste text": "Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
12
i18n/ru.json
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "Отправка записи…",
|
||||||
"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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Ссылка на запись <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Нажмите [Ctrl]+[c], чтобы скопировать ссылку)</span>",
|
||||||
"Delete data": "Удалить запись",
|
"Delete data": "Удалить запись",
|
||||||
"Could not create paste: %s": "Не удалось опубликовать запись: %s",
|
"Could not create paste: %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 paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Невозможно расшифровать запись: Ключ расшифровки отсутствует в ссылке (Может быть, вы используете сокращатель ссылок, который удаляет часть ссылки?)",
|
||||||
@ -219,13 +219,5 @@
|
|||||||
"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 paste, due to missing WebAssembly support.": "Error compressing paste, 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 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."
|
||||||
"Start over": "Start over",
|
|
||||||
"Paste 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>",
|
|
||||||
"Copy link": "Скопировать ссылку",
|
|
||||||
"Link copied to clipboard": "Ссылка скопирована в буфер обмена",
|
|
||||||
"Paste text": "Paste 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)",
|
|
||||||
"Theme": "Тема"
|
|
||||||
}
|
}
|
||||||
|
12
i18n/sk.json
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Váš príspevok je <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(skopírujte stlačením [Ctrl]+[c])</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 paste: %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 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?)",
|
||||||
@ -219,13 +219,5 @@
|
|||||||
"Yes, see it": "Yes, see it",
|
"Yes, see it": "Yes, see it",
|
||||||
"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 paste, due to missing WebAssembly support.": "Error compressing paste, 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 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."
|
||||||
"Start over": "Start over",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Copy link",
|
|
||||||
"Link copied to clipboard": "Link copied to clipboard",
|
|
||||||
"Paste text": "Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
12
i18n/sl.json
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Tvoj prilepek je dostopen na naslovu: <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Pritisni [Ctrl]+[c] 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 paste: %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 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?)",
|
||||||
@ -219,13 +219,5 @@
|
|||||||
"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 paste, due to missing WebAssembly support.": "Error compressing paste, 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 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."
|
||||||
"Start over": "Start over",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Copy link",
|
|
||||||
"Link copied to clipboard": "Link copied to clipboard",
|
|
||||||
"Paste text": "Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
12
i18n/sv.json
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "Sending paste…",
|
||||||
"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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>",
|
||||||
"Delete data": "Delete data",
|
"Delete data": "Delete data",
|
||||||
"Could not create paste: %s": "Could not create paste: %s",
|
"Could not create paste: %s": "Could not create paste: %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 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?)",
|
||||||
@ -219,13 +219,5 @@
|
|||||||
"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 paste, due to missing WebAssembly support.": "Error compressing paste, 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 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."
|
||||||
"Start over": "Start over",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Copy link",
|
|
||||||
"Link copied to clipboard": "Link copied to clipboard",
|
|
||||||
"Paste text": "Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
20
i18n/th.json
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "กำลังส่งข้อมูล…",
|
||||||
"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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "การฝากโค้ดของคุณอยู่ที่ <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(กดปุ่ม [Ctrl]+[c] เพื่อคัดลอก)</span>",
|
||||||
"Delete data": "ลบข้อมูล",
|
"Delete data": "ลบข้อมูล",
|
||||||
"Could not create paste: %s": "ไม่สามารถสร้างข้อมูลการฝากโค้ดได้: %s",
|
"Could not create paste: %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 paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "ไม่สามารถถอดรหัสข้อมูลการฝากโค้ดได้: คีย์ถอดรหัสที่อยู่ใน URL หายไป (คุณได้ใช้ตัวเปลี่ยนเส้นทางหรือตัวย่อ URL ที่มีการตัดส่วนของ URL ออกหรือไม่)",
|
||||||
@ -215,17 +215,9 @@
|
|||||||
"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\" ไม่ถูกต้องหรือขาดหายไป",
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "เกิดข้อผิดพลาดในการเรียก YOURLS อาจเป็นปัญหามาจากการกำหนดค่า เช่น \"apiurl\" หรือ \"signature\" ไม่ถูกต้องหรือขาดหายไป",
|
||||||
"Error parsing YOURLS response.": "เกิดข้อผิดพลาดในการแยกวิเคราะห์การตอบสนองของ YOURLS",
|
"Error parsing YOURLS response.": "เกิดข้อผิดพลาดในการแยกวิเคราะห์การตอบสนองของ YOURLS",
|
||||||
"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",
|
||||||
"Dark Mode": "โหมดสีเข้ม",
|
"Dark Mode": "โหมดมืด",
|
||||||
"Error compressing paste, due to missing WebAssembly support.": "ไม่สามารถบีบอัดข้อมูลที่คุณต้องการฝากโค้ดได้ เนื่องจากอุปกรณ์ของคุณขาดการรองรับ WebAssembly",
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "ไม่สามารถอ่านข้อมูลที่คุณได้ฝากโค้ดไว้ เบราว์เซอร์ของคุณไม่รองรับ 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."
|
||||||
"Start over": "เริ่มใหม่",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Copy link",
|
|
||||||
"Link copied to clipboard": "Link copied to clipboard",
|
|
||||||
"Paste text": "Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
62
i18n/tr.json
@ -69,7 +69,7 @@
|
|||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d hafta",
|
"%d hafta",
|
||||||
"%d hafta",
|
"%d haftalar",
|
||||||
"%d hafta",
|
"%d hafta",
|
||||||
"%d hafta",
|
"%d hafta",
|
||||||
"%d hafta",
|
"%d hafta",
|
||||||
@ -92,7 +92,7 @@
|
|||||||
"%d yıl"
|
"%d yıl"
|
||||||
],
|
],
|
||||||
"Never": "Asla",
|
"Never": "Asla",
|
||||||
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Not: Bu bir test hizmetidir: Veriler herhangi bir zamanda silinebilir. Bu hizmeti kötüye kullanırsanız, kedicikler ölebilir.",
|
"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.": [
|
||||||
"Bu belge %d saniyede silinecektir.",
|
"Bu belge %d saniyede silinecektir.",
|
||||||
"Bu belge %d saniyede silinecektir.",
|
"Bu belge %d saniyede silinecektir.",
|
||||||
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Yazınız: <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">([Ctrl]+[c] 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 paste: %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 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.)",
|
||||||
@ -172,60 +172,52 @@
|
|||||||
"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 paste.": "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 dosyasyı yapıştırabilir veya sürükleyip bırakabilirsin",
|
||||||
"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.",
|
||||||
"Remove attachment": "Eki sil",
|
"Remove attachment": "Eki sil",
|
||||||
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Tarayıcınız şifreli dosyaları yüklemeyi desteklemiyor. Lütfen daha yeni bir tarayıcı kullanın.",
|
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Tarayıcınız şifreli dosyaları desteklemiyor.",
|
||||||
"Invalid attachment.": "Geçersiz ek.",
|
"Invalid attachment.": "Geçersiz ek.",
|
||||||
"Options": "Seçenekler",
|
"Options": "Seçenekler",
|
||||||
"Shorten URL": "URL kısaltma",
|
"Shorten URL": "URL kısaltma",
|
||||||
"Editor": "Düzenleyici",
|
"Editor": "Düzenleyici",
|
||||||
"Preview": "Ön izleme",
|
"Preview": "Ön izleme",
|
||||||
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s, PATH'in \"%s\" ile bitmesini gerektirir. Lütfen index.php dosyanızdaki PATH'i güncelleyin.",
|
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.",
|
||||||
"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 paste…": "Yazı şifresi çözülüyor…",
|
||||||
"Preparing new paste…": "Yeni yazı hazırlanıyor…",
|
"Preparing new paste…": "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>.": "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.",
|
||||||
"+++ no paste text +++": "+++ yazı içeriği yok +++",
|
"+++ no paste text +++": "+++ yazı içeriği yok +++",
|
||||||
"Could not get paste data: %s": "Yazı verisi alınamıyor: %s",
|
"Could not get paste 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.": "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>.": "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>.": "For more information <a href=\"%s\">see this FAQ entry</a>.",
|
||||||
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Tarayıcınızın WebCrypto API'sini desteklemesi için HTTPS bağlantısına ihtiyacı olabilir. <a href=\"%s\">HTTPS'ye geçmeyi deneyin</a>.",
|
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.",
|
||||||
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Tarayıcınız zlib sıkıştırma için kullanılan WebAssembly'i desteklemiyor. Sıkıştırılmamış belgeler oluşturabilirsiniz, ancak sıkıştırılmış olanları okuyamazsınız.",
|
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.",
|
||||||
"waiting on user to provide a password": "kullanıcının şifre girmesi bekleniyor",
|
"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.": "Şifre çözülemedi, yanlış şifre mi girdiniz? Üstteki butonla tekrar deneyin.",
|
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Dosya şifresi çözülemedi, doğru şifreyi kullandığınıza emin misiniz? Üstteki buton ile tekrar deneyin.",
|
||||||
"Retry": "Yeniden Dene",
|
"Retry": "Yeniden Dene",
|
||||||
"Showing raw text…": "Açık yazı gösteriliyor…",
|
"Showing raw text…": "Açık yazı gösteriliyor…",
|
||||||
"Notice:": "Bildirim:",
|
"Notice:": "Bildirim:",
|
||||||
"This link will expire after %s.": "Bu bağlantı %s sonra geçersiz hale gelecektir.",
|
"This link will expire after %s.": "Bu bağlantı şu kadar zaman sonra etkisiz kalacaktır: %s.",
|
||||||
"This link can only be accessed once, do not use back or refresh button in your browser.": "Bu bağlantıya yalnızca bir kez erişilebilir, tarayıcınızda geri veya yenile butonunu kullanmayın.",
|
"This link can only be accessed once, do not use back or refresh button in your browser.": "Bu bağlantı sadece bir kere erişilebilir, lütfen sayfayı yenilemeyiniz.",
|
||||||
"Link:": "Bağlantı:",
|
"Link:": "Bağlantı:",
|
||||||
"Recipient may become aware of your timezone, convert time to UTC?": "Alıcı zaman diliminizi öğrenebilir, zamanı UTC'ye çevirmek ister misiniz?",
|
"Recipient may become aware of your timezone, convert time to UTC?": "Alıcı zaman dilmini öğrenebilir, zaman dilimini UTC'ye çevirmek ister misin?",
|
||||||
"Use Current Timezone": "Mevcut Zaman Dilimini Kullan",
|
"Use Current Timezone": "Şuanki zaman dilimini kullan",
|
||||||
"Convert To UTC": "UTC'ye Dönüştür",
|
"Convert To UTC": "UTC zaman dilimine çevir",
|
||||||
"Close": "Kapat",
|
"Close": "Kapat",
|
||||||
"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 et. Bağlantıya sahip olan birisi notu görebilir.",
|
||||||
"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ı şifreleme anahtarınızı URL içerisinde gösterebilir.",
|
||||||
"Save paste": "Yazıyı kaydet",
|
"Save paste": "Yazıyı kaydet",
|
||||||
"Your IP is not authorized to create pastes.": "IP adresinizin yazı oluşturmaya yetkisi yoktur.",
|
"Your IP is not authorized to create pastes.": "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.": "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 çağrısı başarısız oldu. Muhtemelen \"apiurl\" veya \"signature\" gibi yanlış veya eksik yapılandırma hatası.",
|
"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\".",
|
||||||
"Error parsing YOURLS response.": "YOURLS yanıtı ayrıştırılamadı.",
|
"Error parsing YOURLS response.": "Error parsing YOURLS response.",
|
||||||
"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?": "This secret message can only be displayed once. Would you like to see it now?",
|
||||||
"Yes, see it": "Evet, gör",
|
"Yes, see it": "Evet, görüyorum",
|
||||||
"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 paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
"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 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."
|
||||||
"Start over": "Baştan başla",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Copy link",
|
|
||||||
"Link copied to clipboard": "Link copied to clipboard",
|
|
||||||
"Paste text": "Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
34
i18n/uk.json
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"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 pasted 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.": "Допис не існує, протермінований чи був видалений.",
|
"Paste does not exist, has expired or has been deleted.": "Допис не існує, протермінований чи був видалений.",
|
||||||
@ -16,15 +16,15 @@
|
|||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "Розмір допису обмежений %s зашифрованих даних.",
|
"Paste 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 paste. Sorry.": "Помилка при збереженні допису. Вибачте.",
|
||||||
"Invalid paste ID.": "Неправильний ID допису.",
|
"Invalid paste ID.": "Неправильний ID допису.",
|
||||||
"Paste is not of burn-after-reading type.": "Тип допису не \"Знищити після прочитання\".",
|
"Paste is not of burn-after-reading type.": "Тип допису не \"Знищити після прочитання\".",
|
||||||
"Wrong deletion token. Paste was not deleted.": "Неправильний жетон вилучення допису. Допис не вилучено.",
|
"Wrong deletion token. Paste was not deleted.": "Неправильний ключ вилучення допису. Допис не вилучено.",
|
||||||
"Paste was properly deleted.": "Допис був вилучений повністю.",
|
"Paste 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": "Дублювати",
|
||||||
@ -36,8 +36,8 @@
|
|||||||
"Discussion": "Обговорення",
|
"Discussion": "Обговорення",
|
||||||
"Toggle navigation": "Перемкнути навігацію",
|
"Toggle navigation": "Перемкнути навігацію",
|
||||||
"%d seconds": [
|
"%d seconds": [
|
||||||
"%d секунд",
|
"%d секунду",
|
||||||
"%d секунд",
|
"%d секунди",
|
||||||
"%d секунд",
|
"%d секунд",
|
||||||
"%d секунд",
|
"%d секунд",
|
||||||
"%d секунд",
|
"%d секунд",
|
||||||
@ -134,7 +134,7 @@
|
|||||||
"Документ буде вилучений через %d місяців."
|
"Документ буде вилучений через %d місяців."
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "Будь ласка, введіть пароль від допису:",
|
"Please enter the password for this paste:": "Будь ласка, введіть пароль від допису:",
|
||||||
"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.": "Неможливо вилучити допис, він не був збережений в режимі знищити після прочитання.",
|
||||||
"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?": "Неможливо розшифрувати коментар; Неправильний ключ?",
|
||||||
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "Відправка допису…",
|
||||||
"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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Посилання на допис <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Тисніть [Ctrl]+[c], щоб скопіювати посилання)</span>",
|
||||||
"Delete data": "Видалити допис",
|
"Delete data": "Видалити допис",
|
||||||
"Could not create paste: %s": "Не вдалося опублікувати допис: %s",
|
"Could not create paste: %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 paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Неможливо розшифрувати запис: Ключ дешифрування відсутній в посиланні (Можливо, ви використовуєте скорочувач посилань, що видаляє частину посилання?)",
|
||||||
@ -166,7 +166,7 @@
|
|||||||
"YiB": "Йбайт",
|
"YiB": "Йбайт",
|
||||||
"Format": "Формат",
|
"Format": "Формат",
|
||||||
"Plain Text": "Звичайний текст",
|
"Plain Text": "Звичайний текст",
|
||||||
"Source Code": "Вихідний код",
|
"Source Code": "Джерельний код",
|
||||||
"Markdown": "Мова розмітки",
|
"Markdown": "Мова розмітки",
|
||||||
"Download attachment": "Звантажити прикріплений файл",
|
"Download attachment": "Звантажити прикріплений файл",
|
||||||
"Cloned: '%s'": "Дубльовано: '%s'",
|
"Cloned: '%s'": "Дубльовано: '%s'",
|
||||||
@ -213,19 +213,11 @@
|
|||||||
"Save paste": "Зберегти вставку",
|
"Save paste": "Зберегти вставку",
|
||||||
"Your IP is not authorized to create pastes.": "Вашому IP не дозволено створювати вставки.",
|
"Your IP is not authorized to create pastes.": "Вашому 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\".",
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Помилка виклику YOURLS. Ймовірно проблема з конфігурацією, наприклад \"apiurl\" чи \"signature\".",
|
||||||
"Error parsing YOURLS response.": "Помилка розбору відповіді YOURLS.",
|
"Error parsing YOURLS response.": "Помилка розбору відповіді YOURLS.",
|
||||||
"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 paste, 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 paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Помилка при розпакуванні допису, бо ваш браузер не підтримує WebAssembly. Будь ласка, відкрийте інший браузер для перегляду цього допису."
|
||||||
"Start over": "Почати знову",
|
|
||||||
"Paste copied to clipboard": "Paste 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>",
|
|
||||||
"Copy link": "Copy link",
|
|
||||||
"Link copied to clipboard": "Link copied to clipboard",
|
|
||||||
"Paste text": "Paste 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)",
|
|
||||||
"Theme": "Theme"
|
|
||||||
}
|
}
|
||||||
|
14
i18n/zh.json
@ -151,7 +151,7 @@
|
|||||||
"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 paste…": "粘贴内容提交中…",
|
||||||
"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 paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "您粘贴内容的链接是 <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(按下 [Ctrl]+[C] 以复制)</span>",
|
||||||
"Delete data": "删除数据",
|
"Delete data": "删除数据",
|
||||||
"Could not create paste: %s": "无法创建粘贴:%s",
|
"Could not create paste: %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 paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "无法解密粘贴:URL中缺失解密密钥(是否使用了重定向或者短链接导致密钥丢失?)",
|
||||||
@ -218,14 +218,6 @@
|
|||||||
"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 paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "解压粘贴时出错,您的浏览器不支持 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."
|
||||||
"Start over": "重新开始",
|
|
||||||
"Paste 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>。",
|
|
||||||
"Copy link": "复制链接",
|
|
||||||
"Link copied to clipboard": "链接已复制到剪贴板",
|
|
||||||
"Paste 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> 切换开关)",
|
|
||||||
"Theme": "主题"
|
|
||||||
}
|
}
|
||||||
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 9.1 KiB |
Before Width: | Height: | Size: 741 B After Width: | Height: | Size: 749 B |
Before Width: | Height: | Size: 180 B After Width: | Height: | Size: 266 B |
Before Width: | Height: | Size: 217 B After Width: | Height: | Size: 253 B |
BIN
img/icon_new.png
Before Width: | Height: | Size: 104 B After Width: | Height: | Size: 157 B |
BIN
img/icon_qr.png
Before Width: | Height: | Size: 200 B After Width: | Height: | Size: 299 B |
BIN
img/icon_raw.png
Before Width: | Height: | Size: 174 B After Width: | Height: | Size: 183 B |
Before Width: | Height: | Size: 144 B After Width: | Height: | Size: 209 B |
Before Width: | Height: | Size: 149 B After Width: | Height: | Size: 196 B |
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 9.0 KiB |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
34
js/common.js
@ -5,6 +5,7 @@ global.assert = require('assert');
|
|||||||
global.jsc = require('jsverify');
|
global.jsc = require('jsverify');
|
||||||
global.jsdom = require('jsdom-global');
|
global.jsdom = require('jsdom-global');
|
||||||
global.cleanup = global.jsdom();
|
global.cleanup = global.jsdom();
|
||||||
|
global.URL = require('jsdom-url').URL;
|
||||||
global.fs = require('fs');
|
global.fs = require('fs');
|
||||||
global.WebCrypto = require('@peculiar/webcrypto').Crypto;
|
global.WebCrypto = require('@peculiar/webcrypto').Crypto;
|
||||||
|
|
||||||
@ -16,7 +17,7 @@ require('./prettify');
|
|||||||
global.prettyPrint = window.PR.prettyPrint;
|
global.prettyPrint = window.PR.prettyPrint;
|
||||||
global.prettyPrintOne = window.PR.prettyPrintOne;
|
global.prettyPrintOne = window.PR.prettyPrintOne;
|
||||||
global.showdown = require('./showdown-2.1.0');
|
global.showdown = require('./showdown-2.1.0');
|
||||||
global.DOMPurify = require('./purify-3.2.5');
|
global.DOMPurify = require('./purify-3.1.3');
|
||||||
global.baseX = require('./base-x-4.0.0').baseX;
|
global.baseX = require('./base-x-4.0.0').baseX;
|
||||||
global.Legacy = require('./legacy').Legacy;
|
global.Legacy = require('./legacy').Legacy;
|
||||||
require('./bootstrap-3.4.1');
|
require('./bootstrap-3.4.1');
|
||||||
@ -78,16 +79,8 @@ function parseMime(line) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// common testing helper functions
|
// common testing helper functions
|
||||||
// as of jsDOM 22 the base64 functions provided in the DOM are more restrictive
|
exports.atob = atob;
|
||||||
// than browser implementation and throw when being passed invalid unicode
|
exports.btoa = btoa;
|
||||||
// codepoints - as we use these in the encryption with binary data, we need
|
|
||||||
// these to be character encoding agnostic
|
|
||||||
exports.atob = function(encoded) {
|
|
||||||
return Buffer.from(encoded, 'base64').toString('binary');
|
|
||||||
}
|
|
||||||
exports.btoa = function(text) {
|
|
||||||
return Buffer.from(text, 'binary').toString('base64');
|
|
||||||
}
|
|
||||||
|
|
||||||
// provides random lowercase characters from a to z
|
// provides random lowercase characters from a to z
|
||||||
exports.jscA2zString = function() {
|
exports.jscA2zString = function() {
|
||||||
@ -159,22 +152,3 @@ exports.urlToString = function (url) {
|
|||||||
encodeURI(url.query.join('').replace(/^&+|&+$/gm,'')) : '') +
|
encodeURI(url.query.join('').replace(/^&+|&+$/gm,'')) : '') +
|
||||||
(url.fragment ? '#' + encodeURI(url.fragment) : '');
|
(url.fragment ? '#' + encodeURI(url.fragment) : '');
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.enableClipboard = function () {
|
|
||||||
navigator.clipboard = (function () {
|
|
||||||
let savedText = "";
|
|
||||||
|
|
||||||
async function writeText(text) {
|
|
||||||
savedText = text;
|
|
||||||
};
|
|
||||||
|
|
||||||
async function readText() {
|
|
||||||
return savedText;
|
|
||||||
};
|
|
||||||
|
|
||||||
return {
|
|
||||||
writeText,
|
|
||||||
readText,
|
|
||||||
};
|
|
||||||
})();
|
|
||||||
};
|
|
||||||
|
@ -68,7 +68,7 @@
|
|||||||
} else {
|
} else {
|
||||||
delStoredPrettifyTheme()
|
delStoredPrettifyTheme()
|
||||||
}
|
}
|
||||||
const toggle = document.getElementById('bd-theme')
|
const toggle = document.querySelector('#bd-theme')
|
||||||
const theme = getStoredPreferredTheme()
|
const theme = getStoredPreferredTheme()
|
||||||
setTheme(theme)
|
setTheme(theme)
|
||||||
toggle.checked = (theme === 'dark')
|
toggle.checked = (theme === 'dark')
|
||||||
|
19
js/legacy.js
@ -6,6 +6,7 @@
|
|||||||
* @see {@link https://github.com/PrivateBin/PrivateBin}
|
* @see {@link https://github.com/PrivateBin/PrivateBin}
|
||||||
* @copyright 2012 Sébastien SAUVAGE ({@link http://sebsauvage.net})
|
* @copyright 2012 Sébastien SAUVAGE ({@link http://sebsauvage.net})
|
||||||
* @license {@link https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License}
|
* @license {@link https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License}
|
||||||
|
* @version 1.3.1
|
||||||
* @name Legacy
|
* @name Legacy
|
||||||
* @namespace
|
* @namespace
|
||||||
*/
|
*/
|
||||||
@ -174,6 +175,18 @@
|
|||||||
)) {
|
)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// async & ES6 support
|
||||||
|
try {
|
||||||
|
eval('async () => {}');
|
||||||
|
} catch (e) {
|
||||||
|
if (e instanceof SyntaxError) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
throw e; // throws CSP error
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -225,7 +238,7 @@
|
|||||||
{
|
{
|
||||||
return init;
|
return init;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* returns the current status of the check
|
* returns the current status of the check
|
||||||
*
|
*
|
||||||
@ -237,7 +250,7 @@
|
|||||||
{
|
{
|
||||||
return status;
|
return status;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* init on application start, returns an all-clear signal
|
* init on application start, returns an all-clear signal
|
||||||
*
|
*
|
||||||
@ -295,4 +308,4 @@
|
|||||||
this.Legacy = {
|
this.Legacy = {
|
||||||
Check: Check
|
Check: Check
|
||||||
};
|
};
|
||||||
}).call(this);
|
}).call(this);
|
1992
js/package-lock.json
generated
@ -1,16 +1,18 @@
|
|||||||
{
|
{
|
||||||
"name": "privatebin",
|
"name": "privatebin",
|
||||||
"version": "1.7.6",
|
"version": "1.7.4",
|
||||||
"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 pasted 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"
|
||||||
},
|
},
|
||||||
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@peculiar/webcrypto": "^1.5.0",
|
"jsdom": "^9.12.0",
|
||||||
"jsdom": "^26.0.0",
|
"jsdom-global": "^2.1.1",
|
||||||
"jsdom-global": "^3.0.2",
|
"jsdom-url": "^2.2.1",
|
||||||
"jsverify": "^0.8.3"
|
"jsverify": "^0.8.3",
|
||||||
|
"@peculiar/webcrypto": "^1.1.1"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "mocha",
|
"test": "mocha",
|
||||||
|
404
js/privatebin.js
@ -58,6 +58,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
*/
|
*/
|
||||||
const purifyHtmlConfig = {
|
const purifyHtmlConfig = {
|
||||||
ALLOWED_URI_REGEXP: /^(?:(?:(?:f|ht)tps?|mailto|magnet):)/i,
|
ALLOWED_URI_REGEXP: /^(?:(?:(?:f|ht)tps?|mailto|magnet):)/i,
|
||||||
|
SAFE_FOR_JQUERY: true,
|
||||||
USE_PROFILES: {
|
USE_PROFILES: {
|
||||||
html: true
|
html: true
|
||||||
}
|
}
|
||||||
@ -756,14 +757,14 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
args[0] = translations[messageId];
|
args[0] = translations[messageId];
|
||||||
}
|
}
|
||||||
|
|
||||||
// messageID may contain HTML, but should be from a trusted source (code or translation JSON files)
|
// messageID may contain links, but should be from a trusted source (code or translation JSON files)
|
||||||
let containsHtml = isStringContainsHtml(args[0]);
|
let containsLinks = args[0].indexOf('<a') !== -1;
|
||||||
|
|
||||||
// prevent double encoding, when we insert into a text node
|
// prevent double encoding, when we insert into a text node
|
||||||
if (containsHtml || $element === null) {
|
if (containsLinks || $element === null) {
|
||||||
for (let i = 0; i < args.length; ++i) {
|
for (let i = 0; i < args.length; ++i) {
|
||||||
// parameters (i > 0) may never contain HTML as they may come from untrusted parties
|
// parameters (i > 0) may never contain HTML as they may come from untrusted parties
|
||||||
if ((containsHtml ? i > 1 : i > 0) || !containsHtml) {
|
if ((containsLinks ? i > 1 : i > 0) || !containsLinks) {
|
||||||
args[i] = Helper.htmlEntities(args[i]);
|
args[i] = Helper.htmlEntities(args[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -771,11 +772,11 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
// format string
|
// format string
|
||||||
let output = Helper.sprintf.apply(this, args);
|
let output = Helper.sprintf.apply(this, args);
|
||||||
|
|
||||||
if (containsHtml) {
|
if (containsLinks) {
|
||||||
// only allow tags/attributes we actually use in translations
|
// only allow tags/attributes we actually use in translations
|
||||||
output = DOMPurify.sanitize(
|
output = DOMPurify.sanitize(
|
||||||
output, {
|
output, {
|
||||||
ALLOWED_TAGS: ['a', 'i', 'span', 'kbd'],
|
ALLOWED_TAGS: ['a', 'i', 'span'],
|
||||||
ALLOWED_ATTR: ['href', 'id']
|
ALLOWED_ATTR: ['href', 'id']
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@ -783,7 +784,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
|
|
||||||
// if $element is given, insert translation
|
// if $element is given, insert translation
|
||||||
if ($element !== null) {
|
if ($element !== null) {
|
||||||
if (containsHtml) {
|
if (containsLinks) {
|
||||||
$element.html(output);
|
$element.html(output);
|
||||||
} else {
|
} else {
|
||||||
// text node takes care of entity encoding
|
// text node takes care of entity encoding
|
||||||
@ -913,25 +914,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
translations = mockTranslations || {};
|
translations = mockTranslations || {};
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if string contains valid HTML code
|
|
||||||
*
|
|
||||||
* @name I18n.isStringContainsHtml
|
|
||||||
* @function
|
|
||||||
* @private
|
|
||||||
* @param {string} messageId
|
|
||||||
* @returns {boolean}
|
|
||||||
*/
|
|
||||||
function isStringContainsHtml(messageId) {
|
|
||||||
// An integer which specifies the type of the node. An Element node like <p> or <div>.
|
|
||||||
const elementNodeType = 1;
|
|
||||||
|
|
||||||
const div = document.createElement('div');
|
|
||||||
div.innerHTML = messageId;
|
|
||||||
|
|
||||||
return Array.from(div.childNodes).some(node => node.nodeType === elementNodeType);
|
|
||||||
}
|
|
||||||
|
|
||||||
return me;
|
return me;
|
||||||
})();
|
})();
|
||||||
|
|
||||||
@ -2110,7 +2092,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
{
|
{
|
||||||
I18n._(
|
I18n._(
|
||||||
$('#pastelink'),
|
$('#pastelink'),
|
||||||
'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 [Ctrl]+[c] to copy)</span>',
|
||||||
url, url
|
url, url
|
||||||
);
|
);
|
||||||
// save newly created element
|
// save newly created element
|
||||||
@ -2119,8 +2101,8 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
$pasteUrl.click(pasteLinkClick);
|
$pasteUrl.click(pasteLinkClick);
|
||||||
|
|
||||||
// delete link
|
// delete link
|
||||||
$('#deletelink').attr('href', deleteUrl);
|
$('#deletelink').html('<a href="' + deleteUrl + '"></a>');
|
||||||
I18n._($('#deletelink span').not('.glyphicon').first(), 'Delete data');
|
I18n._($('#deletelink a').first(), 'Delete data');
|
||||||
|
|
||||||
// enable shortener button
|
// enable shortener button
|
||||||
$shortenButton.removeClass('buttondisabled');
|
$shortenButton.removeClass('buttondisabled');
|
||||||
@ -2255,8 +2237,8 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
const me = {};
|
const me = {};
|
||||||
|
|
||||||
let $passwordDecrypt,
|
let $passwordDecrypt,
|
||||||
|
$passwordForm,
|
||||||
$passwordModal,
|
$passwordModal,
|
||||||
bootstrap5PasswordModal = null,
|
|
||||||
password = '';
|
password = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2275,11 +2257,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
password = $passwordDecrypt.val();
|
password = $passwordDecrypt.val();
|
||||||
|
|
||||||
// hide modal
|
// hide modal
|
||||||
if (bootstrap5PasswordModal) {
|
$passwordModal.modal('hide');
|
||||||
bootstrap5PasswordModal.hide();
|
|
||||||
} else {
|
|
||||||
$passwordModal.modal('hide');
|
|
||||||
}
|
|
||||||
|
|
||||||
PasteDecrypter.run();
|
PasteDecrypter.run();
|
||||||
}
|
}
|
||||||
@ -2300,11 +2278,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
const $loadconfirmClose = $loadconfirmmodal.find('.close');
|
const $loadconfirmClose = $loadconfirmmodal.find('.close');
|
||||||
$loadconfirmClose.off('click.close');
|
$loadconfirmClose.off('click.close');
|
||||||
$loadconfirmClose.on('click.close', Controller.newPaste);
|
$loadconfirmClose.on('click.close', Controller.newPaste);
|
||||||
if (typeof bootstrap !== 'undefined' && bootstrap.Tooltip.VERSION) {
|
$loadconfirmmodal.modal('show');
|
||||||
(new bootstrap.Modal($loadconfirmmodal[0])).show();
|
|
||||||
} else {
|
|
||||||
$loadconfirmmodal.modal('show');
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (window.confirm(
|
if (window.confirm(
|
||||||
I18n._('This secret message can only be displayed once. Would you like to see it now?')
|
I18n._('This secret message can only be displayed once. Would you like to see it now?')
|
||||||
@ -2326,11 +2300,17 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
{
|
{
|
||||||
// show new bootstrap method (if available)
|
// show new bootstrap method (if available)
|
||||||
if ($passwordModal.length !== 0) {
|
if ($passwordModal.length !== 0) {
|
||||||
if (bootstrap5PasswordModal) {
|
$passwordModal.modal({
|
||||||
bootstrap5PasswordModal.show();
|
backdrop: 'static',
|
||||||
} else {
|
keyboard: false
|
||||||
$passwordModal.modal('show');
|
});
|
||||||
}
|
$passwordModal.modal('show');
|
||||||
|
// focus password input
|
||||||
|
$passwordDecrypt.focus();
|
||||||
|
// then re-focus it, when modal causes it to loose focus again
|
||||||
|
setTimeout(function () {
|
||||||
|
$passwordDecrypt.focus();
|
||||||
|
}, 500);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2374,7 +2354,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
|
|
||||||
// and also reset UI
|
// and also reset UI
|
||||||
$passwordDecrypt.val('');
|
$passwordDecrypt.val('');
|
||||||
};
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* init status manager
|
* init status manager
|
||||||
@ -2387,26 +2367,11 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
me.init = function()
|
me.init = function()
|
||||||
{
|
{
|
||||||
$passwordDecrypt = $('#passworddecrypt');
|
$passwordDecrypt = $('#passworddecrypt');
|
||||||
|
$passwordForm = $('#passwordform');
|
||||||
$passwordModal = $('#passwordmodal');
|
$passwordModal = $('#passwordmodal');
|
||||||
|
|
||||||
// bind events - handle Model password submission
|
// bind events - handle Model password submission
|
||||||
if ($passwordModal.length !== 0) {
|
$passwordForm.submit(submitPasswordModal);
|
||||||
$('#passwordform').submit(submitPasswordModal);
|
|
||||||
|
|
||||||
const disableClosingConfig = {
|
|
||||||
backdrop: 'static',
|
|
||||||
keyboard: false,
|
|
||||||
show: false
|
|
||||||
};
|
|
||||||
if (typeof bootstrap !== 'undefined' && bootstrap.Tooltip.VERSION) {
|
|
||||||
bootstrap5PasswordModal = new bootstrap.Modal($passwordModal[0], disableClosingConfig);
|
|
||||||
} else {
|
|
||||||
$passwordModal.modal(disableClosingConfig);
|
|
||||||
}
|
|
||||||
$passwordModal.on('shown.bs.modal', () => {
|
|
||||||
$passwordDecrypt.focus();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
return me;
|
return me;
|
||||||
@ -2428,11 +2393,8 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
$messageEditParent,
|
$messageEditParent,
|
||||||
$messagePreview,
|
$messagePreview,
|
||||||
$messagePreviewParent,
|
$messagePreviewParent,
|
||||||
$messageTab,
|
|
||||||
$messageTabParent,
|
|
||||||
$message,
|
$message,
|
||||||
isPreview = false,
|
isPreview = false;
|
||||||
isTabSupported = true;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* support input of tab character
|
* support input of tab character
|
||||||
@ -2444,13 +2406,9 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
*/
|
*/
|
||||||
function supportTabs(event)
|
function supportTabs(event)
|
||||||
{
|
{
|
||||||
// support disabling tab support using [Esc] and [Ctrl]+[m]
|
const keyCode = event.keyCode || event.which;
|
||||||
if (event.key === 'Escape' || (event.ctrlKey && event.key === 'm')) {
|
// tab was pressed
|
||||||
toggleTabSupport();
|
if (keyCode === 9) {
|
||||||
$messageTab[0].checked = isTabSupported;
|
|
||||||
event.preventDefault();
|
|
||||||
}
|
|
||||||
else if (isTabSupported && event.key === 'Tab') {
|
|
||||||
// get caret position & selection
|
// get caret position & selection
|
||||||
const val = this.value,
|
const val = this.value,
|
||||||
start = this.selectionStart,
|
start = this.selectionStart,
|
||||||
@ -2464,18 +2422,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* toggle tab support in message textarea
|
|
||||||
*
|
|
||||||
* @name Editor.toggleTabSupport
|
|
||||||
* @private
|
|
||||||
* @function
|
|
||||||
*/
|
|
||||||
function toggleTabSupport()
|
|
||||||
{
|
|
||||||
isTabSupported = !isTabSupported;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* view the Editor tab
|
* view the Editor tab
|
||||||
*
|
*
|
||||||
@ -2498,7 +2444,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
|
|
||||||
// reshow input
|
// reshow input
|
||||||
$message.removeClass('hidden');
|
$message.removeClass('hidden');
|
||||||
$messageTabParent.removeClass('hidden');
|
|
||||||
|
|
||||||
me.focusInput();
|
me.focusInput();
|
||||||
|
|
||||||
@ -2531,7 +2476,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
|
|
||||||
// hide input as now preview is shown
|
// hide input as now preview is shown
|
||||||
$message.addClass('hidden');
|
$message.addClass('hidden');
|
||||||
$messageTabParent.addClass('hidden');
|
|
||||||
|
|
||||||
// show preview
|
// show preview
|
||||||
PasteViewer.setText($message.val());
|
PasteViewer.setText($message.val());
|
||||||
@ -2590,7 +2534,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
me.show = function()
|
me.show = function()
|
||||||
{
|
{
|
||||||
$message.removeClass('hidden');
|
$message.removeClass('hidden');
|
||||||
$messageTabParent.removeClass('hidden');
|
|
||||||
$editorTabs.removeClass('hidden');
|
$editorTabs.removeClass('hidden');
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -2603,7 +2546,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
me.hide = function()
|
me.hide = function()
|
||||||
{
|
{
|
||||||
$message.addClass('hidden');
|
$message.addClass('hidden');
|
||||||
$messageTabParent.addClass('hidden');
|
|
||||||
$editorTabs.addClass('hidden');
|
$editorTabs.addClass('hidden');
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -2643,7 +2585,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* init editor
|
* init status manager
|
||||||
*
|
*
|
||||||
* preloads jQuery elements
|
* preloads jQuery elements
|
||||||
*
|
*
|
||||||
@ -2654,12 +2596,9 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
{
|
{
|
||||||
$editorTabs = $('#editorTabs');
|
$editorTabs = $('#editorTabs');
|
||||||
$message = $('#message');
|
$message = $('#message');
|
||||||
$messageTab = $('#messagetab');
|
|
||||||
$messageTabParent = $messageTab.parent();
|
|
||||||
|
|
||||||
// bind events
|
// bind events
|
||||||
$message.keydown(supportTabs);
|
$message.keydown(supportTabs);
|
||||||
$messageTab.change(toggleTabSupport);
|
|
||||||
|
|
||||||
// bind click events to tab switchers (a), and save parents (li)
|
// bind click events to tab switchers (a), and save parents (li)
|
||||||
$messageEdit = $('#messageedit').click(viewEditor);
|
$messageEdit = $('#messageedit').click(viewEditor);
|
||||||
@ -2680,8 +2619,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
const PasteViewer = (function () {
|
const PasteViewer = (function () {
|
||||||
const me = {};
|
const me = {};
|
||||||
|
|
||||||
let $messageTabParent,
|
let $placeholder,
|
||||||
$placeholder,
|
|
||||||
$prettyMessage,
|
$prettyMessage,
|
||||||
$prettyPrint,
|
$prettyPrint,
|
||||||
$plainText,
|
$plainText,
|
||||||
@ -2761,7 +2699,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
}
|
}
|
||||||
// otherwise hide the placeholder
|
// otherwise hide the placeholder
|
||||||
$placeholder.addClass('hidden');
|
$placeholder.addClass('hidden');
|
||||||
$messageTabParent.addClass('hidden');
|
|
||||||
|
|
||||||
if (format === 'markdown') {
|
if (format === 'markdown') {
|
||||||
$plainText.removeClass('hidden');
|
$plainText.removeClass('hidden');
|
||||||
@ -2900,7 +2837,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
*/
|
*/
|
||||||
me.init = function()
|
me.init = function()
|
||||||
{
|
{
|
||||||
$messageTabParent = $('#messagetab').parent();
|
|
||||||
$placeholder = $('#placeholder');
|
$placeholder = $('#placeholder');
|
||||||
$plainText = $('#plaintext');
|
$plainText = $('#plaintext');
|
||||||
$prettyMessage = $('#prettymessage');
|
$prettyMessage = $('#prettymessage');
|
||||||
@ -3832,7 +3768,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Clear the password input in the top navigation
|
* Clear the password input in the top navigation
|
||||||
*
|
*
|
||||||
* @name TopNav.clearPasswordInput
|
* @name TopNav.clearPasswordInput
|
||||||
* @function
|
* @function
|
||||||
*/
|
*/
|
||||||
@ -3932,27 +3868,8 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
*/
|
*/
|
||||||
function setLanguage(event)
|
function setLanguage(event)
|
||||||
{
|
{
|
||||||
let lang = $(event.target).data('lang') || event.target.value;
|
document.cookie = 'lang=' + $(event.target).data('lang') + '; SameSite=Lax; Secure';
|
||||||
|
UiHelper.reloadHome();
|
||||||
document.cookie = 'lang=' + lang + '; SameSite=Lax; Secure';
|
|
||||||
window.location.reload();
|
|
||||||
event.preventDefault();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* save the template in a cookie and reloads the page
|
|
||||||
*
|
|
||||||
* @name TopNav.setTemplate
|
|
||||||
* @private
|
|
||||||
* @function
|
|
||||||
* @param {Event} event
|
|
||||||
*/
|
|
||||||
function setTemplate(event)
|
|
||||||
{
|
|
||||||
let template = $(event.target).data('template') || event.target.value;
|
|
||||||
|
|
||||||
document.cookie = 'template=' + template + '; SameSite=Lax; Secure';
|
|
||||||
window.location.reload();
|
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4023,6 +3940,10 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
text: window.location.href
|
text: window.location.href
|
||||||
});
|
});
|
||||||
$('#qrcode-display').html(qrCanvas);
|
$('#qrcode-display').html(qrCanvas);
|
||||||
|
// only necessary for bootstrap 5, other templates won't have this
|
||||||
|
if (bootstrap.Tooltip.VERSION) {
|
||||||
|
$('#qrcodemodal').modal('show');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -4067,7 +3988,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
}
|
}
|
||||||
emailBody += I18n._('Link:');
|
emailBody += I18n._('Link:');
|
||||||
emailBody += EOL;
|
emailBody += EOL;
|
||||||
emailBody += $('#pasteurl').attr('href') || window.location.href; // href is tried first as it might have been shortened
|
emailBody += $('#pasteurl').attr('href'); // might have been shortened
|
||||||
return emailBody;
|
return emailBody;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4111,37 +4032,23 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
if (expirationDate !== null) {
|
if (expirationDate !== null) {
|
||||||
const $emailconfirmTimezoneCurrent = $emailconfirmmodal.find('#emailconfirm-timezone-current');
|
const $emailconfirmTimezoneCurrent = $emailconfirmmodal.find('#emailconfirm-timezone-current');
|
||||||
const $emailconfirmTimezoneUtc = $emailconfirmmodal.find('#emailconfirm-timezone-utc');
|
const $emailconfirmTimezoneUtc = $emailconfirmmodal.find('#emailconfirm-timezone-utc');
|
||||||
let localeConfiguration = { dateStyle: 'long', timeStyle: 'long' };
|
|
||||||
const bootstrap5EmailConfirmModal = typeof bootstrap !== 'undefined' && bootstrap.Tooltip.VERSION ?
|
|
||||||
new bootstrap.Modal($emailconfirmmodal[0]) : null;
|
|
||||||
|
|
||||||
function sendEmailAndHideModal() {
|
|
||||||
const emailBody = templateEmailBody(
|
|
||||||
// we don't use Date.prototype.toUTCString() because we would like to avoid GMT
|
|
||||||
expirationDateRoundedToSecond.toLocaleString(
|
|
||||||
[], localeConfiguration
|
|
||||||
), isBurnafterreading
|
|
||||||
);
|
|
||||||
if (bootstrap5EmailConfirmModal) {
|
|
||||||
bootstrap5EmailConfirmModal.hide();
|
|
||||||
} else {
|
|
||||||
$emailconfirmmodal.modal('hide');
|
|
||||||
}
|
|
||||||
triggerEmailSend(emailBody);
|
|
||||||
};
|
|
||||||
|
|
||||||
$emailconfirmTimezoneCurrent.off('click.sendEmailCurrentTimezone');
|
$emailconfirmTimezoneCurrent.off('click.sendEmailCurrentTimezone');
|
||||||
$emailconfirmTimezoneCurrent.on('click.sendEmailCurrentTimezone', sendEmailAndHideModal);
|
$emailconfirmTimezoneCurrent.on('click.sendEmailCurrentTimezone', () => {
|
||||||
|
const emailBody = templateEmailBody(expirationDateRoundedToSecond.toLocaleString(), isBurnafterreading);
|
||||||
|
$emailconfirmmodal.modal('hide');
|
||||||
|
triggerEmailSend(emailBody);
|
||||||
|
});
|
||||||
$emailconfirmTimezoneUtc.off('click.sendEmailUtcTimezone');
|
$emailconfirmTimezoneUtc.off('click.sendEmailUtcTimezone');
|
||||||
$emailconfirmTimezoneUtc.on('click.sendEmailUtcTimezone', () => {
|
$emailconfirmTimezoneUtc.on('click.sendEmailUtcTimezone', () => {
|
||||||
localeConfiguration.timeZone = 'UTC';
|
const emailBody = templateEmailBody(expirationDateRoundedToSecond.toLocaleString(
|
||||||
sendEmailAndHideModal();
|
undefined,
|
||||||
|
// we don't use Date.prototype.toUTCString() because we would like to avoid GMT
|
||||||
|
{ timeZone: 'UTC', dateStyle: 'long', timeStyle: 'long' }
|
||||||
|
), isBurnafterreading);
|
||||||
|
$emailconfirmmodal.modal('hide');
|
||||||
|
triggerEmailSend(emailBody);
|
||||||
});
|
});
|
||||||
if (bootstrap5EmailConfirmModal) {
|
$emailconfirmmodal.modal('show');
|
||||||
bootstrap5EmailConfirmModal.show();
|
|
||||||
} else {
|
|
||||||
$emailconfirmmodal.modal('show');
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
triggerEmailSend(templateEmailBody(null, isBurnafterreading));
|
triggerEmailSend(templateEmailBody(null, isBurnafterreading));
|
||||||
}
|
}
|
||||||
@ -4643,12 +4550,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
// bootstrap template drop down
|
// bootstrap template drop down
|
||||||
$('#language ul.dropdown-menu li a').click(setLanguage);
|
$('#language ul.dropdown-menu li a').click(setLanguage);
|
||||||
// page template drop down
|
// page template drop down
|
||||||
$('#language select').change(setLanguage);
|
$('#language select option').click(setLanguage);
|
||||||
|
|
||||||
// bootstrap template drop down
|
|
||||||
$('#template ul.dropdown-menu li a').click(setTemplate);
|
|
||||||
// page template drop down
|
|
||||||
$('#template select').change(setTemplate);
|
|
||||||
|
|
||||||
// bind events
|
// bind events
|
||||||
$burnAfterReading.change(changeBurnAfterReading);
|
$burnAfterReading.change(changeBurnAfterReading);
|
||||||
@ -4999,9 +4901,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
|
|
||||||
TopNav.showViewButtons();
|
TopNav.showViewButtons();
|
||||||
|
|
||||||
CopyToClipboard.setUrl(url);
|
|
||||||
CopyToClipboard.showKeyboardShortcutHint();
|
|
||||||
|
|
||||||
// this cannot be grouped with showViewButtons due to remaining time calculation
|
// this cannot be grouped with showViewButtons due to remaining time calculation
|
||||||
TopNav.showEmailButton();
|
TopNav.showEmailButton();
|
||||||
|
|
||||||
@ -5438,8 +5337,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
// shows the remaining time (until) deletion
|
// shows the remaining time (until) deletion
|
||||||
PasteStatus.showRemainingTime(paste);
|
PasteStatus.showRemainingTime(paste);
|
||||||
|
|
||||||
CopyToClipboard.showKeyboardShortcutHint();
|
|
||||||
|
|
||||||
Promise.all(decryptionPromises)
|
Promise.all(decryptionPromises)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
Alert.hideLoading();
|
Alert.hideLoading();
|
||||||
@ -5469,187 +5366,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
return me;
|
return me;
|
||||||
})();
|
})();
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @name CopyToClipboard
|
|
||||||
* @class
|
|
||||||
*/
|
|
||||||
const CopyToClipboard = (function () {
|
|
||||||
const me = {};
|
|
||||||
|
|
||||||
let copyButton,
|
|
||||||
copyLinkButton,
|
|
||||||
copyIcon,
|
|
||||||
successIcon,
|
|
||||||
shortcutHint,
|
|
||||||
url;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handle copy to clipboard button click
|
|
||||||
*
|
|
||||||
* @name CopyToClipboard.handleCopyButtonClick
|
|
||||||
* @private
|
|
||||||
* @function
|
|
||||||
*/
|
|
||||||
function handleCopyButtonClick() {
|
|
||||||
$(copyButton).click(function() {
|
|
||||||
const text = PasteViewer.getText();
|
|
||||||
saveToClipboard(text);
|
|
||||||
|
|
||||||
toggleSuccessIcon();
|
|
||||||
showAlertMessage('Paste copied to clipboard');
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handle copy link to clipboard button click
|
|
||||||
*
|
|
||||||
* @name CopyToClipboard.handleCopyLinkButtonClick
|
|
||||||
* @private
|
|
||||||
* @function
|
|
||||||
*/
|
|
||||||
function handleCopyLinkButtonClick() {
|
|
||||||
$(copyLinkButton).click(function () {
|
|
||||||
saveToClipboard(url);
|
|
||||||
|
|
||||||
showAlertMessage('Link copied to clipboard');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handle CTRL+C/CMD+C keyboard shortcut
|
|
||||||
*
|
|
||||||
* @name CopyToClipboard.handleKeyboardShortcut
|
|
||||||
* @private
|
|
||||||
* @function
|
|
||||||
*/
|
|
||||||
function handleKeyboardShortcut() {
|
|
||||||
$(document).bind('copy', function () {
|
|
||||||
if (!isUserSelectedTextToCopy()) {
|
|
||||||
const text = PasteViewer.getText();
|
|
||||||
saveToClipboard(text);
|
|
||||||
|
|
||||||
showAlertMessage('Paste copied to clipboard');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if user selected some text on the page to copy it
|
|
||||||
*
|
|
||||||
* @name CopyToClipboard.isUserSelectedTextToCopy
|
|
||||||
* @private
|
|
||||||
* @function
|
|
||||||
* @returns {boolean}
|
|
||||||
*/
|
|
||||||
function isUserSelectedTextToCopy() {
|
|
||||||
let text = '';
|
|
||||||
|
|
||||||
if (window.getSelection) {
|
|
||||||
text = window.getSelection().toString();
|
|
||||||
} else if (document.selection && document.selection.type != 'Control') {
|
|
||||||
text = document.selection.createRange().text;
|
|
||||||
}
|
|
||||||
|
|
||||||
return text.length > 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Save text to the clipboard
|
|
||||||
*
|
|
||||||
* @name CopyToClipboard.saveToClipboard
|
|
||||||
* @private
|
|
||||||
* @param {string} text
|
|
||||||
* @function
|
|
||||||
*/
|
|
||||||
function saveToClipboard(text) {
|
|
||||||
navigator.clipboard.writeText(text);
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Show alert message after text copy
|
|
||||||
*
|
|
||||||
* @name CopyToClipboard.showAlertMessage
|
|
||||||
* @private
|
|
||||||
* @param {string} message
|
|
||||||
* @function
|
|
||||||
*/
|
|
||||||
function showAlertMessage(message) {
|
|
||||||
Alert.showStatus(message);
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Toogle success icon after copy
|
|
||||||
*
|
|
||||||
* @name CopyToClipboard.toggleSuccessIcon
|
|
||||||
* @private
|
|
||||||
* @function
|
|
||||||
*/
|
|
||||||
function toggleSuccessIcon() {
|
|
||||||
$(copyIcon).css('display', 'none');
|
|
||||||
$(successIcon).css('display', 'block');
|
|
||||||
|
|
||||||
setTimeout(function() {
|
|
||||||
$(copyIcon).css('display', 'block');
|
|
||||||
$(successIcon).css('display', 'none');
|
|
||||||
}, 1000);
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Show keyboard shortcut hint
|
|
||||||
*
|
|
||||||
* @name CopyToClipboard.showKeyboardShortcutHint
|
|
||||||
* @function
|
|
||||||
*/
|
|
||||||
me.showKeyboardShortcutHint = function () {
|
|
||||||
I18n._(
|
|
||||||
shortcutHint,
|
|
||||||
'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>'
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Hide keyboard shortcut hint
|
|
||||||
*
|
|
||||||
* @name CopyToClipboard.showKeyboardShortcutHint
|
|
||||||
* @function
|
|
||||||
*/
|
|
||||||
me.hideKeyboardShortcutHint = function () {
|
|
||||||
$(shortcutHint).html('');
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set paste url
|
|
||||||
*
|
|
||||||
* @name CopyToClipboard.setUrl
|
|
||||||
* @param {string} newUrl
|
|
||||||
* @function
|
|
||||||
*/
|
|
||||||
me.setUrl = function (newUrl) {
|
|
||||||
url = newUrl;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Initialize
|
|
||||||
*
|
|
||||||
* @name CopyToClipboard.init
|
|
||||||
* @function
|
|
||||||
*/
|
|
||||||
me.init = function() {
|
|
||||||
copyButton = $('#prettyMessageCopyBtn');
|
|
||||||
copyLinkButton = $('#copyLink');
|
|
||||||
copyIcon = $('#copyIcon');
|
|
||||||
successIcon = $('#copySuccessIcon');
|
|
||||||
shortcutHint = $('#copyShortcutHintText');
|
|
||||||
|
|
||||||
handleCopyButtonClick();
|
|
||||||
handleCopyLinkButtonClick();
|
|
||||||
handleKeyboardShortcut();
|
|
||||||
};
|
|
||||||
|
|
||||||
return me;
|
|
||||||
})();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* (controller) main PrivateBin logic
|
* (controller) main PrivateBin logic
|
||||||
*
|
*
|
||||||
@ -5671,7 +5387,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
{
|
{
|
||||||
PasteStatus.hideMessages();
|
PasteStatus.hideMessages();
|
||||||
Alert.hideMessages();
|
Alert.hideMessages();
|
||||||
CopyToClipboard.hideKeyboardShortcutHint();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -5897,7 +5612,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
Prompt.init();
|
Prompt.init();
|
||||||
TopNav.init();
|
TopNav.init();
|
||||||
UiHelper.init();
|
UiHelper.init();
|
||||||
CopyToClipboard.init();
|
|
||||||
|
|
||||||
// check for legacy browsers before going any further
|
// check for legacy browsers before going any further
|
||||||
if (!Legacy.Check.getInit()) {
|
if (!Legacy.Check.getInit()) {
|
||||||
@ -5912,11 +5626,8 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
me.initZ();
|
me.initZ();
|
||||||
|
|
||||||
// if delete token is passed (i.e. paste has been deleted by this
|
// if delete token is passed (i.e. paste has been deleted by this
|
||||||
// access), add an event listener for the 'new' paste button in the alert
|
// access), there is nothing more to do
|
||||||
if (Model.hasDeleteToken()) {
|
if (Model.hasDeleteToken()) {
|
||||||
$("#new-from-alert").on("click", function () {
|
|
||||||
UiHelper.reloadHome();
|
|
||||||
});
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5957,7 +5668,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
ServerInteraction: ServerInteraction,
|
ServerInteraction: ServerInteraction,
|
||||||
PasteEncrypter: PasteEncrypter,
|
PasteEncrypter: PasteEncrypter,
|
||||||
PasteDecrypter: PasteDecrypter,
|
PasteDecrypter: PasteDecrypter,
|
||||||
CopyToClipboard: CopyToClipboard,
|
|
||||||
Controller: Controller
|
Controller: Controller
|
||||||
};
|
};
|
||||||
})(jQuery, RawDeflate);
|
})(jQuery, RawDeflate);
|
||||||
|
2
js/purify-3.1.3.js
Normal file
@ -1,5 +1,5 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
const common = require('../common');
|
var common = require('../common');
|
||||||
|
|
||||||
describe('AttachmentViewer', function () {
|
describe('AttachmentViewer', function () {
|
||||||
describe('setAttachment, showAttachment, removeAttachment, hideAttachment, hideAttachmentPreview, hasAttachment, getAttachment & moveAttachmentTo', function () {
|
describe('setAttachment, showAttachment, removeAttachment, hideAttachment, hideAttachmentPreview, hasAttachment, getAttachment & moveAttachmentTo', function () {
|
||||||
@ -14,12 +14,11 @@ describe('AttachmentViewer', function () {
|
|||||||
'string',
|
'string',
|
||||||
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,' + btoa(rawdata),
|
||||||
mimePrefix = mimeType.substring(0, 6),
|
|
||||||
previewSupported = (
|
previewSupported = (
|
||||||
mimePrefix === 'image/' ||
|
mimeType.substring(0, 6) === 'image/' ||
|
||||||
mimePrefix === 'audio/' ||
|
mimeType.substring(0, 6) === 'audio/' ||
|
||||||
mimePrefix === 'video/' ||
|
mimeType.substring(0, 6) === 'video/' ||
|
||||||
mimeType.match(/\/pdf/i)
|
mimeType.match(/\/pdf/i)
|
||||||
),
|
),
|
||||||
results = [],
|
results = [],
|
||||||
@ -49,7 +48,6 @@ describe('AttachmentViewer', function () {
|
|||||||
$('#attachment').hasClass('hidden') &&
|
$('#attachment').hasClass('hidden') &&
|
||||||
$('#attachmentPreview').hasClass('hidden')
|
$('#attachmentPreview').hasClass('hidden')
|
||||||
);
|
);
|
||||||
global.atob = common.atob;
|
|
||||||
if (filename.length) {
|
if (filename.length) {
|
||||||
$.PrivateBin.AttachmentViewer.setAttachment(data, filename);
|
$.PrivateBin.AttachmentViewer.setAttachment(data, filename);
|
||||||
} else {
|
} else {
|
||||||
|
@ -19,9 +19,10 @@ describe('Check', function () {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
Legacy.Check.init();
|
Legacy.Check.init();
|
||||||
const result = Legacy.Check.getInit() && !Legacy.Check.getStatus();
|
const result1 = Legacy.Check.getInit() && !Legacy.Check.getStatus(),
|
||||||
|
result2 = (document.getElementById('errormessage').className !== 'hidden');
|
||||||
clean();
|
clean();
|
||||||
return result;
|
return result1 && result2;
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
{tests: 10});
|
{tests: 10});
|
||||||
@ -66,10 +67,7 @@ describe('Check', function () {
|
|||||||
'url': (secureProtocol ? 'https' : 'http' ) + '://' + domain.join('') + '/'
|
'url': (secureProtocol ? 'https' : 'http' ) + '://' + domain.join('') + '/'
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
Object.defineProperty(window, 'crypto', {
|
window.crypto = new WebCrypto();
|
||||||
value: new WebCrypto(),
|
|
||||||
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');
|
||||||
|
@ -1,139 +0,0 @@
|
|||||||
'use strict';
|
|
||||||
const common = require('../common');
|
|
||||||
|
|
||||||
describe('CopyToClipboard', function() {
|
|
||||||
this.timeout(30000);
|
|
||||||
|
|
||||||
describe ('Copy paste to clipboard', function () {
|
|
||||||
jsc.property('Copy with button click',
|
|
||||||
common.jscFormats(),
|
|
||||||
'nestring',
|
|
||||||
async function (format, text) {
|
|
||||||
var clean = jsdom();
|
|
||||||
common.enableClipboard();
|
|
||||||
|
|
||||||
$('body').html(
|
|
||||||
'<div id="placeholder" class="hidden">+++ no paste text ' +
|
|
||||||
'+++</div><div id="prettymessage" class="hidden">' +
|
|
||||||
'<button type="button" id="prettyMessageCopyBtn"><svg id="copyIcon"></svg>' +
|
|
||||||
'<svg id="copySuccessIcon"></svg></button><pre ' +
|
|
||||||
'id="prettyprint" class="prettyprint linenums:1"></pre>' +
|
|
||||||
'</div><div id="plaintext" class="hidden"></div>'
|
|
||||||
);
|
|
||||||
|
|
||||||
$.PrivateBin.PasteViewer.init();
|
|
||||||
$.PrivateBin.PasteViewer.setFormat(format);
|
|
||||||
$.PrivateBin.PasteViewer.setText(text);
|
|
||||||
$.PrivateBin.PasteViewer.run();
|
|
||||||
|
|
||||||
$.PrivateBin.CopyToClipboard.init();
|
|
||||||
|
|
||||||
$('#prettyMessageCopyBtn').trigger('click');
|
|
||||||
|
|
||||||
const savedToClipboardText = await navigator.clipboard.readText();
|
|
||||||
|
|
||||||
clean();
|
|
||||||
|
|
||||||
return text === savedToClipboardText;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 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.
|
|
||||||
*/
|
|
||||||
jsc.property('Copy with keyboard shortcut',
|
|
||||||
common.jscFormats(),
|
|
||||||
'nestring',
|
|
||||||
async function (format, text) {
|
|
||||||
var clean = jsdom();
|
|
||||||
common.enableClipboard();
|
|
||||||
|
|
||||||
$('body').html(
|
|
||||||
'<div id="placeholder">+++ no paste text ' +
|
|
||||||
'+++</div><div id="prettymessage" class="hidden">' +
|
|
||||||
'<button type="button" id="prettyMessageCopyBtn"><svg id="copyIcon"></svg>' +
|
|
||||||
'<svg id="copySuccessIcon"></svg></button><pre ' +
|
|
||||||
'id="prettyprint" class="prettyprint linenums:1"></pre>' +
|
|
||||||
'</div><div id="plaintext" class="hidden"></div>'
|
|
||||||
);
|
|
||||||
|
|
||||||
$.PrivateBin.PasteViewer.init();
|
|
||||||
$.PrivateBin.PasteViewer.setFormat(format);
|
|
||||||
$.PrivateBin.PasteViewer.setText(text);
|
|
||||||
$.PrivateBin.PasteViewer.run();
|
|
||||||
|
|
||||||
$.PrivateBin.CopyToClipboard.init();
|
|
||||||
|
|
||||||
$('body').trigger('copy');
|
|
||||||
|
|
||||||
const copiedTextWithoutSelectedText = await navigator.clipboard.readText();
|
|
||||||
|
|
||||||
clean();
|
|
||||||
|
|
||||||
return copiedTextWithoutSelectedText === text;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
jsc.property('Copy link to clipboard',
|
|
||||||
'nestring',
|
|
||||||
async function (text) {
|
|
||||||
var clean = jsdom();
|
|
||||||
common.enableClipboard();
|
|
||||||
|
|
||||||
$('body').html('<button id="copyLink"></button>');
|
|
||||||
|
|
||||||
$.PrivateBin.CopyToClipboard.init();
|
|
||||||
$.PrivateBin.CopyToClipboard.setUrl(text);
|
|
||||||
|
|
||||||
$('#copyLink').trigger('click');
|
|
||||||
|
|
||||||
const copiedText = await navigator.clipboard.readText();
|
|
||||||
|
|
||||||
clean();
|
|
||||||
|
|
||||||
return text === copiedText;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
describe('Keyboard shortcut hint', function () {
|
|
||||||
jsc.property('Show hint',
|
|
||||||
'nestring',
|
|
||||||
function (text) {
|
|
||||||
var clean = jsdom();
|
|
||||||
|
|
||||||
$('body').html('<small id="copyShortcutHintText"></small>');
|
|
||||||
|
|
||||||
$.PrivateBin.CopyToClipboard.init();
|
|
||||||
$.PrivateBin.CopyToClipboard.showKeyboardShortcutHint();
|
|
||||||
|
|
||||||
const keyboardShortcutHint = $('#copyShortcutHintText').text();
|
|
||||||
|
|
||||||
clean();
|
|
||||||
|
|
||||||
return keyboardShortcutHint.length > 0;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
jsc.property('Hide hint',
|
|
||||||
'nestring',
|
|
||||||
function (text) {
|
|
||||||
var clean = jsdom();
|
|
||||||
|
|
||||||
$('body').html('<small id="copyShortcutHintText">' + text + '</small>');
|
|
||||||
|
|
||||||
$.PrivateBin.CopyToClipboard.init();
|
|
||||||
$.PrivateBin.CopyToClipboard.hideKeyboardShortcutHint();
|
|
||||||
|
|
||||||
const keyboardShortcutHint = $('#copyShortcutHintText').text();
|
|
||||||
|
|
||||||
clean();
|
|
||||||
|
|
||||||
return keyboardShortcutHint.length === 0;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
});
|
|
||||||
});
|
|
@ -1,5 +1,5 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
const common = require('../common');
|
require('../common');
|
||||||
|
|
||||||
describe('CryptTool', function () {
|
describe('CryptTool', function () {
|
||||||
describe('cipher & decipher', function () {
|
describe('cipher & decipher', function () {
|
||||||
@ -15,26 +15,21 @@ describe('CryptTool', function () {
|
|||||||
'string',
|
'string',
|
||||||
'string',
|
'string',
|
||||||
async function (key, password, message) {
|
async function (key, password, message) {
|
||||||
const clean = jsdom();
|
// pause to let async functions conclude
|
||||||
|
await new Promise(resolve => setTimeout(resolve, 300));
|
||||||
|
let clean = jsdom();
|
||||||
// ensure zlib is getting loaded
|
// ensure zlib is getting loaded
|
||||||
$.PrivateBin.Controller.initZ();
|
$.PrivateBin.Controller.initZ();
|
||||||
Object.defineProperty(window, 'crypto', {
|
window.crypto = new WebCrypto();
|
||||||
value: new WebCrypto(),
|
|
||||||
writeable: false,
|
|
||||||
});
|
|
||||||
global.atob = common.atob;
|
|
||||||
global.btoa = common.btoa;
|
|
||||||
message = message.trim();
|
message = message.trim();
|
||||||
const cipherMessage = await $.PrivateBin.CryptTool.cipher(
|
let cipherMessage = await $.PrivateBin.CryptTool.cipher(
|
||||||
key, password, message, []
|
key, password, message, []
|
||||||
),
|
),
|
||||||
plaintext = await $.PrivateBin.CryptTool.decipher(
|
plaintext = await $.PrivateBin.CryptTool.decipher(
|
||||||
key, password, cipherMessage
|
key, password, cipherMessage
|
||||||
);
|
);
|
||||||
clean();
|
clean();
|
||||||
const result = (message === plaintext);
|
return message === plaintext;
|
||||||
if (!result) console.log(plaintext, cipherMessage);
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
{tests: 3});
|
{tests: 3});
|
||||||
@ -43,19 +38,15 @@ describe('CryptTool', function () {
|
|||||||
// The below static unit tests are included to ensure deciphering of "classic"
|
// The below static unit tests are included to ensure deciphering of "classic"
|
||||||
// SJCL based pastes still works
|
// SJCL based pastes still works
|
||||||
it(
|
it(
|
||||||
'supports PrivateBin v1 ciphertext with password (SJCL & browser atob)',
|
'supports PrivateBin v1 ciphertext (SJCL & browser atob)',
|
||||||
async function () {
|
function () {
|
||||||
delete global.Base64;
|
delete global.Base64;
|
||||||
const clean = jsdom();
|
let clean = jsdom();
|
||||||
Object.defineProperty(window, 'crypto', {
|
window.crypto = new WebCrypto();
|
||||||
value: new WebCrypto(),
|
|
||||||
writeable: false,
|
|
||||||
});
|
|
||||||
global.atob = common.atob;
|
|
||||||
|
|
||||||
// Of course you can easily decipher the following texts, if you like.
|
// Of course you can easily decipher the following texts, if you like.
|
||||||
// Bonus points for finding their sources and hidden meanings.
|
// Bonus points for finding their sources and hidden meanings.
|
||||||
const paste = await $.PrivateBin.CryptTool.decipher(
|
return $.PrivateBin.CryptTool.decipher(
|
||||||
'6t2qsmLyfXIokNCL+3/yl15rfTUBQvm5SOnFPvNE7Q8=',
|
'6t2qsmLyfXIokNCL+3/yl15rfTUBQvm5SOnFPvNE7Q8=',
|
||||||
// -- "That's amazing. I've got the same combination on my luggage."
|
// -- "That's amazing. I've got the same combination on my luggage."
|
||||||
Array.apply(0, Array(6)).map((_,b) => b + 1).join(''),
|
Array.apply(0, Array(6)).map((_,b) => b + 1).join(''),
|
||||||
@ -86,76 +77,53 @@ describe('CryptTool', function () {
|
|||||||
'QUxMXI5htsn2rf0HxCFu7Po8DNYLxTS+67hYjDIYWYaEIc8LXWMLyDm9' +
|
'QUxMXI5htsn2rf0HxCFu7Po8DNYLxTS+67hYjDIYWYaEIc8LXWMLyDm9' +
|
||||||
'C5fARPJ4F2BIWgzgzkNj+dVjusft2XnziamWdbS5u3kuRlVuz5LQj+R5' +
|
'C5fARPJ4F2BIWgzgzkNj+dVjusft2XnziamWdbS5u3kuRlVuz5LQj+R5' +
|
||||||
'imnqQAincdZTkTT1nYx+DatlOLllCYIHffpI="}'
|
'imnqQAincdZTkTT1nYx+DatlOLllCYIHffpI="}'
|
||||||
);
|
).then(function (paste1) {
|
||||||
clean();
|
$.PrivateBin.CryptTool.decipher(
|
||||||
const result = typeof paste === 'string' && paste.includes('securely packed in iron');
|
's9pmKZKOBN7EVvHpTA8jjLFH3Xlz/0l8lB4+ONPACrM=',
|
||||||
if (!result) console.log(paste);
|
'', // no password
|
||||||
assert.ok(result);
|
'{"iv":"WA42mdxIVXUwBqZu7JYNiw==","v":1,"iter":10000,"ks"' +
|
||||||
}
|
':256,"ts":128,"mode":"gcm","adata":"","cipher":"aes","sa' +
|
||||||
);
|
'lt":"jN6CjbQMJCM=","ct":"kYYMo5DFG1+w0UHiYXT5pdV0IUuXxzO' +
|
||||||
|
'lslkW/c3DRCbGFROCVkAskHce7HoRczee1N9c5MhHjVMJUIZE02qIS8U' +
|
||||||
it(
|
'yHdJ/GqcPVidTUcj9rnDNWsTXkjVv8jCwHS/cwmAjDTWpwp5ThECN+ov' +
|
||||||
'supports PrivateBin v1 ciphertext no password (SJCL & browser atob)',
|
'/wNp/NdtTj8Qj7f/T3rfZIOCWfwLH9s4Des35UNcUidfPTNQ1l0Gm0X+' +
|
||||||
async function () {
|
'r98CCUSYZjQxkZc6hRZBLPQ8EaNVooUwd5eP4GiYlmSDNA0wOSA+5isP' +
|
||||||
delete global.Base64;
|
'YxomVCt+kFf58VBlNhpfNi7BLYAUTPpXT4SfH5drR9+C7NTeZ+tTCYjb' +
|
||||||
const clean = jsdom();
|
'U94PzYItOpu8vgnB1/a6BAM5h3m9w+giUb0df4hgTWeZnZxLjo5BN8WV' +
|
||||||
// ensure zlib is getting loaded
|
'+kdTXMj3/Vv0gw0DQrDcCuX/cBAjpy3lQGwlAN1vXoOIyZJUjMpQRrOL' +
|
||||||
$.PrivateBin.Controller.initZ();
|
'dKvLB+zcmVNtGDbgnfP2IYBzk9NtodpUa27ne0T0ZpwOPlVwevsIVZO2' +
|
||||||
Object.defineProperty(window, 'crypto', {
|
'24WLa+iQmmHOWDFFpVDlS0t0fLfOk7Hcb2xFsTxiCIiyKMho/IME1Du3' +
|
||||||
value: new WebCrypto(),
|
'X4e6BVa3hobSSZv0rRtNgY1KcyYPrUPW2fxZ+oik3y9SgGvb7XpjVIta' +
|
||||||
writeable: false,
|
'8DWlDWRfZ9kzoweWEYqz9IA8Xd373RefpyuWI25zlHoX3nwljzsZU6dC' +
|
||||||
|
'//h/Dt2DNr+IAvKO3+u23cWoB9kgcZJ2FJuqjLvVfCF+OWcig7zs2pTY' +
|
||||||
|
'JW6Rg6lqbBCxiUUlae6xJrjfv0pzD2VYCLY7v1bVTagppwKzNI3WaluC' +
|
||||||
|
'OrdDYUCxUSe56yd1oAoLPRVbYvomRboUO6cjQhEknERyvt45og2kORJO' +
|
||||||
|
'EJayHW+jZgR0Y0jM3Nk17ubpij2gHxNx9kiLDOiCGSV5mn9mV7qd3HHc' +
|
||||||
|
'OMSykiBgbyzjobi96LT2dIGLeDXTIdPOog8wyobO4jWq0GGs0vBB8oSY' +
|
||||||
|
'XhHvixZLcSjX2KQuHmEoWzmJcr3DavdoXZmAurGWLKjzEdJc5dSD/eNr' +
|
||||||
|
'99gjHX7wphJ6umKMM+fn6PcbYJkhDh2GlJL5COXjXfm/5aj/vuyaRRWZ' +
|
||||||
|
'MZtmnYpGAtAPg7AUG"}'
|
||||||
|
).then(function (paste2) {
|
||||||
|
clean();
|
||||||
|
assert.ok(
|
||||||
|
paste1.includes('securely packed in iron') &&
|
||||||
|
paste2.includes('Sol is right')
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
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(
|
it(
|
||||||
'supports ZeroBin ciphertext with password (SJCL & Base64 1.7)',
|
'supports ZeroBin ciphertext (SJCL & Base64 1.7)',
|
||||||
async function () {
|
function () {
|
||||||
global.Base64 = require('../base64-1.7').Base64;
|
global.Base64 = require('../base64-1.7').Base64;
|
||||||
const clean = jsdom();
|
var clean = jsdom();
|
||||||
Object.defineProperty(window, 'crypto', {
|
window.crypto = new WebCrypto();
|
||||||
value: new WebCrypto(),
|
|
||||||
writeable: false,
|
|
||||||
});
|
|
||||||
global.atob = common.atob;
|
|
||||||
|
|
||||||
// Of course you can easily decipher the following texts, if you like.
|
// Of course you can easily decipher the following texts, if you like.
|
||||||
// Bonus points for finding their sources and hidden meanings.
|
// Bonus points for finding their sources and hidden meanings.
|
||||||
const paste = await $.PrivateBin.CryptTool.decipher(
|
return $.PrivateBin.CryptTool.decipher(
|
||||||
'6t2qsmLyfXIokNCL+3/yl15rfTUBQvm5SOnFPvNE7Q8=',
|
'6t2qsmLyfXIokNCL+3/yl15rfTUBQvm5SOnFPvNE7Q8=',
|
||||||
// -- "That's amazing. I've got the same combination on my luggage."
|
// -- "That's amazing. I've got the same combination on my luggage."
|
||||||
Array.apply(0, Array(6)).map((_,b) => b + 1).join(''),
|
Array.apply(0, Array(6)).map((_,b) => b + 1).join(''),
|
||||||
@ -178,74 +146,54 @@ describe('CryptTool', function () {
|
|||||||
'7mNNo7xba/YT9KoPDaniqnYqb+q2pX1WNWE7dLS2wfroMAS3kh8P22DA' +
|
'7mNNo7xba/YT9KoPDaniqnYqb+q2pX1WNWE7dLS2wfroMAS3kh8P22DA' +
|
||||||
'V37AeiNoD2PcI6ZcHbRdPa+XRrRcJhSPPW7UQ0z4OvBfjdu/w390QxAx' +
|
'V37AeiNoD2PcI6ZcHbRdPa+XRrRcJhSPPW7UQ0z4OvBfjdu/w390QxAx' +
|
||||||
'SxvZewoh49fKKB6hTsRnZb4tpHkjlww=="}'
|
'SxvZewoh49fKKB6hTsRnZb4tpHkjlww=="}'
|
||||||
);
|
).then(function (paste1) {
|
||||||
clean();
|
$.PrivateBin.CryptTool.decipher(
|
||||||
delete global.Base64;
|
's9pmKZKOBN7EVvHpTA8jjLFH3Xlz/0l8lB4+ONPACrM=',
|
||||||
const result = typeof paste === 'string' && paste.includes('securely packed in iron');
|
'', // no password
|
||||||
if (!result) console.log(paste);
|
'{"iv":"Z7lAZQbkrqGMvruxoSm6Pw==","v":1,"iter":10000,"ks"' +
|
||||||
assert.ok(result);
|
':256,"ts":128,"mode":"gcm","adata":"","cipher":"aes","sa' +
|
||||||
}
|
'lt":"jN6CjbQMJCM=","ct":"PuOPWB3i2FPcreSrLYeQf84LdE8RHjs' +
|
||||||
);
|
'c+MGtiOr4b7doNyWKYtkNorbRadxaPnEee2/Utrp1MIIfY5juJSy8RGw' +
|
||||||
|
'EPX5ciWcYe6EzsXWznsnvhmpKNj9B7eIIrfSbxfy8E2e/g7xav1nive+' +
|
||||||
it(
|
'ljToka3WT1DZ8ILQd/NbnJeHWaoSEOfvz8+d8QJPb1tNZvs7zEY95Dum' +
|
||||||
'supports ZeroBin ciphertext no password (SJCL & Base64 1.7)',
|
'QwbyOsIMKAvcZHJ9OJNpujXzdMyt6DpcFcqlldWBZ/8q5rAUTw0HNx/r' +
|
||||||
async function () {
|
'CgbhAxRYfNoTLIcMM4L0cXbPSgCjwf5FuO3EdE13mgEDhcClW79m0Qvc' +
|
||||||
global.Base64 = require('../base64-1.7').Base64;
|
'nIh8xgzYoxLbp0+AwvC/MbZM8savN/0ieWr2EKkZ04ggiOIEyvfCUuNp' +
|
||||||
const clean = jsdom();
|
'rQBYO+y8kKduNEN6by0Yf4LRCPfmwN+GezDLuzTnZIMhPbGqUAdgV6Ex' +
|
||||||
Object.defineProperty(window, 'crypto', {
|
'qK2ULEEIrQEMoOuQIxfoMhqLlzG79vXGt2O+BY+4IiYfvmuRLks4UXfy' +
|
||||||
value: new WebCrypto(),
|
'HqxPXTJg48IYbGs0j4TtJPUgp3523EyYLwEGyVTAuWhYAmVIwd/hoV7d' +
|
||||||
writeable: false,
|
'7tmfcF73w9dufDFI3LNca2KxzBnWNPYvIZKBwWbq8ncxkb191dP6mjEi' +
|
||||||
|
'7NnhqVk5A6vIBbu4AC5PZf76l6yep4xsoy/QtdDxCMocCXeAML9MQ9uP' +
|
||||||
|
'QbuspOKrBvMfN5igA1kBqasnxI472KBNXsdZnaDddSVUuvhTcETM="}'
|
||||||
|
).then(function (paste2) {
|
||||||
|
clean();
|
||||||
|
delete global.Base64;
|
||||||
|
assert.ok(
|
||||||
|
paste1.includes('securely packed in iron') &&
|
||||||
|
paste2.includes('Sol is right')
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
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(),
|
let message = fs.readFileSync('test/compression-sample.txt', 'utf8'),
|
||||||
clean = jsdom();
|
clean = jsdom();
|
||||||
Object.defineProperty(window, 'crypto', {
|
window.crypto = new WebCrypto();
|
||||||
value: new WebCrypto(),
|
|
||||||
writeable: false,
|
|
||||||
});
|
|
||||||
// ensure zlib is getting loaded
|
// ensure zlib is getting loaded
|
||||||
$.PrivateBin.Controller.initZ();
|
$.PrivateBin.Controller.initZ();
|
||||||
global.atob = common.atob;
|
let cipherMessage = await $.PrivateBin.CryptTool.cipher(
|
||||||
global.btoa = common.btoa;
|
|
||||||
const cipherMessage = await $.PrivateBin.CryptTool.cipher(
|
|
||||||
'foo', 'bar', message, []
|
'foo', 'bar', message, []
|
||||||
),
|
),
|
||||||
plaintext = await $.PrivateBin.CryptTool.decipher(
|
plaintext = await $.PrivateBin.CryptTool.decipher(
|
||||||
'foo', 'bar', cipherMessage
|
'foo', 'bar', cipherMessage
|
||||||
);
|
);
|
||||||
clean();
|
clean();
|
||||||
const result = (message === plaintext);
|
assert.strictEqual(
|
||||||
if (!result) console.log(plaintext, cipherMessage);
|
message,
|
||||||
assert.ok(result);
|
plaintext
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('can en- and decrypt a particular message (#260)', function () {
|
it('can en- and decrypt a particular message (#260)', function () {
|
||||||
@ -253,6 +201,8 @@ describe('CryptTool', function () {
|
|||||||
'string',
|
'string',
|
||||||
'string',
|
'string',
|
||||||
async function (key, password) {
|
async function (key, password) {
|
||||||
|
// pause to let async functions conclude
|
||||||
|
await new Promise(resolve => setTimeout(resolve, 300));
|
||||||
const message = `
|
const message = `
|
||||||
1 subgoal
|
1 subgoal
|
||||||
|
|
||||||
@ -275,23 +225,18 @@ isWhile : interp (while expr sBody) (MemElem mem) =
|
|||||||
======================== ( 1 / 1 )
|
======================== ( 1 / 1 )
|
||||||
conseq_or_bottom inv (interp (nth_iterate sBody n) (MemElem mem))
|
conseq_or_bottom inv (interp (nth_iterate sBody n) (MemElem mem))
|
||||||
`;
|
`;
|
||||||
const clean = jsdom();
|
let clean = jsdom();
|
||||||
// ensure zlib is getting loaded
|
// ensure zlib is getting loaded
|
||||||
$.PrivateBin.Controller.initZ();
|
$.PrivateBin.Controller.initZ();
|
||||||
Object.defineProperty(window, 'crypto', {
|
window.crypto = new WebCrypto();
|
||||||
value: new WebCrypto(),
|
let cipherMessage = await $.PrivateBin.CryptTool.cipher(
|
||||||
writeable: false,
|
|
||||||
});
|
|
||||||
const cipherMessage = await $.PrivateBin.CryptTool.cipher(
|
|
||||||
key, password, message, []
|
key, password, message, []
|
||||||
),
|
),
|
||||||
plaintext = await $.PrivateBin.CryptTool.decipher(
|
plaintext = await $.PrivateBin.CryptTool.decipher(
|
||||||
key, password, cipherMessage
|
key, password, cipherMessage
|
||||||
);
|
);
|
||||||
clean();
|
clean();
|
||||||
const result = (message === plaintext);
|
return message === plaintext;
|
||||||
if (!result) console.log(plaintext, cipherMessage);
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
{tests: 3});
|
{tests: 3});
|
||||||
@ -299,27 +244,23 @@ conseq_or_bottom inv (interp (nth_iterate sBody n) (MemElem mem))
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('getSymmetricKey', function () {
|
describe('getSymmetricKey', function () {
|
||||||
this.timeout(10000);
|
this.timeout(30000);
|
||||||
let keys = [];
|
var keys = [];
|
||||||
|
|
||||||
// the parameter is used to ensure the test is run more then one time
|
// the parameter is used to ensure the test is run more then one time
|
||||||
it('returns random, non-empty keys', function () {
|
jsc.property(
|
||||||
jsc.assert(jsc.forall(
|
'returns random, non-empty keys',
|
||||||
'integer',
|
'integer',
|
||||||
function(counter) {
|
function(counter) {
|
||||||
const clean = jsdom();
|
var clean = jsdom();
|
||||||
Object.defineProperty(window, 'crypto', {
|
window.crypto = new WebCrypto();
|
||||||
value: new WebCrypto(),
|
var key = $.PrivateBin.CryptTool.getSymmetricKey(),
|
||||||
writeable: false,
|
result = (key !== '' && keys.indexOf(key) === -1);
|
||||||
});
|
keys.push(key);
|
||||||
const key = $.PrivateBin.CryptTool.getSymmetricKey(),
|
clean();
|
||||||
result = (key !== '' && keys.indexOf(key) === -1);
|
return result;
|
||||||
keys.push(key);
|
}
|
||||||
clean();
|
);
|
||||||
return result;
|
|
||||||
}
|
|
||||||
),
|
|
||||||
{tests: 10});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -229,30 +229,30 @@ describe('Helper', function () {
|
|||||||
cleanup();
|
cleanup();
|
||||||
});
|
});
|
||||||
|
|
||||||
/* TODO test fails since jsDOM version 17 - document.cookie remains empty
|
|
||||||
jsc.property(
|
jsc.property(
|
||||||
'returns the requested cookie',
|
'returns the requested cookie',
|
||||||
jsc.nearray(jsc.nearray(common.jscAlnumString())),
|
jsc.nearray(jsc.nearray(common.jscAlnumString())),
|
||||||
jsc.nearray(jsc.nearray(common.jscAlnumString())),
|
jsc.nearray(jsc.nearray(common.jscAlnumString())),
|
||||||
function (labels, values) {
|
function (labels, values) {
|
||||||
let selectedKey = '', selectedValue = '';
|
var selectedKey = '', selectedValue = '',
|
||||||
const clean = jsdom();
|
cookieArray = [];
|
||||||
labels.forEach(function(item, i) {
|
labels.forEach(function(item, i) {
|
||||||
const key = item.join(''),
|
var key = item.join(''),
|
||||||
value = (values[i] || values[0]).join('');
|
value = (values[i] || values[0]).join('');
|
||||||
document.cookie = key + '=' + value;
|
cookieArray.push(key + '=' + value);
|
||||||
if (Math.random() < 1 / i || selectedKey === key)
|
if (Math.random() < 1 / i || selectedKey === key)
|
||||||
{
|
{
|
||||||
selectedKey = key;
|
selectedKey = key;
|
||||||
selectedValue = value;
|
selectedValue = value;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
const result = $.PrivateBin.Helper.getCookie(selectedKey);
|
var clean = jsdom('', {cookie: cookieArray}),
|
||||||
|
result = $.PrivateBin.Helper.getCookie(selectedKey);
|
||||||
$.PrivateBin.Helper.reset();
|
$.PrivateBin.Helper.reset();
|
||||||
clean();
|
clean();
|
||||||
return result === selectedValue;
|
return result === selectedValue;
|
||||||
}
|
}
|
||||||
); */
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('baseUri', function () {
|
describe('baseUri', function () {
|
||||||
|
@ -94,6 +94,7 @@ describe('Model', function () {
|
|||||||
url.query = queryStart.concat(pasteId, queryEnd);
|
url.query = queryStart.concat(pasteId, queryEnd);
|
||||||
const pasteIdString = pasteId.join(''),
|
const pasteIdString = pasteId.join(''),
|
||||||
clean = jsdom('', {url: common.urlToString(url)});
|
clean = jsdom('', {url: common.urlToString(url)});
|
||||||
|
global.URL = require('jsdom-url').URL;
|
||||||
const result = $.PrivateBin.Model.getPasteId();
|
const result = $.PrivateBin.Model.getPasteId();
|
||||||
$.PrivateBin.Model.reset();
|
$.PrivateBin.Model.reset();
|
||||||
clean();
|
clean();
|
||||||
@ -106,6 +107,7 @@ describe('Model', function () {
|
|||||||
function (url) {
|
function (url) {
|
||||||
let clean = jsdom('', {url: common.urlToString(url)}),
|
let clean = jsdom('', {url: common.urlToString(url)}),
|
||||||
result = false;
|
result = false;
|
||||||
|
global.URL = require('jsdom-url').URL;
|
||||||
try {
|
try {
|
||||||
$.PrivateBin.Model.getPasteId();
|
$.PrivateBin.Model.getPasteId();
|
||||||
}
|
}
|
||||||
@ -129,7 +131,7 @@ describe('Model', function () {
|
|||||||
'returns the fragment of a v1 URL',
|
'returns the fragment of a v1 URL',
|
||||||
common.jscUrl(),
|
common.jscUrl(),
|
||||||
function (url) {
|
function (url) {
|
||||||
url.fragment = '0OIl'; // any non-base58 string
|
url.fragment = common.btoa(url.fragment.padStart(32, '\u0000'));
|
||||||
const clean = jsdom('', {url: common.urlToString(url)}),
|
const clean = jsdom('', {url: common.urlToString(url)}),
|
||||||
result = $.PrivateBin.Model.getPasteKey();
|
result = $.PrivateBin.Model.getPasteKey();
|
||||||
$.PrivateBin.Model.reset();
|
$.PrivateBin.Model.reset();
|
||||||
@ -138,17 +140,17 @@ describe('Model', function () {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
jsc.property(
|
jsc.property(
|
||||||
'returns the fragment stripped of trailing query parts',
|
'returns the v1 fragment stripped of trailing query parts',
|
||||||
common.jscUrl(),
|
common.jscUrl(),
|
||||||
jsc.array(common.jscHashString()),
|
jsc.array(common.jscHashString()),
|
||||||
function (url, trail) {
|
function (url, trail) {
|
||||||
const fragment = url.fragment.padStart(32, '\u0000');
|
const fragmentString = common.btoa(url.fragment.padStart(32, '\u0000'));
|
||||||
url.fragment = $.PrivateBin.CryptTool.base58encode(fragment) + '&' + trail.join('');
|
url.fragment = fragmentString + '&' + trail.join('');
|
||||||
const clean = jsdom('', {url: common.urlToString(url)}),
|
const clean = jsdom('', {url: common.urlToString(url)}),
|
||||||
result = $.PrivateBin.Model.getPasteKey();
|
result = $.PrivateBin.Model.getPasteKey();
|
||||||
$.PrivateBin.Model.reset();
|
$.PrivateBin.Model.reset();
|
||||||
clean();
|
clean();
|
||||||
return fragment === result;
|
return fragmentString === result;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
jsc.property(
|
jsc.property(
|
||||||
|
@ -30,11 +30,11 @@ describe('PasteStatus', function () {
|
|||||||
const expected1 = common.urlToString(url1).replace(/&(gt|lt)$/, '&$1a'),
|
const expected1 = common.urlToString(url1).replace(/&(gt|lt)$/, '&$1a'),
|
||||||
expected2 = common.urlToString(url2).replace(/&(gt|lt)$/, '&$1a'),
|
expected2 = common.urlToString(url2).replace(/&(gt|lt)$/, '&$1a'),
|
||||||
clean = jsdom();
|
clean = jsdom();
|
||||||
$('body').html('<a href="#" id="deletelink"><span></span></a><div id="pastelink"></div>');
|
$('body').html('<div><div id="deletelink"></div><div id="pastelink"></div></div>');
|
||||||
$.PrivateBin.PasteStatus.init();
|
$.PrivateBin.PasteStatus.init();
|
||||||
$.PrivateBin.PasteStatus.createPasteNotification(expected1, expected2);
|
$.PrivateBin.PasteStatus.createPasteNotification(expected1, expected2);
|
||||||
const result1 = $('#pasteurl')[0].href,
|
const result1 = $('#pasteurl')[0].href,
|
||||||
result2 = $('#deletelink')[0].href;
|
result2 = $('#deletelink a')[0].href;
|
||||||
clean();
|
clean();
|
||||||
return result1 === expected1 && result2 === expected2;
|
return result1 === expected1 && result2 === expected2;
|
||||||
}
|
}
|
||||||
@ -155,7 +155,7 @@ describe('PasteStatus', function () {
|
|||||||
'\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 paste is <a id="pasteurl" href="' + shortUrlString + '">' + shortUrlString + '</a> <span id="copyhint">(Hit [Ctrl]+[c] to copy)</span></p>\n' +
|
||||||
'\t</body>\n' +
|
'\t</body>\n' +
|
||||||
'</html>',
|
'</html>',
|
||||||
clean = jsdom();
|
clean = jsdom();
|
||||||
@ -255,3 +255,4 @@ describe('PasteStatus', function () {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ describe('Prompt', function () {
|
|||||||
'returns the password fed into the dialog',
|
'returns the password fed into the dialog',
|
||||||
'string',
|
'string',
|
||||||
function (password) {
|
function (password) {
|
||||||
password = password.replace(/\r+|\n+/g, '');
|
password = password.replace(/\r+/g, '');
|
||||||
var clean = jsdom('', {url: 'ftp://example.com/?0000000000000000'});
|
var 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">' +
|
||||||
@ -32,8 +32,7 @@ describe('Prompt', function () {
|
|||||||
//var result = $.PrivateBin.Prompt.getPassword();
|
//var result = $.PrivateBin.Prompt.getPassword();
|
||||||
var result = $('#passworddecrypt').val();
|
var result = $('#passworddecrypt').val();
|
||||||
$.PrivateBin.Model.reset();
|
$.PrivateBin.Model.reset();
|
||||||
// TODO triggers error messages in jsDOM since version 11
|
clean();
|
||||||
//clean();
|
|
||||||
return result === password;
|
return result === password;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -621,7 +621,7 @@ describe('TopNav', function () {
|
|||||||
'returns the contents of the password input',
|
'returns the contents of the password input',
|
||||||
'string',
|
'string',
|
||||||
function (password) {
|
function (password) {
|
||||||
password = password.replace(/\r+|\n+/g, '');
|
password = password.replace(/\r+/g, '');
|
||||||
var results = [];
|
var results = [];
|
||||||
$('body').html(
|
$('body').html(
|
||||||
'<nav><div id="navbar"><ul><li><div id="password" ' +
|
'<nav><div id="navbar"><ul><li><div id="password" ' +
|
||||||
@ -727,11 +727,11 @@ describe('TopNav', function () {
|
|||||||
cleanup();
|
cleanup();
|
||||||
});
|
});
|
||||||
|
|
||||||
// TODO triggers error messages in jsDOM since version 12, but passes
|
|
||||||
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#0'});
|
||||||
|
global.URL = require('jsdom-url').URL;
|
||||||
$('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);
|
||||||
|
@ -18,6 +18,11 @@ describe('UiHelper', function () {
|
|||||||
const expected = common.urlToString(url),
|
const expected = common.urlToString(url),
|
||||||
clean = jsdom('', {url: expected});
|
clean = jsdom('', {url: expected});
|
||||||
|
|
||||||
|
// make window.location.href writable
|
||||||
|
Object.defineProperty(window.location, 'href', {
|
||||||
|
writable: true,
|
||||||
|
value: window.location.href
|
||||||
|
});
|
||||||
$.PrivateBin.UiHelper.mockHistoryChange();
|
$.PrivateBin.UiHelper.mockHistoryChange();
|
||||||
$.PrivateBin.Helper.reset();
|
$.PrivateBin.Helper.reset();
|
||||||
var result = window.location.href;
|
var result = window.location.href;
|
||||||
@ -35,6 +40,11 @@ describe('UiHelper', function () {
|
|||||||
const expected = common.urlToString(url),
|
const expected = common.urlToString(url),
|
||||||
clean = jsdom('', {url: expected});
|
clean = jsdom('', {url: expected});
|
||||||
|
|
||||||
|
// make window.location.href writable
|
||||||
|
Object.defineProperty(window.location, 'href', {
|
||||||
|
writable: true,
|
||||||
|
value: window.location.href
|
||||||
|
});
|
||||||
$.PrivateBin.UiHelper.mockHistoryChange([
|
$.PrivateBin.UiHelper.mockHistoryChange([
|
||||||
{type: 'newpaste'}, '', expected
|
{type: 'newpaste'}, '', expected
|
||||||
]);
|
]);
|
||||||
@ -47,8 +57,6 @@ describe('UiHelper', function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('reloadHome', function () {
|
describe('reloadHome', function () {
|
||||||
// TODO triggers error messages in jsDOM since version 11
|
|
||||||
/*
|
|
||||||
this.timeout(30000);
|
this.timeout(30000);
|
||||||
before(function () {
|
before(function () {
|
||||||
$.PrivateBin.Helper.reset();
|
$.PrivateBin.Helper.reset();
|
||||||
@ -63,6 +71,11 @@ describe('UiHelper', function () {
|
|||||||
delete(url.fragment);
|
delete(url.fragment);
|
||||||
const expected = common.urlToString(url);
|
const expected = common.urlToString(url);
|
||||||
|
|
||||||
|
// make window.location.href writable
|
||||||
|
Object.defineProperty(window.location, 'href', {
|
||||||
|
writable: true,
|
||||||
|
value: window.location.href
|
||||||
|
});
|
||||||
$.PrivateBin.UiHelper.reloadHome();
|
$.PrivateBin.UiHelper.reloadHome();
|
||||||
$.PrivateBin.Helper.reset();
|
$.PrivateBin.Helper.reset();
|
||||||
var result = window.location.href;
|
var result = window.location.href;
|
||||||
@ -70,7 +83,6 @@ describe('UiHelper', function () {
|
|||||||
return expected === result;
|
return expected === result;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
*/
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('isVisible', function () {
|
describe('isVisible', function () {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
(function () {
|
(function() {
|
||||||
let ret;
|
let ret;
|
||||||
|
|
||||||
async function initialize() {
|
async function initialize() {
|
||||||
@ -23,7 +23,16 @@
|
|||||||
_abort: errno => { console.error(`Error: ${errno}`) },
|
_abort: errno => { console.error(`Error: ${errno}`) },
|
||||||
_grow: () => { },
|
_grow: () => { },
|
||||||
};
|
};
|
||||||
const ins = (await WebAssembly.instantiateStreaming(fetch('js/zlib-1.3.1.wasm'), { env })).instance;
|
|
||||||
|
let buff;
|
||||||
|
if (typeof fs === 'object') {
|
||||||
|
buff = fs.readFileSync('zlib-1.3.1.wasm');
|
||||||
|
} else {
|
||||||
|
const resp = await fetch('js/zlib-1.3.1.wasm');
|
||||||
|
buff = await resp.arrayBuffer();
|
||||||
|
}
|
||||||
|
const module = await WebAssembly.compile(buff);
|
||||||
|
const ins = await WebAssembly.instantiate(module, { env });
|
||||||
|
|
||||||
const srcPtr = ins.exports._malloc(CHUNK_SIZE);
|
const srcPtr = ins.exports._malloc(CHUNK_SIZE);
|
||||||
const dstPtr = ins.exports._malloc(CHUNK_SIZE);
|
const dstPtr = ins.exports._malloc(CHUNK_SIZE);
|
||||||
@ -107,28 +116,28 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
ret = {
|
ret = {
|
||||||
inflate(rawDeflateBuffer) {
|
inflate(rawDeflateBuffer) {
|
||||||
const rawInf = new RawInf();
|
const rawInf = new RawInf();
|
||||||
for (let offset = 0; offset < rawDeflateBuffer.length; offset += CHUNK_SIZE) {
|
for (let offset = 0; offset < rawDeflateBuffer.length; offset += CHUNK_SIZE) {
|
||||||
const end = Math.min(offset + CHUNK_SIZE, rawDeflateBuffer.length);
|
const end = Math.min(offset + CHUNK_SIZE, rawDeflateBuffer.length);
|
||||||
const chunk = rawDeflateBuffer.subarray(offset, end);
|
const chunk = rawDeflateBuffer.subarray(offset, end);
|
||||||
rawInf.inflate(chunk);
|
rawInf.inflate(chunk);
|
||||||
}
|
}
|
||||||
const ret = rawInf.getBuffer();
|
const ret = rawInf.getBuffer();
|
||||||
rawInf.destroy();
|
rawInf.destroy();
|
||||||
return ret;
|
return ret;
|
||||||
},
|
},
|
||||||
deflate(rawInflateBuffer) {
|
deflate(rawInflateBuffer) {
|
||||||
const rawDef = new RawDef();
|
const rawDef = new RawDef();
|
||||||
for (let offset = 0; offset < rawInflateBuffer.length; offset += CHUNK_SIZE) {
|
for (let offset = 0; offset < rawInflateBuffer.length; offset += CHUNK_SIZE) {
|
||||||
const end = Math.min(offset + CHUNK_SIZE, rawInflateBuffer.length);
|
const end = Math.min(offset + CHUNK_SIZE, rawInflateBuffer.length);
|
||||||
const chunk = rawInflateBuffer.subarray(offset, end);
|
const chunk = rawInflateBuffer.subarray(offset, end);
|
||||||
rawDef.deflate(chunk, rawInflateBuffer.length <= offset + CHUNK_SIZE);
|
rawDef.deflate(chunk, rawInflateBuffer.length <= offset + CHUNK_SIZE);
|
||||||
}
|
}
|
||||||
const ret = rawDef.getBuffer();
|
const ret = rawDef.getBuffer();
|
||||||
rawDef.destroy();
|
rawDef.destroy();
|
||||||
return ret;
|
return ret;
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
namespace PrivateBin;
|
namespace PrivateBin;
|
||||||
|
|
||||||
use Exception;
|
use Exception;
|
||||||
|
use PDO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configuration
|
* Configuration
|
||||||
@ -45,18 +46,7 @@ class Configuration
|
|||||||
'defaultformatter' => 'plaintext',
|
'defaultformatter' => 'plaintext',
|
||||||
'syntaxhighlightingtheme' => '',
|
'syntaxhighlightingtheme' => '',
|
||||||
'sizelimit' => 10485760,
|
'sizelimit' => 10485760,
|
||||||
'templateselection' => false,
|
|
||||||
'template' => 'bootstrap',
|
'template' => 'bootstrap',
|
||||||
'availabletemplates' => array(
|
|
||||||
'bootstrap5',
|
|
||||||
'bootstrap',
|
|
||||||
'bootstrap-page',
|
|
||||||
'bootstrap-dark',
|
|
||||||
'bootstrap-dark-page',
|
|
||||||
'bootstrap-compact',
|
|
||||||
'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,
|
||||||
@ -65,7 +55,7 @@ class Configuration
|
|||||||
'qrcode' => true,
|
'qrcode' => true,
|
||||||
'email' => true,
|
'email' => true,
|
||||||
'icon' => 'identicon',
|
'icon' => 'identicon',
|
||||||
'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\'; 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\' \'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',
|
||||||
'zerobincompatibility' => false,
|
'zerobincompatibility' => false,
|
||||||
'httpwarning' => true,
|
'httpwarning' => true,
|
||||||
'compression' => 'zlib',
|
'compression' => 'zlib',
|
||||||
@ -108,23 +98,6 @@ class Configuration
|
|||||||
'signature' => '',
|
'signature' => '',
|
||||||
'apiurl' => '',
|
'apiurl' => '',
|
||||||
),
|
),
|
||||||
// update this array when adding/changing/removing js files
|
|
||||||
'sri' => array(
|
|
||||||
'js/base-x-4.0.0.js' => 'sha512-nNPg5IGCwwrveZ8cA/yMGr5HiRS5Ps2H+s0J/mKTPjCPWUgFGGw7M5nqdnPD3VsRwCVysUh3Y8OWjeSKGkEQJQ==',
|
|
||||||
'js/base64-1.7.js' => 'sha512-JdwsSP3GyHR+jaCkns9CL9NTt4JUJqm/BsODGmYhBcj5EAPKcHYh+OiMfyHbcDLECe17TL0hjXADFkusAqiYgA==',
|
|
||||||
'js/bootstrap-3.4.1.js' => 'sha512-oBTprMeNEKCnqfuqKd6sbvFzmFQtlXS3e0C/RGFV0hD6QzhHV+ODfaQbAlmY6/q0ubbwlAM/nCJjkrgA3waLzg==',
|
|
||||||
'js/bootstrap-5.3.3.js' => 'sha512-in2rcOpLTdJ7/pw5qjF4LWHFRtgoBDxXCy49H4YGOcVdGiPaQucGIbOqxt1JvmpvOpq3J/C7VTa0FlioakB2gQ==',
|
|
||||||
'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/kjua-0.9.0.js' => 'sha512-CVn7af+vTMBd9RjoS4QM5fpLFEOtBCoB0zPtaqIDC7sF4F8qgUSRFQQpIyEDGsr6yrjbuOLzdf20tkHHmpaqwQ==',
|
|
||||||
'js/legacy.js' => 'sha512-UxW/TOZKon83n6dk/09GsYKIyeO5LeBHokxyIq+r7KFS5KMBeIB/EM7NrkVYIezwZBaovnyNtY2d9tKFicRlXg==',
|
|
||||||
'js/prettify.js' => 'sha512-puO0Ogy++IoA2Pb9IjSxV1n4+kQkKXYAEUtVzfZpQepyDPyXk8hokiYDS7ybMogYlyyEIwMLpZqVhCkARQWLMg==',
|
|
||||||
'js/privatebin.js' => 'sha512-yN0ZaVFrXpiYaeFRcofdCrlHVcw4ZJAXU3K1l6H9rsoY//iLKegX0GdWxRCFWzhd1xO4eDJKCT7qyaA1Vt65bg==',
|
|
||||||
'js/purify-3.2.5.js' => 'sha512-eLlLLL/zYuf5JuG0x4WQm687MToqOGP9cDQHIdmOy1ZpjiY4J48BBcOM7DtZheKk1UogW920+9RslWYB4KGuuA==',
|
|
||||||
'js/rawinflate-0.3.js' => 'sha512-g8uelGgJW9A/Z1tB6Izxab++oj5kdD7B4qC7DHwZkB6DGMXKyzx7v5mvap2HXueI2IIn08YlRYM56jwWdm2ucQ==',
|
|
||||||
'js/showdown-2.1.0.js' => 'sha512-WYXZgkTR0u/Y9SVIA4nTTOih0kXMEd8RRV6MLFdL6YU8ymhR528NLlYQt1nlJQbYz4EW+ZsS0fx1awhiQJme1Q==',
|
|
||||||
'js/zlib-1.3.1.js' => 'sha512-5bU9IIP4PgBrOKLZvGWJD4kgfQrkTz8Z3Iqeu058mbQzW3mCumOU6M3UVbVZU9rrVoVwaW4cZK8U8h5xjF88eQ==',
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -176,7 +149,7 @@ class Configuration
|
|||||||
'tbl' => null,
|
'tbl' => null,
|
||||||
'usr' => null,
|
'usr' => null,
|
||||||
'pwd' => null,
|
'pwd' => null,
|
||||||
'opt' => array(),
|
'opt' => array(PDO::ATTR_PERSISTENT => true),
|
||||||
);
|
);
|
||||||
} elseif (
|
} elseif (
|
||||||
$section == 'model_options' && in_array(
|
$section == 'model_options' && in_array(
|
||||||
@ -220,10 +193,6 @@ class Configuration
|
|||||||
}
|
}
|
||||||
// check for missing keys and set defaults if necessary
|
// check for missing keys and set defaults if necessary
|
||||||
else {
|
else {
|
||||||
// preserve configured SRI hashes
|
|
||||||
if ($section == 'sri' && array_key_exists($section, $config)) {
|
|
||||||
$this->_configuration[$section] = $config[$section];
|
|
||||||
}
|
|
||||||
foreach ($values as $key => $val) {
|
foreach ($values as $key => $val) {
|
||||||
if ($key == 'dir') {
|
if ($key == 'dir') {
|
||||||
$val = PATH . $val;
|
$val = PATH . $val;
|
||||||
@ -245,8 +214,6 @@ class Configuration
|
|||||||
$result = (int) $config[$section][$key];
|
$result = (int) $config[$section][$key];
|
||||||
} elseif (is_string($val) && !empty($config[$section][$key])) {
|
} elseif (is_string($val) && !empty($config[$section][$key])) {
|
||||||
$result = (string) $config[$section][$key];
|
$result = (string) $config[$section][$key];
|
||||||
} elseif (is_array($val) && is_array($config[$section][$key])) {
|
|
||||||
$result = $config[$section][$key];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$this->_configuration[$section][$key] = $result;
|
$this->_configuration[$section][$key] = $result;
|
||||||
|
@ -27,7 +27,7 @@ class Controller
|
|||||||
*
|
*
|
||||||
* @const string
|
* @const string
|
||||||
*/
|
*/
|
||||||
const VERSION = '1.7.6';
|
const VERSION = '1.7.4';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* minimal required PHP version
|
* minimal required PHP version
|
||||||
@ -67,14 +67,6 @@ class Controller
|
|||||||
*/
|
*/
|
||||||
private $_status = '';
|
private $_status = '';
|
||||||
|
|
||||||
/**
|
|
||||||
* status message
|
|
||||||
*
|
|
||||||
* @access private
|
|
||||||
* @var bool
|
|
||||||
*/
|
|
||||||
private $_is_deleted = false;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JSON message
|
* JSON message
|
||||||
*
|
*
|
||||||
@ -112,12 +104,10 @@ class Controller
|
|||||||
*
|
*
|
||||||
* initializes and runs PrivateBin
|
* initializes and runs PrivateBin
|
||||||
*
|
*
|
||||||
* @param ?Configuration $config
|
|
||||||
*
|
|
||||||
* @access public
|
* @access public
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function __construct(?Configuration $config = null)
|
public function __construct()
|
||||||
{
|
{
|
||||||
if (version_compare(PHP_VERSION, self::MIN_PHP_VERSION) < 0) {
|
if (version_compare(PHP_VERSION, self::MIN_PHP_VERSION) < 0) {
|
||||||
error_log(I18n::_('%s requires php %s or above to work. Sorry.', I18n::_('PrivateBin'), self::MIN_PHP_VERSION));
|
error_log(I18n::_('%s requires php %s or above to work. Sorry.', I18n::_('PrivateBin'), self::MIN_PHP_VERSION));
|
||||||
@ -128,8 +118,7 @@ class Controller
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// load config (using ini file by default) & initialize required classes
|
// load config from ini file, initialize required classes
|
||||||
$this->_conf = $config ?? new Configuration();
|
|
||||||
$this->_init();
|
$this->_init();
|
||||||
|
|
||||||
switch ($this->_request->getOperation()) {
|
switch ($this->_request->getOperation()) {
|
||||||
@ -177,21 +166,12 @@ class Controller
|
|||||||
*/
|
*/
|
||||||
private function _init()
|
private function _init()
|
||||||
{
|
{
|
||||||
|
$this->_conf = new Configuration;
|
||||||
$this->_model = new Model($this->_conf);
|
$this->_model = new Model($this->_conf);
|
||||||
$this->_request = new Request;
|
$this->_request = new Request;
|
||||||
$this->_urlBase = $this->_request->getRequestUri();
|
$this->_urlBase = $this->_request->getRequestUri();
|
||||||
|
|
||||||
$this->_setDefaultLanguage();
|
// set default language
|
||||||
$this->_setDefaultTemplate();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set default language
|
|
||||||
*
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
private function _setDefaultLanguage()
|
|
||||||
{
|
|
||||||
$lang = $this->_conf->getKey('languagedefault');
|
$lang = $this->_conf->getKey('languagedefault');
|
||||||
I18n::setLanguageFallback($lang);
|
I18n::setLanguageFallback($lang);
|
||||||
// force default language, if language selection is disabled and a default is set
|
// force default language, if language selection is disabled and a default is set
|
||||||
@ -201,25 +181,6 @@ class Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Set default template
|
|
||||||
*
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
private function _setDefaultTemplate()
|
|
||||||
{
|
|
||||||
$templates = $this->_conf->getKey('availabletemplates');
|
|
||||||
$template = $this->_conf->getKey('template');
|
|
||||||
TemplateSwitcher::setAvailableTemplates($templates);
|
|
||||||
TemplateSwitcher::setTemplateFallback($template);
|
|
||||||
|
|
||||||
// force default template, if template selection is disabled and a default is set
|
|
||||||
if (!$this->_conf->getKey('templateselection') && !empty($template)) {
|
|
||||||
$_COOKIE['template'] = $template;
|
|
||||||
setcookie('template', $template, array('SameSite' => 'Lax', 'Secure' => true));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Turn off browser caching
|
* Turn off browser caching
|
||||||
*
|
*
|
||||||
@ -347,8 +308,7 @@ class Controller
|
|||||||
if (hash_equals($paste->getDeleteToken(), $deletetoken)) {
|
if (hash_equals($paste->getDeleteToken(), $deletetoken)) {
|
||||||
// Paste exists and deletion token is valid: Delete the paste.
|
// Paste exists and deletion token is valid: Delete the paste.
|
||||||
$paste->delete();
|
$paste->delete();
|
||||||
$this->_status = 'Paste was properly deleted.';
|
$this->_status = 'Paste was properly deleted.';
|
||||||
$this->_is_deleted = true;
|
|
||||||
} else {
|
} else {
|
||||||
$this->_error = 'Wrong deletion token. Paste was not deleted.';
|
$this->_error = 'Wrong deletion token. Paste was not deleted.';
|
||||||
}
|
}
|
||||||
@ -431,13 +391,6 @@ class Controller
|
|||||||
setcookie('lang', $languageselection, array('SameSite' => 'Lax', 'Secure' => true));
|
setcookie('lang', $languageselection, array('SameSite' => 'Lax', 'Secure' => true));
|
||||||
}
|
}
|
||||||
|
|
||||||
// set template cookie if that functionality was enabled
|
|
||||||
$templateselection = '';
|
|
||||||
if ($this->_conf->getKey('templateselection')) {
|
|
||||||
$templateselection = TemplateSwitcher::getTemplate();
|
|
||||||
setcookie('template', $templateselection, array('SameSite' => 'Lax', 'Secure' => true));
|
|
||||||
}
|
|
||||||
|
|
||||||
// strip policies that are unsupported in meta tag
|
// strip policies that are unsupported in meta tag
|
||||||
$metacspheader = str_replace(
|
$metacspheader = str_replace(
|
||||||
array(
|
array(
|
||||||
@ -459,7 +412,6 @@ class Controller
|
|||||||
}
|
}
|
||||||
$page->assign('BASEPATH', I18n::_($this->_conf->getKey('basepath')));
|
$page->assign('BASEPATH', I18n::_($this->_conf->getKey('basepath')));
|
||||||
$page->assign('STATUS', I18n::_($this->_status));
|
$page->assign('STATUS', I18n::_($this->_status));
|
||||||
$page->assign('ISDELETED', I18n::_(json_encode($this->_is_deleted)));
|
|
||||||
$page->assign('VERSION', self::VERSION);
|
$page->assign('VERSION', self::VERSION);
|
||||||
$page->assign('DISCUSSION', $this->_conf->getKey('discussion'));
|
$page->assign('DISCUSSION', $this->_conf->getKey('discussion'));
|
||||||
$page->assign('OPENDISCUSSION', $this->_conf->getKey('opendiscussion'));
|
$page->assign('OPENDISCUSSION', $this->_conf->getKey('opendiscussion'));
|
||||||
@ -476,8 +428,6 @@ class Controller
|
|||||||
$page->assign('ZEROBINCOMPATIBILITY', $this->_conf->getKey('zerobincompatibility'));
|
$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('TEMPLATES', TemplateSwitcher::getAvailableTemplates());
|
|
||||||
$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'));
|
||||||
@ -486,8 +436,7 @@ class Controller
|
|||||||
$page->assign('HTTPWARNING', $this->_conf->getKey('httpwarning'));
|
$page->assign('HTTPWARNING', $this->_conf->getKey('httpwarning'));
|
||||||
$page->assign('HTTPSLINK', 'https://' . $this->_request->getHost() . $this->_request->getRequestUri());
|
$page->assign('HTTPSLINK', 'https://' . $this->_request->getHost() . $this->_request->getRequestUri());
|
||||||
$page->assign('COMPRESSION', $this->_conf->getKey('compression'));
|
$page->assign('COMPRESSION', $this->_conf->getKey('compression'));
|
||||||
$page->assign('SRI', $this->_conf->getSection('sri'));
|
$page->draw($this->_conf->getKey('template'));
|
||||||
$page->draw(TemplateSwitcher::getTemplate());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -34,7 +34,7 @@ abstract class AbstractData
|
|||||||
* @param array $paste
|
* @param array $paste
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
abstract public function create($pasteid, array &$paste);
|
abstract public function create($pasteid, array $paste);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Read a paste.
|
* Read a paste.
|
||||||
@ -72,7 +72,7 @@ abstract class AbstractData
|
|||||||
* @param array $comment
|
* @param array $comment
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
abstract public function createComment($pasteid, $parentid, $commentid, array &$comment);
|
abstract public function createComment($pasteid, $parentid, $commentid, array $comment);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Read all comments of paste.
|
* Read all comments of paste.
|
||||||
@ -199,7 +199,7 @@ abstract class AbstractData
|
|||||||
* @param array $paste
|
* @param array $paste
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
protected static function upgradePreV1Format(array &$paste)
|
protected static function upgradePreV1Format(array $paste)
|
||||||
{
|
{
|
||||||
if (array_key_exists('attachment', $paste['meta'])) {
|
if (array_key_exists('attachment', $paste['meta'])) {
|
||||||
$paste['attachment'] = $paste['meta']['attachment'];
|
$paste['attachment'] = $paste['meta']['attachment'];
|
||||||
|
@ -72,9 +72,7 @@ class Database extends AbstractData
|
|||||||
// set default options
|
// set default options
|
||||||
$options['opt'][PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
|
$options['opt'][PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
|
||||||
$options['opt'][PDO::ATTR_EMULATE_PREPARES] = false;
|
$options['opt'][PDO::ATTR_EMULATE_PREPARES] = false;
|
||||||
if (!array_key_exists(PDO::ATTR_PERSISTENT, $options['opt'])) {
|
$options['opt'][PDO::ATTR_PERSISTENT] = true;
|
||||||
$options['opt'][PDO::ATTR_PERSISTENT] = true;
|
|
||||||
}
|
|
||||||
$db_tables_exist = true;
|
$db_tables_exist = true;
|
||||||
|
|
||||||
// setup type and dabase connection
|
// setup type and dabase connection
|
||||||
@ -140,7 +138,7 @@ class Database extends AbstractData
|
|||||||
* @param array $paste
|
* @param array $paste
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function create($pasteid, array &$paste)
|
public function create($pasteid, array $paste)
|
||||||
{
|
{
|
||||||
$expire_date = 0;
|
$expire_date = 0;
|
||||||
$opendiscussion = $burnafterreading = false;
|
$opendiscussion = $burnafterreading = false;
|
||||||
@ -297,18 +295,14 @@ class Database extends AbstractData
|
|||||||
* @param array $comment
|
* @param array $comment
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function createComment($pasteid, $parentid, $commentid, array &$comment)
|
public function createComment($pasteid, $parentid, $commentid, array $comment)
|
||||||
{
|
{
|
||||||
if (array_key_exists('data', $comment)) {
|
if (array_key_exists('data', $comment)) {
|
||||||
$version = 1;
|
$version = 1;
|
||||||
$data = $comment['data'];
|
$data = $comment['data'];
|
||||||
} else {
|
} else {
|
||||||
try {
|
$version = 2;
|
||||||
$version = 2;
|
$data = Json::encode($comment);
|
||||||
$data = Json::encode($comment);
|
|
||||||
} catch (Exception $e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
list($createdKey, $iconKey) = $this->_getVersionedKeys($version);
|
list($createdKey, $iconKey) = $this->_getVersionedKeys($version);
|
||||||
$meta = $comment['meta'];
|
$meta = $comment['meta'];
|
||||||
@ -510,8 +504,8 @@ class Database extends AbstractData
|
|||||||
private function _exec($sql, array $params)
|
private function _exec($sql, array $params)
|
||||||
{
|
{
|
||||||
$statement = $this->_db->prepare($sql);
|
$statement = $this->_db->prepare($sql);
|
||||||
$position = 1;
|
foreach ($params as $key => &$parameter) {
|
||||||
foreach ($params as &$parameter) {
|
$position = $key + 1;
|
||||||
if (is_int($parameter)) {
|
if (is_int($parameter)) {
|
||||||
$statement->bindParam($position, $parameter, PDO::PARAM_INT);
|
$statement->bindParam($position, $parameter, PDO::PARAM_INT);
|
||||||
} elseif (is_string($parameter) && strlen($parameter) >= 4000) {
|
} elseif (is_string($parameter) && strlen($parameter) >= 4000) {
|
||||||
@ -519,7 +513,6 @@ class Database extends AbstractData
|
|||||||
} else {
|
} else {
|
||||||
$statement->bindParam($position, $parameter);
|
$statement->bindParam($position, $parameter);
|
||||||
}
|
}
|
||||||
++$position;
|
|
||||||
}
|
}
|
||||||
$result = $statement->execute();
|
$result = $statement->execute();
|
||||||
$statement->closeCursor();
|
$statement->closeCursor();
|
||||||
@ -605,8 +598,18 @@ class Database extends AbstractData
|
|||||||
$sql = 'SELECT table_name FROM all_tables';
|
$sql = 'SELECT table_name FROM all_tables';
|
||||||
break;
|
break;
|
||||||
case 'pgsql':
|
case 'pgsql':
|
||||||
$sql = 'SELECT "tablename" FROM "pg_catalog"."pg_tables" '
|
$sql = 'SELECT c."relname" AS "table_name" '
|
||||||
. 'WHERE "schemaname" NOT IN (\'pg_catalog\', \'information_schema\')';
|
. 'FROM "pg_class" c, "pg_user" u '
|
||||||
|
. 'WHERE c."relowner" = u."usesysid" AND c."relkind" = \'r\' '
|
||||||
|
. 'AND NOT EXISTS (SELECT 1 FROM "pg_views" WHERE "viewname" = c."relname") '
|
||||||
|
. "AND c.\"relname\" !~ '^(pg_|sql_)' "
|
||||||
|
. 'UNION '
|
||||||
|
. 'SELECT c."relname" AS "table_name" '
|
||||||
|
. 'FROM "pg_class" c '
|
||||||
|
. "WHERE c.\"relkind\" = 'r' "
|
||||||
|
. 'AND NOT EXISTS (SELECT 1 FROM "pg_views" WHERE "viewname" = c."relname") '
|
||||||
|
. 'AND NOT EXISTS (SELECT 1 FROM "pg_user" WHERE "usesysid" = c."relowner") '
|
||||||
|
. "AND c.\"relname\" !~ '^pg_'";
|
||||||
break;
|
break;
|
||||||
case 'sqlite':
|
case 'sqlite':
|
||||||
$sql = 'SELECT "name" FROM "sqlite_master" WHERE "type"=\'table\' '
|
$sql = 'SELECT "name" FROM "sqlite_master" WHERE "type"=\'table\' '
|
||||||
|