5 Commits

Author SHA1 Message Date
rugk
470e0fc33c Add missing break in switch 2020-03-06 10:03:27 +01:00
rugk
f13a5d0a55 Cleanup variables/logic
It only assigns and DomPurfies things once, instead of doing
it again and again.
Also uses less variables and cleans up the logic.
2020-03-04 14:32:04 +01:00
rugk
552e0cac3a Fix .getText of PasteViewer to return original text string
The issue was that I reused an existing module variable.

Now we have (yet another one) temp var for that.

Practically this fixes the "clone paste" button by using the original text.
2020-03-04 13:44:57 +01:00
rugk
294b8804a4 Fix source code escaping in comments
Also fix comments.
2020-03-04 13:29:06 +01:00
rugk
005d223c0d Fix source code being not rendered
If special characters were included the source code (HTML-like ones like < and >) is was not rendered.

Fixes https://github.com/PrivateBin/PrivateBin/issues/588

It includes a change in the RegEx for URLs because that was broken when a
& character later followed at any time after a link (even after a newline).
(with a negative lookahead)

Test with https://regex101.com/r/i7bZ73/1

Now the RegEx does not check for _all_ chars after a link, but just for the
one following the link.
(So the lookahead is not * anymore. I guess thsi behaviour was
the expectation when it has been implemented.)
2020-03-04 11:45:56 +01:00
197 changed files with 5724 additions and 24158 deletions

4
.gitattributes vendored
View File

@@ -16,13 +16,9 @@ js/test/ export-ignore
.jshintrc export-ignore .jshintrc export-ignore
.nsprc export-ignore .nsprc export-ignore
.php_cs export-ignore .php_cs export-ignore
.scrutinizer.yml export-ignore
.styleci.yml export-ignore .styleci.yml export-ignore
.travis.yml export-ignore .travis.yml export-ignore
codacy-analysis.yml export-ignore
crowdin.yml export-ignore
composer.json export-ignore composer.json export-ignore
composer.lock export-ignore composer.lock export-ignore
BADGES.md export-ignore BADGES.md export-ignore
CODE_OF_CONDUCT.md export-ignore CODE_OF_CONDUCT.md export-ignore
Makefile export-ignore

View File

@@ -1,14 +0,0 @@
version: 2
updates:
# Maintain dependencies for GitHub Actions
# src: https://github.com/marketplace/actions/build-and-push-docker-images#keep-up-to-date-with-github-dependabot
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
# Also keep PHP (Composer) dependencies up-to-date
# see: https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#package-ecosystem
- package-ecosystem: "composer"
directory: "/"
schedule:
interval: "daily"

View File

@@ -1,49 +0,0 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# Currently can only check JS.
#
name: "CodeQL"
on:
push:
branches: [ master ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ master ]
schedule:
- cron: '28 22 * * 5'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
language: [ 'javascript' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
# Learn more:
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
steps:
- name: Checkout repository
uses: actions/checkout@v3
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2

23
.github/workflows/php.yml vendored Normal file
View File

@@ -0,0 +1,23 @@
name: PHP Composer
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Validate composer.json and composer.lock
run: composer validate
- name: Install dependencies
run: composer install --prefer-dist --no-progress --no-suggest
# Add a test script to composer.json, for instance: "test": "vendor/bin/phpunit"
# Docs: https://getcomposer.org/doc/articles/scripts.md
# - name: Run test suite
# run: composer run-script test

View File

@@ -1,37 +0,0 @@
name: Refresh PHP 8 branch
on:
push:
branches: [ master ]
schedule:
- cron: '42 2 * * *'
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout php8 branch
uses: actions/checkout@v3
with:
# directly checkout the php8 branch
ref: php8
# Number of commits to fetch. 0 indicates all history for all branches and tags.
# Default: 1
fetch-depth: 0
- name: Merge master changes into php8
run: |
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git merge origin/master
- name: Push new changes
uses: github-actions-x/commit@v2.9
with:
name: github-actions[bot]
email: 41898282+github-actions[bot]@users.noreply.github.com
github-token: ${{ secrets.GITHUB_TOKEN }}
push-branch: 'php8'

View File

@@ -1,29 +0,0 @@
# This is a basic workflow to help you get started with Actions
name: Snyk scan
on:
# Triggers the workflow on push or pull request events but only for the master branch
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
# https://github.com/snyk/actions/tree/master/php
snyk-php:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Google Cloud Storage
run: composer require --no-update google/cloud-storage && composer update --no-dev
- name: Run Snyk to check for vulnerabilities
uses: snyk/actions/php@master
continue-on-error: true # To make sure that SARIF upload gets called
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
with:
args: --sarif-file-output=snyk.sarif
- name: Upload result to GitHub Code Scanning
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: snyk.sarif

View File

@@ -1,120 +0,0 @@
name: Tests
on:
push:
workflow_dispatch:
jobs:
Composer:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Validate composer.json and composer.lock
run: composer validate
- name: Install dependencies
run: composer install --prefer-dist --no-dev
PHPunit:
runs-on: ubuntu-latest
strategy:
matrix:
php-versions: ['7.3', '7.4', '8.0', '8.1', '8.2']
name: PHP ${{ matrix.php-versions }} unit tests on ${{ matrix.operating-system }}
env:
extensions: gd, sqlite3
extensions-cache-key-name: phpextensions
steps:
# let's get started!
- name: Checkout
uses: actions/checkout@v3
# cache PHP extensions
- name: Setup cache environment
id: extcache
uses: shivammathur/cache-extensions@v1
with:
php-version: ${{ matrix.php-versions }}
extensions: ${{ env.extensions }}
key: ${{ runner.os }}-${{ env.extensions-cache-key }}
- name: Cache extensions
uses: actions/cache@v3
with:
path: ${{ steps.extcache.outputs.dir }}
key: ${{ steps.extcache.outputs.key }}
restore-keys: ${{ runner.os }}-${{ env.extensions-cache-key }}
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
extensions: ${{ env.extensions }}
# Setup GitHub CI PHP problem matchers
# https://github.com/shivammathur/setup-php#problem-matchers
- name: Setup problem matchers for PHP
run: echo "::add-matcher::${{ runner.tool_cache }}/php.json"
- name: Setup problem matchers for PHPUnit
run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
# composer cache
- name: Remove composer lock
run: rm composer.lock
- name: Get composer cache directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
# http://man7.org/linux/man-pages/man1/date.1.html
# https://github.com/actions/cache#creating-a-cache-key
- name: Get Date
id: get-date
run: echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT
shell: bash
- name: Cache dependencies
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/composer.json') }}
restore-keys: ${{ runner.os }}-composer-${{ steps.get-date.outputs.date }}-
# composer installation
- name: Setup PHPunit
run: composer install -n
- name: Install Google Cloud Storage
run: composer require google/cloud-storage
# testing
- name: Run unit tests
run: ../vendor/bin/phpunit --no-coverage
working-directory: tst
Mocha:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: '16'
cache: 'npm'
cache-dependency-path: 'js/package-lock.json'
- name: Setup Mocha
run: npm install -g mocha
- name: Setup Node modules
run: npm ci
working-directory: js
- name: Run unit tests
run: npm test
working-directory: js

4
.gitignore vendored
View File

@@ -6,7 +6,7 @@ cfg/*
!cfg/.htaccess !cfg/.htaccess
# Ignore data/ # Ignore data/
/data/ data/
# Ignore PhpDoc # Ignore PhpDoc
doc/* doc/*
@@ -36,5 +36,3 @@ tst/ConfigurationCombinationsTest.php
.project .project
.externalToolBuilders .externalToolBuilders
.c9 .c9
/.idea/
*.iml

View File

@@ -1,36 +0,0 @@
checks:
php: true
javascript: true
filter:
paths:
- "css/privatebin.css"
- "css/bootstrap/privatebin.css"
- "js/privatebin.js"
- "lib/*.php"
- "index.php"
coding_style:
php:
spaces:
around_operators:
additive: false
concatenation: true
build:
environment:
php:
version: '7.2'
tests:
override:
-
command: 'composer require google/cloud-storage && cd tst && ../vendor/bin/phpunit'
coverage:
file: 'tst/log/coverage-clover.xml'
format: 'clover'
nodes:
tests: true
analysis:
tests:
override:
-
command: phpcs-run
use_website_config: true
- php-scrutinizer-run

View File

@@ -17,7 +17,7 @@ disabled:
- concat_without_spaces - concat_without_spaces
- declare_equal_normalize - declare_equal_normalize
- heredoc_to_nowdoc - heredoc_to_nowdoc
- method_argument_space_strict - method_argument_space
- new_with_braces - new_with_braces
- no_alternative_syntax - no_alternative_syntax
- phpdoc_align - phpdoc_align
@@ -29,9 +29,3 @@ disabled:
- short_array_syntax - short_array_syntax
- single_line_after_imports - single_line_after_imports
- unalign_equals - unalign_equals
finder:
path:
- "lib/"
- "tpl/"
- "tst/"

35
.travis.yml Normal file
View File

@@ -0,0 +1,35 @@
language: php
php:
- '5.6'
- '7.0'
- '7.1'
- '7.2'
- '7.3'
- '7.4'
# as this is a php project, node.js (for JS unit testing) isn't installed
install:
- if [ ! -d "$HOME/.nvm" ]; then mkdir -p $HOME/.nvm && curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | NVM_METHOD=script bash; fi
- source ~/.nvm/nvm.sh && nvm install --lts
before_script:
- rm composer.lock
- composer install -n
- npm install -g mocha
- cd js && npm install
script:
- mocha
- cd ../tst && ../vendor/bin/phpunit
after_script:
- ../vendor/bin/test-reporter --coverage-report log/coverage-clover.xml
- cd .. && vendor/bin/codacycoverage clover tst/log/coverage-clover.xml
cache:
directories:
- $HOME/.composer/cache/files
- $HOME/.composer/cache/vcs
- $HOME/.nvm
- $HOME/.npm
- js/node_modules

View File

@@ -1,57 +1,8 @@
# PrivateBin version history # PrivateBin version history
* **1.4.1 (not yet released)** * **1.4 (not yet released)**
* ADDED: Translations for Turkish, Slovak and Greek
* ADDED: S3 Storage backend (#994)
* CHANGED: Switched to Jdenticons as the default for comment icons (#793)
* CHANGED: Avoid `SUPER` privilege for setting the `sql_mode` for MariaDB/MySQL (#919)
* CHANGED: Upgrading libraries to: zlib 1.2.13
* FIXED: Revert to CREATE INDEX without IF NOT EXISTS clauses, to support MySQL (#943)
* FIXED: Apply table prefix to indexes as well, to support multiple instances sharing a single database (#943)
* FIXED: YOURLS integration via new proxy, storing signature in configuration (#725)
* **1.4 (2022-04-09)**
* ADDED: Translations for Corsican, Estonian, Finnish and Lojban
* ADDED: new HTTP headers improving security (#765)
* ADDED: Download button for paste text (#774)
* ADDED: Opt-out of federated learning of cohorts (FLoC) (#776)
* ADDED: Configuration option to exempt IPs from the rate-limiter (#787)
* ADDED: Google Cloud Storage backend support (#795)
* ADDED: Oracle database support (#868)
* ADDED: Configuration option to limit paste creation and commenting to certain IPs (#883)
* ADDED: Set CSP also as meta tag, to deal with misconfigured webservers mangling the HTTP header
* ADDED: Sanitize SVG preview, preventing script execution in instance context
* CHANGED: Language selection cookie only transmitted over HTTPS (#472)
* CHANGED: Upgrading libraries to: base-x 4.0.0, bootstrap 3.4.1 (JS), DOMpurify 2.3.6, ip-lib 1.18.0, jQuery 3.6.0, random_compat 2.0.21, Showdown 2.0.3 & zlib 1.2.12
* CHANGED: Removed automatic `.ini` configuration file migration (#808)
* CHANGED: Removed configurable `dir` for `traffic` & `purge` limiters (#419)
* CHANGED: Server salt, traffic and purge limiter now stored in the storage backend (#419)
* CHANGED: Drop support for attachment download in IE
* FIXED: Error when attachments are disabled, but paste with attachment gets displayed
* **1.3.5 (2021-04-05)**
* ADDED: Translations for Hebrew, Lithuanian, Indonesian and Catalan
* ADDED: Make the project info configurable (#681)
* CHANGED: Upgrading libraries to: DOMpurify 2.2.7, kjua 0.9.0 & random_compat 2.0.18
* CHANGED: Open all links in new window (#630)
* FIXED: PDF display in Firefox (#630)
* FIXED: Allow pasting into password input dialog (#630)
* FIXED: Display of expiration date in email (#630)
* FIXED: Allow display of durations in weeks (#630)
* FIXED: Avoid exposing burn-after-reading messages from cache (#630)
* FIXED: Only display the dropzone when it should (#630)
* FIXED: Detect delete token properly (#630)
* FIXED: Sanitize output from `Helper.urls2links()` (#630)
* FIXED: Avoid recreation of existing pasteurl element when calling URL shortener (#630)
* FIXED: Downloads in Chrome >= 83 (#634)
* FIXED: Display of empty files (#663)
* FIXED: Improve OpenGraph attributes (#651)
* FIXED: Reset to configured burn-after-reading, discussion and expiration settings (#682)
* FIXED: Italic segment of project information (#756)
* **1.3.4 (2020-03-22)**
* CHANGED: Minimum required PHP version is 5.6, due to a change in the identicon library and to use php's native hash_equals() * CHANGED: Minimum required PHP version is 5.6, due to a change in the identicon library and to use php's native hash_equals()
* CHANGED: Upgrading libraries to: identicon 2.0.0 * CHANGED: Upgrading libraries to: identicon 2.0.0
* FIXED: Support custom expiration options in email function (#586)
* FIXED: Regression with encoding of HTML entities (#588)
* FIXED: Unable to paste password on paste with attachment (#565 & #595)
* **1.3.3 (2020-02-16)** * **1.3.3 (2020-02-16)**
* CHANGED: Upgrading libraries to: DOMpurify 2.0.8 * CHANGED: Upgrading libraries to: DOMpurify 2.0.8
* CHANGED: Several translations got updated with missing messages * CHANGED: Several translations got updated with missing messages
@@ -69,7 +20,7 @@
* FIXED: HTML injection via unescaped attachment filename (#554) * FIXED: HTML injection via unescaped attachment filename (#554)
* FIXED: Password disabling option (#527) * FIXED: Password disabling option (#527)
* **1.2.2 (2020-01-11)** * **1.2.2 (2020-01-11)**
* CHANGED: Upgrading libraries to: bootstrap 3.4.1 (CSS), DOMpurify 2.0.7, jQuery 3.4.1, kjua 0.6.0, Showdown 1.9.1 & SJCL 1.0.8 * CHANGED: Upgrading libraries to: bootstrap 3.4.1, DOMpurify 2.0.7, jQuery 3.4.1, kjua 0.6.0, Showdown 1.9.1 & SJCL 1.0.8
* FIXED: HTML injection via unescaped attachment filename (#554) * FIXED: HTML injection via unescaped attachment filename (#554)
* **1.3.1 (2019-09-22)** * **1.3.1 (2019-09-22)**
* ADDED: Translation for Bulgarian (#455) * ADDED: Translation for Bulgarian (#455)
@@ -80,7 +31,7 @@
* CHANGED: Upgrading libraries to: DOMpurify 2.0.1 * CHANGED: Upgrading libraries to: DOMpurify 2.0.1
* FIXED: Enabling browsers without WASM to create pastes and read uncompressed ones (#454) * FIXED: Enabling browsers without WASM to create pastes and read uncompressed ones (#454)
* FIXED: Cloning related issues (#489, #491, #493, #494) * FIXED: Cloning related issues (#489, #491, #493, #494)
* FIXED: Enable file operation only when editing (#497) * FIXED: Enable file operation only when editing (#497)
* FIXED: Clicking 'New' on a previously submitted paste does not blank address bar (#354) * FIXED: Clicking 'New' on a previously submitted paste does not blank address bar (#354)
* FIXED: Clear address bar when create new paste from existing paste (#479) * FIXED: Clear address bar when create new paste from existing paste (#479)
* FIXED: Discussion section not hiding when new/clone paste is clicked on (#484) * FIXED: Discussion section not hiding when new/clone paste is clicked on (#484)
@@ -243,7 +194,7 @@ encryption), i18n (translation, counterpart of i18n.php) and helper (stateless u
* FIXED: 2 minor corrections to avoid notices in php log. * FIXED: 2 minor corrections to avoid notices in php log.
* FIXED: Sources converted to UTF-8. * FIXED: Sources converted to UTF-8.
* **Alpha 0.14 (2012-04-20):** * **Alpha 0.14 (2012-04-20):**
* ADDED: GD presence is checked. * ADDED: GD presence is checked.
* CHANGED: Traffic limiter data files moved to data/ (→easier rights management) * CHANGED: Traffic limiter data files moved to data/ (→easier rights management)
* ADDED: "Burn after reading" implemented. Opening the URL will display the paste and immediately destroy it on server. * ADDED: "Burn after reading" implemented. Opening the URL will display the paste and immediately destroy it on server.
* **Alpha 0.13 (2012-04-18):** * **Alpha 0.13 (2012-04-18):**
@@ -251,16 +202,16 @@ encryption), i18n (translation, counterpart of i18n.php) and helper (stateless u
* FIXED: $error not properly initialized in index.php * FIXED: $error not properly initialized in index.php
* **Alpha 0.12 (2012-04-18):** * **Alpha 0.12 (2012-04-18):**
* **DISCUSSIONS !** Now you can enable discussions on your pastes. Of course, posted comments and nickname are also encrypted and the server cannot see them. * **DISCUSSIONS !** Now you can enable discussions on your pastes. Of course, posted comments and nickname are also encrypted and the server cannot see them.
* This feature implies a change in storage format. You will have to delete all previous pastes in your ZeroBin. * This feature implies a change in storage format. You will have to delete all previous pastes in your ZeroBin.
* Added [[php:vizhash_gd|Vizhash]] as avatars, so you can match posters IP addresses without revealing them. (Same image = same IP). Of course the IP address cannot be deduced from the Vizhash. * Added [[php:vizhash_gd|Vizhash]] as avatars, so you can match posters IP addresses without revealing them. (Same image = same IP). Of course the IP address cannot be deduced from the Vizhash.
* Remaining time before expiration is now displayed. * Remaining time before expiration is now displayed.
* Explicit tags were added to CSS and jQuery selectors (eg. div#aaa instead of #aaa) to speed up browser. * Explicit tags were added to CSS and jQuery selectors (eg. div#aaa instead of #aaa) to speed up browser.
* Better cleaning of the URL (to make sure the key is not broken by some stupid redirection service) * Better cleaning of the URL (to make sure the key is not broken by some stupid redirection service)
* **Alpha 0.11 (2012-04-12):** * **Alpha 0.11 (2012-04-12):**
* Automatically ignore parameters (such as &utm_source=...) added //after// the anchor by some stupid Web 2.0 services. * Automatically ignore parameters (such as &utm_source=...) added //after// the anchor by some stupid Web 2.0 services.
* First public release. * First public release.
* **Alpha 0.10 (2012-04-12):** * **Alpha 0.10 (2012-04-12):**
* IE9 does not seem to correctly support ''pre-wrap'' either. Special handling mode activated for all version of IE<10. (Note: **ALL other browsers** correctly support this feature.) * IE9 does not seem to correctly support ''pre-wrap'' either. Special handling mode activated for all version of IE<10. (Note: **ALL other browsers** correctly support this feature.)
* **Alpha 0.9 (2012-04-11):** * **Alpha 0.9 (2012-04-11):**
* Oh bummer... IE 8 is as shitty as IE6/7: Its does not seem to support ''white-space:pre-wrap'' correctly. I had to activate the special handling mode. I still have to test IE 9. * Oh bummer... IE 8 is as shitty as IE6/7: Its does not seem to support ''white-space:pre-wrap'' correctly. I had to activate the special handling mode. I still have to test IE 9.
* **Alpha 0.8 (2012-04-11):** * **Alpha 0.8 (2012-04-11):**

View File

@@ -2,17 +2,18 @@
## Active contributors ## Active contributors
* Simon Rupf - current developer and maintainer Simon Rupf - current developer and maintainer
* rugk - security review, doc improvment, JS refactoring & various other stuff rugk - security review, doc improvment, JS refactoring & various other stuff
* R4SAS - python client, compression, blob URI to support larger attachments R4SAS - python client, compression, blob URI to support larger attachments
## Past contributions ## Past contributions
* Sébastien Sauvage - original idea and main developer Sébastien Sauvage - original idea and main developer
* Alexey Gladkov - syntax highlighting * Alexey Gladkov - syntax highlighting
* Greg Knaddison - robots.txt * Greg Knaddison - robots.txt
* MrKooky - HTML5 markup, CSS cleanup * MrKooky - HTML5 markup, CSS cleanup
* Simon Rupf - WebCrypto, unit tests, container images, database backend, MVC, configuration, i18n * Simon Rupf - WebCrypto, unit tests, current docker containers, MVC, configuration, i18n
* Hexalyse - Password protection * Hexalyse - Password protection
* Viktor Stanchev - File upload support * Viktor Stanchev - File upload support
* azlux - Tab character input support * azlux - Tab character input support
@@ -26,11 +27,6 @@
* Harald Leithner - base58 encoding of key * Harald Leithner - base58 encoding of key
* Haocen - lots of bugfixes and UI improvements * Haocen - lots of bugfixes and UI improvements
* Lucas Savva - configurable config file location, NixOS packaging * Lucas Savva - configurable config file location, NixOS packaging
* rodehoed - option to exempt ips from the rate-limiter
* Mark van Holsteijn - Google Cloud Storage backend
* Austin Huang - Oracle database support
* Felix J. Ogris - S3 Storage backend
* Mounir Idrassi & J. Mozdzen - secure YOURLS integration
## Translations ## Translations
* Hexalyse - French * Hexalyse - French
@@ -49,15 +45,4 @@
* Péter Tabajdi - Hungarian * Péter Tabajdi - Hungarian
* info-path - Czech * info-path - Czech
* BigWax - Bulgarian * BigWax - Bulgarian
* AndriiZ - Ukrainian * AndriiZ - Ukrainian
* Yaron Shahrabani - Hebrew
* Moo - Lithuanian
* whenwesober - Indonesian
* retiolus - Catalan
* sarnane - Estonian
* foxsouns - Lojban
* Patriccollu di Santa Maria è Sichè - Corsican
* Markus Mikkonen - Finnish
* Emir Ensar Rahmanlar - Turkish
* Stevo984 - Slovak
* Christos Karamolegkos - Greek

View File

@@ -2,46 +2,38 @@
**TL;DR:** Download the **TL;DR:** Download the
[latest release archive](https://github.com/PrivateBin/PrivateBin/releases/latest) [latest release archive](https://github.com/PrivateBin/PrivateBin/releases/latest)
(with the link labelled as "Source code (…)") and extract it in your web hosts and extract it in your web hosts folder where you want to install your PrivateBin
folder where you want to install your PrivateBin instance. We try to provide a instance. We try to provide a mostly safe default configuration, but we urge you to
mostly safe default configuration, but we urge you to check the check the [security section](#hardening-and-security) below and the [configuration
[security section](#hardening-and-security) below and the options](#configuration) to adjust as you see fit.
[configuration options](#configuration) to adjust as you see fit.
**NOTE:** See our [FAQ entry on securely downloading release files](https://github.com/PrivateBin/PrivateBin/wiki/FAQ#how-can-i-securely-clonedownload-your-project) **NOTE:** See [our FAQ](https://github.com/PrivateBin/PrivateBin/wiki/FAQ#how-can-i-securely-clonedownload-your-project) for information how to securely download the PrivateBin release files.
for more information.
**NOTE:** There is a [ansible](https://ansible.com) role by @e1mo available to ### Minimal requirements
install and configure PrivateBin on your server. It's available on
[ansible galaxy](https://galaxy.ansible.com/e1mo/privatebin)
([source code](https://git.sr.ht/~e1mo/ansible-role-privatebin)).
### Minimal Requirements - PHP version 5.5 or above
- _one_ of the following sources of cryptographically safe randomness is required:
- PHP 7 or higher
- [Libsodium](https://download.libsodium.org/libsodium/content/installation/) and it's [PHP extension](https://paragonie.com/book/pecl-libsodium/read/00-intro.md#installing-libsodium)
- open_basedir access to `/dev/urandom`
- mcrypt extension
- com_dotnet extension
- PHP version 7.0 or above Mcrypt needs to be able to access `/dev/urandom`. This means if `open_basedir` is set, it must include this file.
- Or PHP version 5.6 AND _one_ of the following sources of cryptographically
safe randomness:
- [Libsodium](https://download.libsodium.org/libsodium/content/installation/)
and it's [PHP extension](https://paragonie.com/book/pecl-libsodium/read/00-intro.md#installing-libsodium)
- `open_basedir` access to `/dev/urandom`
- mcrypt extension AND `open_basedir` access to `/dev/urandom`
- com_dotnet extension
- GD extension - GD extension
- zlib extension - some disk space or (optionally) a database supported by [PDO](https://secure.php.net/manual/book.pdo.php)
- some disk space or a database supported by [PDO](https://php.net/manual/book.pdo.php) - ability to create files and folders in the installation directory and the PATH defined in index.php
- ability to create files and folders in the installation directory and the PATH - A web browser with javascript support
defined in index.php
- A web browser with JavaScript and (optional) WebAssembly support
## Hardening and Security ## Hardening and security
### Changing the Path ### Changing the path
In the index.php you can define a different `PATH`. This is useful to secure In the index.php you can define a different `PATH`. This is useful to secure your
your installation. You can move the configuration, data files, templates and PHP installation. You can move the configuration, data files, templates and PHP
libraries (directories cfg, doc, data, lib, tpl, tst and vendor) outside of your libraries (directories cfg, doc, data, lib, tpl, tst and vendor) outside of your
document root. This new location must still be accessible to your webserver and document root. This new location must still be accessible to your webserver / PHP
PHP process (see also process (see also
[open_basedir setting](https://secure.php.net/manual/en/ini.core.php#ini.open-basedir)). [open_basedir setting](https://secure.php.net/manual/en/ini.core.php#ini.open-basedir)).
> #### PATH Example > #### PATH Example
@@ -50,25 +42,24 @@ PHP process (see also
> http://example.com/paste/ > http://example.com/paste/
> >
> The full path of PrivateBin on your webserver is: > The full path of PrivateBin on your webserver is:
> /srv/example.com/htdocs/paste > /home/example.com/htdocs/paste
> >
> When setting the path like this: > When setting the path like this:
> define('PATH', '../../secret/privatebin/'); > define('PATH', '../../secret/privatebin/');
> >
> PrivateBin will look for your includes and data here: > PrivateBin will look for your includes / data here:
> /srv/example.com/secret/privatebin > /home/example.com/secret/privatebin
### Changing the config path only ### Changing the config path only
In situations where you want to keep the PrivateBin static files separate from the In situations where you want to keep the PrivateBin static files separate from the
rest of your data, or you want to reuse the installation files on multiple vhosts, rest of your data, or you want to reuse the installation files on multiple vhosts,
you may only want to change the `conf.php`. In this case, you can set the you may only want to change the `conf.php`. In this instance, you can set the
`CONFIG_PATH` environment variable to the absolute path to the `conf.php` file. `CONFIG_PATH` environment variable to the absolute path to the `conf.php` file.
This can be done in your web server's virtual host config, the PHP config, or in This can be done in your web server's virtual host config, the PHP config, or in
the index.php, if you choose to customize it. the index.php if you choose to customize it.
Note that your PHP process will need read access to the configuration file, Note that your PHP process will need read access to the config wherever it may be.
wherever it may be.
> #### CONFIG_PATH example > #### CONFIG_PATH example
> Setting the value in an Apache Vhost: > Setting the value in an Apache Vhost:
@@ -82,27 +73,23 @@ wherever it may be.
### Transport security ### Transport security
When setting up PrivateBin, also set up HTTPS, if you haven't already. Without When setting up PrivateBin, also set up HTTPS, if you haven't already. Without HTTPS
HTTPS PrivateBin is not secure, as the JavaScript or WebAssembly files could be PrivateBin is not secure, as the javascript files could be manipulated during transmission.
manipulated during transmission. For more information on this, see our For more information on this, see our [FAQ entry on HTTPS setup](https://github.com/PrivateBin/PrivateBin/wiki/FAQ#how-should-i-setup-https).
[FAQ entry on HTTPS setup recommendations](https://github.com/PrivateBin/PrivateBin/wiki/FAQ#how-should-i-setup-https).
### File-level permissions ### File-level permissions
After completing the installation, you should make sure, that other users on the After completing the installation, you should make sure, other users on the system cannot read the config file or the `data/` directory, as depending on your configuration potential secret information are saved there.
system cannot read the config file or the `data/` directory, as depending on
your configuration potentially sensitive information may be stored in there.
See our [FAQ entry on permissions](https://github.com/PrivateBin/PrivateBin/wiki/FAQ#what-are-the-recommended-file-and-folder-permissions-for-privatebin) See [this FAQ item](https://github.com/PrivateBin/PrivateBin/wiki/FAQ#what-are-the-recommended-file-and-folder-permissions-for-privatebin) for a detailed guide on how to "harden" the permissions of files and folders.
for a detailed guide on how to "harden" access to files and folders.
## Configuration ## Configuration
In the file `cfg/conf.php` you can configure PrivateBin. A `cfg/conf.sample.php` In the file `cfg/conf.php` you can configure PrivateBin. A `cfg/conf.sample.php`
is provided containing all options and their default values. You can copy it to is provided containing all options and default values. You can copy it to
`cfg/conf.php` and change it as needed. Alternatively you can copy it anywhere `cfg/conf.php` and adapt it as needed. Alternatively you can copy it anywhere and
and set the `CONFIG_PATH` environment variable (see above notes). The config set the `CONFIG_PATH` environment variable (see above notes). The config file is
file is divided into multiple sections, which are enclosed in square brackets. divided into multiple sections, which are enclosed in square brackets.
In the `[main]` section you can enable or disable the discussion feature, set In the `[main]` section you can enable or disable the discussion feature, set
the limit of stored pastes and comments in bytes. The `[traffic]` section lets the limit of stored pastes and comments in bytes. The `[traffic]` section lets
@@ -120,28 +107,28 @@ A `robots.txt` file is provided in the root dir of PrivateBin. It disallows all
robots from accessing your pastes. It is recommend to place it into the root of robots from accessing your pastes. It is recommend to place it into the root of
your web directory if you have installed PrivateBin in a subdirectory. Make sure your web directory if you have installed PrivateBin in a subdirectory. Make sure
to adjust it, so that the file paths match your installation. Of course also to adjust it, so that the file paths match your installation. Of course also
adjust the file, if you already use a `robots.txt`. adjust the file if you already use a `robots.txt`.
A `.htaccess.disabled` file is provided in the root dir of PrivateBin. It blocks A `.htaccess.disabled` file is provided in the root dir of PrivateBin. It blocks
some known robots and link-scanning bots. If you use Apache, you can rename the some known robots and link-scanning bots. If you use Apache, you can rename the
file to `.htaccess` to enable this feature. If you use another webserver, you file to `.htaccess` to enable this feature. If you use another webserver, you
have to configure it manually to do the same. have to configure it manually to do the same.
### On using Cloudflare ### When using Cloudflare
If you want to use PrivateBin behind Cloudflare, make sure you have disabled the If you want to use PrivateBin behind Cloudflare, make sure you have disabled the Rocket
Rocket loader and unchecked "Javascript" for Auto Minify, found in your domain loader and unchecked "Javascript" for Auto Minify, found in your domain settings,
settings, under "Speed". More information can be found in our under "Speed". (More information
[FAQ entry on Cloudflare related issues](https://github.com/PrivateBin/PrivateBin/wiki/FAQ#user-content-how-to-make-privatebin-work-when-using-cloudflare-for-ddos-protection). [in this FAQ entry](https://github.com/PrivateBin/PrivateBin/wiki/FAQ#user-content-how-to-make-privatebin-work-when-using-cloudflare-for-ddos-protection))
### Using a Database Instead of Flat Files ### Using a database instead of flat files
In the configuration file the `[model]` and `[model_options]` sections let you In the configuration file the `[model]` and `[model_options]` sections let you
configure your favourite way of storing the pastes and discussions on your configure your favourite way of storing the pastes and discussions on your
server. server.
`Filesystem` is the default model, which stores everything in files in the `Filesystem` is the default model, which stores everything in files in the
data folder. This is the recommended setup for most sites on single hosts. data folder. This is the recommended setup for most sites.
Under high load, in distributed setups or if you are not allowed to store files Under high load, in distributed setups or if you are not allowed to store files
locally, you might want to switch to the `Database` model. This lets you locally, you might want to switch to the `Database` model. This lets you
@@ -155,26 +142,21 @@ to use a prefix for
The table prefix option is called `tbl`. The table prefix option is called `tbl`.
> #### Note > #### Note
> The `Database` model has only been tested with SQLite, MariaDB/MySQL and > The `Database` model has only been tested with SQLite, MySQL and PostgreSQL,
> PostgreSQL, although it would not be recommended to use SQLite in a production > although it would not be recommended to use SQLite in a production environment.
> environment. If you gain any experience running PrivateBin on other RDBMS, > If you gain any experience running PrivateBin on other RDBMS, please let us
> please let us know. > know.
The following GRANTs (privileges) are required for the PrivateBin user in The following GRANTs (privileges) are required for the PrivateBin user in **MySQL**. In normal operation:
**MariaDB/MySQL**. In normal operation:
- INSERT, SELECT, DELETE on the paste and comment tables - INSERT, SELECT, DELETE on the paste and comment tables
- SELECT on the config table - SELECT on the config table
If you want PrivateBin to handle table creation (when you create the first paste) If you want PrivateBin to handle table creation (when you create the first paste) and updates (after you update PrivateBin to a new release), you need to give the user these additional privileges:
and updates (after you update PrivateBin to a new release), you need to give the
user these additional privileges:
- CREATE, INDEX and ALTER on the database - CREATE, INDEX and ALTER on the database
- INSERT and UPDATE on the config table - INSERT and UPDATE on the config table
For reference or if you want to create the table schema for yourself to avoid For reference or if you want to create the table schema for yourself to avoid having to give PrivateBin too many permissions (replace
having to give PrivateBin too many permissions (replace `prefix_` with your own `prefix_` with your own table prefix and create the table schema with your favourite MySQL console):
table prefix and create the table schema with your favourite MariaDB/MySQL
client):
```sql ```sql
CREATE TABLE prefix_paste ( CREATE TABLE prefix_paste (
@@ -205,69 +187,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.4.0'); INSERT INTO prefix_config VALUES('VERSION', '1.3.3');
``` ```
In **PostgreSQL**, the `data`, `attachment`, `nickname` and `vizhash` columns In **PostgreSQL**, the data, attachment, nickname and vizhash columns needs to be TEXT and not BLOB or MEDIUMBLOB.
need to be `TEXT` and not `BLOB` or `MEDIUMBLOB`. The key names in brackets,
after `PRIMARY KEY`, need to be removed.
In **Oracle**, the `data`, `attachment`, `nickname` and `vizhash` columns need
to be `CLOB` and not `BLOB` or `MEDIUMBLOB`, the `id` column in the `config`
table needs to be `VARCHAR2(16)` and the `meta` column in the `paste` table
and the `value` column in the `config` table need to be `VARCHAR2(4000)`.
#### Using Google Cloud Storage
If you want to deploy PrivateBin in a serverless manner in the Google Cloud, you
can choose the `GoogleCloudStorage` as backend. To use this backend, you create
a GCS bucket and specify the name as the model option `bucket`. Alternatively,
you can set the name through the environment variable `PRIVATEBIN_GCS_BUCKET`.
The default prefix for pastes stored in the bucket is `pastes`. To change the
prefix, specify the option `prefix`.
Google Cloud Storage buckets may be significantly slower than a `FileSystem` or
`Database` backend. The big advantage is that the deployment on Google Cloud
Platform using Google Cloud Run is easy and cheap.
To use the Google Cloud Storage backend you have to install the suggested
library using the command `composer require google/cloud-storage`.
#### Using S3 Storage
Similar to Google Cloud Storage, you can choose S3 as storage backend. It uses
the AWS SDK for PHP, but can also talk to a Rados gateway as part of a CEPH
cluster. To use this backend, you first have to install the SDK in the
document root of PrivateBin: `composer require aws/aws-sdk-php`. You have to
create the S3 bucket on the CEPH cluster before using the S3 backend.
In the `[model]` section of cfg/conf.php, set `class` to `S3Storage`.
You can set any combination of the following options in the `[model_options]`
section:
* region
* version
* endpoint
* bucket
* prefix
* accesskey
* secretkey
* use_path_style_endpoint
By default, prefix is empty. If set, the S3 backend will place all PrivateBin
data beneath this prefix.
For AWS, you have to provide at least `region`, `bucket`, `accesskey`, and
`secretkey`.
For CEPH, follow this example:
```
region = ""
version = "2006-03-01"
endpoint = "https://s3.my-ceph.invalid"
use_path_style_endpoint = true
bucket = "my-bucket"
accesskey = "my-rados-user"
secretkey = "my-rados-pass"
```

View File

@@ -1,57 +0,0 @@
.PHONY: all coverage coverage-js coverage-php doc doc-js doc-php increment sign test test-js test-php help
CURRENT_VERSION = 1.4.0
VERSION ?= 1.4.1
VERSION_FILES = index.php cfg/ *.md css/ i18n/ img/ js/package.json js/privatebin.js lib/ Makefile tpl/ tst/
REGEX_CURRENT_VERSION := $(shell echo $(CURRENT_VERSION) | sed "s/\./\\\./g")
REGEX_VERSION := $(shell echo $(VERSION) | sed "s/\./\\\./g")
all: coverage doc ## Equivalent to running `make coverage doc`.
composer: ## Update composer dependencies (only production ones, optimize the autoloader)
composer update --no-dev --optimize-autoloader
coverage: coverage-js coverage-php ## Run all unit tests and generate code coverage reports.
coverage-js: ## Run JS unit tests and generate code coverage reports.
cd js && nyc mocha
coverage-php: ## Run PHP unit tests and generate code coverage reports.
cd tst && phpunit 2> /dev/null
cd tst/log/php-coverage-report && sed -i "s#$(CURDIR)##g" *.html */*.html
doc: doc-js doc-php ## Generate all code documentation.
doc-js: ## Generate JS code documentation.
jsdoc -p -d doc/jsdoc js/privatebin.js js/legacy.js
doc-php: ## Generate JS code documentation.
phpdoc --visibility public,protected,private -t doc/phpdoc -d lib/
increment: ## Increment and commit new version number, set target version using `make increment VERSION=1.2.3`.
for F in `grep -l -R $(REGEX_CURRENT_VERSION) $(VERSION_FILES) | grep -v -e tst/log/ -e ":0" -e CHANGELOG.md`; \
do \
sed -i "s/$(REGEX_CURRENT_VERSION)/$(REGEX_VERSION)/g" $$F; \
done
cd tst && phpunit --no-coverage && cd ..
git add $(VERSION_FILES) tpl/
git commit -m "incrementing version"
sign: ## Sign a release.
git tag $(VERSION)
git push origin $(VERSION)
signrelease.sh
test: test-js test-php ## Run all unit tests.
test-js: ## Run JS unit tests.
cd js && mocha
test-php: ## Run PHP unit tests.
cd tst && phpunit --no-coverage
help: ## Displays these usage instructions.
@echo "Usage: make <target(s)>"
@echo
@echo "Specify one or multiple of the following targets and they will be processed in the given order:"
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "%-16s%s\n", $$1, $$2}' $(MAKEFILE_LIST)

View File

@@ -1 +0,0 @@
web: vendor/bin/heroku-php-apache2

View File

@@ -1,27 +1,25 @@
# [![PrivateBin](https://cdn.rawgit.com/PrivateBin/assets/master/images/preview/logoSmall.png)](https://privatebin.info/) # [![PrivateBin](https://cdn.rawgit.com/PrivateBin/assets/master/images/preview/logoSmall.png)](https://privatebin.info/)
*Current version: 1.4.0* *Current version: 1.3.3*
**PrivateBin** is a minimalist, open source online **PrivateBin** is a minimalist, open source online [pastebin](https://en.wikipedia.org/wiki/Pastebin)
[pastebin](https://en.wikipedia.org/wiki/Pastebin)
where the server has zero knowledge of pasted data. where the server has zero knowledge of pasted data.
Data is encrypted and decrypted in the browser using 256bit AES in Data is encrypted and decrypted in the browser using 256bit AES in [Galois Counter mode](https://en.wikipedia.org/wiki/Galois/Counter_Mode).
[Galois Counter mode](https://en.wikipedia.org/wiki/Galois/Counter_Mode).
This is a fork of ZeroBin, originally developed by This is a fork of ZeroBin, originally developed by
[Sébastien Sauvage](https://github.com/sebsauvage/ZeroBin). PrivateBin was [Sébastien Sauvage](https://github.com/sebsauvage/ZeroBin). ZeroBin was refactored
refactored to allow easier and cleaner extensions and has many additional to allow easier and cleaner extensions. PrivateBin has many more features than the
features. It is, however, still fully compatible to the original ZeroBin 0.19 original ZeroBin. It is, however, still fully compatible to the original ZeroBin 0.19
data storage scheme. Therefore, such installations can be upgraded to PrivateBin data storage scheme. Therefore, such installations can be upgraded to PrivateBin
without losing any data. without losing any data.
## What PrivateBin provides ## What PrivateBin provides
+ As a server administrator you don't have to worry if your users post content + As a server administrator you don't have to worry if your users post content
that is considered illegal in your country. You have plausible deniability of that is considered illegal in your country. You have no knowledge of any
any of the pastes content. If requested or enforced, you can delete any paste of the pastes content. If requested or enforced, you can delete any paste from
from your system. your system.
+ Pastebin-like system to store text documents, code samples, etc. + Pastebin-like system to store text documents, code samples, etc.
@@ -33,13 +31,15 @@ without losing any data.
## What it doesn't provide ## What it doesn't provide
- As a user you have to trust the server administrator not to inject any - As a user you have to trust the server administrator not to inject any malicious
malicious code. For security, a PrivateBin installation *has to be used over* javascript code.
*HTTPS*! Otherwise you would also have to trust your internet provider, and For basic security, the PrivateBin installation *has to provide HTTPS*!
any jurisdiction the traffic passes through. Additionally the instance should Otherwise you would also have to trust your internet provider, and any country
be secured by the traffic passes through.
[HSTS](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security). It can Additionally the instance should be secured by
use traditional certificate authorities and/or use a [HSTS](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security) and
ideally by [HPKP](https://en.wikipedia.org/wiki/HTTP_Public_Key_Pinning) using a
certificate. It can use traditional certificate authorities and/or use
[DNSSEC](https://en.wikipedia.org/wiki/Domain_Name_System_Security_Extensions) [DNSSEC](https://en.wikipedia.org/wiki/Domain_Name_System_Security_Extensions)
protected protected
[DANE](https://en.wikipedia.org/wiki/DNS-based_Authentication_of_Named_Entities) [DANE](https://en.wikipedia.org/wiki/DNS-based_Authentication_of_Named_Entities)
@@ -47,17 +47,18 @@ without losing any data.
- The "key" used to encrypt the paste is part of the URL. If you publicly post - The "key" used to encrypt the paste is part of the URL. If you publicly post
the URL of a paste that is not password-protected, anyone can read it. the URL of a paste that is not password-protected, anyone can read it.
Use a password if you want your paste to remain private. In that case, make Use a password if you want your paste to be private. In this case, make sure to
sure to use a strong password and share it privately and end-to-end-encrypted. use a strong password and only share it privately and end-to-end-encrypted.
- A server admin can be forced to hand over access logs to the authorities. - A server admin might be forced to hand over access logs to the authorities.
PrivateBin encrypts your text and the discussion contents, but who accessed a PrivateBin encrypts your text and the discussion contents, but who accessed a
paste (first) might still be disclosed via access logs. paste (first) might still be disclosed via access logs.
- In case of a server breach your data is secure as it is only stored encrypted - In case of a server breach your data is secure as it is only stored encrypted
on the server. However, the server could be absused or the server admin could on the server. However, the server could be misused or the server admin could
be legally forced into sending malicious code to their users, which logs be legally forced into sending malicious JavaScript to all web users, which
the decryption key and sends it to a server when a user accesses a paste. grabs the decryption key and sends it to the server when a user accesses a
PrivateBin.
Therefore, do not access any PrivateBin instance if you think it has been Therefore, do not access any PrivateBin instance if you think it has been
compromised. As long as no user accesses this instance with a previously compromised. As long as no user accesses this instance with a previously
generated URL, the content can't be decrypted. generated URL, the content can't be decrypted.
@@ -78,8 +79,8 @@ file](https://github.com/PrivateBin/PrivateBin/wiki/Configuration):
* Syntax highlighting for source code using prettify.js, including 4 prettify * Syntax highlighting for source code using prettify.js, including 4 prettify
themes themes
* File upload support, image, media and PDF preview (disabled by default, size * File upload support, images get displayed (disabled by default, possibility
limit adjustable) to adjust size limit)
* Templates: By default there are bootstrap CSS, darkstrap and "classic ZeroBin" * Templates: By default there are bootstrap CSS, darkstrap and "classic ZeroBin"
to choose from and it is easy to adapt these to your own websites layout or to choose from and it is easy to adapt these to your own websites layout or
@@ -90,7 +91,7 @@ file](https://github.com/PrivateBin/PrivateBin/wiki/Configuration):
* Language selection (disabled by default, as it uses a session cookie) * Language selection (disabled by default, as it uses a session cookie)
* QR code for paste URLs, to easily transfer them over to mobile devices * QR code generation of URL, to easily transfer pastes over to a mobile device
## Further resources ## Further resources

View File

@@ -4,8 +4,8 @@
| Version | Supported | | Version | Supported |
| ------- | ------------------ | | ------- | ------------------ |
| 1.4.0 | :heavy_check_mark: | | 1.3.3 | :heavy_check_mark: |
| < 1.4.0 | :x: | | < 1.3.3 | :x: |
## Reporting a Vulnerability ## Reporting a Vulnerability

View File

@@ -7,11 +7,6 @@
; (optional) set a project name to be displayed on the website ; (optional) set a project name to be displayed on the website
; name = "PrivateBin" ; name = "PrivateBin"
; The full URL, with the domain name and directories that point to the
; PrivateBin files, including an ending slash (/). This URL is essential to
; allow Opengraph images to be displayed on social networks.
; basepath = "https://privatebin.example.com/"
; enable or disable the discussion feature, defaults to true ; enable or disable the discussion feature, defaults to true
discussion = true discussion = true
@@ -40,10 +35,6 @@ sizelimit = 10485760
; template to include, default is "bootstrap" (tpl/bootstrap.php) ; template to include, default is "bootstrap" (tpl/bootstrap.php)
template = "bootstrap" template = "bootstrap"
; (optional) info text to display
; use single, instead of double quotes for HTML attributes
;info = "More information on the <a href='https://privatebin.info/'>project page</a>."
; (optional) notice to display ; (optional) notice to display
; notice = "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service." ; notice = "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service."
@@ -56,9 +47,9 @@ languageselection = false
; if this is set and language selection is disabled, this will be the only language ; if this is set and language selection is disabled, this will be the only language
; languagedefault = "en" ; languagedefault = "en"
; (optional) URL shortener address to offer after a new paste is created. ; (optional) URL shortener address to offer after a new paste is created
; It is suggested to only use this with self-hosted shorteners as this will leak ; it is suggested to only use this with self-hosted shorteners as this will leak
; the pastes encryption key. ; the pastes encryption key
; urlshortener = "https://shortener.example.com/api?link=" ; urlshortener = "https://shortener.example.com/api?link="
; (optional) Let users create a QR code for sharing the paste URL with one click. ; (optional) Let users create a QR code for sharing the paste URL with one click.
@@ -66,11 +57,10 @@ languageselection = false
; qrcode = true ; qrcode = true
; (optional) IP based icons are a weak mechanism to detect if a comment was from ; (optional) IP based icons are a weak mechanism to detect if a comment was from
; a different user when the same username was used in a comment. It might get ; a different user when the same username was used in a comment. It might be
; used to get the IP of a comment poster if the server salt is leaked and a ; used to get the IP of a non anonymous comment poster if the server salt is
; SHA512 HMAC rainbow table is generated for all (relevant) IPs. ; leaked and a SHA256 HMAC rainbow table is generated for all (relevant) IPs.
; Can be set to one these values: ; Can be set to one these values: "none" / "vizhash" / "identicon" (default).
; "none" / "vizhash" / "identicon" / "jdenticon" (default).
; icon = "none" ; icon = "none"
; Content Security Policy headers allow a website to restrict what sources are ; Content Security Policy headers allow a website to restrict what sources are
@@ -89,7 +79,7 @@ languageselection = false
; async functions and display an error if not and for Chrome to enable ; async functions and display an error if not and for Chrome to enable
; webassembly support (used for zlib compression). You can remove it if Chrome ; 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. ; 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" ; cspheader = "default-src 'none'; manifest-src 'self'; connect-src * blob:; script-src 'self' 'unsafe-eval'; style-src 'self'; font-src 'self'; img-src 'self' data: blob:; media-src blob:; object-src blob:; sandbox allow-same-origin allow-scripts allow-forms allow-popups allow-modals"
; 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
@@ -137,22 +127,13 @@ markdown = "Markdown"
; Set this to 0 to disable rate limiting. ; Set this to 0 to disable rate limiting.
limit = 10 limit = 10
; (optional) Set IPs addresses (v4 or v6) or subnets (CIDR) which are exempted
; from the rate-limit. Invalid IPs will be ignored. If multiple values are to
; be exempted, the list needs to be comma separated. Leave unset to disable
; exemptions.
; exempted = "1.2.3.4,10.10.10/24"
; (optional) If you want only some source IP addresses (v4 or v6) or subnets
; (CIDR) to be allowed to create pastes, set these here. Invalid IPs will be
; ignored. If multiple values are to be exempted, the list needs to be comma
; separated. Leave unset to allow anyone to create pastes.
; creators = "1.2.3.4,10.10.10/24"
; (optional) if your website runs behind a reverse proxy or load balancer, ; (optional) if your website runs behind a reverse proxy or load balancer,
; set the HTTP header containing the visitors IP address, i.e. X_FORWARDED_FOR ; set the HTTP header containing the visitors IP address, i.e. X_FORWARDED_FOR
; header = "X_FORWARDED_FOR" ; header = "X_FORWARDED_FOR"
; directory to store the traffic limits in
dir = PATH "data"
[purge] [purge]
; minimum time limit between two purgings of expired pastes, it is only ; minimum time limit between two purgings of expired pastes, it is only
; triggered when pastes are created ; triggered when pastes are created
@@ -164,6 +145,9 @@ limit = 300
; site ; site
batchsize = 10 batchsize = 10
; directory to store the purge limit in
dir = PATH "data"
[model] [model]
; name of data model class to load and directory for storage ; name of data model class to load and directory for storage
; the default model "Filesystem" stores everything in the filesystem ; the default model "Filesystem" stores everything in the filesystem
@@ -171,14 +155,6 @@ class = Filesystem
[model_options] [model_options]
dir = PATH "data" dir = PATH "data"
;[model]
; example of a Google Cloud Storage configuration
;class = GoogleCloudStorage
;[model_options]
;bucket = "my-private-bin"
;prefix = "pastes"
;uniformacl = false
;[model] ;[model]
; example of DB configuration for MySQL ; example of DB configuration for MySQL
;class = Database ;class = Database
@@ -197,52 +173,3 @@ dir = PATH "data"
;usr = null ;usr = null
;pwd = null ;pwd = null
;opt[12] = true ; PDO::ATTR_PERSISTENT ;opt[12] = true ; PDO::ATTR_PERSISTENT
;[model]
; example of DB configuration for PostgreSQL
;class = Database
;[model_options]
;dsn = "pgsql:host=localhost;dbname=privatebin"
;tbl = "privatebin_" ; table prefix
;usr = "privatebin"
;pwd = "Z3r0P4ss"
;opt[12] = true ; PDO::ATTR_PERSISTENT
;[model]
; example of S3 configuration for Rados gateway / CEPH
;class = S3Storage
;[model_options]
;region = ""
;version = "2006-03-01"
;endpoint = "https://s3.my-ceph.invalid"
;use_path_style_endpoint = true
;bucket = "my-bucket"
;accesskey = "my-rados-user"
;secretkey = "my-rados-pass"
;[model]
; example of S3 configuration for AWS
;class = S3Storage
;[model_options]
;region = "eu-central-1"
;version = "latest"
;bucket = "my-bucket"
;accesskey = "access key id"
;secretkey = "secret access key"
[yourls]
; When using YOURLS as a "urlshortener" config item:
; - 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.
; Only use this if you allow short URL creation without credentials.
; - Alternatively, using the parameters in this section ("signature" and
; "apiurl"), "urlshortener" needs to point to the base URL of your PrivateBin
; instance with "shortenviayourls?link=" appended. For example:
; urlshortener = "${basepath}shortenviayourls?link="
; This URL will in turn call YOURLS on the server side, using the URL from
; "apiurl" and the "access signature" from the "signature" parameters below.
; (optional) the "signature" (access key) issued by YOURLS for the using account
; signature = ""
; (optional) the URL of the YOURLS API, called to shorten a PrivateBin URL
; apiurl = "https://yourls.example.com/yourls-api.php"

View File

@@ -1,49 +0,0 @@
# This workflow checks out code, performs a Codacy security scan
# and integrates the results with the
# GitHub Advanced Security code scanning feature. For more information on
# the Codacy security scan action usage and parameters, see
# https://github.com/codacy/codacy-analysis-cli-action.
# For more information on Codacy Analysis CLI in general, see
# https://github.com/codacy/codacy-analysis-cli.
name: Codacy Security Scan
on:
push:
branches: [ master ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ master ]
schedule:
- cron: '45 16 * * 1'
jobs:
codacy-security-scan:
name: Codacy Security Scan
runs-on: ubuntu-latest
steps:
# Checkout the repository to the GitHub Actions runner
- name: Checkout code
uses: actions/checkout@v2
# Execute Codacy Analysis CLI and generate a SARIF output with the security issues identified during the analysis
- name: Run Codacy Analysis CLI
uses: codacy/codacy-analysis-cli-action@1.1.0
with:
# Check https://github.com/codacy/codacy-analysis-cli#project-token to get your project token from your Codacy repository
# You can also omit the token and run the tools that support default configurations
project-token: ${{ secrets.CODACY_PROJECT_TOKEN }}
verbose: true
output: results.sarif
format: sarif
# Adjust severity of non-security issues
gh-code-scanning-compat: true
# Force 0 exit code to allow SARIF file generation
# This will handover control about PR rejection to the GitHub side
max-allowed-issues: 2147483647
# Upload the SARIF file generated in the previous step
- name: Upload SARIF results file
uses: github/codeql-action/upload-sarif@v1
with:
sarif_file: results.sarif

View File

@@ -24,18 +24,14 @@
"docs" : "https://privatebin.info/codedoc/" "docs" : "https://privatebin.info/codedoc/"
}, },
"require" : { "require" : {
"php" : "^5.6.0 || ^7.0 || ^8.0", "php" : "^5.6.0 || ^7.0",
"paragonie/random_compat" : "2.0.21", "paragonie/random_compat" : "2.0.18",
"yzalis/identicon" : "2.0.0", "yzalis/identicon" : "2.0.0"
"mlocati/ip-lib" : "1.18.0",
"jdenticon/jdenticon": "^1.0"
},
"suggest" : {
"google/cloud-storage" : "1.26.1",
"aws/aws-sdk-php" : "3.239.0"
}, },
"require-dev" : { "require-dev" : {
"phpunit/phpunit" : "^9" "codacy/coverage" : "dev-master",
"codeclimate/php-test-reporter" : "dev-master",
"phpunit/phpunit" : "^4.6 || ^5.0"
}, },
"autoload" : { "autoload" : {
"psr-4" : { "psr-4" : {

2766
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +0,0 @@
files:
- source: /i18n/en.json
translation: /i18n/%two_letters_code%.json

View File

@@ -6,7 +6,7 @@
* @link https://github.com/PrivateBin/PrivateBin * @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net) * @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License * @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.4.0 * @version 1.3.3
*/ */
body { body {

View File

@@ -6,7 +6,7 @@
* @link https://github.com/PrivateBin/PrivateBin * @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net) * @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License * @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.4.0 * @version 1.3.3
*/ */
/* When there is no script at all other */ /* When there is no script at all other */

View File

@@ -6,7 +6,7 @@
* @link https://github.com/PrivateBin/PrivateBin * @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net) * @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License * @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.4.0 * @version 1.3.3
*/ */
/* CSS Reset from YUI 3.4.1 (build 4118) - Copyright 2011 Yahoo! Inc. All rights reserved. /* CSS Reset from YUI 3.4.1 (build 4118) - Copyright 2011 Yahoo! Inc. All rights reserved.
@@ -249,10 +249,6 @@ button img {
padding: 1px 0 1px 0; padding: 1px 0 1px 0;
} }
#downloadtextbutton img {
padding: 1px 0 1px 0;
}
#remainingtime, #password { #remainingtime, #password {
color: #94a3b4; color: #94a3b4;
display: inline; display: inline;

View File

@@ -1,193 +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",
"en": "ar",
"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)"
],
"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",
"Send": "Send",
"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 minutes": [
"%d minute (singular)",
"%d minutes (1st plural)",
"%d minutes (2nd plural)",
"%d minutes (3rd plural)"
],
"%d hours": [
"%d hour (singular)",
"%d hours (1st plural)",
"%d hours (2nd plural)",
"%d hours (3rd plural)"
],
"%d days": [
"%d day (singular)",
"%d days (1st plural)",
"%d days (2nd plural)",
"%d days (3rd plural)"
],
"%d weeks": [
"%d week (singular)",
"%d weeks (1st plural)",
"%d weeks (2nd plural)",
"%d weeks (3rd plural)"
],
"%d months": [
"%d month (singular)",
"%d months (1st plural)",
"%d months (2nd plural)",
"%d months (3rd plural)"
],
"%d years": [
"%d year (singular)",
"%d years (1st plural)",
"%d years (2nd plural)",
"%d years (3rd 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 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 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 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 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)"
],
"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 [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",
"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."
}

View File

@@ -1,144 +1,125 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s е изчистен и изцяло достъпен като отворен код, онлайн \"paste\" услуга, където сървъра не знае подадената информация. Тя се шифрова/дешифрова %sвъв браузъра%s използвайки 256 битов AES алгоритъм.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> 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>.": "Повече информация може да намерите на <a href=\"https://privatebin.info/\">страницата на проекта (Английски)</a>.", "%s е изчистен и изцяло достъпен като отворен код, онлайн \"paste\" услуга, където сървъра не знае подадената информация. Тя се шифрова/дешифрова <i>във браузъра</i> използвайки 256 битов AES алгоритъм. Повече информация може да намерите на <a href=\"https://privatebin.info/\">страницата на проекта (Английски)</a>",
"Because ignorance is bliss": "Невежеството е блаженство", "Because ignorance is bliss":
"Невежеството е блаженство",
"en": "bg", "en": "bg",
"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 configuration section [%s] to be present in configuration file.": "%s задължава отдела от настройките [%s] да съществува във файла със настройките.", "%s requires php %s or above to work. Sorry.":
"Please wait %d seconds between each post.": [ "%s има нужда от PHP %s или по-нова, за да работи. Съжалявам.",
"Моля изчакайте една секунда между всяка публикация.", "%s requires configuration section [%s] to be present in configuration file.":
"%s задължава отдела от настройките [%s] да съществува във файла със настройките.",
"Please wait %d seconds between each post.":
"Моля изчакайте %d секунди между всяка публикация.", "Моля изчакайте %d секунди между всяка публикация.",
"Моля изчакайте %d секунди между всяка публикация.", "Paste is limited to %s of encrypted data.":
"Моля изчакайте %d секунди между всяка публикация." "Съдържанието е ограничено до %s криптирана информация.",
], "Invalid data.":
"Paste is limited to %s of encrypted data.": "Съдържанието е ограничено до %s криптирана информация.", "Невалидна информация.",
"Invalid data.": "Невалидна информация.", "You are unlucky. Try again.":
"You are unlucky. Try again.": "Нямаш късмет. Пробвай отново.", "Нямаш късмет. Пробвай отново.",
"Error saving comment. Sorry.": "Грешка в запазването на коментара. Съжалявам.", "Error saving comment. Sorry.":
"Error saving paste. Sorry.": "Грешка в записването на информацията. Съжалявам.", "Грешка в запазването на коментара. Съжалявам.",
"Invalid paste ID.": "Невалиден идентификационен код.", "Error saving paste. Sorry.":
"Paste is not of burn-after-reading type.": "Информацията не е от тип \"унищожаване след преглед\".", "Грешка в записването на информацията. Съжалявам.",
"Wrong deletion token. Paste was not deleted.": "Невалиден код за изтриване. Информацията Ви не беше изтрита.", "Invalid paste ID.":
"Paste was properly deleted.": "Информацията Ви е изтрита.", "Невалиден идентификационен код.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Услугата %s се нуждае от JavaScript, за да работи. Съжаляваме за неудобството.", "Paste is not of burn-after-reading type.":
"%s requires a modern browser to work.": "%s се нуждае от съвременен браузър за да работи.", "Информацията не е от тип \"унищожаване след преглед\".",
"New": "Създаване", "Wrong deletion token. Paste was not deleted.":
"Send": "Изпрати", "Невалиден код за изтриване. Информацията Ви не беше изтрита.",
"Clone": "Дублирай", "Paste was properly deleted.":
"Raw text": "Чист текст", "Информацията Ви е изтрита.",
"Expires": "Изтича", "JavaScript is required for %s to work. Sorry for the inconvenience.":
"Burn after reading": "Унищожи след преглед", "Услугата %s се нуждае от JavaScript, за да работи. Съжаляваме за неудобството.",
"Open discussion": "Отворена дискусия", "%s requires a modern browser to work.":
"Password (recommended)": "Парола (препоръчва се)", "%s се нуждае от съвременен браузър за да работи.",
"Discussion": "Коментари", "New":
"Toggle navigation": "Включи или Изключи навигацията", "Създаване",
"%d seconds": [ "Send":
"%d секунди", "Изпрати",
"%d секунда", "Clone":
"%d секунда", "Дублирай",
"%d секунда" "Raw text":
], "Чист текст",
"%d minutes": [ "Expires":
"%d минути", "Изтича",
"%d минута", "Burn after reading":
"%d минута", "Унищожи след преглед",
"%d минута" "Open discussion":
], "Отворена дискусия",
"%d hours": [ "Password (recommended)":
"%d часа", "Парола (препоръчва се)",
"%d час", "Discussion":
"%d час", "Коментари",
"%d час" "Toggle navigation":
], "Включи или Изключи навигацията",
"%d days": [ "%d seconds": ["%d секунди", "%d секунда"],
"%d дни", "%d minutes": ["%d минути", "%d минута"],
"%d ден", "%d hours": ["%d часа", "%d час"],
"%d ден", "%d days": ["%d дни", "%d ден"],
"%d ден" "%d weeks": ["%d седмици", "%d седмица"],
], "%d months": ["%d месеци", "%d месец"],
"%d weeks": [ "%d years": ["%d години", "%d година"],
"%d седмици", "Never":
"%d седмица", "Никога",
"%d седмица", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
"%d седмица" "Забележка: Това е пробна услуга: Информацията може да бъде изтрита по всяко време. Котета ще измрат ако злоупотребиш с услугата.",
], "This document will expire in %d seconds.":
"%d months": [ ["Този документ изтича след една секунда.", "Този документ изтича след %d секунди."],
"%d месеци", "This document will expire in %d minutes.":
"%d месец", ["Този документ изтича след една минута.", "Този документ изтича след %d минути."],
"%d месец", "This document will expire in %d hours.":
"%d месец" ["Този документ изтича след един час.", "Този документ изтича след %d часа."],
], "This document will expire in %d days.":
"%d years": [ ["Този документ изтича след един ден.", "Този документ изтича след %d дни."],
"%d години", "This document will expire in %d months.":
"%d година", ["Този документ изтича след една година.", "Този документ изтича след %d години."],
"%d година", "Please enter the password for this paste:":
"%d година" "Моля въведете паролата за това съдържание:",
], "Could not decrypt data (Wrong key?)":
"Never": "Никога", "Информацията не можеше да се дешифрова (Грешен ключ?)",
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Забележка: Това е пробна услуга: Информацията може да бъде изтрита по всяко време. Котета ще измрат ако злоупотребиш с услугата.", "Could not delete the paste, it was not stored in burn after reading mode.":
"This document will expire in %d seconds.": [ "Изтриването на информацията беше неуспешно. Тя не е от тип \"унищожаване след преглед\".",
"Този документ изтича след една секунда.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
"Този документ изтича след %d секунди.", "САМО ЗА ВАШИТЕ ОЧИ. Не затваряйте прозореца, понеже тази информация няма да може да бъде показана отново.",
"Този документ изтича след %d секунди.", "Could not decrypt comment; Wrong key?":
"Този документ изтича след %d секунди." "Дешифроването на коментара беше неуспешно. Грешен ключ?",
], "Reply":
"This document will expire in %d minutes.": [ "Отговор",
"Този документ изтича след една минута.", "Anonymous":
"Този документ изтича след %d минути.", "Безименен",
"Този документ изтича след %d минути.", "Avatar generated from IP address":
"Този документ изтича след %d минути." "Аватар (на базата на IP адреса Ви)",
], "Add comment":
"This document will expire in %d hours.": [ "Добави коментар",
"Този документ изтича след един час.", "Optional nickname…":
"Този документ изтича след %d часа.", "Избирателен псевдоним",
"Този документ изтича след %d часа.", "Post comment":
"Този документ изтича след %d часа." "Публикувай коментара",
], "Sending comment…":
"This document will expire in %d days.": [ "Изпращане на коментара Ви…",
"Този документ изтича след един ден.", "Comment posted.":
"Този документ изтича след %d дни.", "Коментара Ви е публикуван.",
"Този документ изтича след %d дни.", "Could not refresh display: %s":
"Този документ изтича след %d дни." "Презареждането на екрана беше неуспешно: %s",
], "unknown status":
"This document will expire in %d months.": [ "Неизвестно състояние",
"Този документ изтича след една година.", "server error or not responding":
"Този документ изтича след %d години.", "Грешка в сървъра или не отговаря",
"Този документ изтича след %d години.", "Could not post comment: %s":
"Този документ изтича след %d години." "Публикуването на коментара Ви беше неуспешно: %s",
], "Sending paste…":
"Please enter the password for this paste:": "Моля въведете паролата за това съдържание:", "Изпращане на информацията Ви…",
"Could not decrypt data (Wrong key?)": "Информацията не можеше да се дешифрова (Грешен ключ?)", "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
"Could not delete the paste, it was not stored in burn after reading mode.": "Изтриването на информацията беше неуспешно. Тя не е от тип \"унищожаване след преглед\".", "Вашата връзка е <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Натиснете [Ctrl]+[c] за да копирате)</span>",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "САМО ЗА ВАШИТЕ ОЧИ. Не затваряйте прозореца, понеже тази информация няма да може да бъде показана отново.", "Delete data":
"Could not decrypt comment; Wrong key?": "Дешифроването на коментара беше неуспешно. Грешен ключ?", "Изтриване на информацията",
"Reply": "Отговор", "Could not create paste: %s":
"Anonymous": "Безименен", "Създаването на връзката ви беше неуспешно: %s",
"Avatar generated from IP address": "Аватар (на базата на IP адреса Ви)", "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
"Add comment": "Добави коментар", "Дешифроването на информацията беше неуспешно: Ключа за декриптиране липсва във връзката (Да не сте използвали услуга за пренасочване или скъсяване на връзката, което би изрязало части от нея?)",
"Optional nickname…": "Избирателен псевдоним",
"Post comment": "Публикувай коментара",
"Sending comment…": "Изпращане на коментара Ви…",
"Comment posted.": "Коментара Ви е публикуван.",
"Could not refresh display: %s": "Презареждането на екрана беше неуспешно: %s",
"unknown status": "Неизвестно състояние",
"server error or not responding": "Грешка в сървъра или не отговаря",
"Could not post comment: %s": "Публикуването на коментара Ви беше неуспешно: %s",
"Sending paste…": "Изпращане на информацията Ви…",
"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": "Изтриване на информацията",
"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?)": "Дешифроването на информацията беше неуспешно: Ключа за декриптиране липсва във връзката (Да не сте използвали услуга за пренасочване или скъсяване на връзката, което би изрязало части от нея?)",
"B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"Format": "Format", "Format": "Format",
"Plain Text": "Чист текст", "Plain Text": "Чист текст",
"Source Code": "Изходен код", "Source Code": "Изходен код",
@@ -150,44 +131,58 @@
"alternatively drag & drop a file or paste an image from the clipboard": "Също можеш да пуснеш файла върху този прозорец или да поставиш изображение от клипборда", "alternatively drag & drop a file or paste an image from the clipboard": "Също можеш да пуснеш файла върху този прозорец или да поставиш изображение от клипборда",
"File too large, to display a preview. Please download the attachment.": "Файла е твърде голям, за да се представи визуализация. Моля, свалете файла.", "File too large, to display a preview. Please download the attachment.": "Файла е твърде голям, за да се представи визуализация. Моля, свалете файла.",
"Remove attachment": "Премахнете файла", "Remove attachment": "Премахнете файла",
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Браузърът ви не поддържа прикачване на шифровани файлове. Моля, използвайте по-нов браузър", "Your browser does not support uploading encrypted files. Please use a newer browser.":
"Браузърът ви не поддържа прикачване на шифровани файлове. Моля, използвайте по-нов браузър",
"Invalid attachment.": "Невалидно прикачване.", "Invalid attachment.": "Невалидно прикачване.",
"Options": "Настройки", "Options": "Настройки",
"Shorten URL": "Скъси връзката", "Shorten URL": "Скъси връзката",
"Editor": "Редактор", "Editor": "Редактор",
"Preview": "Визуализация", "Preview": "Визуализация",
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "PATH трябва да е във края на \"%s\" за да може %s да работи правилно. Моля обновете PATH във вашият index.php .", "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.":
"Decrypt": "Дешифровай", "PATH трябва да е във края на \"%s\" за да може %s да работи правилно. Моля обновете PATH във вашият index.php .",
"Enter password": "Въведи паролата", "Decrypt":
"Дешифровай",
"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\">този FAQ (Английски)</a>, за информация, която би ви помогнала.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.":
"Във случай, че това съобщение не изчезне след време, моля прегледайте <a href=\"%s\">този FAQ (Английски)</a>, за информация, която би ви помогнала.",
"+++ no paste text +++": "+++ няма текстово съдържание +++", "+++ no 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.":
"For more information <a href=\"%s\">see this FAQ entry</a>.": "<a href=\"%s\">Вижте тази страница</a> за повече информация.", "Този сайт използва несигурна HTTP връзка. Моля използвайте само за проби.",
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Браузъра ви може да се нуждае от HTTPS връзка за да използва WebCrypto API. Пробвай <a href=\"%s\">да минеш на HTTPS</a>.", "For more information <a href=\"%s\">see this FAQ entry</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.", "<a href=\"%s\">Вижте тази страница</a> за повече информация.",
"waiting on user to provide a password": "waiting on user to provide a password", "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.":
"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.", "Браузъра ви може да се нуждае от HTTPS връзка за да използва WebCrypto API. Пробвай <a href=\"%s\">да минеш на HTTPS</a>.",
"Retry": "Retry", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.":
"Showing raw text…": "Showing raw text…", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.",
"Notice:": "Notice:", "waiting on user to provide a password":
"This link will expire after %s.": "This link will expire after %s.", "waiting on user to provide a password",
"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.", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.":
"Link:": "Link:", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.",
"Recipient may become aware of your timezone, convert time to UTC?": "Recipient may become aware of your timezone, convert time to UTC?", "Retry":
"Use Current Timezone": "Use Current Timezone", "Retry",
"Convert To UTC": "Convert To UTC", "Showing raw text…":
"Close": "Close", "Showing raw text…",
"Encrypted note on %s": "Encrypted note on %s", "Notice:":
"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.", "Notice:",
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.", "This link will expire after %s.":
"Save paste": "Save paste", "This link will expire after %s.",
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.", "This link can only be accessed once, do not use back or refresh button in your browser.":
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", "This link can only be accessed once, do not use back or refresh button in your browser.",
"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\".", "Link:":
"Error parsing YOURLS response.": "Error parsing YOURLS response." "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"
} }

View File

@@ -1,193 +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 és un pastebin en línia de codi obert i minimalista on el servidor no té coneixement de les dades enganxades. Les dades estan encriptades/desxifrades %sen el navegador%s utilitzant AES de 256 bits.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Més informació a la <a href=\"https://privatebin.info/\">pàgina del projecte</a>.",
"Because ignorance is bliss": "Perquè la ignorància és felicitat",
"en": "ca",
"Paste does not exist, has expired or has been deleted.": "El paste no existeix, ha caducat o s'ha eliminat.",
"%s requires php %s or above to work. Sorry.": "%s requereix php %s o superior per funcionar. Ho sento.",
"%s requires configuration section [%s] to be present in configuration file.": "%s requereix que la secció de configuració [%s] sigui present al fitxer de configuració.",
"Please wait %d seconds between each post.": [
"Espereu %d segon entre cada entrada.",
"Espereu %d segons entre cada entrada.",
"Please wait %d seconds between each post. (2nd plural)",
"Please wait %d seconds between each post. (3rd plural)"
],
"Paste is limited to %s of encrypted data.": "L'enganxat està limitat a %s de dades encriptades.",
"Invalid data.": "Dades no vàlides.",
"You are unlucky. Try again.": "Mala sort. Torna-ho a provar.",
"Error saving comment. Sorry.": "S'ha produït un error en desar el comentari. Ho sento.",
"Error saving paste. Sorry.": "S'ha produït un error en desar l'enganxat. Ho sento.",
"Invalid paste ID.": "Identificador d'enganxament no vàlid.",
"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.",
"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.",
"%s requires a modern browser to work.": "%s requereix un navegador modern per funcionar.",
"New": "Nou",
"Send": "Enviar",
"Clone": "Clona",
"Raw text": "Text sense processar",
"Expires": "Caducitat",
"Burn after reading": "Esborra després de ser llegit",
"Open discussion": "Discussió oberta",
"Password (recommended)": "Contrasenya (recomanat)",
"Discussion": "Discussió",
"Toggle navigation": "Alternar navegació",
"%d seconds": [
"%d segon",
"%d segons",
"%d seconds (2nd plural)",
"%d seconds (3rd plural)"
],
"%d minutes": [
"%d minut",
"%d minuts",
"%d minutes (2nd plural)",
"%d minutes (3rd plural)"
],
"%d hours": [
"%d hora",
"%d hores",
"%d hours (2nd plural)",
"%d hours (3rd plural)"
],
"%d days": [
"%d dia",
"%d dies",
"%d days (2nd plural)",
"%d days (3rd plural)"
],
"%d weeks": [
"%d setmana",
"%d setmanes",
"%d weeks (2nd plural)",
"%d weeks (3rd plural)"
],
"%d months": [
"%d mes",
"%d mesos",
"%d months (2nd plural)",
"%d months (3rd plural)"
],
"%d years": [
"%d any",
"%d anys",
"%d years (2nd plural)",
"%d years (3rd plural)"
],
"Never": "Mai",
"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.": [
"Aquest document caducarà d'aquí %d segon.",
"Aquest document caducarà d'aquí %d segons.",
"Aquest document caducarà d'aquí %d segons.",
"Aquest document caducarà d'aquí %d segons."
],
"This document will expire in %d minutes.": [
"Aquest document caducarà d'aquí %d minut.",
"Aquest document caducarà d'aquí %d minuts.",
"Aquest document caducarà d'aquí %d minuts.",
"Aquest document caducarà d'aquí %d minuts."
],
"This document will expire in %d hours.": [
"Aquest document caducarà d'aquí %d hora.",
"Aquest document caducarà d'aquí %d hores.",
"Aquest document caducarà d'aquí %d hores.",
"Aquest document caducarà d'aquí %d hores."
],
"This document will expire in %d days.": [
"Aquest document caducarà d'aquí %d dia.",
"Aquest document caducarà d'aquí %d dies.",
"Aquest document caducarà d'aquí %d dies.",
"Aquest document caducarà d'aquí %d dies."
],
"This document will expire in %d months.": [
"Aquest document caducarà d'aquí %d mes.",
"Aquest document caducarà d'aquí %d mesos.",
"Aquest document caducarà d'aquí %d mesos.",
"Aquest document caducarà d'aquí %d mesos."
],
"Please enter the password for this paste:": "Si us plau, introdueix la contrasenya per aquest paste:",
"Could not decrypt data (Wrong key?)": "No s'han pogut desxifrar les dades (Clau incorrecte?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Could not delete the paste, it was not stored in burn after reading mode.",
"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": "Respondre",
"Anonymous": "Anònim",
"Avatar generated from IP address": "Avatar generat a partir de l'adreça IP",
"Add comment": "Afegir comentari",
"Optional nickname…": "Pseudònim opcional…",
"Post comment": "Publicar comentari",
"Sending comment…": "Enviant comentari…",
"Comment posted.": "Comentari publicat.",
"Could not refresh display: %s": "Could not refresh display: %s",
"unknown status": "estat desconegut",
"server error or not responding": "server error or not responding",
"Could not post comment: %s": "No s'ha pogut publicar el comentari: %s",
"Sending paste…": "Enviant paste…",
"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",
"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": "Text sense format",
"Source Code": "Codi font",
"Markdown": "Markdown",
"Download attachment": "Baixar els adjunts",
"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": "Adjuntar un fitxer",
"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."
}

View File

@@ -1,193 +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 hè un serviziu in linea di tipu « pastebin » (ghjestiunariu dappiccicu di pezzi di testu è di codice di fonte) minimalistu è à fonte aperta induve u servitore ùn hà micca cunnuscenza di i dati mandati. I dati sò cifrati è dicifrati %sin u navigatore%s cù una cifratura AES di 256 bit.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Più dinfurmazione annantà a <a href=\"https://privatebin.info/\">pagina di u prughjettu</a>.",
"Because ignorance is bliss": "Perchè lignurenza hè una campa",
"en": "co",
"Paste does not exist, has expired or has been deleted.": "Lappiccicu ùn esiste micca, hè scadutu o hè statu squassatu.",
"%s requires php %s or above to work. Sorry.": "Per disgrazzia, %s richiede php %s o più recente per funziunà.",
"%s requires configuration section [%s] to be present in configuration file.": "%s richiede a presenza di a sezzione di cunfigurazione [%s] in a schedariu di cunfigurazione.",
"Please wait %d seconds between each post.": [
"Aspettate %d seconda trà dui publicazioni.",
"Aspettate %d seconde trà dui publicazioni.",
"Aspettate %d seconde trà dui publicazioni.",
"Aspettate %d seconde trà dui publicazioni."
],
"Paste is limited to %s of encrypted data.": "Lappiccicu hè limitatu à %s di dati cifrati.",
"Invalid data.": "Dati inaccetevule.",
"You are unlucky. Try again.": "Pruvate torna, Serete più furtunati.",
"Error saving comment. Sorry.": "Per disgrazzia, ci hè un sbagliu à larregistramentu di u cummentu.",
"Error saving paste. Sorry.": "Per disgrazzia, ci hè un sbagliu à larregistramentu di lappiccicu.",
"Invalid paste ID.": "N° di lappiccicu inaccettevule.",
"Paste is not of burn-after-reading type.": "Lappiccicu ùn hè micca di tipu « Squassà dopu a lettura ».",
"Wrong deletion token. Paste was not deleted.": "Gettone di squassatura incurrettu. Lappiccicu ùn hè micca statu squassatu.",
"Paste was properly deleted.": "Lappiccicu hè statu squassatu currettamente.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript hè richiestu per fà funziunà %s. Scusate per stu penseru.",
"%s requires a modern browser to work.": "%s richiede un navigatore mudernu per funziunà.",
"New": "Novu",
"Send": "Mandà",
"Clone": "Duppione",
"Raw text": "Testu grossu",
"Expires": "Scadenza",
"Burn after reading": "Squassà dopu a lettura",
"Open discussion": "Apre una chjachjarata",
"Password (recommended)": "Parolla dintesa (ricumandata)",
"Discussion": "Chjachjarata",
"Toggle navigation": "Invertisce a navigazione",
"%d seconds": [
"%d seconda",
"%d seconde",
"%d seconde",
"%d seconde"
],
"%d minutes": [
"%d minutu",
"%d minuti",
"%d minuti",
"%d minuti"
],
"%d hours": [
"%d ora",
"%d ore",
"%d ore",
"%d ore"
],
"%d days": [
"%d ghjornu",
"%d ghjorni",
"%d ghjorni",
"%d ghjorni"
],
"%d weeks": [
"%d settimana",
"%d settimane",
"%d settimane",
"%d settimane"
],
"%d months": [
"%d mese",
"%d mesi",
"%d mesi",
"%d mesi"
],
"%d years": [
"%d annu",
"%d anni",
"%d anni",
"%d anni"
],
"Never": "Mai",
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Nota : Què hè un serviziu di prova ; i dati ponu esse squassati à ogni mumentu. Parechji catorni anu da esse tombi sè vò impiegate troppu stu serviziu.",
"This document will expire in %d seconds.": [
"Stu ducumentu serà scadutu in %d seconda.",
"Stu ducumentu serà scadutu in %d seconde.",
"Stu ducumentu serà scadutu in %d seconde.",
"Stu ducumentu serà scadutu in %d seconde."
],
"This document will expire in %d minutes.": [
"Stu ducumentu serà scadutu in %d minutu.",
"Stu ducumentu serà scadutu in %d minuti.",
"Stu ducumentu serà scadutu in %d minuti.",
"Stu ducumentu serà scadutu in %d minuti."
],
"This document will expire in %d hours.": [
"Stu ducumentu serà scadutu in %d ora.",
"Stu ducumentu serà scadutu in %d ore.",
"Stu ducumentu serà scadutu in %d ore.",
"Stu ducumentu serà scadutu in %d ore."
],
"This document will expire in %d days.": [
"Stu ducumentu serà scadutu in %d ghjornu.",
"Stu ducumentu serà scadutu in %d ghjorni.",
"Stu ducumentu serà scadutu in %d ghjorni.",
"Stu ducumentu serà scadutu in %d ghjorni."
],
"This document will expire in %d months.": [
"Stu ducumentu serà scadutu in %d mese.",
"Stu ducumentu serà scadutu in %d mesi.",
"Stu ducumentu serà scadutu in %d mesi.",
"Stu ducumentu serà scadutu in %d mesi."
],
"Please enter the password for this paste:": "Stampittate a parolla dintesa per stappiccicu :",
"Could not decrypt data (Wrong key?)": "Ùn si pò micca dicifrà i dati ; seria incurretta a chjave ?",
"Could not delete the paste, it was not stored in burn after reading mode.": "Ùn si pò micca squassà lappiccicu, ùn hè micca statu in u modu « Squassà dopu a lettura ».",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "SOLU CÙ LOCHJI. Ùn chjudite micca sta finestra, stu messaghju un puderà più esse affissatu torna.",
"Could not decrypt comment; Wrong key?": "Ùn si pò micca dicifrà u cummentu. Seria incurretta a chjave ?",
"Reply": "Risponde",
"Anonymous": "Anonimu",
"Avatar generated from IP address": "Avatar ingeneratu da lindirizzu IP",
"Add comment": "Aghjunghje un cummentu",
"Optional nickname…": "Cugnome ozzionale…",
"Post comment": "Impustà u cummentu",
"Sending comment…": "Inviu di u cummentu…",
"Comment posted.": "Cummentu inviatu.",
"Could not refresh display: %s": "Ùn si pò micca attualizà laffissera : %s",
"unknown status": "statu scunnisciutu",
"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",
"Sending paste…": "Inviu di lappiccicu…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "U vostru appiccicu si trova à lindirizzu<a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Appughjate [Ctrl]+[c] per cupià u liame)</span>",
"Delete data": "Squassà i dati",
"Could not create paste: %s": "Ùn si pò micca creà lappiccicu : %s",
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Ùn si pò micca dicifrà lappiccicu : A chjave di dicifratura hè assente in lindirizzu. Averiate impiegatu un orientadore dindirizzu o un riduttore chì ammuzzeghja una parte di lindirizzu ?",
"B": "o",
"KiB": "Ko",
"MiB": "Mo",
"GiB": "Go",
"TiB": "To",
"PiB": "Po",
"EiB": "Eo",
"ZiB": "Zo",
"YiB": "Yo",
"Format": "Furmatu",
"Plain Text": "Testu in chjaru",
"Source Code": "Codice di fonte",
"Markdown": "Markdown",
"Download attachment": "Scaricà a pezza aghjunta",
"Cloned: '%s'": "Duppiatu : « %s »",
"The cloned file '%s' was attached to this paste.": "U schedariu duppiatu « %s » hè statu aghjuntu à stappiccicu.",
"Attach a file": "Aghjunghje un schedariu",
"alternatively drag & drop a file or paste an image from the clipboard": "in alternanza, sguillà è depone un schedariu o incullà una fiura da u premepapei",
"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 aghjunta",
"Your browser does not support uploading encrypted files. Please use a newer browser.": "U vostru navigatore ùn accetta micca linviu di i schedarii cifrati. Impiegate un navigatore più recente.",
"Invalid attachment.": "A pezza aghjunta hè inaccettevule.",
"Options": "Ozzioni",
"Shorten URL": "Ammuzzà lindirizzu",
"Editor": "Editore",
"Preview": "Fighjulata",
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s richiede chì a variabile PATH si compii cù « %s ». Mudificate a variabile PATH in u vostru index.php.",
"Decrypt": "Dicifrà",
"Enter password": "Stampittate a parolla dintesa",
"Loading…": "Caricamentu…",
"Decrypting paste…": "Dicifratura di lappiccicu…",
"Preparing new paste…": "Approntu di u novu appiccicu…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Sè stu messaghju ùn smarisce micca, lighjite <a href=\"%s\">sta FAQ per ottene infurmazioni annantà a risuluzione di i prublemi</a>.",
"+++ no paste text +++": "+++ nisunu testu incullatu +++",
"Could not get paste data: %s": "Ùn si pò micca ottene i dati di lappiccicu : %s",
"QR code": "Codice QR",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Stu situ web impiegheghja una cunnessione HTTP non sicura ! impiegatelu solu per una prova.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Per sapene di più, <a href=\"%s\">lighjite sta rubrica di a FAQ</a>.",
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "U vostru navigatore pò richiede una cunnessione HTTPS per permette lusu di lAPI WebCrypto. Pruvate di <a href=\"%s\">passà à HTTPS</a>.",
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "U vostru navigatore ùn accetta micca WebAssembly, impiegatu per a cumpressione zlib. Pudete creà ducumenti micca cumpressi, ma ùn pudete micca leghje quelli chì sò cumpressi.",
"waiting on user to provide a password": "in attesa di lutilizatore per furnisce una parolla dintesa",
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Ùn si pò micca dicifrà i dati. Avete stampittatu una parolla dintesa incurretta ? Pruvate torna cù u buttone insù.",
"Retry": "Pruvà torna",
"Showing raw text…": "Affissera di u testu grossu…",
"Notice:": "Avertimentu :",
"This link will expire after %s.": "Stu liame hà da scade dopu à %s.",
"This link can only be accessed once, do not use back or refresh button in your browser.": "Stu liame pò esse accessu solu una volta, ùn impiegate micca i buttoni Precedente o Attualizà di u vostru navigatore.",
"Link:": "Liame :",
"Recipient may become aware of your timezone, convert time to UTC?": "U destinatariu pò cunnnosce u vostru fusu orariu. Vulete cunvertisce lora in u furmatu UTC ?",
"Use Current Timezone": "Impiegà u fusu orariu attuale",
"Convert To UTC": "Cunvertisce in UTC",
"Close": "Chjode",
"Encrypted note on %s": "Nota cifrata nantà %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visitate stu liame per vede a nota. Date lindirizzu à qualunque li permette daccede à a nota dinù.",
"URL shortener may expose your decrypt key in URL.": "Un ammuzzatore dindirizzu pò palisà a vostra chjave di dicifratura in lindirizzu.",
"Save paste": "Arregistrà lappiccicu",
"Your IP is not authorized to create pastes.": "U vostru indirizzu IP ùn hè micca auturizatu à creà lappiccichi.",
"Trying to shorten a URL that isn't pointing at our instance.": "Pruvate dammuzzà un indirizzu web chì ùn punta micca versu a vostra instanza.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Sbagliu à a chjama di YOURLS. Seria forse una cunfigurazione gattiva, tale una \"apiurl\" o \"signature\" falsa o assente.",
"Error parsing YOURLS response.": "Sbagliu durante lanalisa di a risposta di YOURLS."
}

View File

@@ -1,193 +1,188 @@
{ {
"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ý neanalyzuje vložená data. Data jsou šifrována %sv prohlížeči%s pomocí 256 bitů AES.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> 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>.": "Více informací na <a href=\"https://privatebin.info/\">stránce projetu</a>.", "%s je minimalistický open source 'pastebin' server, který neanalyzuje vložená data. Data jsou šifrována <i>v prohlížeči</i> pomocí 256 bitů AES. 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á",
"en": "cs", "en": "cs",
"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.":
"%s requires php %s or above to work. Sorry.": "%s vyžaduje php %s nebo vyšší. Lituji.", "Vložený text neexistuje, expiroval nebo byl odstraněn.",
"%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 php %s or above to work. Sorry.":
"Please wait %d seconds between each post.": [ "%s vyžaduje php %s nebo vyšší. Lituji.",
"%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.":
"Počet sekund do dalšího příspěvku: %d.", "Počet sekund do dalšího příspěvku: %d.",
"Počet sekund do dalšího příspěvku: %d.", "Paste is limited to %s of encrypted data.":
"Počet sekund do dalšího příspěvku: %d.", "Příspěvek je limitován na %s šífrovaných dat",
"Počet sekund do dalšího příspěvku: %d." "Invalid data.":
], "Chybná data.",
"Paste is limited to %s of encrypted data.": "Příspěvek je limitován na %s šífrovaných dat", "You are unlucky. Try again.":
"Invalid data.": "Chybná data.", "Lituji, zkuste to znovu.",
"You are unlucky. Try again.": "Lituji, zkuste to znovu.", "Error saving comment. Sorry.":
"Error saving comment. Sorry.": "Chyba při ukládání komentáře.", "Chyba při ukládání komentáře.",
"Error saving paste. Sorry.": "Chyba při ukládání příspěvku.", "Error saving paste. Sorry.":
"Invalid paste ID.": "Chybně vložené ID.", "Chyba při ukládání příspěvku.",
"Paste is not of burn-after-reading type.": "Příspěvek není nastaven na smazaní po přečtení.", "Invalid paste ID.":
"Wrong deletion token. Paste was not deleted.": "Chybný token pro odstranění. Příspěvek nebyl smazán.", "Chybně vložené ID.",
"Paste was properly deleted.": "Příspěvek byl řádně smazán.", "Paste is not of burn-after-reading type.":
"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.", "Paste is not of burn-after-reading type.",
"%s requires a modern browser to work.": "%%s requires a modern browser to work.", "Wrong deletion token. Paste was not deleted.":
"New": "Nový", "Wrong deletion token. Paste was not deleted.",
"Send": "Odeslat", "Paste was properly deleted.":
"Clone": "Klonovat", "Paste was properly deleted.",
"Raw text": "Pouze Text", "JavaScript is required for %s to work. Sorry for the inconvenience.":
"Expires": "Expirace", "JavaScript is required for %s to work. Sorry for the inconvenience.",
"Burn after reading": "Po přečtení smazat", "%s requires a modern browser to work.":
"Open discussion": "Povolit komentáře", "%%s requires a modern browser to work.",
"Password (recommended)": "Heslo (doporučeno)", "New":
"Discussion": "Komentáře", "Nový",
"Toggle navigation": "Přepnout navigaci", "Send":
"%d seconds": [ "Odeslat",
"%d sekuda", "Clone":
"%d sekundy", "Klonovat",
"%d sekund", "Raw text":
"%d seconds (3rd plural)" "Pouze Text",
], "Expires":
"%d minutes": [ "Expirace",
"%d minuta", "Burn after reading":
"%d minuty", "Po přečtení smazat",
"%d minut", "Open discussion":
"%d minutes (3rd plural)" "Povolit komentáře",
], "Password (recommended)":
"%d hours": [ "Heslo (doporučeno)",
"%d hodin", "Discussion":
"%d hodiny", "Komentáře",
"%d hodin", "Toggle navigation":
"%d hours (3rd plural)" "Toggle navigation",
], "%d seconds": ["%d sekuda", "%d sekundy", "%d sekund"],
"%d days": [ "%d minutes": ["%d minuta", "%d minuty", "%d minut"],
"%d den", "%d hours": ["%d hodin", "%d hodiny", "%d hodin"],
"%d dny", "%d days": ["%d den", "%d dny", "%d dní"],
"%d dní", "%d weeks": ["%d týden", "%d týdeny", "%d týdnů"],
"%d days (3rd plural)" "%d months": ["%d měsíc", "%d měsíce", "%d měsíců"],
], "%d years": ["%d rok", "%d roky", "%d roků"],
"%d weeks": [ "Never":
"%d týden", "Nikdy",
"%d týdeny", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
"%d týdnů", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.",
"%d weeks (3rd plural)" "This document will expire in %d seconds.":
], ["Tento dokument expiruje za %d sekundu.", "Tento dokument expiruje za %d sekundy.", "Tento dokument expiruje za %d sekund."],
"%d months": [ "This document will expire in %d minutes.":
"%d měsíc", ["Tento dokument expiruje za %d minutu.", "Tento dokument expiruje za %d minuty.", "Tento dokument expiruje za %d minut."],
"%d měsíce", "This document will expire in %d hours.":
"%d měsíců", ["Tento dokument expiruje za %d hodinu.", "Tento dokument expiruje za %d hodiny.", "Tento dokument expiruje za %d hodin."],
"%d months (3rd plural)" "This document will expire in %d days.":
], ["Tento dokument expiruje za %d den.", "Tento dokument expiruje za %d dny.", "Tento dokument expiruje za %d dny."],
"%d years": [ "This document will expire in %d months.":
"%d rok", ["Tento dokument expiruje za %d měsíc.", "Tento dokument expiruje za %d měsíce.", "Tento dokument expiruje za %d měsíců."],
"%d roky", "Please enter the password for this paste:":
"%d roků", "Zadejte prosím heslo:",
"%d years (3rd plural)" "Could not decrypt data (Wrong key?)":
], "Could not decrypt data (Wrong key?)",
"Never": "Nikdy", "Could not delete the paste, it was not stored in burn after reading mode.":
"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.", "Could not delete the paste, it was not stored in burn after reading mode.",
"This document will expire in %d seconds.": [ "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
"Tento dokument expiruje za %d sekundu.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.",
"Tento dokument expiruje za %d sekundy.", "Could not decrypt comment; Wrong key?":
"Tento dokument expiruje za %d sekund.", "Could not decrypt comment; Wrong key?",
"Tento dokument expiruje za %d sekund." "Reply":
], "Reply",
"This document will expire in %d minutes.": [ "Anonymous":
"Tento dokument expiruje za %d minutu.", "Anonym",
"Tento dokument expiruje za %d minuty.", "Avatar generated from IP address":
"Tento dokument expiruje za %d minut.", "Avatar generated from IP address",
"Tento dokument expiruje za %d minut." "Add comment":
], "Přidat komentář",
"This document will expire in %d hours.": [ "Optional nickname…":
"Tento dokument expiruje za %d hodinu.", "Volitelný nickname…",
"Tento dokument expiruje za %d hodiny.", "Post comment":
"Tento dokument expiruje za %d hodin.", "Odeslat komentář",
"Tento dokument expiruje za %d hodin." "Sending comment…":
], "Odesílání komentáře…",
"This document will expire in %d days.": [ "Comment posted.":
"Tento dokument expiruje za %d den.", "Komentář odeslán.",
"Tento dokument expiruje za %d dny.", "Could not refresh display: %s":
"Tento dokument expiruje za %d dny.", "Could not refresh display: %s",
"Tento dokument expiruje za %d dny." "unknown status":
], "neznámý stav",
"This document will expire in %d months.": [ "server error or not responding":
"Tento dokument expiruje za %d měsíc.", "Chyba na serveru nebo server neodpovídá",
"Tento dokument expiruje za %d měsíce.", "Could not post comment: %s":
"Tento dokument expiruje za %d měsíců.", "Nelze odeslat komentář: %s",
"Tento dokument expiruje za %d měsíců." "Sending paste…":
], "Odesílání příspěvku…",
"Please enter the password for this paste:": "Zadejte prosím heslo:", "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
"Could not decrypt data (Wrong key?)": "Nepodařilo se dešifrovat data (Špatný klíč?)", "Váš link je <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Stiskněte [Ctrl]+[c] pro zkopírování)</span>",
"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í.", "Delete data":
"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.", "Odstranit data",
"Could not decrypt comment; Wrong key?": "Nepodařilo se dešifrovat komentář; Špatný klíč?", "Could not create paste: %s":
"Reply": "Odpovědět", "Nelze vytvořit příspěvek: %s",
"Anonymous": "Anonym", "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
"Avatar generated from IP address": "Avatar vygenerován z IP adresy", "Nepodařilo se dešifrovat příspěvek: V adrese chybí dešifrovací klíč (Možnou příčinou může být URL shortener?)",
"Add comment": "Přidat komentář",
"Optional nickname…": "Volitelný nickname…",
"Post comment": "Odeslat komentář",
"Sending comment…": "Odesílání komentáře…",
"Comment posted.": "Komentář odeslán.",
"Could not refresh display: %s": "Nepodařilo se obnovit zobrazení: %s",
"unknown status": "neznámý stav",
"server error or not responding": "Chyba na serveru nebo server neodpovídá",
"Could not post comment: %s": "Nelze odeslat komentář: %s",
"Sending paste…": "Odesílání příspěvku…",
"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",
"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íč (Možnou příčinou může být URL shortener?)",
"B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"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'": "Klonová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.": "The cloned file '%s' was attached to this paste.",
"Attach a file": "Připojit soubor", "Attach a file": "Připojit soubor",
"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", "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.": "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": "Volby", "Options": "Volby",
"Shorten URL": "Zkrátit URL", "Shorten URL": "Shorten 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 skončil s \"%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.":
"Decrypt": "Dešifrovat", "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.",
"Enter password": "Zadejte heslo", "Decrypt":
"Loading…": "Načítání…", "Decrypt",
"Decrypting paste…": "Dešifruji příspěvek…", "Enter password":
"Preparing new paste…": "Připravuji nový příspěvek…", "Zadejte heslo",
"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>.", "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 +++": "+++ žádný vložený text +++", "+++ 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":
"QR code": "QR kód", "Could not get paste data: %s",
"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í.", "QR code": "QR code",
"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>.", "This website is using an insecure HTTP connection! Please use it only for testing.":
"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>.", "This website is using an insecure HTTP connection! Please use it only for testing.",
"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é.", "For more information <a href=\"%s\">see this FAQ entry</a>.":
"waiting on user to provide a password": "čekám na zadání hesla", "For more information <a href=\"%s\">see this FAQ entry</a>.",
"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.", "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.":
"Retry": "Opakovat", "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.",
"Showing raw text…": "Zobrazuji surový text…", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.":
"Notice:": "Upozornění:", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.",
"This link will expire after %s.": "Tento odkaz vyprší za %s.", "waiting on user to provide a password":
"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.", "waiting on user to provide a password",
"Link:": "Odkaz:", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.":
"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?", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.",
"Use Current Timezone": "Použít aktuální časové pásmo", "Retry":
"Convert To UTC": "Převést na UTC", "Retry",
"Close": "Zavřít", "Showing raw text…":
"Encrypted note on %s": "Šifrovaná poznámka ve službě %s", "Showing raw text…",
"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.", "Notice:":
"URL shortener may expose your decrypt key in URL.": "Zkracovač URL může odhalit váš dešifrovací klíč v URL.", "Notice:",
"Save paste": "Uložit příspěvek", "This link will expire after %s.":
"Your IP is not authorized to create pastes.": "Vaše IP adresa nemá oprávnění k vytvoření vložení.", "This link will expire after %s.",
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", "This link can only be accessed once, do not use back or refresh button in your browser.":
"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\".", "This link can only be accessed once, do not use back or refresh button in your browser.",
"Error parsing YOURLS response.": "Error parsing YOURLS response." "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"
} }

View File

@@ -1,144 +1,125 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s ist ein minimalistischer, quelloffener \"Pastebin\"-artiger Dienst, bei dem der Server keinerlei Kenntnis der Inhalte hat. Die Daten werden %sim Browser%s mit 256 Bit AES ver- und entschlüsselt.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> 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>.": "Weitere Informationen sind auf der <a href=\"https://privatebin.info/\">Projektseite</a> zu finden.", "%s ist ein minimalistischer, quelloffener \"Pastebin\"-artiger Dienst, bei dem der Server keinerlei Kenntnis der Inhalte hat. Die Daten werden <i>im Browser</i> mit 256 Bit AES ver- und entschlüsselt. Weitere Informationen sind auf der <a href=\"https://privatebin.info/\">Projektseite</a> zu finden.",
"Because ignorance is bliss": "Unwissenheit ist ein Segen", "Because ignorance is bliss":
"Unwissenheit ist ein Segen",
"en": "de", "en": "de",
"Paste does not exist, has expired or has been deleted.": "Diesen Text gibt es nicht, er ist abgelaufen oder wurde gelöscht.", "Paste does not exist, has expired or has been deleted.":
"%s requires php %s or above to work. Sorry.": "%s benötigt PHP %s oder höher, um zu funktionieren. Sorry.", "Diesen Text gibt es nicht, er ist abgelaufen oder wurde gelöscht.",
"%s requires configuration section [%s] to be present in configuration file.": "%s benötigt den Konfigurationsabschnitt [%s] in der Konfigurationsdatei um zu funktionieren.", "%s requires php %s or above to work. Sorry.":
"Please wait %d seconds between each post.": [ "%s benötigt PHP %s oder höher, um zu funktionieren. Sorry.",
"Bitte warte eine Sekunde zwischen dem Absenden zweier Beiträge.", "%s requires configuration section [%s] to be present in configuration file.":
"Bitte warte %d Sekunden zwischen dem Absenden zweier Beiträge.", "%s benötigt den Konfigurationsabschnitt [%s] in der Konfigurationsdatei um zu funktionieren.",
"Bitte warte %d Sekunden zwischen dem Absenden zweier Beiträge.", "Please wait %d seconds between each post.":
"Bitte warte %d Sekunden zwischen dem Absenden zweier Beiträge." "Bitte warte %d Sekunden zwischen dem Absenden.",
], "Paste is limited to %s of encrypted data.":
"Paste is limited to %s of encrypted data.": "Texte sind auf %s verschlüsselte Datenmenge beschränkt.", "Texte sind auf %s verschlüsselte Datenmenge beschränkt.",
"Invalid data.": "Ungültige Daten.", "Invalid data.":
"You are unlucky. Try again.": "Du hast Pech. Versuchs nochmal.", "Ungültige Daten.",
"Error saving comment. Sorry.": "Fehler beim Speichern des Kommentars. Sorry.", "You are unlucky. Try again.":
"Error saving paste. Sorry.": "Fehler beim Speichern des Textes. Sorry.", "Du hast Pech. Versuchs nochmal.",
"Invalid paste ID.": "Ungültige Text-ID.", "Error saving comment. Sorry.":
"Paste is not of burn-after-reading type.": "Text ist kein \"Einmal\"-Typ.", "Fehler beim Speichern des Kommentars. Sorry.",
"Wrong deletion token. Paste was not deleted.": "Falscher Lösch-Code. Text wurde nicht gelöscht.", "Error saving paste. Sorry.":
"Paste was properly deleted.": "Text wurde erfolgreich gelöscht.", "Fehler beim Speichern des Textes. Sorry.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript ist eine Voraussetzung, um %s zu nutzen. Bitte entschuldige die Unannehmlichkeiten.", "Invalid paste ID.":
"%s requires a modern browser to work.": "%s setzt einen modernen Browser voraus, um funktionieren zu können.", "Ungültige Text-ID.",
"New": "Neu", "Paste is not of burn-after-reading type.":
"Send": "Senden", "Text ist kein \"Einmal\"-Typ.",
"Clone": "Klonen", "Wrong deletion token. Paste was not deleted.":
"Raw text": "Reiner Text", "Falscher Lösch-Code. Text wurde nicht gelöscht.",
"Expires": "Ablaufzeit", "Paste was properly deleted.":
"Burn after reading": "Nach dem Lesen löschen", "Text wurde erfolgreich gelöscht.",
"Open discussion": "Kommentare aktivieren", "JavaScript is required for %s to work. Sorry for the inconvenience.":
"Password (recommended)": "Passwort (empfohlen)", "JavaScript ist eine Voraussetzung, um %s zu nutzen. Bitte entschuldige die Unannehmlichkeiten.",
"Discussion": "Kommentare", "%s requires a modern browser to work.":
"Toggle navigation": "Navigation umschalten", "%s setzt einen modernen Browser voraus, um funktionieren zu können.",
"%d seconds": [ "New":
"%d Sekunde", "Neu",
"%d Sekunden", "Send":
"%d seconds (2nd plural)", "Senden",
"%d seconds (3rd plural)" "Clone":
], "Klonen",
"%d minutes": [ "Raw text":
"%d Minute", "Reiner Text",
"%d Minuten", "Expires":
"%d minutes (2nd plural)", "Ablaufzeit",
"%d minutes (3rd plural)" "Burn after reading":
], "Nach dem Lesen löschen",
"%d hours": [ "Open discussion":
"%d Stunde", "Kommentare aktivieren",
"%d Stunden", "Password (recommended)":
"%d hours (2nd plural)", "Passwort (empfohlen)",
"%d hours (3rd plural)" "Discussion":
], "Kommentare",
"%d days": [ "Toggle navigation":
"%d Tag", "Navigation umschalten",
"%d Tage", "%d seconds": ["%d Sekunde", "%d Sekunden"],
"%d days (2nd plural)", "%d minutes": ["%d Minute", "%d Minuten"],
"%d days (3rd plural)" "%d hours": ["%d Stunde", "%d Stunden"],
], "%d days": ["%d Tag", "%d Tage"],
"%d weeks": [ "%d weeks": ["%d Woche", "%d Wochen"],
"%d Woche", "%d months": ["%d Monat", "%d Monate"],
"%d Wochen", "%d years": ["%d Jahr", "%d Jahre"],
"%d weeks (2nd plural)", "Never":
"%d weeks (3rd plural)" "Nie",
], "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
"%d months": [ "Hinweis: Dies ist ein Versuchsdienst. Daten können jederzeit gelöscht werden. Kätzchen werden sterben wenn du diesen Dienst missbrauchst.",
"%d Monat", "This document will expire in %d seconds.":
"%d Monate", ["Dieses Dokument läuft in einer Sekunde ab.", "Dieses Dokument läuft in %d Sekunden ab."],
"%d months (2nd plural)", "This document will expire in %d minutes.":
"%d months (3rd plural)" ["Dieses Dokument läuft in einer Minute ab.", "Dieses Dokument läuft in %d Minuten ab."],
], "This document will expire in %d hours.":
"%d years": [ ["Dieses Dokument läuft in einer Stunde ab.", "Dieses Dokument läuft in %d Stunden ab."],
"%d Jahr", "This document will expire in %d days.":
"%d Jahre", ["Dieses Dokument läuft in einem Tag ab.", "Dieses Dokument läuft in %d Tagen ab."],
"%d years (2nd plural)", "This document will expire in %d months.":
"%d years (3rd plural)" ["Dieses Dokument läuft in einem Monat ab.", "Dieses Dokument läuft in %d Monaten ab."],
], "Please enter the password for this paste:":
"Never": "Nie", "Bitte gib das Passwort für diesen Text ein:",
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Hinweis: Dies ist ein Versuchsdienst. Daten können jederzeit gelöscht werden. Kätzchen werden sterben, wenn du diesen Dienst missbrauchst.", "Could not decrypt data (Wrong key?)":
"This document will expire in %d seconds.": [ "Konnte Daten nicht entschlüsseln (Falscher Schlüssel?)",
"Dieses Dokument läuft in einer Sekunde ab.", "Could not delete the paste, it was not stored in burn after reading mode.":
"Dieses Dokument läuft in %d Sekunden ab.", "Konnte das Paste nicht löschen, es wurde nicht im Einmal-Modus gespeichert.",
"Dieses Dokument läuft in %d Sekunden ab.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
"Dieses Dokument läuft in %d Sekunden ab." "DIESER TEXT IST NUR FÜR DICH GEDACHT. Schließe das Fenster nicht, diese Nachricht kann nur einmal geöffnet werden.",
], "Could not decrypt comment; Wrong key?":
"This document will expire in %d minutes.": [ "Konnte Kommentar nicht entschlüsseln; Falscher Schlüssel?",
"Dieses Dokument läuft in einer Minute ab.", "Reply":
"Dieses Dokument läuft in %d Minuten ab.", "Antworten",
"Dieses Dokument läuft in %d Minuten ab.", "Anonymous":
"Dieses Dokument läuft in %d Minuten ab." "Anonym",
], "Avatar generated from IP address":
"This document will expire in %d hours.": [ "Avatar (generiert aus der IP-Adresse)",
"Dieses Dokument läuft in einer Stunde ab.", "Add comment":
"Dieses Dokument läuft in %d Stunden ab.", "Kommentar hinzufügen",
"This document will expire in %d hours (2nd plural)", "Optional nickname…":
"This document will expire in %d hours (3rd plural)" "Optionales Pseudonym…",
], "Post comment":
"This document will expire in %d days.": [ "Kommentar absenden",
"Dieses Dokument läuft in einem Tag ab.", "Sending comment…":
"Dieses Dokument läuft in %d Tagen ab.", "Sende Kommentar…",
"Dieses Dokument läuft in %d Tagen ab.", "Comment posted.":
"Dieses Dokument läuft in %d Tagen ab." "Kommentar gesendet.",
], "Could not refresh display: %s":
"This document will expire in %d months.": [ "Ansicht konnte nicht aktualisiert werden: %s",
"Dieses Dokument läuft in einem Monat ab.", "unknown status":
"Dieses Dokument läuft in %d Monaten ab.", "Unbekannter Grund",
"Dieses Dokument läuft in %d Monaten ab.", "server error or not responding":
"Dieses Dokument läuft in %d Monaten ab." "Fehler auf dem Server oder keine Antwort vom Server",
], "Could not post comment: %s":
"Please enter the password for this paste:": "Bitte gib das Passwort für diesen Text ein:", "Konnte Kommentar nicht senden: %s",
"Could not decrypt data (Wrong key?)": "Konnte Daten nicht entschlüsseln (Falscher Schlüssel?)", "Sending paste…":
"Could not delete the paste, it was not stored in burn after reading mode.": "Konnte das Paste nicht löschen, es wurde nicht im Einmal-Modus gespeichert.", "Sende Paste…",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "DIESER TEXT IST NUR FÜR DICH GEDACHT. Schließe das Fenster nicht, diese Nachricht kann nur einmal geöffnet werden.", "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
"Could not decrypt comment; Wrong key?": "Konnte Kommentar nicht entschlüsseln; Falscher Schlüssel?", "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>",
"Reply": "Antworten", "Delete data":
"Anonymous": "Anonym", "Lösche Daten",
"Avatar generated from IP address": "Avatar (generiert aus der IP-Adresse)", "Could not create paste: %s":
"Add comment": "Kommentar hinzufügen", "Text konnte nicht erstellt werden: %s",
"Optional nickname…": "Optionales Pseudonym…", "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
"Post comment": "Kommentar absenden", "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?)",
"Sending comment…": "Sende Kommentar…",
"Comment posted.": "Kommentar gesendet.",
"Could not refresh display: %s": "Ansicht konnte nicht aktualisiert werden: %s",
"unknown status": "Unbekannter Grund",
"server error or not responding": "Fehler auf dem Server oder keine Antwort vom Server",
"Could not post comment: %s": "Konnte Kommentar nicht senden: %s",
"Sending paste…": "Sende Paste…",
"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",
"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?)",
"B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"Format": "Format", "Format": "Format",
"Plain Text": "Nur Text", "Plain Text": "Nur Text",
"Source Code": "Quellcode", "Source Code": "Quellcode",
@@ -147,47 +128,61 @@
"Cloned: '%s'": "Geklont: '%s'", "Cloned: '%s'": "Geklont: '%s'",
"The cloned file '%s' was attached to this paste.": "Die geklonte Datei '%s' wurde angehängt.", "The cloned file '%s' was attached to this paste.": "Die geklonte Datei '%s' wurde angehängt.",
"Attach a file": "Datei anhängen", "Attach a file": "Datei anhängen",
"alternatively drag & drop a file or paste an image from the clipboard": "Eine Datei kann auch durch ziehen und loslassen ausgewählt oder ein Bild aus der Zwischenablage einfügt werden.", "alternatively drag & drop a file or paste an image from the clipboard": "Alternativ Drag & Drop einer Datei oder einfügen eines Bildes aus der Zwischenablage",
"File too large, to display a preview. Please download the attachment.": "Datei zu groß, um als Vorschau angezeigt zu werden. Bitte Anhang herunterladen.", "File too large, to display a preview. Please download the attachment.": "Datei zu groß, um als Vorschau angezeigt zu werden. Bitte Anhang herunterladen.",
"Remove attachment": "Anhang entfernen", "Remove attachment": "Anhang entfernen",
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Dein Browser unterstützt das hochladen von verschlüsselten Dateien nicht. Bitte verwende einen neueren Browser.", "Your browser does not support uploading encrypted files. Please use a newer browser.":
"Dein Browser unterstützt das hochladen von verschlüsselten Dateien nicht. Bitte verwende einen neueren Browser.",
"Invalid attachment.": "Ungültiger Datei-Anhang.", "Invalid attachment.": "Ungültiger Datei-Anhang.",
"Options": "Optionen", "Options": "Optionen",
"Shorten URL": "URL verkürzen", "Shorten URL": "URL verkürzen",
"Editor": "Bearbeiten", "Editor": "Bearbeiten",
"Preview": "Vorschau", "Preview": "Vorschau",
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "Der PATH muss bei %s mit einem \"%s\" enden. Bitte passe Deinen PATH in Deiner index.php an.", "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.":
"Decrypt": "Entschlüsseln", "Der PATH muss bei %s mit einem \"%s\" enden. Bitte passe Deinen PATH in Deiner index.php an.",
"Enter password": "Passwort eingeben", "Decrypt":
"Entschlüsseln",
"Enter password":
"Passwort eingeben",
"Loading…": "Lädt…", "Loading…": "Lädt…",
"Decrypting paste…": "Entschlüssle Text…", "Decrypting paste…": "Entschlüssle Text…",
"Preparing new paste…": "Bereite neuen Text vor…", "Preparing new paste…": "Bereite neuen Text vor…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Wenn diese Nachricht nicht mehr verschwindet, schau bitte in <a href=\"%s\">die FAQ</a> (Englisch), um zu sehen, wie der Fehler behoben werden kann.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.":
"Wenn diese Nachricht nicht mehr verschwindet, schau bitte in <a href=\"%s\">die FAQ</a> (englisch), um zu sehen, wie der Fehler behoben werden kann.",
"+++ no paste text +++": "+++ kein Paste-Text +++", "+++ no paste text +++": "+++ kein Paste-Text +++",
"Could not get paste data: %s": "Text konnte nicht geladen werden: %s", "Could not get paste data: %s":
"Text konnte nicht geladen werden: %s",
"QR code": "QR code", "QR code": "QR code",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Diese Webseite verwendet eine unsichere HTTP Verbindung! Bitte benutze sie nur zum Testen.", "This website is using an insecure HTTP connection! Please use it only for testing.":
"For more information <a href=\"%s\">see this FAQ entry</a>.": "<a href=\"%s\">Besuche diesen FAQ Eintrag</a> für weitere Informationen dazu.", "Diese Webseite verwendet eine unsichere HTTP Verbindung! Bitte benutze sie nur zum Testen.",
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Dein Browser benötigt möglicherweise eine HTTPS Verbindung um das WebCrypto API nutzen zu können. Versuche <a href=\"%s\">auf HTTPS zu wechseln</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.":
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Dein Browser unterstützt WebAssembly nicht, welches für zlib Komprimierung benötigt wird. Du kannst unkomprimierte Dokumente erzeugen, aber keine komprimierten lesen.", "<a href=\"%s\">Besuche diesen FAQ Eintrag</a> für weitere Informationen dazu.",
"waiting on user to provide a password": "warte auf Passworteingabe durch Benutzer", "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.":
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Konnte Daten nicht entschlüsseln. Hast Du das falsche Passwort eingegeben? Wiederhole den Vorgang mit dem oben stehenden Knopf.", "Dein Browser benötigt möglicherweise eine HTTPS Verbindung um das WebCrypto API nutzen zu können. Versuche <a href=\"%s\">auf HTTPS zu wechseln</a>.",
"Retry": "Wiederholen", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.":
"Showing raw text…": "Rohtext wird angezeigt…", "Dein Browser unterstützt WebAssembly nicht, welches für zlib Komprimierung benötigt wird. Du kannst unkomprimierte Dokumente erzeugen, aber keine komprimierten lesen.",
"Notice:": "Hinweis:", "waiting on user to provide a password":
"This link will expire after %s.": "Dieser Link wird am %s ablaufen.", "warte auf Passworteingabe durch Benutzer",
"This link can only be accessed once, do not use back or refresh button in your browser.": "Dieser Link kann nur einmal geöffnet werden, verwende nicht den Zurück- oder Neu-laden-Knopf Deines Browsers.", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.":
"Link:": "Link:", "Konnte Daten nicht entschlüsseln. Hast Du das falsche Passwort eingegeben? Wiederhole den Vorgang mit dem oben stehenden Knopf.",
"Recipient may become aware of your timezone, convert time to UTC?": "Der Empfänger könnte Deine Zeitzone erfahren, möchtest Du die Zeit in UTC umwandeln?", "Retry":
"Use Current Timezone": "Aktuelle Zeitzone verwenden", "Wiederholen",
"Convert To UTC": "In UTC umwandeln", "Showing raw text…":
"Close": "Schliessen", "Zeige reinen Text an…",
"Encrypted note on %s": "Verschlüsselte Notiz auf %s", "Notice:":
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Besuche diesen Link um das Dokument zu sehen. Wird die URL an eine andere Person gegeben, so kann diese Person ebenfalls auf dieses Dokument zugreifen.", "Hinweis:",
"URL shortener may expose your decrypt key in URL.": "Der URL-Verkürzer kann den Schlüssel in der URL enthüllen.", "This link will expire after %s.":
"Save paste": "Text speichern", "Dieser Link wird um %s ablaufen.",
"Your IP is not authorized to create pastes.": "Deine IP ist nicht berechtigt, Texte zu erstellen.", "This link can only be accessed once, do not use back or refresh button in your browser.":
"Trying to shorten a URL that isn't pointing at our instance.": "Versuch eine URL zu verkürzen, die nicht auf unsere Instanz zeigt.", "Dieser Link kann nur einmal geöffnet werden, verwende nicht den Zurück- oder Neu-laden-Knopf Deines Browsers.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Fehler beim Aufruf von YOURLS. Wahrscheinlich ein Konfigurationsproblem, wie eine falsche oder fehlende \"apiurl\" oder \"signature\".", "Link:":
"Error parsing YOURLS response.": "Fehler beim Verarbeiten der YOURLS-Antwort." "Link:",
"Recipient may become aware of your timezone, convert time to UTC?":
"Der Empfänger könnte Deine Zeitzone erfahren, möchtest Du die Zeit in UTC umwandeln?",
"Use Current Timezone":
"Aktuelle Zeitzone verwenden",
"Convert To UTC":
"In UTC Umwandeln",
"Close":
"Schliessen"
} }

View File

@@ -1,193 +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 είναι ένα λιτό, ανοικτού λογισμικού διαδικτυακής υπηρεσίας επικόλλησης όπου ο διακομιστής έχει πλήρη άγνια του περιεχομένου που επικολλήθηκαν. Τα Δεδομένα κρυπτογραφούνται και αποκρυπτογραφούνται %sστον φιλομετρητή (browser)%s χρησιμοποιόντας 256 bits AES.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Περισσότερες πληροφορίες στον <a href=\"https://privatebin.info/\">ιστότοπο του εργαλείου</a>.",
"Because ignorance is bliss": "Επειδή η άγνοια είναι ευτυχία",
"en": "el",
"Paste does not exist, has expired or has been deleted.": "Η επικόλληση δεν υπάρχει, έληξε ή διαγράφηκε",
"%s requires php %s or above to work. Sorry.": "%s απαιτεί php %s ή νεότερη για να λειτουργήσει. Συγγνώμη.",
"%s requires configuration section [%s] to be present in configuration file.": "%s απαιτεί οι ρυθμίσεις [%s] να υπάρχουν στο αρχείο ρυθμίσεων.",
"Please wait %d seconds between each post.": [
"Παρακαλώ περιμένετε %d δευτερόλεπτο μεταξύ κάθε επικόλλησης.",
"Παρακαλώ περιμένετε %d δευτερόλεπτα μεταξύ κάθε επικόλλησης.",
"Παρακαλώ περιμένετε %d δευτερόλεπτα μεταξύ κάθε επικόλλησης.",
"Παρακαλώ περιμένετε %d δευτερόλεπτα μεταξύ κάθε επικόλλησης."
],
"Paste is limited to %s of encrypted data.": "Η επικόλληση είναι περιορισμένη σε %s κρυπτογραφημένων δεδομένων.",
"Invalid data.": "Λάθος δεδομένα.",
"You are unlucky. Try again.": "Ατυχήσατε. Προσπαθήστε πάλι.",
"Error saving comment. Sorry.": "Λάθος στην αποθήκευση του σχόλιου. Συγγνώμη.",
"Error saving paste. Sorry.": "Λάθος στην αποθήκευση της επικόλλησης. Συγγνώμη.",
"Invalid paste ID.": "Λάθος αναγνωριστικό επικόλλησης.",
"Paste is not of burn-after-reading type.": "Η επικόληση δεν είναι τύπου καταστροφή-μετά-το-διάβασμα.",
"Wrong deletion token. Paste was not deleted.": "Λάθος αναγνωριστικό διαγραφής. Η επικόλληση δεν διαγράφηκε.",
"Paste was properly deleted.": "Η επικόλληση διαγράφηκε επιτυχώς.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Η JavaScript είναι απαραίτητη για να λειτουργήσει το %s. Συγγνώμη για την ταλαιπωρία.",
"%s requires a modern browser to work.": "%s απαιτεί σύγχρονο φυλλομετρητή (browser) για να λειτουργήσει.",
"New": "Νέο",
"Send": "Αποστολή",
"Clone": "Κλωνοποίηση",
"Raw text": "Κείμενο",
"Expires": "Λήγει",
"Burn after reading": "Διαγραφή μετά την ανάγνωση",
"Open discussion": "Ανοικτή συζήτηση",
"Password (recommended)": "Κωδικός (προτείνεται)",
"Discussion": "Συζήτηση",
"Toggle navigation": "Εναλλαγή πλοήγησης",
"%d seconds": [
"%d δευτερόλεπτο",
"%d δευτερόλεπτα",
"%d δευτερόλεπτα",
"%d δευτερόλεπτα"
],
"%d minutes": [
"%d λεπτό",
"%d λεπτά",
"%d λεπτά",
"%d λεπτά"
],
"%d hours": [
"%d ώρα",
"%d ώρες",
"%d ώρες",
"%d ώρες"
],
"%d days": [
"%d ημέρα",
"%d ημέρες",
"%d ημέρες",
"%d ημέρες"
],
"%d weeks": [
"%d εβδομάδα",
"%d εβδομάδες",
"%d εβδομάδες",
"%d εβδομάδες"
],
"%d months": [
"%d μήνας",
"%d μήνες",
"%d μήνες",
"%d μήνες"
],
"%d years": [
"%d χρόνο",
"%d χρόνια",
"%d χρόνια",
"%d χρόνια"
],
"Never": "Ποτέ",
"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.": [
"Αυτό το έγγραφο θα λήξει σε %d δευτερόλεπτο.",
"Αυτό το έγγραφο θα λήξει σε %d δευτερόλεπτα.",
"Αυτό το έγγραφο θα λήξει σε %d δευτερόλεπτα.",
"Αυτό το έγγραφο θα λήξει σε %d δευτερόλεπτα."
],
"This document will expire in %d minutes.": [
"Αυτό το έγγραφο θα λήξει σε %d λεπτό.",
"Αυτό το έγγραφο θα λήξει σε %d λεπτά.",
"Αυτό το έγγραφο θα λήξει σε %d λεπτά.",
"Αυτό το έγγραφο θα λήξει σε %d λεπτά."
],
"This document will expire in %d hours.": [
"Αυτό το έγγραφο θα λήξει σε %d ώρα.",
"Αυτό το έγγραφο θα λήξει σε %d ώρες.",
"Αυτό το έγγραφο θα λήξει σε %d ώρες.",
"Αυτό το έγγραφο θα λήξει σε %d ώρες."
],
"This document will expire in %d days.": [
"Αυτό το έγγραφο θα λήξει σε %d ημέρα.",
"Αυτό το έγγραφο θα λήξει σε %d ημέρες.",
"Αυτό το έγγραφο θα λήξει σε %d ημέρες.",
"Αυτό το έγγραφο θα λήξει σε %d ημέρες."
],
"This document will expire in %d months.": [
"Αυτό το έγγραφο θα λήξει σε %d μήνα.",
"Αυτό το έγγραφο θα λήξει σε %d μήνες.",
"Αυτό το έγγραφο θα λήξει σε %d μήνες.",
"Αυτό το έγγραφο θα λήξει σε %d μήνες."
],
"Please enter the password for this paste:": "Παρακαλώ εισάγετε τον κωδικό για αυτή την επικόληση:",
"Could not decrypt data (Wrong key?)": "Δεν ήταν δυνατή η αποκρυπτογράφηση των δεδομένων (πιθανώς λανθασμένο κλειδί;)",
"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.": "ΜΟΝΟ ΓΙΑ ΕΣΑΣ. Μην κλείσετε το αυτό το παράθυρο, αυτό το μήνυμα δεν μπορεί να εμφανιστεί ξανά.",
"Could not decrypt comment; Wrong key?": "Δεν ήταν δυνατή η αποκρυπτογράφηση του σχολίου. Λάθος κλειδί;",
"Reply": "Απάντηση",
"Anonymous": "Ανώνυμος",
"Avatar generated from IP address": "το avatar δημιουργήθηκε από τη διεύθυνση IP",
"Add comment": "Σχολιάστε",
"Optional nickname…": "Προαιρετικό ψευδώνυμο…",
"Post comment": "Αποστολή σχολίου",
"Sending comment…": "Το σχόλιο αποστέλλεται…",
"Comment posted.": "Το σχόλιο δημοσιεύτηκε.",
"Could not refresh display: %s": "Δεν ήταν δυνατή η ανανέωση της σελίδας: %s",
"unknown status": "άγνωστη κατάσταση",
"server error or not responding": "Πρόβλημα του διακομιστή ή δεν υπάρχει απάντηση",
"Could not post comment: %s": "Δεν ήταν δυνατή η δημοσίευση του σχολίου: %s",
"Sending paste…": "Η επικόλληση αποστέλλεται…",
"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": "Διαγραφή δεδομένων",
"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?)": "Δεν ήταν δυνατή η αποκρυπτογράφηση της επικόλλησης: Το κλειδί αποκρυπτογράφησης λείπει από τον σύνδεσμο (Μήπως χρησιμοποιήσατε ανακατεύθυνση συνδέσμου ή υπηρεσία συντόμευσης συνδέσμου;)",
"B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"Format": "Μορφοποίηση",
"Plain Text": "Απλό κείμενο",
"Source Code": "Πηγαίος Κώδικας",
"Markdown": "Markdown",
"Download attachment": "Λήψη επισυναπτόμενου",
"Cloned: '%s'": "Κλώνος: '%s'",
"The cloned file '%s' was attached to this paste.": "Το κλωνοποιημένο αρχείο '%s' επισυνάφθηκε στ αυτή την επικόλληση.",
"Attach a file": "Επισύναψη αρχείου",
"alternatively drag & drop a file or paste an image from the clipboard": "εναλλακτικά σύρετε το αρχείο ή επικολλήστε μία εικόνα από το clipboard",
"File too large, to display a preview. Please download the attachment.": "Πολύ μεγάλο αρχείο για προεπισκόπηση. Παρακαλώ κατεβάστε το επισυναπτόμενο.",
"Remove attachment": "Αφαίρεση επισυναπτόμενου",
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Ο φυλλομετρητής (browser) σας δεν υποστηρίζει κρυπτογραφημένα αρχεία. Παρακαλώ χρησιμοποιήστε νεότερο φιλομετρητή.",
"Invalid attachment.": "Λάθος επισυναπτόμενο.",
"Options": "Επιλογές",
"Shorten URL": "Συντόμευση σύνδεσμου",
"Editor": "Διορθωτής",
"Preview": "Προεπισκόπηση",
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s απαιτεί το PATH να τελειώνει σε \"%s\". Παρακαλώ ενημερώστε το PATH στο index.php σας.",
"Decrypt": "Αποκρυπτογράφηση",
"Enter password": "Εισαγωγή κωδικού",
"Loading…": "Φόρτωση…",
"Decrypting 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>.",
"+++ no paste text +++": "+++ Δεν υπάρχει επικόλληση +++",
"Could not get paste data: %s": "Δεν ήταν δυνατή η λήψη της επικόλλησης: %s",
"QR code": "QR εικονοστοιχειοσειρά",
"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>.",
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Ο φυλλομετρητής σας μπορεί να απαιτεί HTTPS σύνδεση για να υποστηρίξει το WebCrypto API. Δοκιμάστε <a href=\"%s\">το HTTPS</a>.",
"Your browser 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": "Αναμονή ο χρήστης να δώσει τον κωδικό",
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Δεν ήταν δυνατή η αποκρυπτογράφηση των δεδομένων. Μήπως εισάγατε λάθος κωδικό; Προσπαθήστε με το κουμπί στο επάνω μέρος.",
"Retry": "Επαναπροσπάθεια",
"Showing raw text…": "Προβολή κειμένου…",
"Notice:": "Επισήμανση:",
"This link will expire after %s.": "Ο σύνδεσμος θα λήξει σε %s.",
"This link can only be accessed once, do not use back or refresh button in your browser.": "Αυτός ο σύνδεσμος μπορεί να προσπελαστεί μόνο μία φορά, μην χρησιμοποιήσετε το κουμπί επιστροφή ή ανανέωση στον φυλλομετρητή σας.",
"Link:": "Σύνδεσμος:",
"Recipient may become aware of your timezone, convert time to UTC?": "Ο παραλήπτης μπορεί να αναγνωρίσει τη ζώνη ώρας σας, θέλετε μετατροπή της ώρας σε UTC;",
"Use Current Timezone": "Χρήση τρέχουσας ζώνης ώρας",
"Convert To UTC": "Μετατροπή σε UTC",
"Close": "Κλείσιμο",
"Encrypted note on %s": "Κρυπτογραφημένο μήνυμα από το %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Επισκεφτείτε αυτόν τον σύνδεσμο για να δείτε το μήνυμα. Δίνοντας τον σύνδεσμο σε οποιονδήποτε, του επιτρέπετε να επισκεφτεί το μήνυμα επίσης.",
"URL shortener may expose your decrypt key in URL.": "Συντομευτές συνδέσμων πιθανώς να δημοσιοποιήσουν το κλειδί αποκρυπτογράφισης στον σύνδεσμο.",
"Save paste": "Αποθήκευση επικόλλησης",
"Your IP is not authorized to create pastes.": "Η IP σας δεν επιτρέπεται να δημιουργεί επικολλήσεις.",
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".",
"Error parsing YOURLS response.": "Error parsing YOURLS response."
}

View File

@@ -1,193 +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",
"en": "en",
"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)"
],
"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",
"Send": "Send",
"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 minutes": [
"%d minute (singular)",
"%d minutes (1st plural)",
"%d minutes (2nd plural)",
"%d minutes (3rd plural)"
],
"%d hours": [
"%d hour (singular)",
"%d hours (1st plural)",
"%d hours (2nd plural)",
"%d hours (3rd plural)"
],
"%d days": [
"%d day (singular)",
"%d days (1st plural)",
"%d days (2nd plural)",
"%d days (3rd plural)"
],
"%d weeks": [
"%d week (singular)",
"%d weeks (1st plural)",
"%d weeks (2nd plural)",
"%d weeks (3rd plural)"
],
"%d months": [
"%d month (singular)",
"%d months (1st plural)",
"%d months (2nd plural)",
"%d months (3rd plural)"
],
"%d years": [
"%d year (singular)",
"%d years (1st plural)",
"%d years (2nd plural)",
"%d years (3rd 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 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 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 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 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)"
],
"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 [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",
"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."
}

View File

@@ -1,144 +1,125 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s es un \"pastebin\" en línea minimalista de código abierto, donde el servidor no tiene ningún conocimiento de los datos guardados. Los datos son cifrados/descifrados %sen el navegador%s usando 256 bits AES.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> 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>.": "Más información en la <a href=\"https://privatebin.info/\">página del proyecto</a>.", "%s es un \"pastebin\" en línea minimalista de código abierto, donde el servidor no tiene ningún conocimiento de los datos guardados. Los datos son cifrados/descifrados <i>en el navegador</i> usando 256 bits AES. Más información en la <a href=\"https://privatebin.info/\">página del proyecto</a>.",
"Because ignorance is bliss": "Porque la ignorancia es felicidad", "Because ignorance is bliss":
"Porque la ignorancia es dicha",
"en": "es", "en": "es",
"Paste does not exist, has expired or has been deleted.": "El \"paste\" no existe, ha caducado o ha sido eliminado.", "Paste does not exist, has expired or has been deleted.":
"%s requires php %s or above to work. Sorry.": "%s requiere php %s o superior para funcionar. Lo siento.", "El \"paste\" no existe, ha caducado o ha sido eliminado.",
"%s requires configuration section [%s] to be present in configuration file.": "%s requiere que la sección de configuración [%s] esté presente en el archivo de configuración.", "%s requires php %s or above to work. Sorry.":
"Please wait %d seconds between each post.": [ "%s requiere php %s o superior para funcionar. Lo siento.",
"Por favor espere %d segundo entre cada publicación.", "%s requires configuration section [%s] to be present in configuration file.":
"%s requiere que la sección de configuración [%s] esté presente en el archivo de configuración.",
"Please wait %d seconds between each post.":
"Por favor espere %d segundos entre cada publicación.", "Por favor espere %d segundos entre cada publicación.",
"Por favor espere %d segundos entre cada publicación.", "Paste is limited to %s of encrypted data.":
"Por favor espere %d segundos entre cada publicación." "El \"paste\" está limitado a %s de datos cifrados.",
], "Invalid data.":
"Paste is limited to %s of encrypted data.": "El \"paste\" está limitado a %s de datos cifrados.", "Datos inválidos.",
"Invalid data.": "Datos inválidos.", "You are unlucky. Try again.":
"You are unlucky. Try again.": "Tienes mala suerte. Inténtalo de nuevo", "Tienes mala suerte. Inténtalo de nuevo",
"Error saving comment. Sorry.": "Error al guardar el comentario. Lo siento.", "Error saving comment. Sorry.":
"Error saving paste. Sorry.": "Error al guardar el \"paste\". Lo siento", "Error al guardar el comentario. Lo siento.",
"Invalid paste ID.": "ID del \"paste\" inválido.", "Error saving paste. Sorry.":
"Paste is not of burn-after-reading type.": "El \"paste\" no es del tipo \"destruir despues de leer\".", "Error al guardar el \"paste\". Lo siento",
"Wrong deletion token. Paste was not deleted.": "Token de eliminación erróneo. El \"paste\" no fue eliminado.", "Invalid paste ID.":
"Paste was properly deleted.": "El \"paste\" se ha eliminado correctamente.", "ID del \"paste\" inválido.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript es necesario para que %s funcione. Sentimos los inconvenientes ocasionados.", "Paste is not of burn-after-reading type.":
"%s requires a modern browser to work.": "%s requiere un navegador moderno para funcionar.", "El \"paste\" no es del tipo \"destruir despues de leer\".",
"New": "Nuevo", "Wrong deletion token. Paste was not deleted.":
"Send": "Enviar", "Token de eliminación erróneo. El \"paste\" no fue eliminado.",
"Clone": "Clonar", "Paste was properly deleted.":
"Raw text": "Texto sin formato", "El \"paste\" se ha eliminado correctamente.",
"Expires": "Caducar en", "JavaScript is required for %s to work. Sorry for the inconvenience.":
"Burn after reading": "Destruir después de leer", "JavaScript es necesario para que %s funcione. Sentimos los inconvenientes ocasionados.",
"Open discussion": "Discusión abierta", "%s requires a modern browser to work.":
"Password (recommended)": "Contraseña (recomendado)", "%s requiere un navegador moderno para funcionar.",
"Discussion": "Discusión", "New":
"Toggle navigation": "Cambiar navegación", "Nuevo",
"%d seconds": [ "Send":
"%d segundo", "Enviar",
"%d segundos", "Clone":
"%d segundos", "Clonar",
"%d segundos" "Raw text":
], "Texto sin formato",
"%d minutes": [ "Expires":
"%d minuto", "Caducar en",
"%d minutos", "Burn after reading":
"%d minutos", "Destruir después de leer",
"%d minutos" "Open discussion":
], "Discusión abierta",
"%d hours": [ "Password (recommended)":
"%d hora", "Contraseña (recomendado)",
"%d horas", "Discussion":
"%d horas", "Discusión",
"%d horas" "Toggle navigation":
], "Cambiar navegación",
"%d days": [ "%d seconds": ["%d segundo", "%d segundos"],
"%d día", "%d minutes": ["%d minuto", "%d minutos"],
"%d días", "%d hours": ["%d hora", "%d horas"],
"%d días", "%d days": ["%d día", "%d días"],
"%d días" "%d weeks": ["%d semana", "%d semanas"],
], "%d months": ["%d mes", "%d meses"],
"%d weeks": [ "%d years": ["%d año", "%d años"],
"%d semana", "Never":
"%d semanas", "Nunca",
"%d semanas", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
"%d semanas" "Nota: Este es un servicio de prueba. Los datos pueden ser eliminados en cualquier momento. Morirán gatitos si abusas de este servicio.",
], "This document will expire in %d seconds.":
"%d months": [ ["Este documento caducará en un segundo.", "Este documento caducará en %d segundos."],
"%d mes", "This document will expire in %d minutes.":
"%d meses", ["Este documento caducará en un minuto.", "Este documento caducará en %d minutos."],
"%d minutos", "This document will expire in %d hours.":
"%d meses" ["Este documento caducará en una hora.", "Este documento caducará en %d horas."],
], "This document will expire in %d days.":
"%d years": [ ["Este documento caducará en un día.", "Este documento caducará en %d días."],
"%d año", "This document will expire in %d months.":
"%d años", ["Este documento caducará en un mes.", "Este documento caducará en %d meses."],
"%d años", "Please enter the password for this paste:":
"%d años" "Por favor ingrese la contraseña para este \"paste\":",
], "Could not decrypt data (Wrong key?)":
"Never": "Nunca", "No fue posible descifrar los datos (¿Clave errónea?)",
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Nota: Este es un servicio de prueba. Los datos pueden ser eliminados en cualquier momento. Morirán gatitos si abusas de este servicio.", "Could not delete the paste, it was not stored in burn after reading mode.":
"This document will expire in %d seconds.": [ "No fue posible eliminar el documento, no fue guardado en modo \"destruir despues de leer\".",
"Este documento caducará en un segundo.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
"Este documento caducará en %d segundos.", "SÓLO PARA TUS OJOS. No cierres esta ventana, este mensaje no se puede volver a mostrar.",
"Este documento caducará en %d segundos", "Could not decrypt comment; Wrong key?":
"Este documento caducará en %d segundos" "No se pudo descifrar el comentario; ¿Llave incorrecta?",
], "Reply":
"This document will expire in %d minutes.": [ "Responder",
"Este documento caducará en un minuto.", "Anonymous":
"Este documento caducará en %d minutos.", "Anónimo",
"Este documento caducará en %d minutos", "Avatar generated from IP address":
"Este documento caducará en %d minutos" "Avatar generado a partir de la dirección IP",
], "Add comment":
"This document will expire in %d hours.": [ "Añadir comentario",
"Este documento caducará en una hora.", "Optional nickname…":
"Este documento caducará en %d horas.", "Seudónimo opcional…",
"Este documento caducará en %d horas", "Post comment":
"Este documento caducará en %d horas" "Publicar comentario",
], "Sending comment…":
"This document will expire in %d days.": [ "Enviando comentario…",
"Este documento caducará en un día.", "Comment posted.":
"Este documento caducará en %d días.", "Comentario publicado.",
"Este documento caducará en %d días", "Could not refresh display: %s":
"Este documento caducará en %d días" "No se pudo actualizar la vista: %s",
], "unknown status":
"This document will expire in %d months.": [ "Estado desconocido",
"Este documento caducará en un mes.", "server error or not responding":
"Este documento caducará en %d meses.", "Error del servidor o el servidor no responde",
"Este documento caducará en %d meses", "Could not post comment: %s":
"Este documento caducará en %d meses" "No fue posible publicar comentario: %s",
], "Sending paste…":
"Please enter the password for this paste:": "Por favor ingrese la contraseña para este \"paste\":", "Enviando \"paste\"",
"Could not decrypt data (Wrong key?)": "No fue posible descifrar los datos (¿Clave errónea?)", "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
"Could not delete the paste, it was not stored in burn after reading mode.": "No fue posible eliminar el documento, no fue guardado en modo \"destruir despues de leer\".", "Su texto está en <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Presione [Ctrl]+[c] para copiar)</span>",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "SÓLO PARA TUS OJOS. No cierres esta ventana, este mensaje no se puede volver a mostrar.", "Delete data":
"Could not decrypt comment; Wrong key?": "No se pudo descifrar el comentario; ¿Llave incorrecta?", "Eliminar datos",
"Reply": "Responder", "Could not create paste: %s":
"Anonymous": "Anónimo", "No fue posible crear el archivo: %s",
"Avatar generated from IP address": "Avatar generado a partir de la dirección IP", "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
"Add comment": "Añadir comentario", "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?)",
"Optional nickname…": "Seudónimo opcional…",
"Post comment": "Publicar comentario",
"Sending comment…": "Enviando comentario…",
"Comment posted.": "Comentario publicado.",
"Could not refresh display: %s": "No se pudo actualizar la vista: %s",
"unknown status": "Estado desconocido",
"server error or not responding": "Error del servidor o el servidor no responde",
"Could not post comment: %s": "No fue posible publicar comentario: %s",
"Sending paste…": "Enviando \"paste\"…",
"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",
"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?)",
"B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"Format": "Formato", "Format": "Formato",
"Plain Text": "Texto sin formato", "Plain Text": "Texto sin formato",
"Source Code": "Código fuente", "Source Code": "Código fuente",
@@ -147,47 +128,61 @@
"Cloned: '%s'": "Clonado: '%s'.", "Cloned: '%s'": "Clonado: '%s'.",
"The cloned file '%s' was attached to this paste.": "El archivo clonado '%s' ha sido adjuntado a este texto.", "The cloned file '%s' was attached to this paste.": "El archivo clonado '%s' ha sido adjuntado a este texto.",
"Attach a file": "Adjuntar archivo", "Attach a file": "Adjuntar archivo",
"alternatively drag & drop a file or paste an image from the clipboard": "alternativamente, arrastre y suelte un archivo o pegue una imagen desde el portapapeles", "alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard",
"File too large, to display a preview. Please download the attachment.": "Archivo demasiado grande para mostrar una vista previa. Por favor, descargue el archivo adjunto.", "File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.",
"Remove attachment": "Remover adjunto", "Remove attachment": "Remover adjunto",
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Tu navegador no admite la carga de archivos cifrados. Utilice un navegador más reciente.", "Your browser does not support uploading encrypted files. Please use a newer browser.":
"Tu navegador no admite la carga de archivos cifrados. Utilice un navegador más reciente.",
"Invalid attachment.": "Adjunto inválido.", "Invalid attachment.": "Adjunto inválido.",
"Options": "Opciones", "Options": "Opciones",
"Shorten URL": "Acortar URL", "Shorten URL": "Acortar URL",
"Editor": "Editor", "Editor": "Editor",
"Preview": "Previsualización", "Preview": "Previsualización",
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s requiere que el PATH termine en \"%s\". Por favor, actualice el PATH en su index.php.", "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.":
"Decrypt": "Descifrar", "%s requiere que el PATH termine en \"%s\". Por favor, actualice el PATH en su index.php.",
"Enter password": "Ingrese contraseña", "Decrypt":
"Descifrar",
"Enter password":
"Ingrese contraseña",
"Loading…": "Cargando…", "Loading…": "Cargando…",
"Decrypting paste…": "Descifrando \"paste\"…", "Decrypting paste…": "Descifrando \"paste\"…",
"Preparing new paste…": "Preparando \"paste\" nuevo…", "Preparing new paste…": "Preparando \"paste\" nuevo…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "En caso de que este mensaje nunca desaparezca por favor revise <a href=\"%s\">este FAQ para obtener información para solucionar problemas</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.":
"En caso de que este mensaje nunca desaparezca por favor revise <a href=\"%s\">este FAQ para obtener información para solucionar problemas</a>.",
"+++ no paste text +++": "+++ \"paste\" sin texto +++", "+++ no paste text +++": "+++ \"paste\" sin texto +++",
"Could not get paste data: %s": "No se pudieron obtener los datos: %s", "Could not get paste data: %s":
"No se pudieron obtener los datos: %s",
"QR code": "Código QR", "QR code": "Código QR",
"This website is using an insecure HTTP connection! Please use it only for testing.": "¡Este sitio está usando una conexión HTTP insegura! Por favor úselo solo para pruebas.", "This website is using an insecure HTTP connection! Please use it only for testing.":
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Para más información <a href=\"%s\">consulte esta entrada de las preguntas frecuentes</a>.", "This website is using an insecure HTTP connection! Please use it only for testing.",
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Su navegador puede requerir una conexión HTTPS para soportar la API de WebCrypto. Intente <a href=\"%s\">cambiar a HTTPS</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.":
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Su navegador no es compatible con WebAssembly, que se utiliza para la compresión zlib. Puede crear documentos sin comprimir, pero no puede leer los comprimidos.", "For more information <a href=\"%s\">see this FAQ entry</a>.",
"waiting on user to provide a password": "esperando que el usuario proporcione una contraseña", "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.":
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "No se pudieron descifrar los datos. ¿Ingresó una contraseña incorrecta? Vuelva a intentarlo con el botón de la parte superior.", "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.",
"Retry": "Reintentar", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.":
"Showing raw text…": "Mostrando texto sin formato…", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.",
"Notice:": "Aviso:", "waiting on user to provide a password":
"This link will expire after %s.": "Este enlace expirará después de %s.", "waiting on user to provide a password",
"This link can only be accessed once, do not use back or refresh button in your browser.": "Solo se puede acceder a este enlace una vez, no use el botón Atrás o Actualizar en su navegador.", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.":
"Link:": "Enlace:", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.",
"Recipient may become aware of your timezone, convert time to UTC?": "El destinatario puede descubrir su zona horaria, ¿convertir la hora a UTC?", "Retry":
"Use Current Timezone": "Usar Zona Horaria Actual", "Retry",
"Convert To UTC": "Convertir A UTC", "Showing raw text…":
"Close": "Cerrar", "Showing raw text…",
"Encrypted note on %s": "Nota cifrada en %s", "Notice:":
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visite este enlace para ver la nota. Dar la URL a cualquier persona también les permite acceder a la nota.", "Notice:",
"URL shortener may expose your decrypt key in URL.": "El acortador de URL puede exponer su clave de descifrado en el URL.", "This link will expire after %s.":
"Save paste": "Guardar \"paste\"", "This link will expire after %s.",
"Your IP is not authorized to create pastes.": "Tu IP no está autorizada para crear contenido.", "This link can only be accessed once, do not use back or refresh button in your browser.":
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", "This link can only be accessed once, do not use back or refresh button in your browser.",
"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\".", "Link:":
"Error parsing YOURLS response.": "Error parsing YOURLS response." "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"
} }

View File

@@ -1,193 +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 on minimalistlik, avatud lähtekoodiga online pastebin, kus serveril pole kleebitud andmete kohta teadmist. Andmed krüpteeritakse/dekrüpteeritakse %sbrauseris%s kasutades 256-bitist AES-i.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Lisateave <a href=\"https://privatebin.info/\">projekti lehel</a>.",
"Because ignorance is bliss": "Kuna teadmatus on õndsus",
"en": "et",
"Paste does not exist, has expired or has been deleted.": "Kleebet ei eksisteeri, on aegunud või on kustutatud.",
"%s requires php %s or above to work. Sorry.": "%s vajab, et oleks php %s või kõrgem, et töötada. Vabandame.",
"%s requires configuration section [%s] to be present in configuration file.": "%s vajab, et [%s] seadistamise jaotis oleks olemas konfiguratsioonifailis.",
"Please wait %d seconds between each post.": [
"Palun oota %d sekund iga postituse vahel.",
"Palun oota %d sekundit iga postituse vahel.",
"Palun oota %d sekundit iga postituse vahel.",
"Palun oota %d sekundit iga postituse vahel."
],
"Paste is limited to %s of encrypted data.": "Kleepe limiit on %s krüpteeritud andmeid.",
"Invalid data.": "Valed andmed.",
"You are unlucky. Try again.": "Sul ei vea. Proovi uuesti.",
"Error saving comment. Sorry.": "Viga kommentaari salvestamisel. Vabandame.",
"Error saving paste. Sorry.": "Viga kleepe salvestamisel. Vabandame.",
"Invalid paste ID.": "Vale kleepe ID.",
"Paste is not of burn-after-reading type.": "Kleebe ei ole põleta-pärast-lugemist tüüpi.",
"Wrong deletion token. Paste was not deleted.": "Vale kustutamiskood. Kleebet ei kustutatud.",
"Paste was properly deleted.": "Kleebe kustutati korralikult.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript on vajalik %s'i töötamiseks. Vabandame ebamugavuste pärast.",
"%s requires a modern browser to work.": "%s vajab töötamiseks kaasaegset brauserit.",
"New": "Uus",
"Send": "Saada",
"Clone": "Klooni",
"Raw text": "Lähtetekst",
"Expires": "Aegub",
"Burn after reading": "Põleta pärast lugemist",
"Open discussion": "Avatud arutelu",
"Password (recommended)": "Parool (soovitatav)",
"Discussion": "Arutelu",
"Toggle navigation": "Näita menüüd",
"%d seconds": [
"%d sekund",
"%d sekundit",
"%d sekundit",
"%d sekundit"
],
"%d minutes": [
"%d minut",
"%d minutit",
"%d minutit",
"%d minutit"
],
"%d hours": [
"%d tund",
"%d tundi",
"%d tundi",
"%d tundi"
],
"%d days": [
"%d päev",
"%d päeva",
"%d päeva",
"%d päeva"
],
"%d weeks": [
"%d nädal",
"%d nädalat",
"%d nädalat",
"%d nädalat"
],
"%d months": [
"%d kuu",
"%d kuud",
"%d kuud",
"%d kuud"
],
"%d years": [
"%d aasta",
"%d aastat",
"%d aastat",
"%d aastat"
],
"Never": "Mitte kunagi",
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Märge: See on testimisteenus: Andmeid võidakse igal ajal kustutada. Kiisupojad hukuvad, kui seda teenust kuritarvitad.",
"This document will expire in %d seconds.": [
"See dokument aegub %d sekundi pärast.",
"See dokument aegub %d sekundi pärast.",
"See dokument aegub %d sekundi pärast.",
"See dokument aegub %d sekundi pärast."
],
"This document will expire in %d minutes.": [
"See dokument aegub %d minuti pärast.",
"See dokument aegub %d minuti pärast.",
"See dokument aegub %d minuti pärast.",
"See dokument aegub %d minuti pärast."
],
"This document will expire in %d hours.": [
"See dokument aegub %d tunni pärast.",
"See dokument aegub %d tunni pärast.",
"See dokument aegub %d tunni pärast.",
"See dokument aegub %d tunni pärast."
],
"This document will expire in %d days.": [
"See dokument aegub %d päeva pärast.",
"See dokument aegub %d päeva pärast.",
"See dokument aegub %d päeva pärast.",
"See dokument aegub %d päeva pärast."
],
"This document will expire in %d months.": [
"See dokument aegub %d kuu pärast.",
"See dokument aegub %d kuu pärast.",
"See dokument aegub %d kuu pärast.",
"See dokument aegub %d kuu pärast."
],
"Please enter the password for this paste:": "Palun sisesta selle kleepe parool:",
"Could not decrypt data (Wrong key?)": "Ei suutnud andmeid dekrüpteerida (Vale võti?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Ei suutnud kleebet kustutada, seda ei salvestatud põleta pärast lugemist režiimis.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "AINULT SINU SILMADELE. Ära sulge seda akent, seda sõnumit ei saa enam kuvada.",
"Could not decrypt comment; Wrong key?": "Ei suutnud kommentaari dekrüpteerida; Vale võti?",
"Reply": "Vasta",
"Anonymous": "Anonüümne",
"Avatar generated from IP address": "Avatar genereeritud IP aadressi põhjal",
"Add comment": "Lisa kommentaar",
"Optional nickname…": "Valikuline hüüdnimi…",
"Post comment": "Postita kommentaar",
"Sending comment…": "Kommentaari saatmine…",
"Comment posted.": "Kommentaar postitatud.",
"Could not refresh display: %s": "Ei suutnud kuva värskendada: %s",
"unknown status": "tundmatu staatus",
"server error or not responding": "serveri viga või ei vasta",
"Could not post comment: %s": "Ei suutnud kommentaari postitada: %s",
"Sending paste…": "Kleepe saatmine…",
"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",
"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?)",
"B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"Format": "Formaat",
"Plain Text": "Lihttekst",
"Source Code": "Lähtekood",
"Markdown": "Markdown",
"Download attachment": "Laadi manus alla",
"Cloned: '%s'": "Kloonitud: '%s'",
"The cloned file '%s' was attached to this paste.": "Kloonitud fail '%s' manustati sellele kleepele.",
"Attach a file": "Manusta fail",
"alternatively drag & drop a file or paste an image from the clipboard": "teise võimalusena lohista fail või kleebi pilt lõikelaualt",
"File too large, to display a preview. Please download the attachment.": "Fail on eelvaate kuvamiseks liiga suur. Palun laadi manus alla.",
"Remove attachment": "Eemalda manus",
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Sinu brauser ei toeta krüpteeritud failide üleslaadimist. Palun kasuta uuemat brauserit.",
"Invalid attachment.": "Sobimatu manus.",
"Options": "Valikud",
"Shorten URL": "Lühenda URL",
"Editor": "Toimetaja",
"Preview": "Eelvaade",
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s vajab, et PATH lõppeks järgmisega: \"%s\". Palun uuenda PATH-i oma index.php failis.",
"Decrypt": "Dekrüpteeri",
"Enter password": "Sisesta parool",
"Loading…": "Laadimine…",
"Decrypting paste…": "Kleepe dekrüpteerimine…",
"Preparing new paste…": "Uue kleepe ettevalmistamine…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Kui see sõnum ei kao, palun vaata <a href=\"%s\">seda KKK-d, et saada tõrkeotsinguks teavet.</a>.",
"+++ no paste text +++": "+++ kleepe tekst puudub +++",
"Could not get paste data: %s": "Ei suutnud saada kleepe andmeid: %s",
"QR code": "QR kood",
"This website is using an insecure HTTP connection! Please use it only for testing.": "See veebisait kasutab ebaturvalist HTTP ühendust! Palun kasuta seda ainult katsetamiseks.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Lisateabe saamiseks <a href=\"%s\">vaata seda KKK sissekannet</a>.",
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Sinu brauser võib vajada HTTPS ühendust, et toetada WebCrypto API-d. Proovi <a href=\"%s\">üle minna HTTPS-ile</a>.",
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Sinu brauser ei toeta WebAssembly't, mida kasutatakse zlib tihendamiseks. Sa saad luua tihendamata dokumente, kuid ei saa lugeda tihendatuid.",
"waiting on user to provide a password": "ootan parooli sisestamist kasutajalt",
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Ei suutnud andmeid dekrüpteerida. Kas sisestasid vale parooli? Proovi uuesti üleval asuva nupuga.",
"Retry": "Proovi uuesti",
"Showing raw text…": "Lähteteksti näitamine…",
"Notice:": "Teade:",
"This link will expire after %s.": "See link aegub: %s.",
"This link can only be accessed once, do not use back or refresh button in your browser.": "Sellele lingile saab vaid üks kord ligi pääseda, ära kasuta tagasi või värskenda nuppe sinu brauseris.",
"Link:": "Link:",
"Recipient may become aware of your timezone, convert time to UTC?": "Saaja võib saada teada sinu ajavööndi, kas teisendada aeg UTC-ks?",
"Use Current Timezone": "Kasuta praegust ajavööndit",
"Convert To UTC": "Teisenda UTC-ks",
"Close": "Sulge",
"Encrypted note on %s": "Krüpteeritud kiri %s-is",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Kirja nägemiseks külasta seda linki. Teistele URL-i andmine lubab ka neil ligi pääseda kirjale.",
"URL shortener may expose your decrypt key in URL.": "URL-i lühendaja võib paljastada sinu dekrüpteerimisvõtme URL-is.",
"Save paste": "Salvesta kleebe",
"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."
}

View File

@@ -1,193 +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 on minimalistinen, avoimen lähdekoodin online pastebin jossa palvelimella ei ole tietoa syötetystä datasta. Data salataan/puretaan %sselaimessa%s käyttäen 256-bittistä AES:ää.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Enemmän tietoa <a href=\"https://privatebin.info/\">projektisivulla</a>.",
"Because ignorance is bliss": "Koska tieto lisää tuskaa",
"en": "fi",
"Paste does not exist, has expired or has been deleted.": "Pastea ei ole olemassa, se on vanhentunut, tai se on poistettu.",
"%s requires php %s or above to work. Sorry.": "%s tarvitsee php %s-versiota tai uudempaa toimiakseen. Anteeksi.",
"%s requires configuration section [%s] to be present in configuration file.": "%s vaatii konfiguraatio-osion [%s] olevan läsnä konfiguraatiotiedostossa.",
"Please wait %d seconds between each post.": [
"Odotathan %d sekuntin jokaisen lähetyksen välillä.",
"Odotathan %d sekuntia jokaisen lähetyksen välillä.",
"Odotathan %d sekuntia jokaisen lähetyksen välillä.",
"Odotathan %d sekuntia jokaisen lähetyksen välillä."
],
"Paste is limited to %s of encrypted data.": "Paste on rajoitettu kokoon %s salattua dataa.",
"Invalid data.": "Virheellinen data.",
"You are unlucky. Try again.": "Olet epäonnekas. Yritä uudelleen.",
"Error saving comment. Sorry.": "Virhe kommenttia tallentaessa. Anteeksi.",
"Error saving paste. Sorry.": "Virhe pastea tallentaessa. Anteeksi.",
"Invalid paste ID.": "Virheellinen paste ID.",
"Paste is not of burn-after-reading type.": "Paste ei ole polta-lukemisen-jälkeen-tyyppiä.",
"Wrong deletion token. Paste was not deleted.": "Virheellinen poistotunniste. Pastea ei poistettu.",
"Paste was properly deleted.": "Paste poistettiin kunnolla.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScriptiä tarvitaan jotta %s toimisi. Anteeksi haitasta.",
"%s requires a modern browser to work.": "%s tarvitsee modernia selainta toimiakseen.",
"New": "Uusi",
"Send": "Lähetä",
"Clone": "Kloonaa",
"Raw text": "Raaka teksti",
"Expires": "Vanhenee",
"Burn after reading": "Polta lukemisen jälkeen",
"Open discussion": "Avaa keskustelu",
"Password (recommended)": "Salasana (suositeltu)",
"Discussion": "Keskustelu",
"Toggle navigation": "Navigointi päällä/pois",
"%d seconds": [
"%d sekunti",
"%d sekuntia",
"%d sekuntia",
"%d sekuntia"
],
"%d minutes": [
"%d minuutti",
"%d minuuttia",
"%d minuuttia",
"%d minuuttia"
],
"%d hours": [
"%d tunti",
"%d tuntia",
"%d tuntia",
"%d tuntia"
],
"%d days": [
"%d päivä",
"%d päivää",
"%d päivää",
"%d päivää"
],
"%d weeks": [
"%d viikko",
"%d viikkoa",
"%d viikkoa",
"%d viikkoa"
],
"%d months": [
"%d kuukausi",
"%d kuukautta",
"%d kuukautta",
"%d kuukautta"
],
"%d years": [
"%d vuosi",
"%d vuotta",
"%d vuotta",
"%d vuotta"
],
"Never": "Ei koskaan",
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Huomaa: Tämä on testipalvelu: Data voidaan poistaa milloin tahansa. Kissanpennut kuolevat jos väärinkäytät tätä palvelua.",
"This document will expire in %d seconds.": [
"Tämä dokumentti vanhenee %d sekuntissa.",
"Tämä dokumentti vanhenee %d sekunnissa.",
"Tämä dokumentti vanhenee %d sekunnissa.",
"Tämä dokumentti vanhenee %d sekunnissa."
],
"This document will expire in %d minutes.": [
"Tämä dokumentti vanhenee %d minuutissa.",
"Tämä dokumentti vanhenee %d minuutissa.",
"Tämä dokumentti vanhenee %d minuutissa.",
"Tämä dokumentti vanhenee %d minuutissa."
],
"This document will expire in %d hours.": [
"Tämä dokumentti vanhenee %d tunnissa.",
"Tämä dokumentti vanhenee %d tunnissa.",
"Tämä dokumentti vanhenee %d tunnissa.",
"Tämä dokumentti vanhenee %d tunnissa."
],
"This document will expire in %d days.": [
"Tämä dokumentti vanhenee %d päivässä.",
"Tämä dokumentti vanhenee %d päivässä.",
"Tämä dokumentti vanhenee %d päivässä.",
"Tämä dokumentti vanhenee %d päivässä."
],
"This document will expire in %d months.": [
"Tämä dokumentti vanhenee %d kuukaudessa.",
"Tämä dokumentti vanhenee %d kuukaudessa.",
"Tämä dokumentti vanhenee %d kuukaudessa.",
"Tämä dokumentti vanhenee %d kuukaudessa."
],
"Please enter the password for this paste:": "Syötä salasana tälle pastelle:",
"Could not decrypt data (Wrong key?)": "Dataa ei voitu purkaa (Väärä avain?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Pastea ei voitu poistaa, sitä ei säilytetty \"Polta lukemisen jälkeen\" -tilassa.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "VAIN SINUN SILMILLESI. Älä sulje tätä ikkunaa, tätä viestiä ei voida näyttää uudelleen.",
"Could not decrypt comment; Wrong key?": "Kommenttia ei voitu purkaa; väärä avain?",
"Reply": "Vastaa",
"Anonymous": "Anonyymi",
"Avatar generated from IP address": "Avatar generoitu IP-osoitteesta",
"Add comment": "Lisää kommentti",
"Optional nickname…": "Valinnainen nimimerkki…",
"Post comment": "Lähetä kommentti",
"Sending comment…": "Lähetetään kommenttia…",
"Comment posted.": "Kommentti lähetetty.",
"Could not refresh display: %s": "Näyttöä ei voitu päivittää: %s",
"unknown status": "tuntematon status",
"server error or not responding": "palvelinvirhe tai palvelin ei vastaa",
"Could not post comment: %s": "Kommenttia ei voitu lähettää: %s",
"Sending paste…": "Lähetetään pastea…",
"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",
"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ä?)",
"B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"Format": "Formaatti",
"Plain Text": "Perusteksti",
"Source Code": "Lähdekoodi",
"Markdown": "Markdown",
"Download attachment": "Lataa liite",
"Cloned: '%s'": "Kloonattu: '%s'",
"The cloned file '%s' was attached to this paste.": "Kloonattu tiedosto '%s' liitettiin tähän pasteen",
"Attach a file": "Liitä tiedosto",
"alternatively drag & drop a file or paste an image from the clipboard": "vaihtoehtoisesti vedä & pudota tiedosto tai liitä kuva leikepöydältä",
"File too large, to display a preview. Please download the attachment.": "Tiedosto on liian iso esikatselun näyttämiseksi. Lataathan liitteen.",
"Remove attachment": "Poista liite",
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Selaimesi ei tue salattujen tiedostojen lataamista. Käytäthän uudempaa selainta.",
"Invalid attachment.": "Virheellinen liite.",
"Options": "Asetukset",
"Shorten URL": "Lyhennä URL",
"Editor": "Muokkaaja",
"Preview": "Esikatselu",
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s vaatii PATH:in loppuvan \"%s\"-merkkiin. Päivitäthän PATH:in index.php:ssäsi.",
"Decrypt": "Pura",
"Enter password": "Syötä salasana",
"Loading…": "Ladataan…",
"Decrypting paste…": "Puretaan pastea…",
"Preparing new paste…": "Valmistellaan uutta pastea",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Jos tämä viesti ei katoa koskaan, katsothan <a href=\"%s\">tämän FAQ:n ongelmanratkaisutiedon löytämiseksi</a>.",
"+++ no paste text +++": "+++ ei paste-tekstiä +++",
"Could not get paste data: %s": "Paste-tietoja ei löydetty: %s",
"QR code": "QR-koodi",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Tämä sivusto käyttää epäturvallista HTTP-yhteyttä! Käytäthän sitä vain testaukseen.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Lisätietoja varten <a href=\"%s\">lue tämä FAQ-kohta</a>.",
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Selaimesi ehkä tarvitsee HTTPS-yhteyden tukeakseen WebCrypto API:a. Yritä <a href=\"%s\">vaihtamista HTTPS:ään</a>.",
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Selaimesi ei tue WebAssemblyä jota käytetään zlib-pakkaamiseen. Voit luoda pakkaamattomia dokumentteja, mutta et voi lukea pakattuja dokumentteja.",
"waiting on user to provide a password": "odotetaan käyttäjän antavan salasanan",
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Dataa ei voitu purkaa. Syötitkö väärän salasanan? Yritä uudelleen ylhäällä olevalla painikkeella.",
"Retry": "Yritä uudelleen",
"Showing raw text…": "Näytetään raaka reksti…",
"Notice:": "Huomautus:",
"This link will expire after %s.": "Tämä linkki vanhenee ajan %s jälkeen.",
"This link can only be accessed once, do not use back or refresh button in your browser.": "Tätä linkkiä voidaan käyttää vain kerran, älä käytä taaksepäin- tai päivityspainiketta selaimessasi.",
"Link:": "Linkki:",
"Recipient may become aware of your timezone, convert time to UTC?": "Vastaanottaja saattaa tulla tietoiseksi aikavyöhykkeestäsi, muutetaanko aika UTC:ksi?",
"Use Current Timezone": "Käytä nykyistä aikavyöhykettä",
"Convert To UTC": "Muuta UTC:ksi",
"Close": "Sulje",
"Encrypted note on %s": "Salattu viesti %sissä",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Käy tässä linkissä nähdäksesi viestin. URL:n antaminen kenellekään antaa heidänkin päästä katsomeen viestiä. ",
"URL shortener may expose your decrypt key in URL.": "URL-lyhentäjä voi paljastaa purkuavaimesi URL:ssä.",
"Save paste": "Tallenna paste",
"Your IP is not authorized to create pastes.": "IP:llesi ei ole annettu oikeutta luoda pasteja.",
"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."
}

View File

@@ -1,135 +1,125 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s est un 'pastebin' (ou gestionnaire d'extraits de texte et de code source) minimaliste et open source, dans lequel le serveur n'a aucune connaissance des données envoyées. Les données sont chiffrées/déchiffrées %sdans le navigateur%s par un chiffrement AES 256 bits.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> 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>.": "Plus d'informations sur <a href=\"https://privatebin.info/\">la page du projet</a>.", "%s est un 'pastebin' (ou gestionnaire d'extraits de texte et de code source) minimaliste et open source, dans lequel le serveur n'a aucune connaissance des données envoyées. Les données sont chiffrées/déchiffrées <i>dans le navigateur</i> par un chiffrement AES 256 bits. Plus d'informations sur <a href=\"https://privatebin.info/\">la page du projet</a>.",
"Because ignorance is bliss": "Vivons heureux, vivons cachés", "Because ignorance is bliss":
"Parce que l'ignorance c'est le bonheur",
"en": "fr", "en": "fr",
"Paste does not exist, has expired or has been deleted.": "Le paste n'existe pas, a expiré, ou a été supprimé.", "Paste does not exist, has expired or has been deleted.":
"%s requires php %s or above to work. Sorry.": "Désolé, %s nécessite php %s ou supérieur pour fonctionner.", "Le paste n'existe pas, a expiré, ou a été supprimé.",
"%s requires configuration section [%s] to be present in configuration file.": "%s a besoin de la section de configuration [%s] dans le fichier de configuration pour fonctionner.", "%s requires php %s or above to work. Sorry.":
"Please wait %d seconds between each post.": [ "Désolé, %s nécessite php %s ou supérieur pour fonctionner.",
"Merci d'attendre %d seconde entre chaque publication.", "%s requires configuration section [%s] to be present in configuration file.":
"%s a besoin de la section de configuration [%s] dans le fichier de configuration pour fonctionner.",
"Please wait %d seconds between each post.":
"Merci d'attendre %d secondes entre chaque publication.", "Merci d'attendre %d secondes entre chaque publication.",
"Merci d'attendre %d secondes entre chaque publication.", "Paste is limited to %s of encrypted data.":
"Merci d'attendre %d secondes entre chaque publication." "Le paste est limité à %s de données chiffrées.",
], "Invalid data.":
"Paste is limited to %s of encrypted data.": "Le paste est limité à %s de données chiffrées.", "Données invalides.",
"Invalid data.": "Données invalides.", "You are unlucky. Try again.":
"You are unlucky. Try again.": "Pas de chance. Essayez encore.", "Pas de chance. Essayez encore.",
"Error saving comment. Sorry.": "Erreur lors de la sauvegarde du commentaire.", "Error saving comment. Sorry.":
"Error saving paste. Sorry.": "Erreur lors de la sauvegarde du paste. Désolé.", "Erreur lors de la sauvegarde du commentaire.",
"Invalid paste ID.": "ID du paste invalide.", "Error saving paste. Sorry.":
"Paste is not of burn-after-reading type.": "Le paste n'est pas de type \"Effacer après lecture\".", "Erreur lors de la sauvegarde du paste. Désolé.",
"Wrong deletion token. Paste was not deleted.": "Jeton de suppression incorrect. Le paste n'a pas été supprimé.", "Invalid paste ID.":
"Paste was properly deleted.": "Le paste a été correctement supprimé.", "ID du paste invalide.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript est requis pour faire fonctionner %s. Désolé pour cet inconvénient.", "Paste is not of burn-after-reading type.":
"%s requires a modern browser to work.": "%s nécessite un navigateur moderne pour fonctionner.", "Le paste n'est pas de type \"Effacer après lecture\".",
"New": "Nouveau", "Wrong deletion token. Paste was not deleted.":
"Send": "Envoyer", "Jeton de suppression incorrect. Le paste n'a pas été supprimé.",
"Clone": "Cloner", "Paste was properly deleted.":
"Raw text": "Texte brut", "Le paste a été correctement supprimé.",
"Expires": "Expire", "JavaScript is required for %s to work. Sorry for the inconvenience.":
"Burn after reading": "Effacer après lecture", "JavaScript est requis pour faire fonctionner %s. Désolé pour cet inconvénient.",
"Open discussion": "Autoriser la discussion", "%s requires a modern browser to work.":
"Password (recommended)": "Mot de passe (recommandé)", "%s nécessite un navigateur moderne pour fonctionner.",
"Discussion": "Discussion", "New":
"Toggle navigation": "Basculer la navigation", "Nouveau",
"%d seconds": [ "Send":
"%d seconde", "Envoyer",
"%d secondes", "Clone":
"%d seconds (2nd plural)", "Cloner",
"%d seconds (3rd plural)" "Raw text":
], "Texte brut",
"%d minutes": [ "Expires":
"%d minute", "Expire",
"%d minutes", "Burn after reading":
"%d minutes (2nd plural)", "Effacer après lecture",
"%d minutes (3rd plural)" "Open discussion":
], "Autoriser la discussion",
"%d hours": [ "Password (recommended)":
"%d heure", "Mot de passe (recommandé)",
"%d heures", "Discussion":
"%d hours (2nd plural)", "Discussion",
"%d hours (3rd plural)" "Toggle navigation":
], "Basculer la navigation",
"%d days": [ "%d seconds": ["%d seconde", "%d secondes"],
"%d jour", "%d minutes": ["%d minute", "%d minutes"],
"%d jours", "%d hours": ["%d heure", "%d heures"],
"%d days (2nd plural)", "%d days": ["%d jour", "%d jours"],
"%d days (3rd plural)" "%d weeks": ["%d semaine", "%d semaines"],
], "%d months": ["%d mois", "%d mois"],
"%d weeks": [ "%d years": ["%d an", "%d ans"],
"%d semaine", "Never":
"%d semaines", "Jamais",
"%d weeks (2nd plural)", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
"%d weeks (3rd plural)" "Note : Ceci est un service de test : les données peuvent être supprimées à tout moment. Des chatons mourront si vous utilisez ce service de manière abusive.",
], "This document will expire in %d seconds.":
"%d months": [ ["Ce document expirera dans %d seconde.", "Ce document expirera dans %d secondes."],
"%d mois", "This document will expire in %d minutes.":
"%d mois", ["Ce document expirera dans %d minute.", "Ce document expirera dans %d minutes."],
"%d months (2nd plural)", "This document will expire in %d hours.":
"%d months (3rd plural)" ["Ce document expirera dans %d heure.", "Ce document expirera dans %d heures."],
], "This document will expire in %d days.":
"%d years": [ ["Ce document expirera dans %d jour.", "Ce document expirera dans %d jours."],
"%d an", "This document will expire in %d months.":
"%d ans", ["Ce document expirera dans %d mois.", "Ce document expirera dans %d mois."],
"%d years (2nd plural)", "Please enter the password for this paste:":
"%d years (3rd plural)" "Entrez le mot de passe pour ce paste:",
], "Could not decrypt data (Wrong key?)":
"Never": "Jamais", "Impossible de déchiffrer les données (mauvaise clé ?)",
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Note : Ceci est un service de test : les données peuvent être supprimées à tout moment. Des chatons mourront si vous utilisez ce service de manière abusive.", "Could not delete the paste, it was not stored in burn after reading mode.":
"This document will expire in %d seconds.": [ "Impossible de supprimer le paste, car il n'a pas été stocké en mode \"Effacer après lecture\".",
"Ce document expirera dans %d seconde.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
"Ce document expirera dans %d secondes.", "POUR VOS YEUX UNIQUEMENT. Ne fermez pas cette fenêtre, ce paste ne pourra plus être affiché.",
"This document will expire in %d seconds (2nd plural)", "Could not decrypt comment; Wrong key?":
"This document will expire in %d seconds (3rd plural)" "Impossible de déchiffrer le commentaire; mauvaise clé ?",
], "Reply":
"This document will expire in %d minutes.": [ "Répondre",
"Ce document expirera dans %d minute.", "Anonymous":
"Ce document expirera dans %d minutes.", "Anonyme",
"Ce document expirera dans %d minutes.", "Avatar generated from IP address":
"Ce document expirera dans %d minutes." "Avatar généré à partir de l'adresse IP",
], "Add comment":
"This document will expire in %d hours.": [ "Ajouter un commentaire",
"Ce document expirera dans %d heure.", "Optional nickname…":
"Ce document expirera dans %d heures.", "Pseudonyme optionnel…",
"Ce document expirera dans %d heures.", "Post comment":
"Ce document expirera dans %d heures." "Poster le commentaire",
], "Sending comment…":
"This document will expire in %d days.": [ "Envoi du commentaire…",
"Ce document expirera dans %d jour.", "Comment posted.":
"Ce document expirera dans %d jours.", "Commentaire posté.",
"Ce document expirera dans %d jours.", "Could not refresh display: %s":
"Ce document expirera dans %d jours." "Impossible de rafraichir l'affichage : %s",
], "unknown status":
"This document will expire in %d months.": [ "Statut inconnu",
"Ce document expirera dans %d mois.", "server error or not responding":
"Ce document expirera dans %d mois.", "Le serveur ne répond pas ou a rencontré une erreur",
"Ce document expirera dans %d mois.", "Could not post comment: %s":
"Ce document expirera dans %d mois." "Impossible de poster le commentaire : %s",
], "Sending paste…":
"Please enter the password for this paste:": "Entrez le mot de passe pour ce paste:", "Envoi du paste",
"Could not decrypt data (Wrong key?)": "Impossible de déchiffrer les données (mauvaise clé ?)", "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
"Could not delete the paste, it was not stored in burn after reading mode.": "Impossible de supprimer le paste, car il n'a pas été stocké en mode \"Effacer après lecture\".", "Votre paste est disponible à l'adresse <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Appuyez sur [Ctrl]+[c] pour copier)</span>",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "POUR VOS YEUX UNIQUEMENT. Ne fermez pas cette fenêtre, ce paste ne pourra plus être affiché.", "Delete data":
"Could not decrypt comment; Wrong key?": "Impossible de déchiffrer le commentaire; mauvaise clé ?", "Supprimer les données du paste",
"Reply": "Répondre", "Could not create paste: %s":
"Anonymous": "Anonyme", "Impossible de créer le paste : %s",
"Avatar generated from IP address": "Avatar généré à partir de l'adresse IP", "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
"Add comment": "Ajouter un commentaire", "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 ?)",
"Optional nickname…": "Pseudonyme optionnel…",
"Post comment": "Poster le commentaire",
"Sending comment…": "Envoi du commentaire…",
"Comment posted.": "Commentaire posté.",
"Could not refresh display: %s": "Impossible de rafraichir l'affichage : %s",
"unknown status": "Statut inconnu",
"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",
"Sending paste…": "Envoi du paste…",
"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",
"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 ?)",
"B": "o", "B": "o",
"KiB": "Kio", "KiB": "Kio",
"MiB": "Mio", "MiB": "Mio",
@@ -146,48 +136,62 @@
"Download attachment": "Télécharger la pièce jointe", "Download attachment": "Télécharger la pièce jointe",
"Cloned: '%s'": "Cloner '%s'", "Cloned: '%s'": "Cloner '%s'",
"The cloned file '%s' was attached to this paste.": "Le fichier cloné '%s' a été attaché à ce paste.", "The cloned file '%s' was attached to this paste.": "Le fichier cloné '%s' a été attaché à ce paste.",
"Attach a file": "Attacher un fichier", "Attach a file": "Attacher un fichier ",
"alternatively drag & drop a file or paste an image from the clipboard": "au choix, glisser & déposer un fichier ou coller une image à partir du presse-papiers", "alternatively drag & drop a file or paste an image from the clipboard": "au choix, glisser & déposer un fichier ou coller une image à partir du presse-papiers",
"File too large, to display a preview. Please download the attachment.": "Fichier trop volumineux, pour afficher un aperçu. Veuillez télécharger la pièce jointe.", "File too large, to display a preview. Please download the attachment.": "Fichier trop volumineux, pour afficher un aperçu. Veuillez télécharger la pièce jointe.",
"Remove attachment": "Enlever la pièce jointe", "Remove attachment": "Enlever la pièce jointe",
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Votre navigateur ne supporte pas l'envoi de fichiers chiffrés. Merci d'utiliser un navigateur plus récent.", "Your browser does not support uploading encrypted files. Please use a newer browser.":
"Votre navigateur ne supporte pas l'envoi de fichiers chiffrés. Merci d'utiliser un navigateur plus récent.",
"Invalid attachment.": "Pièce jointe invalide.", "Invalid attachment.": "Pièce jointe invalide.",
"Options": "Options", "Options": "Options",
"Shorten URL": "Raccourcir URL", "Shorten URL": "Raccourcir URL",
"Editor": "Éditer", "Editor": "Éditer",
"Preview": "Prévisualiser", "Preview": "Prévisualiser",
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s requiert que le PATH se termine dans un \"%s\". Veuillez mettre à jour le PATH dans votre index.php.", "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.":
"Decrypt": "Déchiffrer", "%s requiert que le PATH se termine dans un \"%s\". Veuillez mettre à jour le PATH dans votre index.php.",
"Enter password": "Entrez le mot de passe", "Decrypt":
"Déchiffrer",
"Enter password":
"Entrez le mot de passe",
"Loading…": "Chargement…", "Loading…": "Chargement…",
"Decrypting paste…": "Déchiffrement du paste…", "Decrypting paste…": "Déchiffrement du paste…",
"Preparing new paste…": "Préparation du paste…", "Preparing new paste…": "Préparation du paste…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Si ce message ne disparaîssait pas, jetez un oeil à <a href=\"%s\">cette FAQ pour des idées de résolution</a> (en Anglais).", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.":
"Si ce message ne disparaîssait pas, jetez un oeil à <a href=\"%s\">cette FAQ pour des idées de résolution</a> (en Anglais).",
"+++ no paste text +++": "+++ pas de texte copié +++", "+++ no paste text +++": "+++ pas de texte copié +++",
"Could not get paste data: %s": "Impossible d'obtenir les données du paste: %s", "Could not get paste data: %s":
"Impossible d'obtenir les données du paste: %s",
"QR code": "QR code", "QR code": "QR code",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Ce site web utilise une connexion HTTP non sécurisée ! Veuillez lutiliser uniquement pour des tests.", "This website is using an insecure HTTP connection! Please use it only for testing.":
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Pour plus d'informations <a href=\"%s\">consultez cette rubrique de la FAQ</a>.", "Ce site web utilise une connexion HTTP non sécurisée ! Veuillez lutiliser uniquement pour des tests.",
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Votre navigateur peut nécessiter une connexion HTTPS pour prendre en charge lAPI WebCrypto. Essayez <a href=\"%s\">de passer en HTTPS</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.":
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Votre navigateur ne prend pas en charge WebAssembly, utilisé pour la compression zlib. Vous pouvez créer des documents non compressés, mais vous ne pouvez pas lire les documents compressés.", "Pour plus d'informations <a href=\"%s\">consultez cette rubrique de la FAQ</a>.",
"waiting on user to provide a password": "en attendant que l'utilisateur fournisse un mot de passe", "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.":
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Impossible de décrypter les données. Vous avez saisi un mot de passe incorrect ? Réessayez avec le bouton en haut.", "Votre navigateur peut nécessiter une connexion HTTPS pour prendre en charge lAPI WebCrypto. Essayez <a href=\"%s\">de passer en HTTPS</a>.",
"Retry": "Réessayer", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.":
"Showing raw text…": "Affichage du texte brut…", "Votre navigateur ne prend pas en charge WebAssembly, utilisé pour la compression zlib. Vous pouvez créer des documents non compressés, mais vous ne pouvez pas lire les documents compressés.",
"Notice:": "Avertissement:", "waiting on user to provide a password":
"This link will expire after %s.": "Ce lien expire après le %s.", "en attendant que l'utilisateur fournisse un mot de passe",
"This link can only be accessed once, do not use back or refresh button in your browser.": "Vous ne pouvez accéder à ce lien qu'une seule fois, n'utilisez pas le bouton précédent ou rafraîchir de votre navigateur.", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.":
"Link:": "Lien:", "Impossible de décrypter les données. Vous avez saisi un mot de passe incorrect ? Réessayez avec le bouton en haut.",
"Recipient may become aware of your timezone, convert time to UTC?": "Le destinataire peut connaître votre fuseau horaire, convertir l'heure au format UTC?", "Retry":
"Use Current Timezone": "Conserver l'actuel", "Réessayer",
"Convert To UTC": "Convertir en UTC", "Showing raw text…":
"Close": "Fermer", "Affichage du texte brut…",
"Encrypted note on %s": "Message chiffré sur %s", "Notice:":
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visiter ce lien pour voir la note. Donner l'URL à une autre personne lui permet également d'accéder à la note.", "Avertissement:",
"URL shortener may expose your decrypt key in URL.": "Raccourcir l'URL peut exposer votre clé de déchiffrement dans l'URL.", "This link will expire after %s.":
"Save paste": "Sauver le paste", "Ce lien expire après le %s.",
"Your IP is not authorized to create pastes.": "Votre adresse IP n'est pas autorisée à créer des pastes.", "This link can only be accessed once, do not use back or refresh button in your browser.":
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", "Vous ne pouvez accéder à ce lien qu'une seule fois, n'utilisez pas le bouton précédent ou rafraîchir de votre navigateur.",
"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\".", "Link:":
"Error parsing YOURLS response.": "Error parsing YOURLS response." "Lien:",
"Recipient may become aware of your timezone, convert time to UTC?":
"Le destinataire peut connaître votre fuseau horaire, convertir l'heure au format UTC?",
"Use Current Timezone":
"Conserver l'actuel",
"Convert To UTC":
"Convertir en UTC",
"Close":
"Fermer"
} }

View File

@@ -1,193 +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": "כיוון שבורות היא ברכה",
"en": "he",
"Paste does not exist, has expired or has been deleted.": "ההדבקה לא קיימת, פגה או נמחקה.",
"%s requires php %s or above to work. Sorry.": "%s דורש PHP %s כדי לפעול.",
"%s requires configuration section [%s] to be present in configuration file.": "%s דורש שסעיף ההגדרות [%s] יהיה קיים בקובץ ההגדרות.",
"Please wait %d seconds between each post.": [
"נא להמתין שנייה אחת בין פרסום לפרסום.",
"נא להמתין %d שניות בין פרסום לפרסום.",
"נא להמתין %d שניות בין פרסום לפרסום.",
"נא להמתין %d שניות בין פרסום לפרסום."
],
"Paste is limited to %s of encrypted data.": "ההדבקה מוגבלת ל־%s של נתונים מוצפנים.",
"Invalid data.": "נתונים שגויים.",
"You are unlucky. Try again.": "אין לך מזל. נא לנסות שוב.",
"Error saving comment. Sorry.": "שגיאה בשמירת המסמך. סליחה.",
"Error saving paste. Sorry.": "שגיאה בשמירת ההדבקה. סליחה.",
"Invalid paste ID.": "מזהה ההדבקה שגוי.",
"Paste is not of burn-after-reading type.": "ההדבקה היא לא מסוג קוראים-שורפים.",
"Wrong deletion token. Paste was not deleted.": "אסימון מחיקה שגוי. ההדבקה לא נמחקה.",
"Paste was properly deleted.": "ההדבקה נמחקה כראוי.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "צריך JavaScript כדי לאפשר ל־%s לפעול. סליחה על חוסר הנוחות.",
"%s requires a modern browser to work.": "%s דורש דפדפן מודרני כדי לפעול.",
"New": "חדש",
"Send": "שליחה",
"Clone": "שכפול",
"Raw text": "טקסט גולמי",
"Expires": "Expires",
"Burn after reading": "קוראים-שורפים",
"Open discussion": "פתיחת דיון",
"Password (recommended)": "ססמה (מומלץ)",
"Discussion": "דיון",
"Toggle navigation": "החלפת מצב ניווט",
"%d seconds": [
"שנייה אחת",
"%d שניות",
"%d שניות (צורת ריבוי 2)",
"%d שניות"
],
"%d minutes": [
"דקה אחת",
"%d דקות",
"%d דקות",
"%d דקות"
],
"%d hours": [
"שעה אחת",
"%d hours (1st plural)",
"%d hours (2nd plural)",
"%d hours (3rd plural)"
],
"%d days": [
"יום אחד",
"%d ימים",
"%d ימים",
"%d ימים"
],
"%d weeks": [
"שבוע אחד",
"%d שבועות",
"%d שבועות",
"%d שבועות"
],
"%d months": [
"חודש אחד",
"%d חודשים",
"%d חודשים",
"%d חודשים"
],
"%d years": [
"שנה אחת",
"%d שנים",
"%d שנים",
"%d שנים"
],
"Never": "לעולם לא",
"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 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 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 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 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)"
],
"Please enter the password for this paste:": "נא למלא את הססמה להדבקה הזו:",
"Could not decrypt data (Wrong key?)": "לא ניתן לפענח את הנתונים (מפתח שגוי?)",
"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.": "לעיניך בלבד. לא לסגור את החלון הזה, ההודעה הזאת לא תופיע שוב.",
"Could not decrypt comment; Wrong key?": "לא ניתן לפענח את ההערה, מפתח שגוי?",
"Reply": "תגובה",
"Anonymous": "אלמוני",
"Avatar generated from IP address": "התמונה הייצוגית נוצרה מכתובת ה־IP",
"Add comment": "הוספת תגובה",
"Optional nickname…": "כינוי כרשות…",
"Post comment": "פרסום תגובה",
"Sending comment…": "התגובה נשלחת…",
"Comment posted.": "פורסמה תגובה.",
"Could not refresh display: %s": "לא ניתן לרענן תצוגה: %s",
"unknown status": "מצב לא ידוע",
"server error or not responding": "שגיאת שרת או שהשרת לא מגיב",
"Could not post comment: %s": "לא ניתן לפרסם תגובה: %s",
"Sending paste…": "ההדבקה נשלחת…",
"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": "מחיקת נתונים",
"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?)": "לא ניתן לפענח הדבקה: מפתח הפענוח חסר בכתובת (השתמשת במערכת הפנייה או מקצר כתובות שחותכים חלק מהכתובת?)",
"B": "ב׳",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"Format": "פורמט",
"Plain Text": "טקסט פשוט",
"Source Code": "קוד מקור",
"Markdown": "Markdown",
"Download attachment": "הורדת קובץ מצורף",
"Cloned: '%s'": "שוכפל: '%s'",
"The cloned file '%s' was attached to this paste.": "The cloned file '%s' was attached to this paste.",
"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.": "קובץ מצורף שגוי.",
"Options": "אפשרויות",
"Shorten URL": "קיצור כתובת",
"Editor": "עורך",
"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": "פענוח",
"Enter password": "נא למלא ססמה",
"Loading…": "בטעינה…",
"Decrypting 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 +++": "+++ אין טקסט להדבקה +++",
"Could not get paste data: %s": "לא ניתן לקבל את נתוני ההדבקה: %s",
"QR code": "קוד QR",
"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>.",
"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. אפשר ליצור מסמכים בלתי מוצפנים אך אין אפשרות לקרוא מסמכים מוצפנים.",
"waiting on user to provide a password": "בהמתנה למילוי הססמה מצד המשתמש",
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "לא ניתן לפענח את הנתונים. יכול להיות שמילאת ססמה שגויה? כדאי לנסות עם הכפתור שלמעלה.",
"Retry": "לנסות שוב",
"Showing raw text…": "מוצג טקסט גולמי…",
"Notice:": "לתשומת לבך:",
"This link will expire after %s.": "הקישור הזה יפוג לאחר %s.",
"This link can only be accessed once, do not use back or refresh button in your browser.": "אפשר לגשת לקישור הזה פעם אחת בלבד, לא לחזור אחורה או לרענן את הדפדפן.",
"Link:": "קישור:",
"Recipient may become aware of your timezone, convert time to UTC?": "הנמען יוכל לדעת מה אזור הזמן שלך, להמיר ל־UTC?",
"Use Current Timezone": "להשתמש באזור הזמן הנוכחי",
"Convert To UTC": "המרה ל־UTC",
"Close": "סגירה",
"Encrypted note on %s": "%sהערה מוצפנת ב־",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "נא לבקר בקישור כדי לצפות בהערה. מסירת הקישור לאנשים כלשהם תאפשר גם להם לגשת להערה.",
"URL 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."
}

View File

@@ -1,193 +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",
"en": "hi",
"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)"
],
"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",
"Send": "Send",
"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 minutes": [
"%d minute (singular)",
"%d minutes (1st plural)",
"%d minutes (2nd plural)",
"%d minutes (3rd plural)"
],
"%d hours": [
"%d hour (singular)",
"%d hours (1st plural)",
"%d hours (2nd plural)",
"%d hours (3rd plural)"
],
"%d days": [
"%d day (singular)",
"%d days (1st plural)",
"%d days (2nd plural)",
"%d days (3rd plural)"
],
"%d weeks": [
"%d week (singular)",
"%d weeks (1st plural)",
"%d weeks (2nd plural)",
"%d weeks (3rd plural)"
],
"%d months": [
"%d month (singular)",
"%d months (1st plural)",
"%d months (2nd plural)",
"%d months (3rd plural)"
],
"%d years": [
"%d year (singular)",
"%d years (1st plural)",
"%d years (2nd plural)",
"%d years (3rd 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 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 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 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 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)"
],
"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 [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",
"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."
}

View File

@@ -1,144 +1,125 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "A %s egy minimalista, nyílt forráskódú adattároló szoftver, ahol a szerver semmilyen információt nem tárol a feltett adatról. Azt ugyanis a %sböngésződ%s segítségével titkosítja és oldja fel 256 bit hosszú titkosítási kulcsú AES-t használva.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> 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>.": "További információt a <a href=\"https://privatebin.info/\">projekt oldalán</a> találsz.", "A %s egy minimalista, nyílt forráskódú adattároló szoftver, ahol a szerver semmilyen információt nem tárol a feltett adatról. Azt ugyanis a <i>böngésződ</i> segítségével titkosítja és oldja fel 256 bit hosszú titkosítási kulcsú AES-t használva. További információt a <a href=\"https://privatebin.info/\">projekt oldalán</a> találsz.",
"Because ignorance is bliss": "A titok egyfajta hatalom.", "Because ignorance is bliss":
"A titok egyfajta hatalom.",
"en": "hu", "en": "hu",
"Paste does not exist, has expired or has been deleted.": "A bejegyzés nem létezik, lejárt vagy törölve lett.", "Paste does not exist, has expired or has been deleted.":
"%s requires php %s or above to work. Sorry.": "Bocs, de a %s működéséhez %s vagy ezt meghaladó verziójú php-s környezet szükséges.", "A bejegyzés nem létezik, lejárt vagy törölve lett.",
"%s requires configuration section [%s] to be present in configuration file.": "A %s megfelelő működéséhez a konfigurációs fájlban a [%s] résznek léteznie kell.", "%s requires php %s or above to work. Sorry.":
"Please wait %d seconds between each post.": [ "Bocs, de a %s működéséhez %s vagy ezt meghaladó verziójú php-s környezet szükséges.",
"%s requires configuration section [%s] to be present in configuration file.":
"A %s megfelelő működéséhez a konfigurációs fájlban a [%s] résznek léteznie kell.",
"Please wait %d seconds between each post.":
"Kérlek várj %d másodpercet két beküldés között.", "Kérlek várj %d másodpercet két beküldés között.",
"Kérlek várj %d másodpercet két beküldés között.", "Paste is limited to %s of encrypted data.":
"Kérlek várj %d másodpercet két beküldés között.", "A bejegyzés maximális hossza: %s",
"Kérlek várj %d másodpercet két beküldés között." "Invalid data.":
], "Érvénytelen adat.",
"Paste is limited to %s of encrypted data.": "A bejegyzés maximális hossza: %s", "You are unlucky. Try again.":
"Invalid data.": "Érvénytelen adat.", "Peched volt, próbáld újra.",
"You are unlucky. Try again.": "Peched volt, próbáld újra.", "Error saving comment. Sorry.":
"Error saving comment. Sorry.": "Nem sikerült menteni a hozzászólást. Bocs.", "Nem sikerült menteni a hozzászólást. Bocs.",
"Error saving paste. Sorry.": "Nem sikerült menteni a bejegyzést. Bocs.", "Error saving paste. Sorry.":
"Invalid paste ID.": "Érvénytelen bejegyzésazonosító.", "Nem sikerült menteni a bejegyzést. Bocs.",
"Paste is not of burn-after-reading type.": "A bejegyzés nem semmisül meg azonnal olvasás után.", "Invalid paste ID.":
"Wrong deletion token. Paste was not deleted.": "Hibás törlési azonosító. A bejegyzés nem lett törölve.", "Érvénytelen bejegyzés azonosító.",
"Paste was properly deleted.": "A bejegyzés sikeresen törölve.", "Paste is not of burn-after-reading type.":
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript szükséges a %s működéséhez. Elnézést a fennakadásért.", "A bejegyzés nem semmisül meg azonnal olvasás után.",
"%s requires a modern browser to work.": "A %s működéséhez a jelenleginél újabb böngészőre van szükség.", "Wrong deletion token. Paste was not deleted.":
"New": "Új", "Hibás törlési azonosító. A bejegyzés nem lett törölve.",
"Send": "Beküldöm!", "Paste was properly deleted.":
"Clone": "Másol", "A bejegyzés sikeresen törölve.",
"Raw text": "A nyers szöveg", "JavaScript is required for %s to work. Sorry for the inconvenience.":
"Expires": "Lejárati idő", "JavaScript szükséges a %s működéséhez. Elnézést a fennakadásért.",
"Burn after reading": "Törlés az első olvasás után", "%s requires a modern browser to work.":
"Open discussion": "Hozzászólások engedélyezése", "A %s működéséhez a jelenleginél újabb böngészőre van szükség.",
"Password (recommended)": "Jelszó (ajánlott)", "New":
"Discussion": "Hozzászólások", "Új",
"Toggle navigation": "Navigáció", "Send":
"%d seconds": [ "Beküldöm!",
"%d másodperc", "Clone":
"%d másodperc", "Másol",
"%d seconds (2nd plural)", "Raw text":
"%d seconds (3rd plural)" "A nyers szöveg",
], "Expires":
"%d minutes": [ "Lejárati idő",
"%d perc", "Burn after reading":
"%d perc", "Törlés az első olvasás után",
"%d minutes (2nd plural)", "Open discussion":
"%d minutes (3rd plural)" "Hozzászólások engedélyezése",
], "Password (recommended)":
"%d hours": [ "Jelszó (ajánlott)",
"%d óra", "Discussion":
"%d óra", "Hozzászólások",
"%d hours (2nd plural)", "Toggle navigation":
"%d hours (3rd plural)" "Navigáció",
], "%d seconds": ["%d másodperc", "%d másodperc"],
"%d days": [ "%d minutes": ["%d perc", "%d perc"],
"%d nap", "%d hours": ["%d óra", "%d óra"],
"%d nap", "%d days": ["%d nap", "%d nap"],
"%d days (2nd plural)", "%d weeks": ["%d hét", "%d hét"],
"%d days (3rd plural)" "%d months": ["%d hónap", "%d hónap"],
], "%d years": ["%d év", "%d év"],
"%d weeks": [ "Never":
"%d hét", "Soha",
"%d hét", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
"%d weeks (2nd plural)", "Megjegyzés: ez egy teszt szolgáltatás, az adatok bármikor törlődhetnek. Ha visszaélsz vele, kiscicák bánhatják! :)",
"%d weeks (3rd plural)" "This document will expire in %d seconds.":
], ["Ez a bejegyzés %d másodperc után megsemmisül.", "Ez a bejegyzés %d másodperc múlva megsemmisül."],
"%d months": [ "This document will expire in %d minutes.":
"%d hónap", ["Ez a bejegyzés %d perc után megsemmisül.", "Ez a bejegyzés %d perc múlva megsemmisül."],
"%d hónap", "This document will expire in %d hours.":
"%d months (2nd plural)", ["Ez a bejegyzés %d óra után megsemmisül.", "Ez a bejegyzés %d óra múlva megsemmisül."],
"%d months (3rd plural)" "This document will expire in %d days.":
], ["Ez a bejegyzés %d nap után megsemmisül.", "Ez a bejegyzés %d nap múlva megsemmisül."],
"%d years": [ "This document will expire in %d months.":
"%d év", ["Ez a bejegyzés %d hónap múlva megsemmisül.", "Ez a bejegyzés %d hónap múlva megsemmisül."],
"%d év", "Please enter the password for this paste:":
"%d years (2nd plural)", "Add meg a szükséges jelszót a bejegyzés megtekintéséhez:",
"%d years (3rd plural)" "Could not decrypt data (Wrong key?)":
], "Nem tudtuk dekódolni az adatot. Talán rossz kulcsot adtál meg?",
"Never": "Soha", "Could not delete the paste, it was not stored in burn after reading mode.":
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Megjegyzés: ez egy teszt szolgáltatás, az adatok bármikor törlődhetnek. Ha visszaélsz vele, kiscicák bánhatják! :)", "Nem tudtuk törölni a bejegyzést, mivel az olvasás után egyből megsemmisült. Így nem is volt tárolva.",
"This document will expire in %d seconds.": [ "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
"Ez a bejegyzés %d másodperc múlva megsemmisül.", "EZT A BEJEGYZÉST CSAK TE LÁTHATOD!!! Ne csukd be ezt az ablakot, mivel nem tudod újra megnézni. Az ugyanis az első olvasás után rögtön megsemmisül.",
"Ez a bejegyzés %d másodperc múlva megsemmisül.", "Could not decrypt comment; Wrong key?":
"Ez a bejegyzés %d másodperc múlva megsemmisül.", "Nem tudtuk dekódolni a hozzászólást. Talán rossz kulcsot adtál meg?",
"Ez a bejegyzés %d másodperc múlva megsemmisül." "Reply":
], "Válasz",
"This document will expire in %d minutes.": [ "Anonymous":
"Ez a bejegyzés %d perc múlva megsemmisül.", "Anonymous",
"Ez a bejegyzés %d perc múlva megsemmisül.", "Avatar generated from IP address":
"Ez a bejegyzés %d perc múlva megsemmisül.", "Avatar (az IP cím alapján generáljuk)",
"Ez a bejegyzés %d perc múlva megsemmisül." "Add comment":
], "Hozzászólok",
"This document will expire in %d hours.": [ "Optional nickname…":
"Ez a bejegyzés %d óra múlva megsemmisül.", "Becenév (már ha meg akarod adni)",
"Ez a bejegyzés %d óra múlva megsemmisül.", "Post comment":
"Ez a bejegyzés %d óra múlva megsemmisül.", "Beküld",
"Ez a bejegyzés %d óra múlva megsemmisül." "Sending comment…":
], "Beküldés alatt...",
"This document will expire in %d days.": [ "Comment posted.":
"Ez a bejegyzés %d nap múlva megsemmisül.", "A hozzászólás beküldve.",
"Ez a bejegyzés %d nap múlva megsemmisül.", "Could not refresh display: %s":
"Ez a bejegyzés %d nap múlva megsemmisül.", "Nem tudtuk frissíteni: %s",
"Ez a bejegyzés %d nap múlva megsemmisül." "unknown status":
], "Ismeretlen státusz.",
"This document will expire in %d months.": [ "server error or not responding":
"Ez a bejegyzés %d hónap múlva megsemmisül.", "A szerveren hiba lépett fel vagy nem válaszol.",
"Ez a bejegyzés %d hónap múlva megsemmisül.", "Could not post comment: %s":
"Ez a bejegyzés %d hónap múlva megsemmisül.", "Nem tudtuk beküldeni a hozzászólást: %s",
"Ez a bejegyzés %d hónap múlva megsemmisül." "Sending paste…":
], "Bejegyzés elküldése...",
"Please enter the password for this paste:": "Add meg a szükséges jelszót a bejegyzés megtekintéséhez:", "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
"Could not decrypt data (Wrong key?)": "Nem tudtuk visszfejteni az adatot. Talán rossz kulcsot adtál meg?", "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>",
"Could not delete the paste, it was not stored in burn after reading mode.": "Nem tudtuk törölni a bejegyzést, mivel az olvasás után egyből megsemmisült. Így nem is volt tárolva.", "Delete data":
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "EZT A BEJEGYZÉST CSAK TE LÁTHATOD!!! Ne csukd be ezt az ablakot, mivel nem tudod újra megnézni. Az ugyanis az első olvasás után rögtön megsemmisül.", "Adat törlése",
"Could not decrypt comment; Wrong key?": "Nem tudtuk visszafejteni a hozzászólást. Talán rossz kulcsot adtál meg?", "Could not create paste: %s":
"Reply": "Válasz", "Nem tudtuk létrehozni a bejegyzést: %s",
"Anonymous": "Névtelen", "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
"Avatar generated from IP address": "Avatar (az IP cím alapján generáljuk)", "Nem tudjuk dekódolni 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?",
"Add comment": "Hozzászólok",
"Optional nickname…": "Becenév (már ha meg akarod adni)",
"Post comment": "Beküld",
"Sending comment…": "Beküldés alatt...",
"Comment posted.": "A hozzászólás beküldve.",
"Could not refresh display: %s": "Nem tudtuk frissíteni: %s",
"unknown status": "Ismeretlen státusz.",
"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",
"Sending paste…": "Bejegyzés elküldése...",
"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",
"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?",
"B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"Format": "Formátum", "Format": "Formátum",
"Plain Text": "Egyszerű szöveg", "Plain Text": "Egyszerű szöveg",
"Source Code": "Forráskód", "Source Code": "Forráskód",
@@ -150,44 +131,58 @@
"alternatively drag & drop a file or paste an image from the clipboard": "vagy húzz ide egy fájlt, netán illessz be egy képet a vágólapról.", "alternatively drag & drop a file or paste an image from the clipboard": "vagy húzz ide egy fájlt, netán illessz be egy képet a vágólapról.",
"File too large, to display a preview. Please download the attachment.": "A fájl túl nagy ahhoz, hogy előnézete legyen. Töltsd le, hogy megtekinthesd.", "File too large, to display a preview. Please download the attachment.": "A fájl túl nagy ahhoz, hogy előnézete legyen. Töltsd le, hogy megtekinthesd.",
"Remove attachment": "Csatolmány eltávolítása", "Remove attachment": "Csatolmány eltávolítása",
"Your browser does not support uploading encrypted files. Please use a newer browser.": "A böngésződ nem támogatja titkosított fájlok feltöltését. Használj újabbat.", "Your browser does not support uploading encrypted files. Please use a newer browser.":
"A böngésződ nem támogatja titkosított fájlok feltöltését. Használj újabbat.",
"Invalid attachment.": "Érvénytelen csatolmány.", "Invalid attachment.": "Érvénytelen csatolmány.",
"Options": "Opciók", "Options": "Opciók",
"Shorten URL": "URL rövidítés", "Shorten URL": "URL rövidítés",
"Editor": "Szerkesztő felület", "Editor": "Szerkesztő felület",
"Preview": "Előnézet", "Preview": "Előnézet",
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s számára szükséges, hogy a PATH itt végződjön: \"%s\". Kérlek frissítsd a PATH értékét az index.php fájlban.", "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.":
"Decrypt": "Visszafejtés", "%s számára szükséges, hogy a PATH itt végződjön: \"%s\". Kérlek frissítsd a PATH értékét az index.php fájlban.",
"Enter password": "Jelszó", "Decrypt":
"Dekódolás",
"Enter password":
"Jelszó",
"Loading…": "Folyamatban...", "Loading…": "Folyamatban...",
"Decrypting paste…": "Bejegyzés visszafejtése...", "Decrypting paste…": "Bejegyzés dekódolása...",
"Preparing new paste…": "Új bejegyzés előkészítése...", "Preparing new paste…": "Új bejegyzés előkészítése...",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Abban az esetben, ha ez az üzenet mindig látható lenne, látogass el a <a href=\"%s\">Gyakran Ismételt Kérdések szekcióba a megoldásához</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.":
"Abban az esetben, ha ez az üzenet mindig látható lenne, látogass el a <a href=\"%s\">Gyakran Ismételt Kérdések szekcióba a megoldásához</a>.",
"+++ no paste text +++": "+++ nincs beillesztett szöveg +++", "+++ no paste text +++": "+++ nincs beillesztett szöveg +++",
"Could not get paste data: %s": "Az adat megszerzése nem sikerült: %s", "Could not get paste data: %s":
"QR code": "QR kód", "Could not get paste data: %s",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Ez a weboldal nem biztonságos HTTP kapcsolatot használ! Emiatt csak teszt célokra ajánljuk.", "QR code": "QR code",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "További információ <a href=\"%s\">ebben a GyIK bejegyzésben</a> található (angolul).", "This website is using an insecure HTTP connection! Please use it only for testing.":
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "A WebCrypto API használatához a böngésződ számára esetleg HTTPS kapcsolat szükséges. Ezért próbálj meg <a href=\"%s\">HTTPS-re váltani</a>.", "This website is using an insecure HTTP connection! Please use it only for testing.",
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "A böngésződ nem támogatja a WebAssemblyt, ami a zlib tömörítéshez kell. Létre tudsz hozni tömörítetlen dokumentumokat, de tömörítetteket nem tudsz olvasni.", "For more information <a href=\"%s\">see this FAQ entry</a>.":
"waiting on user to provide a password": "Várakozás a felhasználóra jelszó megadása okán", "For more information <a href=\"%s\">see this FAQ entry</a>.",
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Nem lehetett visszafejteni az adatot. Rossz jelszót ütöttél be? Ismételd meg a fent található gombbal.", "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.":
"Retry": "Újrapróbálkozás", "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.",
"Showing raw text…": "Nyers szöveg mutatása…", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.":
"Notice:": "Megjegyzés:", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.",
"This link will expire after %s.": "Ez a hivatkozás %s múlva megsemmisül.", "waiting on user to provide a password":
"This link can only be accessed once, do not use back or refresh button in your browser.": "Ez a hivatkozás csak egyszeri alkalommal érhető el, ne használd a böngésződ \"Visszalépés\" vagy \"Újratöltés\" gombját.", "waiting on user to provide a password",
"Link:": "Hivatkozás:", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.":
"Recipient may become aware of your timezone, convert time to UTC?": "A címzett esetleg megtudhatja az időzónádat, átalakítsuk azt UTC-re?", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.",
"Use Current Timezone": "Az aktuális időzóna használata", "Retry":
"Convert To UTC": "Átalakítás UTC időzónára", "Retry",
"Close": "Bezárás", "Showing raw text…":
"Encrypted note on %s": "Titkosított jegyzet a %s", "Showing raw text…",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Látogasd meg ezt a hivatkozást a bejegyzés megtekintéséhez. Ha mások számára is megadod ezt a linket, azzal hozzáférnek ők is.", "Notice:":
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.", "Notice:",
"Save paste": "Save paste", "This link will expire after %s.":
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.", "This link will expire after %s.",
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", "This link can only be accessed once, do not use back or refresh button in your browser.":
"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\".", "This link can only be accessed once, do not use back or refresh button in your browser.",
"Error parsing YOURLS response.": "Error parsing YOURLS response." "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"
} }

View File

@@ -1,193 +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 adalah sebuah pastebin online sumber terbuka dan minimalis, dimana servernya tersebut tidak punya pengetahuan tentang data yang ditempelkan. Data tersebut di enkrip/dekrip %sdi dalam browser%s menggunakan metode enkrip AES 256 bit.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Infomasi lebih lanjut pada <a href=\"https://privatebin.info/\">halaman proyek</a>.",
"Because ignorance is bliss": "Karena ketidaktahuan adalah kebahagiaan, gitu loh",
"en": "id",
"Paste does not exist, has expired or has been deleted.": "Paste tidak ada, telah kedaluwarsa atau telah dihapus.",
"%s requires php %s or above to work. Sorry.": "%s memerlukan php %s atau versi diatasnya untuk dapat dijalankan. Maaf.",
"%s requires configuration section [%s] to be present in configuration file.": "%s membutuhkan bagian konfigurasi [%s] untuk ada di file konfigurasi.",
"Please wait %d seconds between each post.": [
"Silahkan menunggu %d detik antara masing-masing postingan.",
"Silahkan menunggu %d detik antara masing-masing postingan.",
"Silahkan menunggu %d detik antara masing-masing postingan.",
"Silahkan menunggu %d detik antara masing-masing postingan."
],
"Paste is limited to %s of encrypted data.": "Paste dibatasi sampai %s dari data yang dienskripsi.",
"Invalid data.": "Data tidak valid.",
"You are unlucky. Try again.": "Anda belum beruntung. Coba kembali ya Kaka.",
"Error saving comment. Sorry.": "Terjadi kesalahan saat menyimpan komentar. Maaf ya Kaka.",
"Error saving paste. Sorry.": "Terjadi kesalahan saat menyimpan paste. Maaf ya Kaka.",
"Invalid paste ID.": "ID paste tidak valid.",
"Paste is not of burn-after-reading type.": "Paste bukan tipe hapus-setelah-membaca.",
"Wrong deletion token. Paste was not deleted.": "Token penghapusan salah. Paste belum terhapus.",
"Paste was properly deleted.": "Paste telah dihapus dengan benar.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript diperlukan agar %s bekerja. Maaf untuk ketidaknyamanannya.",
"%s requires a modern browser to work.": "%s memerlukan sebuah browser modern untuk bekerja.",
"New": "Baru",
"Send": "Kirim",
"Clone": "Klon",
"Raw text": "Teks mentah",
"Expires": "Kadaluarsa",
"Burn after reading": "Hapus setelah membaca",
"Open discussion": "Diskusi terbuka",
"Password (recommended)": "Kata Sandi (direkomendasikan)",
"Discussion": "Diskusi",
"Toggle navigation": "Alihkan navigasi",
"%d seconds": [
"%d detik",
"%d detik",
"%d detik",
"%d detik"
],
"%d minutes": [
"%d menit",
"%d menit",
"%d menit",
"%d menit"
],
"%d hours": [
"%d jam",
"%d jam",
"%d jam",
"%d jam"
],
"%d days": [
"%d hari",
"%d hari",
"%d hari",
"%d hari"
],
"%d weeks": [
"%d minggu",
"%d minggu",
"%d minggu",
"%d minggu"
],
"%d months": [
"%d bulan",
"%d bulan",
"%d bulan",
"%d bulan"
],
"%d years": [
"%d tahun",
"%d tahun",
"%d tahun",
"%d tahun"
],
"Never": "Jangan pernah",
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Catatan: Ini adalah layanan percobaan: Data mungkin bisa terhapus kapanpun juga. Anak-anak kucing akan mati jika Anda mengekploitasi layanan ini.",
"This document will expire in %d seconds.": [
"Dokumen ini kadaluarsa dalam %d detik.",
"Dokumen ini kadaluarsa dalam %d detik.",
"Dokumen ini kadaluarsa dalam %d detik.",
"Dokumen ini kadaluarsa dalam %d detik."
],
"This document will expire in %d minutes.": [
"Dokumen ini akan kadaluarsa dalam %d menit.",
"Dokumen ini akan kadaluarsa dalam %d menit.",
"Dokumen ini akan kadaluarsa dalam %d menit.",
"Dokumen ini akan kadaluarsa dalam %d menit."
],
"This document will expire in %d hours.": [
"Dokumen ini akan kadaluarsa dalam %d jam.",
"Dokumen ini akan kadaluarsa dalam %d jam.",
"Dokumen ini akan kadaluarsa dalam %d jam.",
"Dokumen ini akan kadaluarsa dalam %d jam."
],
"This document will expire in %d days.": [
"Dokumen ini akan kadaluarsa dalam %d hari.",
"Dokumen ini akan kadaluarsa dalam %d hari.",
"Dokumen ini akan kadaluarsa dalam %d hari.",
"Dokumen ini akan kadaluarsa dalam %d hari."
],
"This document will expire in %d months.": [
"Dokumen ini akan kadaluarsa dalam %d bulan.",
"Dokumen ini akan kadaluarsa dalam %d bulan.",
"Dokumen ini akan kadaluarsa dalam %d bulan.",
"Dokumen ini akan kadaluarsa dalam %d bulan."
],
"Please enter the password for this paste:": "Silahkan masukkan kata sandi untuk paste ini:",
"Could not decrypt data (Wrong key?)": "Tidak dapat mendekrip data (Salah kunci?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Tidak dapat menghapus paste, ini dikarenakan data tidak tersimpan dalam mode hapus setelah membaca.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "HANYA UNTUK ANDA SAJA. Jangan tutup kolom jendela ini, pesan ini tidak akan dapat ditampilkan lagi.",
"Could not decrypt comment; Wrong key?": "Tidak dapat mendekrip komentar; Salah kunci?",
"Reply": "Balas",
"Anonymous": "Tanpa Nama",
"Avatar generated from IP address": "Avatar dihasilkan dari alamat IP",
"Add comment": "Tambah komentar",
"Optional nickname…": "Nama julukan tambahan…",
"Post comment": "Posting komentar",
"Sending comment…": "Mengirim komentar…",
"Comment posted.": "Komentar telah diposting.",
"Could not refresh display: %s": "Tidak dapat menyegarkan tampilan: %s",
"unknown status": "status tidak diketahui",
"server error or not responding": "kesalahan server atau server tidak merespon",
"Could not post comment: %s": "Tidak dapat memposting komentar: %s",
"Sending paste…": "Mengirim paste…",
"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",
"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?)",
"B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"Format": "Format",
"Plain Text": "Teks Biasa",
"Source Code": "Kode Sumber",
"Markdown": "Markdown",
"Download attachment": "Unduh lampiran",
"Cloned: '%s'": "Diklon: '%s'",
"The cloned file '%s' was attached to this paste.": "Berkas yang di-klon '%s' telah dilampirkan pada paste ini.",
"Attach a file": "Lampirkan sebuah berkas",
"alternatively drag & drop a file or paste an image from the clipboard": "sebagai alternatif, seret & jatuhkan berkas atau tempel sebuah gambar dari papan klip",
"File too large, to display a preview. Please download the attachment.": "File terlalu besar untuk menampilkan pratinjau. Silakan unduh lampirannya.",
"Remove attachment": "Hapus lampiran",
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Browser Anda tidak mendukung pengunggahan file terenkripsi. Harap gunakan browser yang lebih baru.",
"Invalid attachment.": "Lampiran tidak valid.",
"Options": "Pilihan",
"Shorten URL": "Pendekkan alamat URL",
"Editor": "Penyunting",
"Preview": "Pratinjau",
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s memerlukan PATH berakhir dalam sebuah \"%s\". Silahkan perbarui PATH dalam index.php Anda.",
"Decrypt": "Dekrip",
"Enter password": "Masukkan kata sandi",
"Loading…": "Memuat…",
"Decrypting paste…": "Men-dekrip paste…",
"Preparing new paste…": "Menyiapkan paste baru…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Jika pesan ini tidak pernah menghilang, silahkan kunjungi dan lihat pada <a href=\"%s\">FAQ ini untuk informasi bagaimana menyelesaikan masalah tersebut</a>.",
"+++ no paste text +++": "+++ tidak ada teks paste +++",
"Could not get paste data: %s": "Tidak dapat mengambil/menampilkan data paste: %s",
"QR code": "Kode QR",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Situs web ini menggunakan koneksi HTTP yang tidak aman! Silahkan gunakan hanya untuk pengujian.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Untuk informasi lebih lanjut, <a href=\"%s\"> lihat entri FAQ ini </a>.",
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Browser Anda mungkin memerlukan koneksi HTTPS untuk mendukung API Webcrypto. Coba <a href=\"%s\"> beralih ke HTTPS </a>.",
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Browser Anda tidak mendukung Webassembly, yang digunakan untuk kompresi zlib. Anda dapat membuat dokumen yang tidak terkompresi, tetapi tidak akan dapat membaca berkas yang terkompresi.",
"waiting on user to provide a password": "menunggu pengguna untuk menyediakan kata sandi",
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Tidak dapat mendekrip data. Apakah Anda memasukkan kata sandi yang salah? Silahkan coba lagi dengan tombol di bagian atas.",
"Retry": "Coba lagi",
"Showing raw text…": "Menampilkan teks mentah…",
"Notice:": "Pengumuman:",
"This link will expire after %s.": "Tautan ini akan kadaluarsa setelah %s.",
"This link can only be accessed once, do not use back or refresh button in your browser.": "Tautan ini hanya dapat diakses satu kali, jangan gunakan tombol Kembali atau tombol Segarkan di browser Anda.",
"Link:": "Tautan:",
"Recipient may become aware of your timezone, convert time to UTC?": "Penerima dapat mengetahui zona waktu Anda, ubah waktu menjadi UTC?",
"Use Current Timezone": "Gunakan Zonawaktu Saat Ini",
"Convert To UTC": "Konversi Ke UTC",
"Close": "Tutup",
"Encrypted note on %s": "Catatan ter-ekrip di %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Kunjungi tautan ini untuk melihat catatan. Memberikan alamat URL pada siapapun juga, akan mengizinkan mereka untuk mengakses catatan, so pasti gitu loh Kaka.",
"URL shortener may expose your decrypt key in URL.": "Pemendek URL mungkin akan menampakkan kunci dekrip Anda dalam URL.",
"Save paste": "Simpan 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."
}

View File

@@ -1,144 +1,125 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s è un sistema di tipo \"Pastebin\" online, open source, minimalista. Il server non possiede alcuna conoscenza (\"Zero Knowledge\") del contenuto dei dati inviati. I dati sono cifrati/decifrati %snel Browser%s con algoritmo AES a 256 Bit.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> 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>.": "Per ulteriori informazioni, vedi <a href=\"https://privatebin.info/\">Sito del progetto</a>.", "%s è un sistema di tipo \"Pastebin\" online, open source, minimalista. Il server non possiede alcuna conoscenza (\"Zero Knowledge\") del contenuto dei dati inviati. I dati sono cifrati/decifrati <i>nel Browser</i> con algoritmo AES a 256 Bit. Per ulteriori informazioni, vedi <a href=\"https://privatebin.info/\">Sito del progetto</a>.",
"Because ignorance is bliss": "Perché l'ignoranza è una benedizione (Because ignorance is bliss)", "Because ignorance is bliss":
"Perché l'ignoranza è una benedizione (Because ignorance is bliss)",
"en": "it", "en": "it",
"Paste does not exist, has expired or has been deleted.": "Questo messaggio non esiste, è scaduto o è stato cancellato.", "Paste does not exist, has expired or has been deleted.":
"%s requires php %s or above to work. Sorry.": "%s richiede php %s o superiore per funzionare. Ci spiace.", "Questo messaggio non esiste, è scaduto o è stato cancellato.",
"%s requires configuration section [%s] to be present in configuration file.": "%s richiede la presenza della sezione [%s] nei file di configurazione.", "%s requires php %s or above to work. Sorry.":
"Please wait %d seconds between each post.": [ "%s richiede php %s o superiore per funzionare. Ci spiace.",
"Attendi per favore un secondo prima di ciascun invio.", "%s requires configuration section [%s] to be present in configuration file.":
"%s richiede la presenza della sezione [%s] nei file di configurazione.",
"Please wait %d seconds between each post.":
"Attendi per favore %d secondi prima di ciascun invio.", "Attendi per favore %d secondi prima di ciascun invio.",
"Attendi per favore %d secondi prima di ciascun invio.", "Paste is limited to %s of encrypted data.":
"Attendi per favore %d secondi prima di ciascun invio." "La dimensione del messaggio è limitata a %s di dati cifrati.",
], "Invalid data.":
"Paste is limited to %s of encrypted data.": "La dimensione del messaggio è limitata a %s di dati cifrati.", "Dati non validi.",
"Invalid data.": "Dati non validi.", "You are unlucky. Try again.":
"You are unlucky. Try again.": "Ritenta, sarai più fortunato.", "Ritenta, sarai più fortunato.",
"Error saving comment. Sorry.": "Errore durante il salvataggio del commento.", "Error saving comment. Sorry.":
"Error saving paste. Sorry.": "Errore durante il salvataggio del messaggio.", "Errore durante il salvataggio del commento.",
"Invalid paste ID.": "ID-Messaggio non valido.", "Error saving paste. Sorry.":
"Paste is not of burn-after-reading type.": "Il messaggio non è di tipo Distruggi-dopo-lettura.", "Errore durante il salvataggio del messaggio.",
"Wrong deletion token. Paste was not deleted.": "Codice cancellazione errato. Il messaggio NON è stato cancellato.", "Invalid paste ID.":
"Paste was properly deleted.": "Il messaggio è stato correttamente cancellato.", "ID-Messaggio non valido.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "%s funziona solo con JavaScript attivo. Ci dispiace per l'inconveniente.", "Paste is not of burn-after-reading type.":
"%s requires a modern browser to work.": "%s richiede un browser moderno e aggiornato per funzionare.", "Il messaggio non è di tipo Distruggi-dopo-lettura.",
"New": "Nuovo", "Wrong deletion token. Paste was not deleted.":
"Send": "Invia", "Codice cancellazione errato. Il messaggio NON è stato cancellato.",
"Clone": "Clona", "Paste was properly deleted.":
"Raw text": "Testo Raw", "Il messaggio è stato correttamente cancellato.",
"Expires": "Scade", "JavaScript is required for %s to work. Sorry for the inconvenience.":
"Burn after reading": "Distruggi dopo lettura", "%s funziona solo con JavaScript attivo. Ci dispiace per l'inconveniente.",
"Open discussion": "Apri discussione", "%s requires a modern browser to work.":
"Password (recommended)": "Password (raccomandato)", "%s richiede un browser moderno e aggiornato per funzionare.",
"Discussion": "Discussione", "New":
"Toggle navigation": "Scambia Navigazione", "Nuovo",
"%d seconds": [ "Send":
"%d secondo", "Invia",
"%d secondi", "Clone":
"%d seconds (2nd plural)", "Clona",
"%d seconds (3rd plural)" "Raw text":
], "Testo Raw",
"%d minutes": [ "Expires":
"%d minuto", "Scade",
"%d minuti", "Burn after reading":
"%d minutes (2nd plural)", "Distruggi dopo lettura",
"%d minutes (3rd plural)" "Open discussion":
], "Apri discussione",
"%d hours": [ "Password (recommended)":
"%d ora", "Password (raccomandato)",
"%d ore", "Discussion":
"%d hours (2nd plural)", "Discussione",
"%d hours (3rd plural)" "Toggle navigation":
], "Scambia Navigazione",
"%d days": [ "%d seconds": ["%d secondo", "%d secondi"],
"%d giorno", "%d minutes": ["%d minuto", "%d minuti"],
"%d giorni", "%d hours": ["%d ora", "%d ore"],
"%d days (2nd plural)", "%d days": ["%d giorno", "%d giorni"],
"%d days (3rd plural)" "%d weeks": ["%d settimana", "%d settimane"],
], "%d months": ["%d mese", "%d mesi"],
"%d weeks": [ "%d years": ["%d anno", "%d anni"],
"%d settimana", "Never":
"%d settimane", "Mai",
"%d weeks (2nd plural)", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
"%d weeks (3rd plural)" "Nota: questo è un servizio di prova, i messaggi salvati possono essere cancellati in qualsiasi momento. Moriranno dei gattini se abuserai di questo servizio.",
], "This document will expire in %d seconds.":
"%d months": [ ["Questo documento scadrà tra un secondo.", "Questo documento scadrà in %d secondi."],
"%d mese", "This document will expire in %d minutes.":
"%d mesi", ["Questo documento scadrà tra un minuto.", "Questo documento scadrà in %d minuti."],
"%d months (2nd plural)", "This document will expire in %d hours.":
"%d months (3rd plural)" ["Questo documento scadrà tra un'ora.", "Questo documento scadrà in %d ore."],
], "This document will expire in %d days.":
"%d years": [ ["Questo documento scadrà tra un giorno.", "Questo documento scadrà in %d giorni."],
"%d anno", "This document will expire in %d months.":
"%d anni", ["Questo documento scadrà tra un mese.", "Questo documento scadrà in %d mesi."],
"%d years (2nd plural)", "Please enter the password for this paste:":
"%d years (3rd plural)" "Inserisci la password per questo messaggio:",
], "Could not decrypt data (Wrong key?)":
"Never": "Mai", "Non riesco a decifrari i dati (Chiave errata?)",
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Nota: questo è un servizio di prova, i messaggi salvati possono essere cancellati in qualsiasi momento. Moriranno dei gattini se abuserai di questo servizio.", "Could not delete the paste, it was not stored in burn after reading mode.":
"This document will expire in %d seconds.": [ "Non riesco a cancellare il messaggio, non è stato salvato in modalità Distruggi-dopo-lettora.",
"Questo documento scadrà tra un secondo.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
"Questo documento scadrà in %d secondi.", "FOR YOUR EYES ONLY. Non chiudere questa finestra, il messaggio non può essere visualizzato una seconda volta.",
"Questo documento scadrà in %d secondi.", "Could not decrypt comment; Wrong key?":
"Questo documento scadrà in %d secondi." "Non riesco a decifrare il commento (Chiave errata?)",
], "Reply":
"This document will expire in %d minutes.": [ "Rispondi",
"Questo documento scadrà tra un minuto.", "Anonymous":
"Questo documento scadrà in %d minuti.", "Anonimo",
"Questo documento scadrà in %d minuti.", "Avatar generated from IP address":
"Questo documento scadrà in %d minuti." "Avatar generato dall'indirizzo IP)",
], "Add comment":
"This document will expire in %d hours.": [ "Aggiungi un commento",
"Questo documento scadrà tra un'ora.", "Optional nickname…":
"Questo documento scadrà in %d ore.", "Nickname opzionale…",
"Questo documento scadrà in %d ore.", "Post comment":
"Questo documento scadrà in %d ore." "Invia commento",
], "Sending comment…":
"This document will expire in %d days.": [ "Commento in fase di invio…",
"Questo documento scadrà tra un giorno.", "Comment posted.":
"Questo documento scadrà in %d giorni.", "Commento inviato.",
"Questo documento scadrà in %d giorni.", "Could not refresh display: %s":
"Questo documento scadrà in %d giorni." "Non riesco ad aggiornare il display: %s",
], "unknown status":
"This document will expire in %d months.": [ "stato sconosciuto",
"Questo documento scadrà tra un mese.", "server error or not responding":
"Questo documento scadrà in %d mesi.", "errore o mancata risposta dal server",
"Questo documento scadrà in %d mesi.", "Could not post comment: %s":
"Questo documento scadrà in %d mesi." "Impossibile inviare il commento: %s",
], "Sending paste…":
"Please enter the password for this paste:": "Inserisci la password per questo messaggio:", "Messaggio in fase di invio",
"Could not decrypt data (Wrong key?)": "Non riesco a decifrare i dati (chiave sbagliata?)", "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
"Could not delete the paste, it was not stored in burn after reading mode.": "Non riesco a cancellare il messaggio, non è stato salvato in modalità Distruggi-dopo-lettora.", "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>",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "FOR YOUR EYES ONLY. Non chiudere questa finestra, il messaggio non può essere visualizzato una seconda volta.", "Delete data":
"Could not decrypt comment; Wrong key?": "Non riesco a decifrare il commento (Chiave sbagliata?)", "Cancella i dati",
"Reply": "Rispondi", "Could not create paste: %s":
"Anonymous": "Anonimo", "Non riesco a creare il messaggio: %s",
"Avatar generated from IP address": "Avatar generato dall'indirizzo IP", "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
"Add comment": "Aggiungi un commento", "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?)",
"Optional nickname…": "Nickname opzionale…",
"Post comment": "Invia commento",
"Sending comment…": "Commento in fase di invio…",
"Comment posted.": "Commento inviato.",
"Could not refresh display: %s": "Non riesco ad aggiornare il display: %s",
"unknown status": "stato sconosciuto",
"server error or not responding": "errore o mancata risposta dal server",
"Could not post comment: %s": "Impossibile inviare il commento: %s",
"Sending paste…": "Messaggio in fase di invio…",
"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",
"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?)",
"B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"Format": "Formato", "Format": "Formato",
"Plain Text": "Solo Testo", "Plain Text": "Solo Testo",
"Source Code": "Codice Sorgente", "Source Code": "Codice Sorgente",
@@ -147,47 +128,61 @@
"Cloned: '%s'": "Clonato: '%s'", "Cloned: '%s'": "Clonato: '%s'",
"The cloned file '%s' was attached to this paste.": "Il file clonato '%s' era allegato a questo messaggio.", "The cloned file '%s' was attached to this paste.": "Il file clonato '%s' era allegato a questo messaggio.",
"Attach a file": "Allega un file", "Attach a file": "Allega un file",
"alternatively drag & drop a file or paste an image from the clipboard": "in alternativa trascina e rilascia un file o incolla un'immagine dagli appunti", "alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard",
"File too large, to display a preview. Please download the attachment.": "File troppo grande, per visualizzare un'anteprima. Sei pregato di scaricare l'allegato.", "File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.",
"Remove attachment": "Rimuovi allegato", "Remove attachment": "Rimuovi allegato",
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Il tuo browser non supporta l'invio di file cifrati. Utilizza un browser più recente.", "Your browser does not support uploading encrypted files. Please use a newer browser.":
"Il tuo browser non supporta l'invio di file cifrati. Utilizza un browser più recente.",
"Invalid attachment.": "Allegato non valido.", "Invalid attachment.": "Allegato non valido.",
"Options": "Opzioni", "Options": "Opzioni",
"Shorten URL": "Accorcia URL", "Shorten URL": "Accorcia URL",
"Editor": "Editor", "Editor": "Editor",
"Preview": "Anteprima", "Preview": "Preview",
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s necessita che PATH termini con \"%s\". Aggiorna la variabile PATH nel tuo index.php.", "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.":
"Decrypt": "Decifra", "%s necessita che PATH termini con \"%s\". Aggiorna la variabile PATH nel tuo index.php.",
"Enter password": "Inserisci la password", "Decrypt":
"Decifra",
"Enter password":
"Inserisci la password",
"Loading…": "Carico…", "Loading…": "Carico…",
"Decrypting paste…": "Decifro il messaggio…", "Decrypting paste…": "Decifro il messaggio…",
"Preparing new paste…": "Preparo il nuovo messaggio…", "Preparing new paste…": "Preparo il nuovo messaggio…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Nel caso questo messaggio non scompaia, controlla questa <a href=\"%s\">FAQ</a> per trovare informazioni su come risolvere il problema (in Inglese).", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.":
"Nel caso questo messaggio non scompaia, controlla questa <a href=\"%s\">FAQ</a> per trovare informazioni su come risolvere il problema (in Inglese).",
"+++ no paste text +++": "+++ nessun testo nel messaggio +++", "+++ no paste text +++": "+++ nessun testo nel messaggio +++",
"Could not get paste data: %s": "Impossibile ottenere i dati di incolla: %s", "Could not get paste data: %s":
"Could not get paste data: %s",
"QR code": "QR code", "QR code": "QR code",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Questo sito web sta usando una connessione HTTP non sicura! Si prega di usarlo solo per il test.", "This website is using an insecure HTTP connection! Please use it only for testing.":
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Per ulteriori informazioni <a href=\"%s\">vedi questa voce della FAQ</a>.", "This website is using an insecure HTTP connection! Please use it only for testing.",
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Il tuo browser potrebbe richiedere una connessione HTTPS per supportare l'API WebCrypto. Prova <a href=\"%s\">a passare a HTTPS</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.":
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Il tuo browser non supporta WebAssembly, utilizzato per la compressione di zlib. Puoi creare documenti non compressi, ma non è possibile leggere quelli compressi.", "For more information <a href=\"%s\">see this FAQ entry</a>.",
"waiting on user to provide a password": "in attesa sull'utente di fornire una password", "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.":
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Impossibile decrittografare i dati. Hai inserito una password errata? Riprova con il pulsante in alto.", "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.",
"Retry": "Riprova", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.":
"Showing raw text…": "Mostrando il testo grezzo…", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.",
"Notice:": "Avviso:", "waiting on user to provide a password":
"This link will expire after %s.": "Questo collegamento scadrà dopo %s.", "waiting on user to provide a password",
"This link can only be accessed once, do not use back or refresh button in your browser.": "Questo collegamento è accessibile una sola volta, non usare il pulsante indietro o aggiorna nel tuo browser.", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.":
"Link:": "Link:", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.",
"Recipient may become aware of your timezone, convert time to UTC?": "Il destinatario può essere a conoscenza del tuo fuso orario, convertire l'orario in UTC?", "Retry":
"Use Current Timezone": "Usa Fuso Orario Corrente", "Retry",
"Convert To UTC": "Converti a UTC", "Showing raw text…":
"Close": "Chiudi", "Showing raw text…",
"Encrypted note on %s": "Nota crittografata su %s", "Notice:":
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visita questo collegamento per vedere la nota. Dare l'URL a chiunque consente anche a loro di accedere alla nota.", "Notice:",
"URL shortener may expose your decrypt key in URL.": "URL shortener può esporre la tua chiave decrittografata nell'URL.", "This link will expire after %s.":
"Save paste": "Salva il messagio", "This link will expire after %s.",
"Your IP is not authorized to create pastes.": "Il tuo IP non è autorizzato a creare dei messaggi.", "This link can only be accessed once, do not use back or refresh button in your browser.":
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", "This link can only be accessed once, do not use back or refresh button in your browser.",
"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\".", "Link:":
"Error parsing YOURLS response.": "Error parsing YOURLS response." "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"
} }

View File

@@ -1,193 +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",
"en": "ja",
"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)"
],
"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",
"Send": "Send",
"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 minutes": [
"%d minute (singular)",
"%d minutes (1st plural)",
"%d minutes (2nd plural)",
"%d minutes (3rd plural)"
],
"%d hours": [
"%d hour (singular)",
"%d hours (1st plural)",
"%d hours (2nd plural)",
"%d hours (3rd plural)"
],
"%d days": [
"%d day (singular)",
"%d days (1st plural)",
"%d days (2nd plural)",
"%d days (3rd plural)"
],
"%d weeks": [
"%d week (singular)",
"%d weeks (1st plural)",
"%d weeks (2nd plural)",
"%d weeks (3rd plural)"
],
"%d months": [
"%d month (singular)",
"%d months (1st plural)",
"%d months (2nd plural)",
"%d months (3rd plural)"
],
"%d years": [
"%d year (singular)",
"%d years (1st plural)",
"%d years (2nd plural)",
"%d years (3rd 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 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 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 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 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)"
],
"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 [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",
"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."
}

View File

@@ -1,193 +0,0 @@
{
"PrivateBin": "sivlolnitvanku'a",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": ".i la %s mupli lo sorcu lo'e se setca kibro .i ji'a zo'e se zancari gi'e fingubni .i lo samse'u na djuno lo datni selru'e cu .i ba'e %sle brauzero%s ku mipri le do datni ku fi la'oi AES poi bitni li 256",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "More information on the <a href=\"https://privatebin.info/\">project page</a>.",
"Because ignorance is bliss": ".i ki'u le ka na djuno cu ka saxfri",
"en": "jbo",
"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)"
],
"Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.",
"Invalid data.": ".i le selru'e cu na drani",
"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": "cnino",
"Send": "benji",
"Clone": "fukpi",
"Raw text": "vlapoi nalselrucyzu'e",
"Expires": "vimcu",
"Burn after reading": "vimcu ba la tcidu",
"Open discussion": "lo zbasu cu casnu",
"Password (recommended)": "japyvla (nelti'i)",
"Discussion": "casnu",
"Toggle navigation": "Toggle navigation",
"%d seconds": [
"%d second (singular)",
"%d seconds (1st plural)",
"%d seconds (2nd plural)",
"%d seconds (3rd plural)"
],
"%d minutes": [
"%d minute (singular)",
"%d minutes (1st plural)",
"%d minutes (2nd plural)",
"%d minutes (3rd plural)"
],
"%d hours": [
"%d hour (singular)",
"%d hours (1st plural)",
"%d hours (2nd plural)",
"%d hours (3rd plural)"
],
"%d days": [
"%d day (singular)",
"%d days (1st plural)",
"%d days (2nd plural)",
"%d days (3rd plural)"
],
"%d weeks": [
"%d week (singular)",
"%d weeks (1st plural)",
"%d weeks (2nd plural)",
"%d weeks (3rd plural)"
],
"%d months": [
"%d month (singular)",
"%d months (1st plural)",
"%d months (2nd plural)",
"%d months (3rd plural)"
],
"%d years": [
"%d year (singular)",
"%d years (1st plural)",
"%d years (2nd plural)",
"%d years (3rd 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 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 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 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 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)"
],
"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 [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",
"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": "ky.bu ry termifra",
"This website is using an insecure HTTP connection! Please use it only for testing.": "This website is using an insecure HTTP connection! Please use it only for testing.",
"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": "refcfa",
"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:": "urli:",
"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": "galfi lo cabni la utc",
"Close": "ganlo",
"Encrypted note on %s": ".i lo lo notci ku mifra cu zvati %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
"Save paste": "rejgau fukpi",
"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."
}

View File

@@ -1,193 +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",
"en": "ku",
"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)"
],
"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",
"Send": "Send",
"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 minutes": [
"%d minute (singular)",
"%d minutes (1st plural)",
"%d minutes (2nd plural)",
"%d minutes (3rd plural)"
],
"%d hours": [
"%d hour (singular)",
"%d hours (1st plural)",
"%d hours (2nd plural)",
"%d hours (3rd plural)"
],
"%d days": [
"%d day (singular)",
"%d days (1st plural)",
"%d days (2nd plural)",
"%d days (3rd plural)"
],
"%d weeks": [
"%d week (singular)",
"%d weeks (1st plural)",
"%d weeks (2nd plural)",
"%d weeks (3rd plural)"
],
"%d months": [
"%d month (singular)",
"%d months (1st plural)",
"%d months (2nd plural)",
"%d months (3rd plural)"
],
"%d years": [
"%d year (singular)",
"%d years (1st plural)",
"%d years (2nd plural)",
"%d years (3rd 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 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 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 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 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)"
],
"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 [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",
"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."
}

View File

@@ -1,193 +0,0 @@
{
"PrivateBin": "PrivatumVinariam",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.",
"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",
"en": "la",
"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)"
],
"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",
"Send": "Send",
"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 minutes": [
"%d minute (singular)",
"%d minutes (1st plural)",
"%d minutes (2nd plural)",
"%d minutes (3rd plural)"
],
"%d hours": [
"%d hour (singular)",
"%d hours (1st plural)",
"%d hours (2nd plural)",
"%d hours (3rd plural)"
],
"%d days": [
"%d day (singular)",
"%d days (1st plural)",
"%d days (2nd plural)",
"%d days (3rd plural)"
],
"%d weeks": [
"%d week (singular)",
"%d weeks (1st plural)",
"%d weeks (2nd plural)",
"%d weeks (3rd plural)"
],
"%d months": [
"%d month (singular)",
"%d months (1st plural)",
"%d months (2nd plural)",
"%d months (3rd plural)"
],
"%d years": [
"%d year (singular)",
"%d years (1st plural)",
"%d years (2nd plural)",
"%d years (3rd 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 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 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 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 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)"
],
"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 [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",
"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."
}

View File

@@ -63,7 +63,6 @@
"ho": ["Hiri Motu", "Hiri Motu"], "ho": ["Hiri Motu", "Hiri Motu"],
"hu": ["magyar", "Hungarian"], "hu": ["magyar", "Hungarian"],
"ia": ["Interlingua", "Interlingua"], "ia": ["Interlingua", "Interlingua"],
"id": ["bahasa Indonesia","Indonesian"],
"ie": ["Interlingue", "Interlingue"], "ie": ["Interlingue", "Interlingue"],
"ga": ["Gaeilge", "Irish"], "ga": ["Gaeilge", "Irish"],
"ig": ["Asụsụ Igbo", "Igbo"], "ig": ["Asụsụ Igbo", "Igbo"],
@@ -89,7 +88,6 @@
"ku": ["Kurdî", "Kurdish"], "ku": ["Kurdî", "Kurdish"],
"kj": ["Kuanyama", "Kwanyama"], "kj": ["Kuanyama", "Kwanyama"],
"la": ["lingua latina", "Latin"], "la": ["lingua latina", "Latin"],
"jbo":["jbobau", "Lojban"],
"lb": ["Lëtzebuergesch", "Luxembourgish"], "lb": ["Lëtzebuergesch", "Luxembourgish"],
"lg": ["Luganda", "Ganda"], "lg": ["Luganda", "Ganda"],
"li": ["Limburgs", "Limburgish"], "li": ["Limburgs", "Limburgish"],

View File

@@ -1,193 +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 yra minimalistinis, atvirojo kodo internetinis įdėjimų dėklas, kurį naudojant, serveris nieko nenutuokia apie įdėtus duomenis. Duomenys yra šifruojami/iššifruojami %snaršyklėje%s naudojant 256 bitų AES.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Daugiau informacijos rasite <a href=\"https://privatebin.info/\">projekto puslapyje</a>.",
"Because ignorance is bliss": "Nes nežinojimas yra palaima",
"en": "lt",
"Paste does not exist, has expired or has been deleted.": "Įdėjimo nėra, jis nebegalioja arba buvo ištrintas.",
"%s requires php %s or above to work. Sorry.": "%s savo darbui reikalauja php %s arba naujesnės versijos. Apgailestaujame.",
"%s requires configuration section [%s] to be present in configuration file.": "%s reikalauja, kad konfigūracijos faile būtų [%s] konfigūracijos sekcija.",
"Please wait %d seconds between each post.": [
"Tarp kiekvieno įrašo palaukite %d sekundę.",
"Tarp kiekvieno įrašo palaukite %d sekundes.",
"Tarp kiekvieno įrašo palaukite %d sekundžių.",
"Tarp kiekvieno įrašo palaukite %d sekundę."
],
"Paste is limited to %s of encrypted data.": "Įdėjimas yra apribotas iki %s šifruotų duomenų.",
"Invalid data.": "Neteisingi duomenys.",
"You are unlucky. Try again.": "Jums nesiseka. Bandykite dar kartą.",
"Error saving comment. Sorry.": "Klaida įrašant komentarą. Apgailestaujame.",
"Error saving paste. Sorry.": "Klaida įrašant įdėjimą. Apgailestaujame.",
"Invalid paste ID.": "Neteisingas įdėjimo ID.",
"Paste is not of burn-after-reading type.": "Įdėjimo tipas nėra „Perskaičius sudeginti“.",
"Wrong deletion token. Paste was not deleted.": "Neteisingas ištrynimo prieigos raktas. Įdėjimas nebuvo ištrintas.",
"Paste was properly deleted.": "Įdėjimas buvo tinkamai ištrintas.",
"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.",
"New": "Naujas",
"Send": "Siųsti",
"Clone": "Dubliuoti",
"Raw text": "Neapdorotas tekstas",
"Expires": "Baigs galioti po",
"Burn after reading": "Perskaičius sudeginti",
"Open discussion": "Atvira diskusija",
"Password (recommended)": "Slaptažodis (rekomenduojama)",
"Discussion": "Diskusija",
"Toggle navigation": "Perjungti naršymą",
"%d seconds": [
"%d sekundės",
"%d sekundžių",
"%d sekundžių",
"%d sekundės"
],
"%d minutes": [
"%d minutės",
"%d minučių",
"%d minučių",
"%d minutės"
],
"%d hours": [
"%d valandos",
"%d valandų",
"%d valandų",
"%d valandos"
],
"%d days": [
"%d dienos",
"%d dienų",
"%d dienų",
"%d dienos"
],
"%d weeks": [
"%d savaitės",
"%d savaičių",
"%d savaičių",
"%d savaitės"
],
"%d months": [
"%d mėnesio",
"%d mėnesių",
"%d mėnesių",
"%d mėnesio"
],
"%d years": [
"%d metų",
"%d metų",
"%d metų",
"%d metų"
],
"Never": "Niekada",
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Pastaba: Tai yra bandomoji paslauga. Duomenys bet kuriuo metu gali būti ištrinti. Kačiukai mirs, jei piktnaudžiausite šia paslauga.",
"This document will expire in %d seconds.": [
"Šis dokumentas nustos galioti po %d sekundės.",
"Šis dokumentas nustos galioti po %d sekundžių.",
"Šis dokumentas nustos galioti po %d sekundžių.",
"Šis dokumentas nustos galioti po %d sekundės."
],
"This document will expire in %d minutes.": [
"Šis dokumentas nustos galioti po %d minutės.",
"Šis dokumentas nustos galioti po %d minučių.",
"Šis dokumentas nustos galioti po %d minučių.",
"Šis dokumentas nustos galioti po %d minutės."
],
"This document will expire in %d hours.": [
"Šis dokumentas nustos galioti po %d valandos.",
"Šis dokumentas nustos galioti po %d valandų.",
"Šis dokumentas nustos galioti po %d valandų.",
"Šis dokumentas nustos galioti po %d valandos."
],
"This document will expire in %d days.": [
"Šis dokumentas nustos galioti po %d dienos.",
"Šis dokumentas nustos galioti po %d dienų.",
"Šis dokumentas nustos galioti po %d dienų.",
"Šis dokumentas nustos galioti po %d dienos."
],
"This document will expire in %d months.": [
"Šis dokumentas nustos galioti po %d mėnesio.",
"Šis dokumentas nustos galioti po %d mėnesių.",
"Šis dokumentas nustos galioti po %d mėnesių.",
"Šis dokumentas nustos galioti po %d mėnesio."
],
"Please enter the password for this paste:": "Įveskite šio įdėjimo slaptažodį:",
"Could not decrypt data (Wrong key?)": "Nepavyko iššifruoti duomenų (Neteisingas raktas?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Nepavyko ištrinti įdėjimo, jis nebuvo saugomas „Perskaičius sudeginti“ veiksenoje.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "SKIRTA TIK JŪSŲ AKIMS. Neužverkite šio lango, šis pranešimas negalės būti rodomas dar kartą.",
"Could not decrypt comment; Wrong key?": "Nepavyko iššifruoti komentaro; Neteisingas raktas?",
"Reply": "Atsakyti",
"Anonymous": "Anonimas",
"Avatar generated from IP address": "Avataras sukurtas iš IP adreso",
"Add comment": "Pridėti komentarą",
"Optional nickname…": "Nebūtinas slapyvardis…",
"Post comment": "Skelbti komentarą",
"Sending comment…": "Siunčiamas komentaras…",
"Comment posted.": "Komentaras paskelbtas.",
"Could not refresh display: %s": "Nepavyko įkelti rodinio iš naujo: %s",
"unknown status": "nežinoma būsena",
"server error or not responding": "serverio klaida arba jis neatsako",
"Could not post comment: %s": "Nepavyko paskelbti komentaro: %s",
"Sending paste…": "Siunčiamas įdėjimas…",
"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",
"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į?)",
"B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"Format": "Formatas",
"Plain Text": "Grynasis tekstas",
"Source Code": "Pirminis kodas",
"Markdown": "„Markdown“",
"Download attachment": "Atsisiųsti priedą",
"Cloned: '%s'": "Dubliuota: „%s“",
"The cloned file '%s' was attached to this paste.": "Dubliuotas failas „%s“ buvo pridėtas į šį įdėjimą.",
"Attach a file": "Pridėti failą",
"alternatively drag & drop a file or paste an image from the clipboard": "arba kitaip - tempkite failą arba įdėkite paveikslą iš iškarpinės",
"File too large, to display a preview. Please download the attachment.": "Failas per didelis, kad būtų rodoma peržiūra. Atsisiųskite priedą.",
"Remove attachment": "Šalinti priedą",
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Jūsų naršyklė nepalaiko šifruotų failų įkėlimo. Naudokite naujesnę naršyklę.",
"Invalid attachment.": "Neteisingas priedas.",
"Options": "Parinktys",
"Shorten URL": "Sutrumpinti URL",
"Editor": "Redaktorius",
"Preview": "Peržiūra",
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s reikalauja, kad PATH baigtųsi „%s“. Atnaujinkite PATH savo index.php.",
"Decrypt": "Iššifruoti",
"Enter password": "Įveskite slaptažodį",
"Loading…": "Įkeliama…",
"Decrypting paste…": "Iššifruojamas įdėjimas…",
"Preparing new paste…": "Ruošiamas naujas įdėjimas…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Jeigu šis pranešimas niekada nedingsta, pasižiūrėkite <a href=\"%s\">šį DUK skyrių, kuriame yra informacija apie nesklandumų šalinimą</a>.",
"+++ no paste text +++": "+++ nėra įdėjimo teksto +++",
"Could not get paste data: %s": "Nepavyko gauti įdėjimo duomenų: %s",
"QR code": "QR kodas",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Ši internetinė svetainė naudoja nesaugų HTTP ryšį! Naudokite ją tik bandymams.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Išsamesnei informacijai, <a href=\"%s\">žiūrėkite šį DUK įrašą</a>.",
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Jūsų naršyklei gali prireikti HTTPS ryšio, kad palaikytų „WebCrypto“ API. Pabandykite <a href=\"%s\">persijungti į HTTPS</a>.",
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Jūsų naršyklė nepalaiko „WebAssembly“, kuri naudojama zlib glaudinimui. Jūs galite kurti neglaudintus dokumentus, tačiau negalite skaityti glaudintų dokumentų.",
"waiting on user to provide a password": "laukiama, kol naudotojas pateiks slaptažodį",
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Nepavyko iššifruoti duomenų. Ar įvedėte teisingą slaptažodį? Bandykite iš naujo pasinaudodami mygtuku viršuje.",
"Retry": "Bandyti dar kartą",
"Showing raw text…": "Rodomas neapdorotas tekstas…",
"Notice:": "Pranešimas:",
"This link will expire after %s.": "Ši nuoroda nustos galioti po %s.",
"This link can only be accessed once, do not use back or refresh button in your browser.": "Ši nuoroda gali būti atverta tik vieną kartą, nenaudokite savo naršyklėje mygtuko „Grįžti“ ar „Įkelti iš naujo“.",
"Link:": "Nuoroda:",
"Recipient may become aware of your timezone, convert time to UTC?": "Gavėjas gali sužinoti jūsų laiko juostą, konvertuoti laiką į suderintąjį pasaulinį laiką (UTC)?",
"Use Current Timezone": "Naudoti esamą laiko juostą",
"Convert To UTC": "Konvertuoti į UTC",
"Close": "Užverti",
"Encrypted note on %s": "Šifruoti užrašai ties %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Norėdami matyti užrašus, aplankykite šį tinklalapį. Pasidalinus šiuo URL adresu su kitais žmonėmis, jiems taip pat bus leidžiama prieiga prie šių užrašų.",
"URL shortener may expose your decrypt key in URL.": "URL trumpinimo įrankis gali atskleisti URL adrese jūsų iššifravimo raktą.",
"Save paste": "Įrašyti įdėjimą",
"Your IP is not authorized to create pastes.": "Jūsų IP adresas neturi įgaliojimų kurti įdėjimų.",
"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."
}

View File

@@ -1,144 +1,125 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is een minimalistische, open source online pastebin waarbij de server geen kennis heeft van de geplakte gegevens. Gegevens worden gecodeerd/gedecodeerd %s in de browser %s met behulp van 256 bits AES.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> 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>.": "Meer informatie is te vinden op de <a href=\"https://privatebin.info/\">projectpagina</a>.", "%s is een minimalistische, open source online pastebin waarbij de server geen kennis heeft van de geplakte gegevens. Gegevens worden gecodeerd/gedecodeerd <i> in de browser </i> met behulp van 256 bits AES. Meer informatie is te vinden op de <a href=\"https://privatebin.info/\">projectpagina</a>.",
"Because ignorance is bliss": "Onwetendheid is een zegen", "Because ignorance is bliss":
"Onwetendheid is een zegen",
"en": "nl", "en": "nl",
"Paste does not exist, has expired or has been deleted.": "Geplakte tekst bestaat niet, is verlopen of verwijderd.", "Paste does not exist, has expired or has been deleted.":
"%s requires php %s or above to work. Sorry.": "%s vereist PHP %s of hoger om te kunnen werken. Sorry", "Geplakte tekst bestaat niet, is verlopen of verwijderd.",
"%s requires configuration section [%s] to be present in configuration file.": "%s vereist dat de configuratiesectie [%s] aanwezig is in het configuratiebestand", "%s requires php %s or above to work. Sorry.":
"Please wait %d seconds between each post.": [ "%s vereist PHP %s of hoger om te kunnen werken. Sorry",
"Alstublieft %d second wachten tussen elk bericht.", "%s requires configuration section [%s] to be present in configuration file.":
"Alstublieft %d seconden wachten tussen elk bericht.", "%s vereist dat de configuratiesectie [%s] aanwezig is in het configuratiebestand",
"Alstublieft %d seconden wachten tussen elk bericht.", "Please wait %d seconds between each post.":
"Alstublieft %d seconden wachten tussen elk bericht." "Alstublieft %d seconden wachten tussen elk bericht",
], "Paste is limited to %s of encrypted data.":
"Paste is limited to %s of encrypted data.": "Geplakte tekst is beperkt tot %s aan versleutelde gegevens", "Geplakte tekst is beperkt tot %s aan versleutelde gegevens",
"Invalid data.": "Ongeldige gegevens", "Invalid data.":
"You are unlucky. Try again.": "Helaas. Probeer het nog eens", "Ongeldige gegevens",
"Error saving comment. Sorry.": "Fout bij het opslaan van het commentaar. Sorry", "You are unlucky. Try again.":
"Error saving paste. Sorry.": "Fout bij het opslaan van de geplakte tekst. Sorry.", "Helaas. Probeer het nog eens",
"Invalid paste ID.": "Ongeldige ID.", "Error saving comment. Sorry.":
"Paste is not of burn-after-reading type.": "Geplakte tekst is geen 'vernietig na lezen' type", "Fout bij het opslaan van het commentaar. Sorry",
"Wrong deletion token. Paste was not deleted.": "Foutieve verwijdercode. Geplakte tekst is niet verwijderd.", "Error saving paste. Sorry.":
"Paste was properly deleted.": "Geplakte tekst is correct verwijderd.", "Fout bij het opslaan van de geplakte tekst. Sorry.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript vereist om %s te laten werken. Sorry voor het ongemak.", "Invalid paste ID.":
"%s requires a modern browser to work.": "%s vereist een moderne browser om te kunnen werken ", "Ongeldige ID.",
"New": "Nieuw", "Paste is not of burn-after-reading type.":
"Send": "Verzenden", "Geplakte tekst is geen 'vernietig na lezen' type",
"Clone": "Clonen", "Wrong deletion token. Paste was not deleted.":
"Raw text": "Onbewerkte tekst", "Foutieve verwijdercode. Geplakte tekst is niet verwijderd.",
"Expires": "Verloopt", "Paste was properly deleted.":
"Burn after reading": "Vernietig na lezen", "Geplakte tekst is correct verwijderd.",
"Open discussion": "Open discussie", "JavaScript is required for %s to work. Sorry for the inconvenience.":
"Password (recommended)": "Wachtwoord (aanbevolen)", "JavaScript vereist om %s te laten werken. Sorry voor het ongemak.",
"Discussion": "Discussie", "%s requires a modern browser to work.":
"Toggle navigation": "Navigatie openen/sluiten", "%s vereist een moderne browser om te kunnen werken ",
"%d seconds": [ "New":
"%d seconde", "Nieuw",
"%d seconden", "Send":
"%d seconds (2nd plural)", "Verzenden",
"%d seconds (3rd plural)" "Clone":
], "Clonen",
"%d minutes": [ "Raw text":
"%d minuut", "Onbewerkte tekst",
"%d minuten", "Expires":
"%d minutes (2nd plural)", "Verloopt",
"%d minutes (3rd plural)" "Burn after reading":
], "Vernietig na lezen",
"%d hours": [ "Open discussion":
"%d uur", "Open discussie",
"%d uren", "Password (recommended)":
"%d hours (2nd plural)", "Wachtwoord (aanbevolen)",
"%d hours (3rd plural)" "Discussion":
], "Discussie",
"%d days": [ "Toggle navigation":
"%d dag", "Navigatie openen/sluiten",
"%d dagen", "%d seconds": ["%d second", "%d seconden"],
"%d days (2nd plural)", "%d minutes": ["%d minuut", "%d minuten"],
"%d days (3rd plural)" "%d hours": ["%d uur"],
], "%d days": ["%d dag", "%d dagen"],
"%d weeks": [ "%d weeks": ["%d week", "%d weken"],
"%d week", "%d months": ["%d maand", "%d maanden"],
"%d weken", "%d years": ["%d jaar"],
"%d weeks (2nd plural)", "Never":
"%d weeks (3rd plural)" "Nooit",
], "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
"%d months": [ "Opmerking: Dit is een testservice: Gegevens kunnen op elk gegeven moment verwijderd worden.",
"%d maand", "This document will expire in %d seconds.":
"%d maanden", ["Dit document verloopt over %d second.", "Dit document verloopt over %d seconden."],
"%d months (2nd plural)", "This document will expire in %d minutes.":
"%d months (3rd plural)" ["Dit document verloopt over %d minuut.", "Dit document verloopt over %d minuten"],
], "This document will expire in %d hours.":
"%d years": [ ["Dit document verloopt over %d uur."],
"%d jaar", "This document will expire in %d days.":
"%d jaren", ["Dit document verloopt over %d dag.", "Dit document verloopt over %d dagen."],
"%d years (2nd plural)", "This document will expire in %d months.":
"%d years (3rd plural)" ["Dit document verloopt over %d maand.", "Dit document verloopt over %d maanden."],
], "Please enter the password for this paste:":
"Never": "Nooit", "Voer het wachtwoord in voor deze geplakte tekst:",
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Opmerking: Dit is een testservice: Gegevens kunnen op elk gegeven moment verwijderd worden.", "Could not decrypt data (Wrong key?)":
"This document will expire in %d seconds.": [ "Kon de gegevens niet decoderen (verkeerde sleutel?)",
"Dit document verloopt over %d seconde.", "Could not delete the paste, it was not stored in burn after reading mode.":
"Dit document verloopt over %d seconden.", "Verwijderen van de geplakte tekst niet mogelijk, deze werd niet opgeslagen in 'vernietig na lezen' modus.",
"Dit document verloopt over %d seconden.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
"Dit document verloopt over %d seconden." "FOR YOUR EYES ONLY. Sluit dit venster niet, dit bericht kan niet opnieuw worden weergegeven.",
], "Could not decrypt comment; Wrong key?":
"This document will expire in %d minutes.": [ "Kon het commentaar niet decoderen; Verkeerde sleutel?",
"Dit document verloopt over %d minuut.", "Reply":
"Dit document verloopt over %d minuten.", "Beantwoorden",
"Dit document verloopt over %d minuten.", "Anonymous":
"Dit document verloopt over %d minuten." "Anoniem",
], "Avatar generated from IP address":
"This document will expire in %d hours.": [ "Anonieme avatar (van het IP adres)",
"Dit document verloopt over %d uur.", "Add comment":
"Dit document verloopt over %d uren.", "Commentaar toevoegen",
"Dit document verloopt over %d uren.", "Optional nickname…":
"Dit document verloopt over %d uren." "Optionele bijnaam…",
], "Post comment":
"This document will expire in %d days.": [ "Plaats een commentaar",
"Dit document verloopt over %d dag.", "Sending comment…":
"Dit document verloopt over %d dagen.", "Commentaar verzenden",
"Dit document verloopt over %d dagen.", "Comment posted.":
"Dit document verloopt over %d dagen." "Commentaar geplaatst.",
], "Could not refresh display: %s":
"This document will expire in %d months.": [ "Kon de weergave niet vernieuwen: %s",
"Dit document verloopt over %d maand.", "unknown status":
"Dit document verloopt over %d maanden.", "Onbekende status",
"Dit document verloopt over %d maanden.", "server error or not responding":
"Dit document verloopt over %d maanden." "Serverfout of server reageert niet",
], "Could not post comment: %s":
"Please enter the password for this paste:": "Voer het wachtwoord in voor deze geplakte tekst:", "Kon het commentaar niet plaatsen: %s",
"Could not decrypt data (Wrong key?)": "Kon de gegevens niet decoderen (verkeerde sleutel?)", "Sending paste…":
"Could not delete the paste, it was not stored in burn after reading mode.": "Verwijderen van de geplakte tekst niet mogelijk, deze werd niet opgeslagen in 'vernietig na lezen' modus.", "Geplakte tekst verzenden…",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "FOR YOUR EYES ONLY. Sluit dit venster niet, dit bericht kan niet opnieuw worden weergegeven.", "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
"Could not decrypt comment; Wrong key?": "Kon het commentaar niet decoderen; Verkeerde sleutel?", "Uw geplakte tekst is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Druk [Ctrl]+[c] om te kopiëren)</span>",
"Reply": "Beantwoorden", "Delete data":
"Anonymous": "Anoniem", "Gegevens wissen",
"Avatar generated from IP address": "Anonieme avatar (van het IP adres)", "Could not create paste: %s":
"Add comment": "Commentaar toevoegen", "Kon de geplakte tekst niet aanmaken: %s",
"Optional nickname…": "Optionele bijnaam…", "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
"Post comment": "Plaats een commentaar", "Kon de geplakte tekst niet decoderen: Decoderingssleutel ontbreekt in URL (Hebt u een redirector of een URL-verkorter gebruikt die een deel van de URL verwijdert?)",
"Sending comment…": "Commentaar verzenden…",
"Comment posted.": "Commentaar geplaatst.",
"Could not refresh display: %s": "Kon de weergave niet vernieuwen: %s",
"unknown status": "Onbekende status",
"server error or not responding": "Serverfout of server reageert niet",
"Could not post comment: %s": "Kon het commentaar niet plaatsen: %s",
"Sending paste…": "Geplakte tekst verzenden…",
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Uw geplakte tekst is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Druk [Ctrl]+[c] om te kopiëren)</span>",
"Delete data": "Gegevens wissen",
"Could not create paste: %s": "Kon de geplakte tekst 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 geplakte tekst niet decoderen: Decoderingssleutel ontbreekt in URL (Hebt u een redirector of een URL-verkorter gebruikt die een deel van de URL verwijdert?)",
"B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"Format": "Formaat", "Format": "Formaat",
"Plain Text": "Platte tekst", "Plain Text": "Platte tekst",
"Source Code": "Broncode", "Source Code": "Broncode",
@@ -148,46 +129,60 @@
"The cloned file '%s' was attached to this paste.": "Het gekloonde bestand '%s' is bijgevoegd aan de geplakte tekst.", "The cloned file '%s' was attached to this paste.": "Het gekloonde bestand '%s' is bijgevoegd aan de geplakte tekst.",
"Attach a file": "Een bestand toevoegen", "Attach a file": "Een bestand toevoegen",
"alternatively drag & drop a file or paste an image from the clipboard": "U kunt ook een bestand slepen en neerzetten of een afbeelding plakken van het klembord", "alternatively drag & drop a file or paste an image from the clipboard": "U kunt ook een bestand slepen en neerzetten of een afbeelding plakken van het klembord",
"File too large, to display a preview. Please download the attachment.": "Het bestand is te groot om voorbeeld weer te geven. Aub de bijlage downloaden", "File too large, to display a preview. Please download the attachment.": "Het bestand is te groot om voorbeeld weer te geven. Aub de bijlage downloaden",
"Remove attachment": "Bijlage verwijderen", "Remove attachment": "Bijlage verwijderen",
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Uw browser biedt geen ondersteuning voor het uploaden van gecodeerde bestanden. Gebruik alstublieft een nieuwere browser", "Your browser does not support uploading encrypted files. Please use a newer browser.":
"Uw browser biedt geen ondersteuning voor het uploaden van gecodeerde bestanden. Gebruik alstublieft een nieuwere browser",
"Invalid attachment.": "Ongeldige bijlage", "Invalid attachment.": "Ongeldige bijlage",
"Options": "Opties", "Options": "Opties",
"Shorten URL": "URL verkorten", "Shorten URL": "URL verkorten",
"Editor": "Editor", "Editor": "Editor",
"Preview": "Preview", "Preview": "Preview",
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s vereist dat het PATH eindigt in een '%s'. Aub het PATH updaten in uw index.php.", "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.":
"Decrypt": "Decoderen", "%s vereist dat het PATH eindigt in een '%s'. Aub het PATH updaten in uw index.php.",
"Enter password": "Voer het wachtwoord in", "Decrypt":
"Decoderen",
"Enter password":
"Voer het wachtwoord in",
"Loading…": "Laden…", "Loading…": "Laden…",
"Decrypting paste…": "Geplakte tekst decoderen…", "Decrypting paste…": "Geplakte tekst decoderen…",
"Preparing new paste…": "Nieuwe geplakte tekst voorbereiden…", "Preparing new paste…": "Nieuwe geplakte tekst voorbereiden…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "In het geval dat dit bericht nooit verdwijnt, kijkt u dan eens naar <a href=\"%s\"> veelgestelde vragen voor informatie over het oplossen van problemen </a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.":
"In het geval dat dit bericht nooit verdwijnt, kijkt u dan eens naar <a href=\"%s\"> veelgestelde vragen voor informatie over het oplossen van problemen </a>.",
"+++ no paste text +++": "+++ geen geplakte tekst +++", "+++ no paste text +++": "+++ geen geplakte tekst +++",
"Could not get paste data: %s": "Kon geen klembordgegevens verkrijgen: %s", "Could not get paste data: %s":
"QR code": "QR-code", "Could not get paste data: %s",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Deze website gebruikt een onveilige HTTP-verbinding! Gelieve deze enkel te gebruiken om te testen.", "QR code": "QR code",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Voor meer informatie <a href=\"%s\">zie dit FAQ-artikel</a>.", "This website is using an insecure HTTP connection! Please use it only for testing.":
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Uw browser kan een HTTPS-verbinding nodig hebben om de WebCrypto API te ondersteunen. Probeer <a href=\"%s\">het met HTTPS</a>.", "This website is using an insecure HTTP connection! Please use it only for testing.",
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Uw browser ondersteunt WebAssembly niet, wat wordt gebruikt voor zlib compressie. U kunt niet-gecomprimeerde documenten maken, maar geen gecomprimeerde documenten lezen.", "For more information <a href=\"%s\">see this FAQ entry</a>.":
"waiting on user to provide a password": "wachtend op gebruiker om een wachtwoord te geven", "For more information <a href=\"%s\">see this FAQ entry</a>.",
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Kon de gegevens niet decoderen. Heeft u een verkeerd wachtwoord ingevoerd? Probeer het opnieuw met de knop bovenaan.", "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.":
"Retry": "Opnieuw proberen", "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.",
"Showing raw text…": "Platte tekst tonen…", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.":
"Notice:": "Let op:", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.",
"This link will expire after %s.": "Deze link vervalt na %s.", "waiting on user to provide a password":
"This link can only be accessed once, do not use back or refresh button in your browser.": "Deze link kan slechts eenmaal worden geopend, gebruik niet de terug- of verversknop in uw browser.", "waiting on user to provide a password",
"Link:": "Link:", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.":
"Recipient may become aware of your timezone, convert time to UTC?": "Ontvanger kan zich bewust worden van uw tijdzone, tijd omzetten naar UTC?", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.",
"Use Current Timezone": "Gebruik huidige tijdzone", "Retry":
"Convert To UTC": "Omzetten naar UTC", "Retry",
"Close": "Sluiten", "Showing raw text…":
"Encrypted note on %s": "Versleutelde notitie op %s", "Showing raw text…",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Bezoek deze link om de notitie te bekijken. Als je de URL aan iemand geeft, kan die de notitie ook bekijken.", "Notice:":
"URL shortener may expose your decrypt key in URL.": "URL-verkorter kan uw ontcijferingssleutel in URL blootleggen.", "Notice:",
"Save paste": "Notitie opslaan", "This link will expire after %s.":
"Your IP is not authorized to create pastes.": "Uw IP-adres is niet gemachtigd om geplakte tekst te maken.", "This link will expire after %s.",
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", "This link can only be accessed once, do not use back or refresh button in your browser.":
"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\".", "This link can only be accessed once, do not use back or refresh button in your browser.",
"Error parsing YOURLS response.": "Error parsing YOURLS response." "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"
} }

View File

@@ -1,193 +1,188 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s er en minimalistisk, åpen kildekode, elektronisk tilgjengelig pastebin hvor serveren ikke har kunnskap om dataene som limes inn. Dataene krypteres/dekrypteres %si nettleseren%s ved hjelp av 256 bits AES.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> 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>.": "Mer informasjon om prosjektet på <a href=\"https://privatebin.info/\">prosjektsiden</a>.", "%s er en minimalistisk, åpen kildekode, elektronisk tilgjengelig pastebin hvor serveren ikke har kunnskap om dataene som limes inn. Dataene krypteres/dekrypteres <i>i nettleseren</i> ved hjelp av 256 bits AES. Mer informasjon om prosjektet på <a href=\"https://privatebin.info/\">prosjektsiden</a>.",
"Because ignorance is bliss": "Fordi uvitenhet er lykke", "Because ignorance is bliss":
"Fordi uvitenhet er lykke",
"en": "no", "en": "no",
"Paste does not exist, has expired or has been deleted.": "Innlegget eksisterer ikke, er utløpt eller har blitt slettet.", "Paste does not exist, has expired or has been deleted.":
"%s requires php %s or above to work. Sorry.": "Beklager, %s krever php %s eller nyere for å kjøre.", "Innlegget eksisterer ikke, er utløpt eller har blitt slettet.",
"%s requires configuration section [%s] to be present in configuration file.": "%s krever konfigurasjonsdel [%s] å være til stede i konfigurasjonsfilen .", "%s requires php %s or above to work. Sorry.":
"Please wait %d seconds between each post.": [ "Beklager, %s krever php %s eller nyere for å kjøre.",
"Vennligst vent %d sekund mellom hvert innlegg.", "%s requires configuration section [%s] to be present in configuration file.":
"%s krever konfigurasjonsdel [%s] å være til stede i konfigurasjonsfilen .",
"Please wait %d seconds between each post.":
"Vennligst vent %d sekunder mellom hvert innlegg.", "Vennligst vent %d sekunder mellom hvert innlegg.",
"Vennligst vent %d sekunder mellom hvert innlegg.", "Paste is limited to %s of encrypted data.":
"Vennligst vent %d sekunder mellom hvert innlegg." "Innlegg er begrenset til %s av kryptert data.",
], "Invalid data.":
"Paste is limited to %s of encrypted data.": "Innlegg er begrenset til %s av kryptert data.", "Ugyldige data.",
"Invalid data.": "Ugyldige data.", "You are unlucky. Try again.":
"You are unlucky. Try again.": "Du er uheldig. Prøv igjen.", "Du er uheldig. Prøv igjen.",
"Error saving comment. Sorry.": "Beklager, det oppstod en feil ved lagring kommentar.", "Error saving comment. Sorry.":
"Error saving paste. Sorry.": "Beklager, det oppstod en feil ved lagring innlegg.", "Beklager, det oppstod en feil ved lagring kommentar.",
"Invalid paste ID.": "Feil innlegg ID.", "Error saving paste. Sorry.":
"Paste is not of burn-after-reading type.": "Innlegg er ikke av typen slett etter lesing.", "Beklager, det oppstod en feil ved lagring innlegg.",
"Wrong deletion token. Paste was not deleted.": "Feil slettingsnøkkel. Innlegg ble ikke fjernet.", "Invalid paste ID.":
"Paste was properly deleted.": "Innlegget er slettet.", "Feil innlegg ID.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Javascript kreves for at %s skal fungere. Beklager.", "Paste is not of burn-after-reading type.":
"%s requires a modern browser to work.": "%s krever en moderne nettleser for å fungere.", "Innlegg er ikke av typen slett etter lesing.",
"New": "Ny", "Wrong deletion token. Paste was not deleted.":
"Send": "Send", "Feil slettingsnøkkel. Innlegg ble ikke fjernet.",
"Clone": "Kopier", "Paste was properly deleted.":
"Raw text": "Ren tekst", "Innlegget er slettet.",
"Expires": "Utgår", "JavaScript is required for %s to work. Sorry for the inconvenience.":
"Burn after reading": "Slett etter lesing", "Javascript kreves for at %s skal fungere. Beklager.",
"Open discussion": "Åpen diskusjon", "%s requires a modern browser to work.":
"Password (recommended)": "Passord (anbefalt)", "%s krever en moderne nettleser for å fungere.",
"Discussion": "Diskusjon", "New":
"Toggle navigation": "Veksle navigasjon", "Ny",
"%d seconds": [ "Send":
"%d sekund", "Send",
"%d sekunder", "Clone":
"%d sekunder", "Kopier",
"%d sekunder" "Raw text":
], "Ren tekst",
"%d minutes": [ "Expires":
"%d minutt", "Utgår",
"%d minutter", "Burn after reading":
"%d minutter", "Slett etter lesing",
"%d minutter" "Open discussion":
], "Åpen diskusjon",
"%d hours": [ "Password (recommended)":
"%d time", "Passord (anbefalt)",
"%d timer", "Discussion":
"%d timer", "Diskusjon",
"%d timer" "Toggle navigation":
], "Veksle navigasjon",
"%d days": [ "%d seconds": ["%d sekund", "%d sekunder"],
"%d dag", "%d minutes": ["%d minutt", "%d minutter"],
"%d dager", "%d hours": ["%d time", "%d timer"],
"%d dager", "%d days": ["%d dag", "%d dager"],
"%d dager" "%d weeks": ["%d uke", "%d uker"],
], "%d months": ["%d måned", "%d måneder"],
"%d weeks": [ "%d years": ["%d år", "%d år"],
"%d uke", "Never":
"%d uker", "Aldri",
"%d uker", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
"%d uker" "Merk: Dette er en test tjeneste: Data kan slettes når som helst. Kattunger vil dø hvis du misbruker denne tjenesten.",
], "This document will expire in %d seconds.":
"%d months": [ ["Dette dokumentet vil utløpe om %d sekund.", "Dette dokumentet vil utløpe om %d sekunder."],
"%d måned", "This document will expire in %d minutes.":
"%d måneder", ["Dette dokumentet vil utløpe om %d minutt.", "Dette dokumentet vil utløpe om %d minutter."],
"%d måneder", "This document will expire in %d hours.":
"%d måneder" ["Dette dokumentet vil utløpe om %d time.", "Dette dokumentet vil utløpe om %d timer."],
], "This document will expire in %d days.":
"%d years": [ ["Dette dokumentet vil utløpe om %d dag.", "Dette dokumentet vil utløpe om %d dager."],
"%d år", "This document will expire in %d months.":
"%d år", ["Dette dokumentet vil utløpe om %d måned.", "Dette dokumentet vil utløpe om %d måneder."],
"%d år", "Please enter the password for this paste:":
"%d år" "Vennligst skriv inn passordet for dette innlegget:",
], "Could not decrypt data (Wrong key?)":
"Never": "Aldri", "Kunne ikke dekryptere data (Feil nøkkel?)",
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Merk: Dette er en test tjeneste: Data kan slettes når som helst. Kattunger vil dø hvis du misbruker denne tjenesten.", "Could not delete the paste, it was not stored in burn after reading mode.":
"This document will expire in %d seconds.": [ "Kan ikke slette innlegget, det ble ikke lagret som 'slett etter les' type.",
"Dette dokumentet vil utløpe om %d sekund.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
"Dette dokumentet vil utløpe om %d sekunder.", "KUN FOR DINE ØYNE. Ikke lukk dette vinduet, denne meldingen kan ikke bli vist igjen.",
"Dette dokumentet vil utløpe om %d sekunder.", "Could not decrypt comment; Wrong key?":
"Dette dokumentet vil utløpe om %d sekunder." "Kan ikke dekryptere kommentar; Feil nøkkel?",
], "Reply":
"This document will expire in %d minutes.": [ "Svar",
"Dette dokumentet vil utløpe om %d minutt.", "Anonymous":
"Dette dokumentet vil utløpe om %d minutter.", "Anonym",
"Dette dokumentet vil utløpe om %d minutter.", "Avatar generated from IP address":
"Dette dokumentet vil utløpe om %d minutter." "Anonym avatar generert med data fra IP adressen)",
], "Add comment":
"This document will expire in %d hours.": [ "Legg til kommentar",
"Dette dokumentet vil utløpe om %d time.", "Optional nickname":
"Dette dokumentet vil utløpe om %d timer.", "Valgfritt kallenavn…",
"Dette dokumentet vil utløpe om %d timer.", "Post comment":
"Dette dokumentet vil utløpe om %d timer." "Send kommentar",
], "Sending comment…":
"This document will expire in %d days.": [ "Sender Kommentar…",
"Dette dokumentet vil utløpe om %d dag.", "Comment posted.":
"Dette dokumentet vil utløpe om %d dager.", "Kommentar sendt.",
"Dette dokumentet vil utløpe om %d dager.", "Could not refresh display: %s":
"Dette dokumentet vil utløpe om %d dager." "Kunne ikke oppdatere bildet: %s",
], "unknown status":
"This document will expire in %d months.": [ "ukjent status",
"Dette dokumentet vil utløpe om %d måned.", "server error or not responding":
"Dette dokumentet vil utløpe om %d måneder.", "tjener feilet eller svarer ikke",
"Dette dokumentet vil utløpe om %d måneder.", "Could not post comment: %s":
"Dette dokumentet vil utløpe om %d måneder." "Kunne ikke sende kommentar: %s",
], "Sending paste…":
"Please enter the password for this paste:": "Vennligst skriv inn passordet for dette innlegget:", "Sender innlegg",
"Could not decrypt data (Wrong key?)": "Kunne ikke dekryptere data (Feil nøkkel?)", "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
"Could not delete the paste, it was not stored in burn after reading mode.": "Kan ikke slette innlegget, det ble ikke lagret som 'slett etter les' type.", "Ditt innlegg er <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Trykk [Ctrl]+[c] for å kopiere)</span>",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "KUN FOR DINE ØYNE. Ikke lukk dette vinduet, denne meldingen kan ikke bli vist igjen.", "Delete data":
"Could not decrypt comment; Wrong key?": "Kan ikke dekryptere kommentar; Feil nøkkel?", "Slett data",
"Reply": "Svar", "Could not create paste: %s":
"Anonymous": "Anonym", "Kunne ikke opprette innlegg: %s",
"Avatar generated from IP address": "Anonym avatar generert med data fra IP adressen)", "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
"Add comment": "Legg til kommentar", "Kan ikke dekryptere innlegg: Dekrypteringsnøkkelen mangler i adressen (Har du bruket en redirector eller en URL forkorter som fjerner en del av addressen?)",
"Optional nickname…": "Valgfritt kallenavn…",
"Post comment": "Send kommentar",
"Sending comment…": "Sender Kommentar…",
"Comment posted.": "Kommentar sendt.",
"Could not refresh display: %s": "Kunne ikke oppdatere bildet: %s",
"unknown status": "ukjent status",
"server error or not responding": "tjener feilet eller svarer ikke",
"Could not post comment: %s": "Kunne ikke sende kommentar: %s",
"Sending paste…": "Sender innlegg…",
"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",
"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?)",
"B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"Format": "Format", "Format": "Format",
"Plain Text": "Ren Tekst", "Plain Text": "Ren Tekst",
"Source Code": "Kildekode", "Source Code": "Kildekode",
"Markdown": "Oppmerket", "Markdown": "Oppmerket",
"Download attachment": "Last ned vedlegg", "Download attachment": "Last ned vedlegg",
"Cloned: '%s'": "Kopiert: '%s'", "Cloned: '%s'": "Kopiert: '%s'",
"The cloned file '%s' was attached to this paste.": "Den klonede filen '%s' var koblet til denne innlimingen.", "The cloned file '%s' was attached to this paste.": "The cloned file '%s' was attached to this paste.",
"Attach a file": "Legg til fil", "Attach a file": "Legg til fil",
"alternatively drag & drop a file or paste an image from the clipboard": "alternativt dra og slipp en fil, eller lim inn et bilde fra utklippstavlen", "alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard",
"File too large, to display a preview. Please download the attachment.": "Filen er for stor, for å vise en forhåndsvisning. Last ned vedlegget.", "File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.",
"Remove attachment": "Slett vedlegg", "Remove attachment": "Slett vedlegg",
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Nettleseren din støtter ikke å laste opp krypterte filer. Vennligst bruk en nyere nettleser.", "Your browser does not support uploading encrypted files. Please use a newer browser.":
"Nettleseren din støtter ikke å laste opp krypterte filer. Vennligst bruk en nyere nettleser.",
"Invalid attachment.": "Ugyldig vedlegg.", "Invalid attachment.": "Ugyldig vedlegg.",
"Options": "Alternativer", "Options": "Alternativer",
"Shorten URL": "Adresse forkorter", "Shorten URL": "Adresse forkorter",
"Editor": "Rediger", "Editor": "Rediger",
"Preview": "Forhåndsvis", "Preview": "Forhåndsvis",
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s krever at PATH ender på \"%s\". Vennligst oppdater PATH i index.php.", "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.":
"Decrypt": "Dekrypter", "%s krever at PATH ender på \"%s\". Vennligst oppdater PATH i index.php.",
"Enter password": "Skriv inn passord", "Decrypt":
"Dekrypter",
"Enter password":
"Skriv inn passord",
"Loading…": "Laster…", "Loading…": "Laster…",
"Decrypting paste…": "Dekrypterer innlegg…", "Decrypting paste…": "Dekrypterer innlegg…",
"Preparing new paste…": "Klargjør nytt innlegg…", "Preparing new paste…": "Klargjør nytt innlegg…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Hvis denne meldingen ikke forsvinner kan du ta en titt på siden med <a href=\"%s\">ofte stilte spørsmål</a> for informasjon om feilsøking.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.":
"Hvis denne meldingen ikke forsvinner kan du ta en titt på siden med <a href=\"%s\">ofte stilte spørsmål</a> for informasjon om feilsøking.",
"+++ no paste text +++": "+++ ingen innleggstekst +++", "+++ no paste text +++": "+++ ingen innleggstekst +++",
"Could not get paste data: %s": "Kunne ikke hente utklippsdata: %s", "Could not get paste data: %s":
"Kunne ikke hente utklippsdata: %s",
"QR code": "QR kode", "QR code": "QR kode",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Denne websiden bruker usikker HTTP tilkobling! Bruk den kun for testing.", "This website is using an insecure HTTP connection! Please use it only for testing.":
"For more information <a href=\"%s\">see this FAQ entry</a>.": "For mer informasjon <a href=\"%s\">se ofte stilte spørsmål</a>.", "Denne websiden bruker usikker HTTP tilkobling! Bruk den kun for testing.",
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Din nettleser har behov for HTTPS tilkobling for å støtte WebCrypto biblioteket. Prøv å <a href=\"%s\">bytt til HTTPS</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.":
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Nettleseren din støtter ikke WebAssembly som brukes for zlib komprimering. Du kan lage ukomprimerte dokumenter, men du kan ikke lese komprimerte.", "For mer informasjon <a href=\"%s\">se ofte stilte spørsmål</a>.",
"waiting on user to provide a password": "venter på at bruker skal skrive passord", "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.":
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Kunne ikke dekryptere data. Har du tastet riktig pssord? Prøv igjen med knappen på toppen.", "Din nettleser har behov for HTTPS tilkobling for å støtte WebCrypto biblioteket. Prøv å <a href=\"%s\">bytt til HTTPS</a>.",
"Retry": "Prøv igjen", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.":
"Showing raw text…": "Viser rå-tekst…", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.",
"Notice:": "Notat:", "waiting on user to provide a password":
"This link will expire after %s.": "Denne lenken vil bli inaktiv etter %s.", "waiting on user to provide a password",
"This link can only be accessed once, do not use back or refresh button in your browser.": "Denne addressen kan kun bli besøkt en gang, ikke trykk på tilbake eller oppdater knappene i nettleseren.", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.":
"Link:": "Lenke:", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.",
"Recipient may become aware of your timezone, convert time to UTC?": "Mottaker kan bli kjent med din tidssone, ønsker du å konvertere til UTC?", "Retry":
"Use Current Timezone": "Bruk gjeldende tidssone", "Retry",
"Convert To UTC": "Konverter til UTC", "Showing raw text…":
"Close": "Steng", "Showing raw text…",
"Encrypted note on %s": "Kryptert notat på %s", "Notice:":
"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.", "Notice:",
"URL shortener may expose your decrypt key in URL.": "URL forkorter kan avsløre dekrypteringsnøkkelen.", "This link will expire after %s.":
"Save paste": "Lagre utklipp", "This link will expire after %s.",
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.", "This link can only be accessed once, do not use back or refresh button in your browser.":
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", "This link can only be accessed once, do not use back or refresh button in your browser.",
"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\".", "Link:":
"Error parsing YOURLS response.": "Error parsing YOURLS response." "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"
} }

View File

@@ -1,135 +1,125 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s es un 'pastebin' (o gestionari dextrachs de tèxte e còdi font) minimalista e open source, dins lo qual lo servidor a pas cap de coneissença de las donadas mandadas. Las donadas son chifradas/deschifradas %sdins lo navigator%s per un chiframent AES 256 bits.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> 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>.": "Mai informacions sus <a href=\"https://privatebin.info/\">la pagina del projècte</a>.", "%s es un 'pastebin' (o gestionari dextrachs de tèxte e còdi font) minimalista e open source, dins lo qual lo servidor a pas cap de coneissença de las donadas mandadas. Las donadas son chifradas/deschifradas <i>dins lo navigator</i> per un chiframent AES 256 bits. Mai informacions sus <a href=\"https://privatebin.info/\">la pagina del projècte</a>.",
"Because ignorance is bliss": "Perque lo bonaür es lignorància", "Because ignorance is bliss":
"Perque lo bonaür es lignorància",
"en": "oc", "en": "oc",
"Paste does not exist, has expired or has been deleted.": "Lo tèxte existís pas, a expirat, o es estat suprimit.", "Paste does not exist, has expired or has been deleted.":
"%s requires php %s or above to work. Sorry.": "O planhèm, %s necessita php %s o superior per foncionar.", "Lo tèxte existís pas, a expirat, o es estat suprimit.",
"%s requires configuration section [%s] to be present in configuration file.": "%s fa besonh de la seccion de configuracion [%s] dins lo fichièr de configuracion per foncionar.", "%s requires php %s or above to work. Sorry.":
"Please wait %d seconds between each post.": [ "O planhèm, %s necessita php %s o superior per foncionar.",
"Mercés d'esperar %d segonda entre cada publicacion.", "%s requires configuration section [%s] to be present in configuration file.":
"%s fa besonh de la seccion de configuracion [%s] dins lo fichièr de configuracion per foncionar.",
"Please wait %d seconds between each post.":
"Mercés d'esperar %d segondas entre cada publicacion.", "Mercés d'esperar %d segondas entre cada publicacion.",
"Mercés d'esperar %d segondas entre cada publicacion.", "Paste is limited to %s of encrypted data.":
"Mercés d'esperar %d segondas entre cada publicacion." "Lo tèxte es limitat a %s de donadas chifradas.",
], "Invalid data.":
"Paste is limited to %s of encrypted data.": "Lo tèxte es limitat a %s de donadas chifradas.", "Donadas invalidas.",
"Invalid data.": "Donadas invalidas.", "You are unlucky. Try again.":
"You are unlucky. Try again.": "Pas cap de fortuna. Tornatz ensajar.", "Pas cap de fortuna. Tornatz ensajar.",
"Error saving comment. Sorry.": "Error al moment de salvagardar lo comentari. O planhèm.", "Error saving comment. Sorry.":
"Error saving paste. Sorry.": "Error al moment de salvagardar lo tèxte. O planhèm.", "Error al moment de salvagardar lo comentari. O planhèm.",
"Invalid paste ID.": "ID del tèxte invalid.", "Error saving paste. Sorry.":
"Paste is not of burn-after-reading type.": "Lo tèxte es pas del tipe «Escafar aprèp lectura».", "Error al moment de salvagardar lo tèxte. O planhèm.",
"Wrong deletion token. Paste was not deleted.": "Geton de supression incorrècte. Lo tèxte es pas estat suprimit.", "Invalid paste ID.":
"Paste was properly deleted.": "Lo tèxte es estat corrèctament suprimit.", "ID del tèxte invalid.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript es requesit per far foncionar %s. O planhèm per linconvenient.", "Paste is not of burn-after-reading type.":
"%s requires a modern browser to work.": "%s requerís un navigator modèrn per foncionar.", "Lo tèxte es pas del tip \"Escafar aprèp lectura\".",
"New": "Nòu", "Wrong deletion token. Paste was not deleted.":
"Send": "Mandar", "Geton de supression incorrècte. Lo tèxte es pas estat suprimit.",
"Clone": "Clonar", "Paste was properly deleted.":
"Raw text": "Tèxte brut", "Lo tèxte es estat corrèctament suprimit.",
"Expires": "Expira", "JavaScript is required for %s to work. Sorry for the inconvenience.":
"Burn after reading": "Escafar aprèp lectura", "JavaScript es requesit per far foncionar %s. O planhèm per linconvenient.",
"Open discussion": "Autorizar la discussion", "%s requires a modern browser to work.":
"Password (recommended)": "Senhal (recomandat)", "%s necessita un navigator modèrn per foncionar.",
"Discussion": "Discussion", "New":
"Toggle navigation": "Virar la navigacion", "Nòu",
"%d seconds": [ "Send":
"%d segonda", "Mandar",
"%d segondas", "Clone":
"%d segondas", "Clonar",
"%d segondas" "Raw text":
], "Tèxte brut",
"%d minutes": [ "Expires":
"%d minuta", "Expira",
"%d minutas", "Burn after reading":
"%d minutas", "Escafar aprèp lectura",
"%d minutas" "Open discussion":
], "Autorizar la discussion",
"%d hours": [ "Password (recommended)":
"%d ora", "Senhal (recomandat)",
"%d oras", "Discussion":
"%d oras", "Discussion",
"%d oras" "Toggle navigation":
], "Virar la navigacion",
"%d days": [ "%d seconds": ["%d segonda", "%d segondas"],
"%d jorn", "%d minutes": ["%d minuta", "%d minutas"],
"%d jorns", "%d hours": ["%d ora", "%d oras"],
"%d jorns", "%d days": ["%d jorn", "%d jorns"],
"%d jorns" "%d weeks": ["%d setmana", "%d setmanas"],
], "%d months": ["%d mes", "%d meses"],
"%d weeks": [ "%d years": ["%d an", "%d ans"],
"%d setmana", "Never":
"%d setmanas", "Jamai",
"%d setmanas", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
"%d setmanas" "Nota:Aquò es un servici despròva:las donadas pòdon èsser suprimidas a cada moment. De catons moriràn sabusatz daqueste servici.",
], "This document will expire in %d seconds.":
"%d months": [ ["Ce document expirera dans %d seconde.", "Aqueste document expirarà dins %d segondas."],
"%d mes", "This document will expire in %d minutes.":
"%d meses", ["Ce document expirera dans %d minute.", "Aqueste document expirarà dins %d minutas."],
"%d meses", "This document will expire in %d hours.":
"%d meses" ["Ce document expirera dans %d heure.", "Aqueste document expirarà dins %d oras."],
], "This document will expire in %d days.":
"%d years": [ ["Ce document expirera dans %d jour.", "Aqueste document expirarà dins %d jorns."],
"%d an", "This document will expire in %d months.":
"%d ans", ["Ce document expirera dans %d mois.", "Aqueste document expirarà dins %d meses."],
"%d ans", "Please enter the password for this paste:":
"%d ans" "Picatz lo senhal per aqueste tèxte:",
], "Could not decrypt data (Wrong key?)":
"Never": "Jamai", "Impossible de deschifrar las donadas (marrida clau?)",
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Nota:Aquò es un servici despròva:las donadas pòdon èsser suprimidas a cada moment. De catons moriràn sabusatz daqueste servici.", "Could not delete the paste, it was not stored in burn after reading mode.":
"This document will expire in %d seconds.": [ "Impossible de suprimir lo tèxte, perque es pas estat gardat en mòde \"Escafar aprèp lectura\".",
"Aqueste document expirarà daquí %d segonda.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
"Aqueste document expirarà daquí %d segondas.", "PER VÒSTRES UÈLHS SOLAMENT. Tampetz pas aquesta fenèstra, aqueste tèxte poirà pas mai èsser afichat.",
"Aqueste document expirarà daquí %d segondas.", "Could not decrypt comment; Wrong key?":
"Aqueste document expirarà daquí %d segondas." "Impossible de deschifrar lo comentari ; marrida clau?",
], "Reply":
"This document will expire in %d minutes.": [ "Respondre",
"Aqueste document expirarà daquí %d minuta.", "Anonymous":
"Aqueste document expirarà daquí %d minutas.", "Anonime",
"Aqueste document expirarà daquí %d minutas.", "Avatar generated from IP address":
"Aqueste document expirarà daquí %d minutas." "Avatar anonime (Vizhash de ladreça IP)",
], "Add comment":
"This document will expire in %d hours.": [ "Apondre un comentari",
"Aqueste document expirarà daquí %d ora.", "Optional nickname…":
"Aqueste document expirarà daquí %d oras.", "Escais opcional…",
"Aqueste document expirarà daquí %d oras.", "Post comment":
"Aqueste document expirarà daquí %d oras." "Mandar lo comentari",
], "Sending comment…":
"This document will expire in %d days.": [ "Mandadís del comentari…",
"Aqueste document expirarà daquí %d jorn.", "Comment posted.":
"Aqueste document expirarà daquí %d jorns.", "Comentari mandat.",
"Aqueste document expirarà daquí %d jorns.", "Could not refresh display: %s":
"Aqueste document expirarà daquí %d jorns." "Impossible dactualizar lafichatge:%s",
], "unknown status":
"This document will expire in %d months.": [ "Estatut desconegut",
"Aqueste document expirarà daquí %d mes.", "server error or not responding":
"Aqueste document expirarà daquí %d meses.", "Lo servidor respond pas o a rescontrat una error",
"Aqueste document expirarà daquí %d meses.", "Could not post comment: %s":
"Aqueste document expirarà daquí %d meses." "Impossible de mandar lo comentari:%s",
], "Sending paste…":
"Please enter the password for this paste:": "Picatz lo senhal per aqueste tèxte:", "Mandadís del tèxte",
"Could not decrypt data (Wrong key?)": "Impossible de deschifrar las donadas (marrida clau?)", "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
"Could not delete the paste, it was not stored in burn after reading mode.": "Impossible de suprimir lo tèxte, perque es pas estat gardat en mòde \"Escafar aprèp lectura\".", "Vòstre tèxte es disponible a ladreça <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Picatz sus [Ctrl]+[c] per copiar)</span>",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "PER VÒSTRES UÈLHS SOLAMENT. Tampetz pas aquesta fenèstra, aqueste tèxte poirà pas mai èsser afichat.", "Delete data":
"Could not decrypt comment; Wrong key?": "Impossible de deschifrar lo comentari ; marrida clau?", "Supprimir las donadas del tèxte",
"Reply": "Respondre", "Could not create paste: %s":
"Anonymous": "Anonime", "Impossible de crear lo tèxte:%s",
"Avatar generated from IP address": "Avatar anonime (Vizhash de ladreça IP)", "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
"Add comment": "Apondre un comentari", "Impossible de deschifrar lo tèxte:clau de deschiframent absenta de lURL (Avètz utilizat un redirector o un site de reduccion dURL que suprimís una partida de lURL?)",
"Optional nickname…": "Escais opcional…",
"Post comment": "Mandar lo comentari",
"Sending comment…": "Mandadís del comentari…",
"Comment posted.": "Comentari mandat.",
"Could not refresh display: %s": "Impossible dactualizar lafichatge:%s",
"unknown status": "Estatut desconegut",
"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",
"Sending paste…": "Mandadís del tèxte…",
"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 ladreç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",
"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 lURL (Avètz utilizat un redirector o un site de reduccion dURL que suprimís una partida de lURL?)",
"B": "o", "B": "o",
"KiB": "Kio", "KiB": "Kio",
"MiB": "Mio", "MiB": "Mio",
@@ -150,44 +140,58 @@
"alternatively drag & drop a file or paste an image from the clipboard": "autrament lisatz lo fichièr o pegatz limatge del quichapapièrs", "alternatively drag & drop a file or paste an image from the clipboard": "autrament lisatz lo fichièr o pegatz limatge del quichapapièrs",
"File too large, to display a preview. Please download the attachment.": "Fichièr tròp pesuc per mostrar un apercebut. Telecargatz la pèca junta.", "File too large, to display a preview. Please download the attachment.": "Fichièr tròp pesuc per mostrar un apercebut. Telecargatz la pèca junta.",
"Remove attachment": "Levar la pèça junta", "Remove attachment": "Levar la pèça junta",
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Vòstre navigator es pas compatible amb lo mandadís de fichièrs chifrats. Mercés demplegar un navigator mai recent.", "Your browser does not support uploading encrypted files. Please use a newer browser.":
"Vòstre navigator es pas compatible amb lo mandadís de fichièrs chifrats. Mercés demplegar un navigator mai recent.",
"Invalid attachment.": "Pèça junta invalida.", "Invalid attachment.": "Pèça junta invalida.",
"Options": "Opcions", "Options": "Opcions",
"Shorten URL": "Acorchir lURL", "Shorten URL": "Acorchir lURL",
"Editor": "Editar", "Editor": "Editar",
"Preview": "Previsualizar", "Preview": "Previsualizar",
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s demanda que lo PATH termine en « %s». Mercés de metre a jorn lo PATH dins vòstre index.php.", "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.":
"Decrypt": "Deschifrar", "%s demanda que lo PATH termine en \"%s\". Mercés de metre a jorn lo PATH dins vòstre index.php.",
"Enter password": "Picatz lo senhal", "Decrypt":
"Deschifrar",
"Enter password":
"Picatz lo senhal",
"Loading…": "Cargament…", "Loading…": "Cargament…",
"Decrypting paste…": "Deschirament del tèxte…", "Decrypting paste…": "Deschirament del tèxte…",
"Preparing new paste…": "Preparacion…", "Preparing new paste…": "Preparacion…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Se per cas aqueste messatge quite pas de safichar mercés de gaitar <a href=\"%s\">aquesta FAQ per las solucions</a> (en anglés).", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.":
"Se per cas aqueste messatge quite pas de safichar mercés de gaitar <a href=\"%s\">aquesta FAQ per las solucions</a> (en anglés).",
"+++ no paste text +++": "+++ cap de tèxte pegat +++", "+++ no paste text +++": "+++ cap de tèxte pegat +++",
"Could not get paste data: %s": "Recuperacion impossibla de las donadas copiadas: %s", "Could not get paste data: %s":
"Recuperacion impossibla de las donadas copiadas: %s",
"QR code": "Còdi QR", "QR code": "Còdi QR",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Aqueste site utiliza una connexion HTTP pas segura ! Mercés de lutilizar pas que per densages.", "This website is using an insecure HTTP connection! Please use it only for testing.":
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Per mai dinformacions <a href=\"%s\">vejatz aqueste article de FAQ</a>.", "Aqueste site utiliza una connexion HTTP pas segura ! Mercés de lutilizar pas que per densages.",
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Se pòt que vòstre navigator faga besonh duna connexion HTTPS per èsser compatible amb lAPI WebCrypto. Ensajatz de <a href=\"%s\">passar al HTTPS</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.":
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Vòstre navigator es pas compatible amb WebAssembly, utilizat per la compression zlib. Podètz crear de documents pas compressat, mas ne podètz pas legir de compressats.", "Per mai dinformacions <a href=\"%s\">vejatz aqueste article de FAQ</a>.",
"waiting on user to provide a password": "en espèra que lutilizaire fornisca un senhal", "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.":
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Deschiframent de las donadas impossible. Avètz picat un marrit senhal? Tornatz ensajar amb lo boton ennaut.", "Se pòt que vòstre navigator faga besonh duna connexion HTTPS per èsser compatible amb lAPI WebCrypto. Ensajatz de <a href=\"%s\">passar al HTTPS</a>.",
"Retry": "Tornar ensajar", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.":
"Showing raw text…": "Afichatge del tèxte brut…", "Vòstre navigator es pas compatible amb WebAssembly, utilizat per la compression zlib. Podètz crear de documents pas compressat, mas ne podètz pas legir de compressats.",
"Notice:": "Avertiment:", "waiting on user to provide a password":
"This link will expire after %s.": "Aqueste ligam expirarà aprèp %s.", "en espèra que lutilizaire fornisca un senhal",
"This link can only be accessed once, do not use back or refresh button in your browser.": "Òm pòt pas quaccedir a aqueste ligam quun còp, utilizetz pas lo boton precedent o actualizar del navigator.", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.":
"Link:": "Ligam:", "Deschiframent de las donadas impossible. Avètz picat un marrit senhal? Tornatz ensajar amb lo boton ennaut.",
"Recipient may become aware of your timezone, convert time to UTC?": "Lo destinatari pòt savisar de vòstre fus orari, convertir en UTC?", "Retry":
"Use Current Timezone": "Utilizar lactual", "Tornar ensajar",
"Convert To UTC": "Convertir en UTC", "Showing raw text…":
"Close": "Tampar", "Afichatge del tèxte brut…",
"Encrypted note on %s": "Nòtas chifradas sus %s", "Notice:":
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visitatz aqueste ligam per veire la nòta. Fornir lo ligam a qualquun mai li permet tanben daccedir a la nòta.", "Avertiment:",
"URL shortener may expose your decrypt key in URL.": "Los espleches dacorchiment dURL pòdon expausar la clau de deschiframent dins lURL.", "This link will expire after %s.":
"Save paste": "Enregistrar lo tèxt", "Aqueste ligam expirarà aprèp %s.",
"Your IP is not authorized to create pastes.": "Vòstra adreça IP a pas lautorizacion de crear de tèxtes.", "This link can only be accessed once, do not use back or refresh button in your browser.":
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", "Òm pòt pas quaccedir a aqueste ligam quun còp, utilizetz pas lo boton precedent o actualizar del navigator.",
"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\".", "Link:":
"Error parsing YOURLS response.": "Error parsing YOURLS response." "Ligam:",
"Recipient may become aware of your timezone, convert time to UTC?":
"Lo destinatari pòt savisar de vòstre fus orari, convertir en UTC?",
"Use Current Timezone":
"Utilizar lactual",
"Convert To UTC":
"Convertir en UTC",
"Close":
"Tampar"
} }

View File

@@ -1,144 +1,125 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s jest minimalistycznym, otwartoźródłowym serwisem typu pastebin, w którym serwer nie ma jakichkolwiek informacji o tym, co jest wklejane. Dane są szyfrowane i deszyfrowane %sw przeglądarce%s z użyciem 256-bitowego klucza AES.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> 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>.": "Więcej informacji na <a href=\"https://privatebin.info/\">stronie projektu</a>.", "%s jest minimalistycznym, otwartoźródłowym serwisem typu pastebin, w którym serwer nie ma jakichkolwiek informacji o tym, co jest wklejane. Dane są szyfrowane i deszyfrowane <i>w przeglądarce</i> z użyciem 256-bitowego klucza AES. Więcej informacji na <a href=\"https://privatebin.info/\">stronie projektu</a>.",
"Because ignorance is bliss": "Ponieważ ignorancja jest cnotą", "Because ignorance is bliss":
"Ponieważ ignorancja jest cnotą",
"en": "pl", "en": "pl",
"Paste does not exist, has expired or has been deleted.": "Wklejka nie istnieje, wygasła albo została usunięta.", "Paste does not exist, has expired or has been deleted.":
"%s requires php %s or above to work. Sorry.": "%s wymaga PHP w wersji %s lub nowszej. Przykro mi.", "Wklejka nie istnieje, wygasła albo została usunięta.",
"%s requires configuration section [%s] to be present in configuration file.": "%s wymaga obecności sekcji [%s] w pliku konfiguracyjnym.", "%s requires php %s or above to work. Sorry.":
"Please wait %d seconds between each post.": [ "%s wymaga PHP w wersji %s lub nowszej. Przykro mi.",
"Poczekaj %d sekundę pomiędzy każdą wklejką.", "%s requires configuration section [%s] to be present in configuration file.":
"%s wymaga obecności sekcji [%s] w pliku konfiguracyjnym.",
"Please wait %d seconds between each post.":
"Poczekaj %d sekund pomiędzy każdą wklejką.", "Poczekaj %d sekund pomiędzy każdą wklejką.",
"Poczekaj %d sekund pomiędzy każdą wklejką.", "Paste is limited to %s of encrypted data.":
"Poczekaj %d sekund pomiędzy każdą wklejką." "Wklejka jest limitowana do %s zaszyfrowanych danych.",
], "Invalid data.":
"Paste is limited to %s of encrypted data.": "Wklejka jest limitowana do %s zaszyfrowanych danych.", "Nieprawidłowe dane.",
"Invalid data.": "Nieprawidłowe dane.", "You are unlucky. Try again.":
"You are unlucky. Try again.": "Miałeś pecha. Spróbuj ponownie.", "Miałeś pecha. Spróbuj ponownie.",
"Error saving comment. Sorry.": "Błąd przy zapisywaniu komentarza, sorry.", "Error saving comment. Sorry.":
"Error saving paste. Sorry.": "Błąd przy zapisywaniu wklejki, sorry.", "Błąd przy zapisywaniu komentarza, sorry.",
"Invalid paste ID.": "Nieprawidłowe ID wklejki.", "Error saving paste. Sorry.":
"Paste is not of burn-after-reading type.": "Ta wklejka nie ulega autodestrukcji po przeczytaniu.", "Błąd przy zapisywaniu wklejki, sorry.",
"Wrong deletion token. Paste was not deleted.": "Nieprawidłowy token usuwania. Wklejka nie została usunięta.", "Invalid paste ID.":
"Paste was properly deleted.": "Wklejka usunięta poprawnie.", "Nieprawidłowe ID wklejki.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Do działania %sa jest wymagany JavaScript. Przepraszamy za tę niedogodność.", "Paste is not of burn-after-reading type.":
"%s requires a modern browser to work.": "%s wymaga do działania nowoczesnej przeglądarki.", "Ta wklejka nie ulega autodestrukcji po przeczytaniu.",
"New": "Nowa", "Wrong deletion token. Paste was not deleted.":
"Send": "Wyślij", "Nieprawidłowy token usuwania. Wklejka nie została usunięta.",
"Clone": "Sklonuj", "Paste was properly deleted.":
"Raw text": "Czysty tekst", "Wklejka usunięta poprawnie.",
"Expires": "Wygasa za", "JavaScript is required for %s to work. Sorry for the inconvenience.":
"Burn after reading": "Zniszcz po przeczytaniu", "Do działania %sa jest wymagany JavaScript. Przepraszamy za tę niedogodność.",
"Open discussion": "Otwarta dyskusja", "%s requires a modern browser to work.":
"Password (recommended)": "Hasło (zalecane)", "%s wymaga do działania nowoczesnej przeglądarki.",
"Discussion": "Dyskusja", "New":
"Toggle navigation": "Przełącz nawigację", "Nowa",
"%d seconds": [ "Send":
"%d second", "Wyślij",
"%d second", "Clone":
"%d second", "Sklonuj",
"%d second" "Raw text":
], "Czysty tekst",
"%d minutes": [ "Expires":
"%d minut", "Wygasa za",
"%d minut", "Burn after reading":
"%d minut", "Zniszcz po przeczytaniu",
"%d minut" "Open discussion":
], "Otwarta dyskusja",
"%d hours": [ "Password (recommended)":
"%d godzina", "Hasło (zalecane)",
"%d godzina", "Discussion":
"%d godzinę", "Dyskusja",
"%d godzinę" "Toggle navigation":
], "Przełącz nawigację",
"%d days": [ "%d seconds": ["%d second", "%d second", "%d second"],
"%d dzień", "%d minutes": ["%d minut", "%d minut", "%d minut"],
"%d dzi", "%d hours": ["%d godzina", "%d godzina", "%d godzinę"],
"%d dzień", "%d days": ["%d dzień", "%d dzień", "%d dzień"],
"%d dzień" "%d weeks": ["%d tydzień", "%d tydzień", "%d tydzień"],
], "%d months": ["%d miesiąc", "%d miesiąc", "%d miesiąc"],
"%d weeks": [ "%d years": ["%d rok", "%d rok", "%d rok"],
"%d tydzień", "Never":
"%d tydzień", "nigdy",
"%d tydzień", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
"%d tydzień" "Notka: To jest usługa testowa. Dane mogą zostać usunięte w dowolnym momencie. Kociątka umrą, jeśli nadużyjesz tej usługi.",
], "This document will expire in %d seconds.":
"%d months": [ ["Ten dokument wygaśnie za %d sekundę.", "Ten dokument wygaśnie za %d sekund."],
"%d miesiąc", "This document will expire in %d minutes.":
"%d miesiąc", ["Ten dokument wygaśnie za %d minutę.", "Ten dokument wygaśnie za %d minut."],
"%d miesiąc", "This document will expire in %d hours.":
"%d miesiąc" ["Ten dokument wygaśnie za godzinę.", "Ten dokument wygaśnie za %d godzin."],
], "This document will expire in %d days.":
"%d years": [ ["Ten dokument wygaśnie za %d dzień.", "Ten dokument wygaśnie za %d dni."],
"%d rok", "This document will expire in %d months.":
"%d rok", ["Ten dokument wygaśnie za miesiąc.", "Ten dokument wygaśnie za %d miesięcy."],
"%d rok", "Please enter the password for this paste:":
"%d rok" "Wpisz hasło dla tej wklejki:",
], "Could not decrypt data (Wrong key?)":
"Never": "nigdy", "Nie udało się odszyfrować danych (zły klucz?)",
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Notka: To jest usługa testowa. Dane mogą zostać usunięte w dowolnym momencie. Kociątka umrą, jeśli nadużyjesz tej usługi.", "Could not delete the paste, it was not stored in burn after reading mode.":
"This document will expire in %d seconds.": [ "Nie udało się usunąć wklejki, nie została zapisana w trybie zniszczenia po przeczytaniu.",
"Ten dokument wygaśnie za %d sekundę.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
"Ten dokument wygaśnie za %d sekund.", "TYLKO DO TWOJEGO WGLĄDU. Nie zamykaj tego okna, ta wiadomość nie będzie mogła być wyświetlona ponownie.",
"Ten dokument wygaśnie za %d sekund.", "Could not decrypt comment; Wrong key?":
"Ten dokument wygaśnie za %d sekund." "Nie udało się odszyfrować komentarza; zły klucz?",
], "Reply":
"This document will expire in %d minutes.": [ "Odpowiedz",
"Ten dokument wygaśnie za %d minutę.", "Anonymous":
"Ten dokument wygaśnie za %d minut.", "Anonim",
"Ten dokument wygaśnie za %d minut.", "Avatar generated from IP address":
"Ten dokument wygaśnie za %d minut." "Anonimowy avatar (Vizhash z adresu IP)",
], "Add comment":
"This document will expire in %d hours.": [ "Dodaj komentarz",
"Ten dokument wygaśnie za godzinę.", "Optional nickname…":
"Ten dokument wygaśnie za %d godzin.", "Opcjonalny nick…",
"Ten dokument wygaśnie za %d godzin.", "Post comment":
"Ten dokument wygaśnie za %d godzin." "Wyślij komentarz",
], "Sending comment…":
"This document will expire in %d days.": [ "Wysyłanie komentarza…",
"Ten dokument wygaśnie za %d dzień.", "Comment posted.":
"Ten dokument wygaśnie za %d dni.", "Wysłano komentarz.",
"Ten dokument wygaśnie za %d dni.", "Could not refresh display: %s":
"Ten dokument wygaśnie za %d dni." "Nie można odświeżyć widoku: %s",
], "unknown status":
"This document will expire in %d months.": [ "nieznany status",
"Ten dokument wygaśnie za miesiąc.", "server error or not responding":
"Ten dokument wygaśnie za %d miesięcy.", "błąd serwera lub brak odpowiedzi",
"Ten dokument wygaśnie za %d miesięcy.", "Could not post comment: %s":
"Ten dokument wygaśnie za %d miesięcy." "Nie udało się wysłać komentarza: %s",
], "Sending paste…":
"Please enter the password for this paste:": "Wpisz hasło dla tej wklejki:", "Wysyłanie wklejki",
"Could not decrypt data (Wrong key?)": "Nie udało się odszyfrować danych (zły klucz?)", "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
"Could not delete the paste, it was not stored in burn after reading mode.": "Nie udało się usunąć wklejki, nie została zapisana w trybie zniszczenia po przeczytaniu.", "Twoja wklejka to <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(wciśnij [Ctrl]+[c] aby skopiować)</span>",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "TYLKO DO TWOJEGO WGLĄDU. Nie zamykaj tego okna, ta wiadomość nie będzie mogła być wyświetlona ponownie.", "Delete data":
"Could not decrypt comment; Wrong key?": "Nie udało się odszyfrować komentarza; zły klucz?", "Skasuj dane",
"Reply": "Odpowiedz", "Could not create paste: %s":
"Anonymous": "Anonim", "Nie udało się utworzyć wklejki: %s",
"Avatar generated from IP address": "Anonimowy avatar (Vizhash z adresu IP)", "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
"Add comment": "Dodaj komentarz", "Nie udało się odszyfrować wklejki - brak klucza deszyfrującego w adresie (użyłeś skracacza linków, który ucina część adresu?)",
"Optional nickname…": "Opcjonalny nick…",
"Post comment": "Wyślij komentarz",
"Sending comment…": "Wysyłanie komentarza…",
"Comment posted.": "Wysłano komentarz.",
"Could not refresh display: %s": "Nie można odświeżyć widoku: %s",
"unknown status": "nieznany status",
"server error or not responding": "błąd serwera lub brak odpowiedzi",
"Could not post comment: %s": "Nie udało się wysłać komentarza: %s",
"Sending paste…": "Wysyłanie wklejki…",
"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",
"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?)",
"B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"Format": "Format", "Format": "Format",
"Plain Text": "Czysty tekst", "Plain Text": "Czysty tekst",
"Source Code": "Kod źródłowy", "Source Code": "Kod źródłowy",
@@ -150,44 +131,58 @@
"alternatively drag & drop a file or paste an image from the clipboard": "Alternatywnie przeciągnij i upuść plik albo wklej obraz ze schowka", "alternatively drag & drop a file or paste an image from the clipboard": "Alternatywnie przeciągnij i upuść plik albo wklej obraz ze schowka",
"File too large, to display a preview. Please download the attachment.": "Plik zbyt duży aby wyświetlić podgląd. Proszę pobrać załącznik.", "File too large, to display a preview. Please download the attachment.": "Plik zbyt duży aby wyświetlić podgląd. Proszę pobrać załącznik.",
"Remove attachment": "Usuń załącznik", "Remove attachment": "Usuń załącznik",
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Twoja przeglądarka nie wspiera wysyłania zaszyfrowanych plików. Użyj nowszej przeglądarki.", "Your browser does not support uploading encrypted files. Please use a newer browser.":
"Twoja przeglądarka nie wspiera wysyłania zaszyfrowanych plików. Użyj nowszej przeglądarki.",
"Invalid attachment.": "Nieprawidłowy załącznik.", "Invalid attachment.": "Nieprawidłowy załącznik.",
"Options": "Opcje", "Options": "Opcje",
"Shorten URL": "Skróć adres URL", "Shorten URL": "Skróć adres URL",
"Editor": "Edytować", "Editor": "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 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", "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.",
"Enter password": "Wpisz hasło", "Decrypt":
"Odszyfruj",
"Enter password":
"Wpisz hasło",
"Loading…": "Wczytywanie…", "Loading…": "Wczytywanie…",
"Decrypting paste…": "Odszyfrowywanie wklejki…", "Decrypting paste…": "Odszyfrowywanie wklejki…",
"Preparing new paste…": "Przygotowywanie nowej wklejki…", "Preparing new paste…": "Przygotowywanie nowej wklejki…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "W przypadku gdy ten komunikat nigdy nie znika, proszę spójrz na <a href=\"%s\">to FAQ aby rozwiązać problem</a> (po angielsku).", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.":
"W przypadku gdy ten komunikat nigdy nie znika, proszę spójrz na <a href=\"%s\">to FAQ aby rozwiązać problem</a> (po angielsku).",
"+++ 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.": "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>.", "This website is using an insecure HTTP connection! Please use it only for testing.",
"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>.", "For more information <a href=\"%s\">see this FAQ entry</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.", "For more information <a href=\"%s\">see this FAQ entry</a>.",
"waiting on user to provide a password": "waiting on user to provide a password", "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.":
"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.", "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.",
"Retry": "Retry", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.":
"Showing raw text…": "Showing raw text…", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.",
"Notice:": "Notice:", "waiting on user to provide a password":
"This link will expire after %s.": "This link will expire after %s.", "waiting on user to provide a password",
"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.", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.":
"Link:": "Link:", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.",
"Recipient may become aware of your timezone, convert time to UTC?": "Recipient may become aware of your timezone, convert time to UTC?", "Retry":
"Use Current Timezone": "Use Current Timezone", "Retry",
"Convert To UTC": "Convert To UTC", "Showing raw text…":
"Close": "Close", "Showing raw text…",
"Encrypted note on %s": "Encrypted note on %s", "Notice:":
"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.", "Notice:",
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.", "This link will expire after %s.":
"Save paste": "Save paste", "This link will expire after %s.",
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.", "This link can only be accessed once, do not use back or refresh button in your browser.":
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", "This link can only be accessed once, do not use back or refresh button in your browser.",
"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\".", "Link:":
"Error parsing YOURLS response.": "Error parsing YOURLS response." "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"
} }

View File

@@ -1,144 +1,125 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s é um serviço minimalista e de código aberto do tipo \"pastebin\", em que o servidor tem zero conhecimento dos dados copiados. Os dados são cifrados e decifrados %sno navegador%s usando 256 bits AES.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> 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>.": "Mais informações na <a href=\"https://privatebin.info/\">página do projeto</a>.", "%s é um serviço minimalista e de código aberto do tipo \"pastebin\", em que o servidor tem zero conhecimento dos dados copiados. Os dados são cifrados e decifrados <i>no navegador</i> usando 256 bits AES. Mais informações na <a href=\"https://privatebin.info/\">página do projeto</a>.",
"Because ignorance is bliss": "Porque a ignorância é uma benção", "Because ignorance is bliss":
"Porque a ignorância é uma benção",
"en": "pt", "en": "pt",
"Paste does not exist, has expired or has been deleted.": "A cópia não existe, expirou ou já foi excluída.", "Paste does not exist, has expired or has been deleted.":
"%s requires php %s or above to work. Sorry.": "%s requer php %s ou superior para funcionar. Desculpa.", "A cópia não existe, expirou ou já foi excluída.",
"%s requires configuration section [%s] to be present in configuration file.": "%s requer que a seção de configuração [% s] esteja no arquivo de configuração.", "%s requires php %s or above to work. Sorry.":
"Please wait %d seconds between each post.": [ "%s requer php %s ou superior para funcionar. Desculpa.",
"Por favor espere %d segundo entre cada publicação.", "%s requires configuration section [%s] to be present in configuration file.":
"%s requer que a seção de configuração [% s] esteja no arquivo de configuração.",
"Please wait %d seconds between each post.":
"Por favor espere %d segundos entre cada publicação.", "Por favor espere %d segundos entre cada publicação.",
"Por favor espere %d segundos entre cada publicação.", "Paste is limited to %s of encrypted data.":
"Por favor espere %d segundos entre cada publicação." "A cópia está limitada a %s de dados cifrados.",
], "Invalid data.":
"Paste is limited to %s of encrypted data.": "A cópia está limitada a %s de dados cifrados.", "Dados inválidos.",
"Invalid data.": "Dados inválidos.", "You are unlucky. Try again.":
"You are unlucky. Try again.": "Você é azarado. Tente novamente", "Você é azarado. Tente novamente",
"Error saving comment. Sorry.": "Erro ao salvar comentário. Desculpa.", "Error saving comment. Sorry.":
"Error saving paste. Sorry.": "Erro ao salvar cópia. Desculpa.", "Erro ao salvar comentário. Desculpa.",
"Invalid paste ID.": "ID de cópia inválido.", "Error saving paste. Sorry.":
"Paste is not of burn-after-reading type.": "Cópia não é do tipo \"queime após ler\".", "Erro ao salvar cópia. Desculpa.",
"Wrong deletion token. Paste was not deleted.": "Token de remoção inválido. A cópia não foi excluída.", "Invalid paste ID.":
"Paste was properly deleted.": "A cópia foi devidamente excluída.", "ID de cópia inválido.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript é necessário para que %s funcione. Pedimos desculpas pela inconveniência.", "Paste is not of burn-after-reading type.":
"%s requires a modern browser to work.": "%s requer um navegador moderno para funcionar.", "Cópia não é do tipo \"queime após ler\".",
"New": "Novo", "Wrong deletion token. Paste was not deleted.":
"Send": "Enviar", "Token de remoção inválido. A cópia não foi excluída.",
"Clone": "Clonar", "Paste was properly deleted.":
"Raw text": "Texto sem formato", "A cópia foi devidamente excluída.",
"Expires": "Expirar em", "JavaScript is required for %s to work. Sorry for the inconvenience.":
"Burn after reading": "Queime após ler", "JavaScript é necessário para que %s funcione. Pedimos desculpas pela inconveniência.",
"Open discussion": "Discussão aberta", "%s requires a modern browser to work.":
"Password (recommended)": "Senha (recomendada)", "%s requer um navegador moderno para funcionar.",
"Discussion": "Discussão", "New":
"Toggle navigation": "Mudar navegação", "Novo",
"%d seconds": [ "Send":
"%d segundo", "Enviar",
"%d segundos", "Clone":
"%d segundos", "Clonar",
"%d segundos" "Raw text":
], "Texto sem formato",
"%d minutes": [ "Expires":
"%d minuto", "Expirar em",
"%d minutos", "Burn after reading":
"%d minutos", "Queime após ler",
"%d minutos" "Open discussion":
], "Discussão aberta",
"%d hours": [ "Password (recommended)":
"%d hora", "Senha (recomendada)",
"%d horas", "Discussion":
"%d horas (2° plural)", "Discussão",
"%d horas" "Toggle navigation":
], "Mudar navegação",
"%d days": [ "%d seconds": ["%d segundo", "%d segundos"],
"%d dia", "%d minutes": ["%d minuto", "%d minutos"],
"%d dias", "%d hours": ["%d hora", "%d horas"],
"%d dias", "%d days": ["%d dia", "%d dias"],
"%d dias" "%d weeks": ["%d semana", "%d semanas"],
], "%d months": ["%d mês", "%d meses"],
"%d weeks": [ "%d years": ["%d ano", "%d anos"],
"%d semana", "Never":
"%d semanas", "Nunca",
"%d semanas", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
"%d semanas" "Nota: Este é um serviço de teste. Dados podem ser perdidos a qualquer momento. Gatinhos morrerão se você abusar desse serviço.",
], "This document will expire in %d seconds.":
"%d months": [ ["Este documento irá expirar em um segundo.", "Este documento irá expirar em %d segundos."],
"%d mês", "This document will expire in %d minutes.":
"%d meses", ["Este documento irá expirar em um minuto.", "Este documento irá expirar em %d minutos."],
"%d meses", "This document will expire in %d hours.":
"%d meses" ["Este documento irá expirar em uma hora.", "Este documento irá expirar em %d horas."],
], "This document will expire in %d days.":
"%d years": [ ["Este documento irá expirar em um dia.", "Este documento irá expirar em %d dias."],
"%d ano", "This document will expire in %d months.":
"%d anos", ["Este documento irá expirar em um mês.", "Este documento irá expirar em %d meses."],
"%d anos", "Please enter the password for this paste:":
"%d anos" "Por favor, digite a senha para essa cópia:",
], "Could not decrypt data (Wrong key?)":
"Never": "Nunca", "Não foi possível decifrar os dados (Chave errada?)",
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Nota: Este é um serviço de teste. Dados podem ser perdidos a qualquer momento. Gatinhos morrerão se você abusar desse serviço.", "Could not delete the paste, it was not stored in burn after reading mode.":
"This document will expire in %d seconds.": [ "Não foi possível excluir a cópia, ela não foi salva no modo de \"queime após ler\".",
"Este documento irá expirar em um segundo.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
"Este documento irá expirar em %d segundos.", "APENAS PARA SEUS OLHOS. Não feche essa janela, essa mensagem não pode ser exibida novamente.",
"Este documento irá expirar em %d segundos.", "Could not decrypt comment; Wrong key?":
"Este documento irá expirar em %d segundos." "Não foi possível decifrar o comentário; Chave errada?",
], "Reply":
"This document will expire in %d minutes.": [ "Responder",
"Este documento irá expirar em um minuto.", "Anonymous":
"Este documento irá expirar em %d minutos.", "Anônimo",
"Este documento irá expirar em %d minutos.", "Avatar generated from IP address":
"Este documento irá expirar em %d minutos." "Avatar gerado à partir do endereço IP",
], "Add comment":
"This document will expire in %d hours.": [ "Adicionar comentário",
"Este documento irá expirar em uma hora.", "Optional nickname…":
"Este documento irá expirar em %d horas.", "Apelido opcional…",
"Este documento irá expirar em %d horas.", "Post comment":
"Este documento irá expirar em %d horas." "Publicar comentário",
], "Sending comment…":
"This document will expire in %d days.": [ "Enviando comentário…",
"Este documento irá expirar em um dia.", "Comment posted.":
"Este documento irá expirar em %d dias.", "Comentário publicado.",
"Este documento irá expirar em %d dias.", "Could not refresh display: %s":
"Este documento irá expirar em %d dias." "Não foi possível atualizar a tela: %s",
], "unknown status":
"This document will expire in %d months.": [ "Estado desconhecido",
"Este documento irá expirar em um mês.", "server error or not responding":
"Este documento irá expirar em %d meses.", "Servidor em erro ou não responsivo",
"Este documento irá expirar em %d meses.", "Could not post comment: %s":
"Este documento irá expirar em %d meses." "Não foi possível publicar o comentário: %s",
], "Sending paste…":
"Please enter the password for this paste:": "Por favor, digite a senha para essa cópia:", "Enviando cópia",
"Could not decrypt data (Wrong key?)": "Não foi possível decifrar os dados (Chave errada?)", "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
"Could not delete the paste, it was not stored in burn after reading mode.": "Não foi possível excluir a cópia, ela não foi salva no modo de \"queime após ler\".", "Sua cópia é <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Pressione [Ctrl]+[c] para copiar)</span>",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "APENAS PARA SEUS OLHOS. Não feche essa janela, essa mensagem não pode ser exibida novamente.", "Delete data":
"Could not decrypt comment; Wrong key?": "Não foi possível decifrar o comentário; Chave errada?", "Excluir dados",
"Reply": "Responder", "Could not create paste: %s":
"Anonymous": "Anônimo", "Não foi possível criar cópia: %s",
"Avatar generated from IP address": "Avatar gerado à partir do endereço IP", "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
"Add comment": "Adicionar comentário", "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?)",
"Optional nickname…": "Apelido opcional…",
"Post comment": "Publicar comentário",
"Sending comment…": "Enviando comentário…",
"Comment posted.": "Comentário publicado.",
"Could not refresh display: %s": "Não foi possível atualizar a tela: %s",
"unknown status": "Estado desconhecido",
"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",
"Sending paste…": "Enviando cópia…",
"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",
"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?)",
"B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"Format": "Formato", "Format": "Formato",
"Plain Text": "Texto sem formato", "Plain Text": "Texto sem formato",
"Source Code": "Código fonte", "Source Code": "Código fonte",
@@ -147,47 +128,61 @@
"Cloned: '%s'": "Clonado: '%s'", "Cloned: '%s'": "Clonado: '%s'",
"The cloned file '%s' was attached to this paste.": "O arquivo clonado '%s' foi anexado a essa cópia.", "The cloned file '%s' was attached to this paste.": "O arquivo clonado '%s' foi anexado a essa cópia.",
"Attach a file": "Anexar um arquivo", "Attach a file": "Anexar um arquivo",
"alternatively drag & drop a file or paste an image from the clipboard": "alternativamente, arraste e solte um arquivo ou cole uma imagem da área de transferência", "alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard",
"File too large, to display a preview. Please download the attachment.": "Arquivo muito grande para exibir uma prévia. Por favor, faça o download do anexo.", "File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.",
"Remove attachment": "Remover anexo", "Remove attachment": "Remover anexo",
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Seu navegador não permite subir arquivos cifrados. Por favor, utilize um navegador mais recente.", "Your browser does not support uploading encrypted files. Please use a newer browser.":
"Seu navegador não permite subir arquivos cifrados. Por favor, utilize um navegador mais recente.",
"Invalid attachment.": "Anexo inválido.", "Invalid attachment.": "Anexo inválido.",
"Options": "Opções", "Options": "Opções",
"Shorten URL": "Encurtar URL", "Shorten URL": "Encurtar URL",
"Editor": "Editor", "Editor": "Editor",
"Preview": "Visualizar", "Preview": "Visualizar",
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s requer que o PATH termine em \"%s\". Por favor, atualize o PATH em seu index.php.", "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.":
"Decrypt": "Decifrar", "%s requer que o PATH termine em \"%s\". Por favor, atualize o PATH em seu index.php.",
"Enter password": "Digite a senha", "Decrypt":
"Decifrar",
"Enter password":
"Digite a senha",
"Loading…": "Carregando…", "Loading…": "Carregando…",
"Decrypting paste…": "Decifrando cópia…", "Decrypting paste…": "Decifrando cópia…",
"Preparing new paste…": "Preparando nova cópia…", "Preparing new paste…": "Preparando nova cópia…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Caso essa mensagem nunca desapareça, por favor veja <a href=\"%s\">este FAQ para saber como resolver os problemas</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.":
"Caso essa mensagem nunca desapareça, por favor veja <a href=\"%s\">este FAQ para saber como resolver os problemas</a>.",
"+++ no paste text +++": "+++ sem texto de cópia +++", "+++ no paste text +++": "+++ sem texto de cópia +++",
"Could not get paste data: %s": "Não foi possível obter dados de cópia: %s", "Could not get paste data: %s":
"Não foi possível obter dados de cópia: %s",
"QR code": "Código QR", "QR code": "Código QR",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Esse site usa uma conexão HTTP insegura! Use-o apenas para testes.", "This website is using an insecure HTTP connection! Please use it only for testing.":
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Para mais informações <a href=\"%s\">veja esse item do FAQ</a>.", "Esse site usa uma conexão HTTP insegura! Use-o apenas para testes.",
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Seu navegador pode exigir uma conexão HTTPS para dar suporte à API WebCrypto. Tente <a href=\"%s\">mudar para HTTPS</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.":
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Seu navagador não suporta WebAssembly, usado para compressão zlib. Você pode criar documentos não compactados, mas não pode lê-los.", "Para mais informações <a href=\"%s\">veja esse item do FAQ</a>.",
"waiting on user to provide a password": "esperando que o usuário digite uma senha", "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.":
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Não foi possível decifrar os dados. Você digitou a senha corretamente? Tente novamente com o botão ao topo.", "Seu navegador pode exigir uma conexão HTTPS para dar suporte à API WebCrypto. Tente <a href=\"%s\">mudar para HTTPS</a>.",
"Retry": "Tentar Novamente", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.":
"Showing raw text…": "Mostrando texto bruto…", "Seu navagador não suporta WebAssembly, usado para compressão zlib. Você pode criar documentos não compactados, mas não pode lê-los.",
"Notice:": "Aviso:", "waiting on user to provide a password":
"This link will expire after %s.": "Esse link vai expirar após %s.", "esperando que o usuário digite uma senha",
"This link can only be accessed once, do not use back or refresh button in your browser.": "Esse link só pode ser acessado uma vez, não utilize o botão de voltar ou atualizar do seu navegador.", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.":
"Link:": "Link:", "Não foi possível decifrar os dados. Você digitou a senha corretamente? Tente novamente com o botão ao topo.",
"Recipient may become aware of your timezone, convert time to UTC?": "O recipiente pode ter ciência de seu fuso horário, converter hora para UTC?", "Retry":
"Use Current Timezone": "Usar Fuso Horário Atual", "Tentar Novamente",
"Convert To UTC": "Converter para UTC", "Showing raw text…":
"Close": "Fechar", "Mostrando texto bruto…",
"Encrypted note on %s": "Nota criptografada no %s", "Notice:":
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visite esse link para ver a nota. Dar a URL para qualquer um permite que eles também acessem a nota.", "Aviso:",
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.", "This link will expire after %s.":
"Save paste": "Save paste", "Esse link vai expirar após %s.",
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.", "This link can only be accessed once, do not use back or refresh button in your browser.":
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", "Esse link só pode ser acessado uma vez, não utilize o botão de voltar ou atualizar do seu navegador.",
"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\".", "Link:":
"Error parsing YOURLS response.": "Error parsing YOURLS response." "Link:",
"Recipient may become aware of your timezone, convert time to UTC?":
"O recipiente pode ter ciência de seu fuso horário, converter hora para UTC?",
"Use Current Timezone":
"Usar Fuso Horário Atual",
"Convert To UTC":
"Converter para UTC",
"Close":
"Fechar"
} }

View File

@@ -1,135 +1,125 @@
{ {
"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 <i>in the browser</i> 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>.": "Подробнее можно узнать на <a href=\"https://privatebin.info/\">сайте проекта</a>.", "%s это минималистичный Open Source проект для создания заметок, где сервер не знает ничего о сохраняемых данных. Данные шифруются/расшифровываются <i>в браузере</i> с использованием 256 битного шифрования AES. Подробнее можно узнать на <a href=\"https://privatebin.info/\">сайте проекта</a>.",
"Because ignorance is bliss": "Потому что неведение - благо", "Because ignorance is bliss":
"Потому что неведение - благо",
"en": "ru", "en": "ru",
"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 configuration section [%s] to be present in configuration file.": "%s необходимо наличие секции [%s] в конфигурационном файле.", "%s requires php %s or above to work. Sorry.":
"Please wait %d seconds between each post.": [ "Для работы %s требуется php %s или выше. Извините.",
"Пожалуйста, ожидайте %d секунду между каждыми записями.", "%s requires configuration section [%s] to be present in configuration file.":
"Пожалуйста, ожидайте %d секунды между каждыми записями.", "%s необходимо наличие секции [%s] в конфигурационном файле.",
"Пожалуйста, ожидайте %d секунд между каждыми записями.", "Please wait %d seconds between each post.":
"Пожалуйста, ожидайте %d секунд между каждыми записями." ["Пожалуйста, ожидайте %d секунду между каждыми записями.", "Пожалуйста, ожидайте %d секунды между каждыми записями.", "Пожалуйста, ожидайте %d секунд между каждыми записями."],
], "Paste is limited to %s of encrypted data.":
"Paste is limited to %s of encrypted data.": "Размер записи ограничен %s зашифрованных данных.", "Размер записи ограничен %s зашифрованных данных.",
"Invalid data.": "Неверные данные.", "Invalid data.":
"You are unlucky. Try again.": "Вам не повезло. Попробуйте еще раз.", "Неверные данные.",
"Error saving comment. Sorry.": "Ошибка при сохранении комментария. Извините.", "You are unlucky. Try again.":
"Error saving paste. Sorry.": "Ошибка при сохранении записи. Извините.", "Вам не повезло. Попробуйте еще раз.",
"Invalid paste ID.": "Неверный ID записи.", "Error saving comment. Sorry.":
"Paste is not of burn-after-reading type.": "Тип записи не \"Удалить после прочтения\".", "Ошибка при сохранении комментария. Извините.",
"Wrong deletion token. Paste was not deleted.": "Неверный ключ удаления записи. Запись не удалена.", "Error saving paste. Sorry.":
"Paste was properly deleted.": "Запись была успешно удалена.", "Ошибка при сохранении записи. Извините.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Для работы %s требуется включенный JavaScript. Приносим извинения за неудобства.", "Invalid paste ID.":
"%s requires a modern browser to work.": "Для работы %s требуется более современный браузер.", "Неверный ID записи.",
"New": "Новая запись", "Paste is not of burn-after-reading type.":
"Send": "Отправить", "Тип записи не \"Удалить после прочтения\".",
"Clone": "Дублировать", "Wrong deletion token. Paste was not deleted.":
"Raw text": "Исходный текст", "Неверный ключ удаления записи. Запись не удалена.",
"Expires": "Удалить через", "Paste was properly deleted.":
"Burn after reading": "Удалить после прочтения", "Запись была успешно удалена.",
"Open discussion": "Открыть обсуждение", "JavaScript is required for %s to work. Sorry for the inconvenience.":
"Password (recommended)": "Пароль (рекомендуется)", "Для работы %s требуется включенный JavaScript. Приносим извинения за неудобства.",
"Discussion": "Обсуждение", "%s requires a modern browser to work.":
"Toggle navigation": "Переключить навигацию", "Для работы %s требуется более современный браузер.",
"%d seconds": [ "New":
"%d секунду", "Новая запись",
"%d секунды", "Send":
"%d секунд", "Отправить",
"%d секунд" "Clone":
], "Дублировать",
"%d minutes": [ "Raw text":
"%d минуту", "Исходный текст",
"%d минуты", "Expires":
"%d минут", "Удалить через",
"%d минут" "Burn after reading":
], "Удалить после прочтения",
"%d hours": [ "Open discussion":
"%d час", "Открыть обсуждение",
"%d часа", "Password (recommended)":
"%d часов", "Пароль (рекомендуется)",
"%d часов" "Discussion":
], "Обсуждение",
"%d days": [ "Toggle navigation":
"%d день", "Переключить навигацию",
"%d дня", "%d seconds": ["%d секунду", "%d секунды", "%d секунд"],
"%d дней", "%d minutes": ["%d минуту", "%d минуты", "%d минут"],
"%d дней" "%d hours": ["%d час", "%d часа", "%d часов"],
], "%d days": ["%d день", "%d дня", "%d дней"],
"%d weeks": [ "%d weeks": ["%d неделю", "%d недели", "%d недель"],
"%d неделю", "%d months": ["%d месяц", "%d месяца", "%d месяцев"],
"%d недели", "%d years": ["%d год", "%d года", "%d лет"],
"%d недель", "Never":
"%d недель" "Никогда",
], "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
"%d months": [ "Примечание: Этот сервис тестовый: Данные могут быть удалены в любое время. Котята умрут, если вы будете злоупотреблять серсисом.",
"%d месяц", "This document will expire in %d seconds.":
"%d месяца", ["Документ будет удален через %d секунду.", "Документ будет удален через %d секунды.", "Документ будет удален через %d секунд."],
"%d месяцев", "This document will expire in %d minutes.":
"%d месяцев" ["Документ будет удален через %d минуту.", "Документ будет удален через %d минуты.", "Документ будет удален через %d минут."],
], "This document will expire in %d hours.":
"%d years": [ ["Документ будет удален через %d час.", "Документ будет удален через %d часа.", "Документ будет удален через %d часов."],
"%d год", "This document will expire in %d days.":
"%d года", ["Документ будет удален через %d день.", "Документ будет удален через %d дня.", "Документ будет удален через %d дней."],
"%d лет", "This document will expire in %d months.":
"%d лет" ["Документ будет удален через %d месяц.", "Документ будет удален через %d месяца.", "Документ будет удален через %d месяцев."],
], "Please enter the password for this paste:":
"Never": "Никогда", "Пожалуйста, введите пароль от записи:",
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Примечание: Этот сервис тестовый: Данные могут быть удалены в любое время. Котята умрут, если вы будете злоупотреблять сервисом.", "Could not decrypt data (Wrong key?)":
"This document will expire in %d seconds.": [ "Невозможно расшифровать данные (Неверный ключ?)",
"Документ будет удален через %d секунду.", "Could not delete the paste, it was not stored in burn after reading mode.":
"Документ будет удален через %d секунды.", "Невозможно удалить запись, она не была сохранена в режиме удаления после прочтения.",
"Документ будет удален через %d секунд.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
"Документ будет удален через %d секунд." "ТОЛЬКО ДЛЯ ВАШИХ ГЛАЗ. Не закрывайте это окно, это сообщение не может быть показано снова.",
], "Could not decrypt comment; Wrong key?":
"This document will expire in %d minutes.": [ "Невозможно расшифровать комментарий; Неверный ключ?",
"Документ будет удален через %d минуту.", "Reply":
"Документ будет удален через %d минуты.", "Ответить",
"Документ будет удален через %d минут.", "Anonymous":
"Документ будет удален через %d минут." "Аноним",
], "Avatar generated from IP address":
"This document will expire in %d hours.": [ "Аватар, сгенерированный из IP-адреса",
"Документ будет удален через %d час.", "Add comment":
"Документ будет удален через %d часа.", "Добавить комментарий",
"Документ будет удален через %d часов.", "Optional nickname…":
"Документ будет удален через %d часов." "Опциональный никнейм…",
], "Post comment":
"This document will expire in %d days.": [ "Отправить комментарий",
"Документ будет удален через %d день.", "Sending comment…":
"Документ будет удален через %d дня.", "Отправка комментария…",
"Документ будет удален через %d дней.", "Comment posted.":
"Документ будет удален через %d дней." "Комментарий опубликован.",
], "Could not refresh display: %s":
"This document will expire in %d months.": [ "Не удалось обновить отображение: %s",
"Документ будет удален через %d месяц.", "unknown status":
"Документ будет удален через %d месяца.", "неизвестная причина",
"Документ будет удален через %d месяцев.", "server error or not responding":
"Документ будет удален через %d месяцев." "ошибка сервера или нет ответа",
], "Could not post comment: %s":
"Please enter the password for this paste:": "Пожалуйста, введите пароль от записи:", "Не удалось опубликовать комментарий: %s",
"Could not decrypt data (Wrong key?)": "Невозможно расшифровать данные (Неверный ключ?)", "Sending paste…":
"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.": "ТОЛЬКО ДЛЯ ВАШИХ ГЛАЗ. Не закрывайте это окно, это сообщение не может быть показано снова.", "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
"Could not decrypt comment; Wrong key?": "Невозможно расшифровать комментарий; Неверный ключ?", "Ссылка на запись <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Нажмите [Ctrl]+[c], чтобы скопировать ссылку)</span>",
"Reply": "Ответить", "Delete data":
"Anonymous": "Аноним", "Удалить запись",
"Avatar generated from IP address": "Аватар, сгенерированный из IP-адреса", "Could not create paste: %s":
"Add comment": "Добавить комментарий", "Не удалось опубликовать запись: %s",
"Optional nickname…": "Опциональный никнейм…", "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
"Post comment": "Отправить комментарий", "Невозможно расшифровать запись: Ключ расшифровки отсутствует в ссылке (Может быть, вы используете сокращатель ссылок, который удаляет часть ссылки?)",
"Sending comment…": "Отправка комментария…",
"Comment posted.": "Комментарий опубликован.",
"Could not refresh display: %s": "Не удалось обновить отображение: %s",
"unknown status": "неизвестная причина",
"server error or not responding": "ошибка сервера или нет ответа",
"Could not post comment: %s": "Не удалось опубликовать комментарий: %s",
"Sending paste…": "Отправка записи…",
"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": "Удалить запись",
"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?)": "Невозможно расшифровать запись: Ключ расшифровки отсутствует в ссылке (Может быть, вы используете сокращатель ссылок, который удаляет часть ссылки?)",
"B": "байт", "B": "байт",
"KiB": "Кбайт", "KiB": "Кбайт",
"MiB": "Мбайт", "MiB": "Мбайт",
@@ -145,49 +135,64 @@
"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.":
"Дубликат файла '%s' был прикреплен к этой записи.",
"Attach a file": "Прикрепить файл", "Attach a file": "Прикрепить файл",
"alternatively drag & drop a file or paste an image from the clipboard": "так же можно перенести файл в окно браузера или вставить изображение из буфера", "alternatively drag & drop a file or paste an image from the clipboard": "так же можно перенести файл в окно браузера или вставить изображение из буфера",
"File too large, to display a preview. Please download the attachment.": "Файл слишком большой для отображения предпросмотра. Пожалуйста, скачайте прикрепленный файл.", "File too large, to display a preview. Please download the attachment.": "Файл слишком большой для отображения предпросмотра. Пожалуйста, скачайте прикрепленный файл.",
"Remove attachment": "Удалить вложение", "Remove attachment": "Удалить вложение",
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Ваш браузер не поддерживает отправку зашифрованных файлов. Используйте более новый браузер.", "Your browser does not support uploading encrypted files. Please use a newer browser.":
"Ваш браузер не поддерживает отправку зашифрованных файлов. Используйте более новый браузер.",
"Invalid attachment.": "Неизвестное вложение.", "Invalid attachment.": "Неизвестное вложение.",
"Options": "Опции", "Options": "Опции",
"Shorten URL": "Короткая ссылка", "Shorten URL": "Короткая ссылка",
"Editor": "Редактор", "Editor": "Редактор",
"Preview": "Предпросмотр", "Preview": "Предпросмотр",
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "Переменная PATH необходима %s в конце \"%s\". Пожалуйста, обновите переменную PATH в вашем index.php.", "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.":
"Decrypt": "Расшифровать", "Переменная PATH необходима %s в конце \"%s\". Пожалуйста, обновите переменную PATH в вашем index.php.",
"Enter password": "Введите пароль", "Decrypt":
"Расшифровать",
"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\">этот FAQ с информацией о возможном решении проблемы (на английском)</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.":
"Если данное сообщение не исчезает длительное время, посмотрите <a href=\"%s\">этот FAQ с информацией о возможном решении проблемы (на английском)</a>.",
"+++ no paste text +++": "+++ в записи нет текста +++", "+++ no 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.":
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Для продробностей <a href=\"%s\">прочтите информацию в FAQ</a>.", "Данный сайт использует незащищенное HTTP подключение! Пожалуйста используйте его только для тестирования.",
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Ваш браузер требует использования HTTPS подключения для поддержки WebCrypto API. Попробуйте <a href=\"%s\">переключиться на HTTPS</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.":
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Ваш браузер не поддерживает WebAssembly используемый для сжатия с помощью zlib. Вы можете создавать новые записи без сжатия, но не сможете открыть записи с сжатием.", "Для продробностей <a href=\"%s\">прочтите информацию в FAQ</a>.",
"waiting on user to provide a password": "ожидаем ввода пароля пользователем", "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.":
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Не удалось расшифровать данные. Может быть вы ввели не верный пароль? Попробуйте снова с помощью кнопки вверху.", "Ваш браузер требует использования HTTPS подключения для поддержки WebCrypto API. Попробуйте <a href=\"%s\">переключиться на HTTPS</a>.",
"Retry": "Повторить", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.":
"Showing raw text…": "Показываем исходный текст…", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.",
"Notice:": "Уведомление:", "waiting on user to provide a password":
"This link will expire after %s.": "Срок жизни ссылки истечет через %s.", "waiting on user to provide a password",
"This link can only be accessed once, do not use back or refresh button in your browser.": "Данная ссылка доступна только один раз, не нажимайте кнопку назад или обновления страницы в вашем браузере.", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.":
"Link:": "Ссылка:", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.",
"Recipient may become aware of your timezone, convert time to UTC?": "Получатель узнает ваш часовой пояс, сконвертировать время в UTC?", "Retry":
"Use Current Timezone": "Использовать текущий часовой пояс", "Retry",
"Convert To UTC": "Конвертировать в UTC", "Showing raw text…":
"Close": "Закрыть", "Showing raw text…",
"Encrypted note on %s": "Зашифрованная запись на %s", "Notice:":
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Посетите эту ссылку чтобы просмотреть запись. Передача ссылки кому либо позволит им получить доступ к записи тоже.", "Notice:",
"URL shortener may expose your decrypt key in URL.": "Сервис сокращения ссылок может получить ваш ключ расшифровки из ссылки.", "This link will expire after %s.":
"Save paste": "Сохранить запись", "This link will expire after %s.",
"Your IP is not authorized to create pastes.": "Вашему IP адресу не разрешено создавать записи.", "This link can only be accessed once, do not use back or refresh button in your browser.":
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", "This link can only be accessed once, do not use back or refresh button in your browser.",
"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\".", "Link:":
"Error parsing YOURLS response.": "Error parsing YOURLS response." "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"
} }

View File

@@ -1,193 +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 je minimalistický, open source online pastebin, kde server nemá žiadne znalosti o vložených údajoch. Údaje sú šifrované/dešifrované %sv prehliadači%s pomocou 256-bitového AES.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Viac informácií na <a href=\"https://privatebin.info/\">stránke projektu</a>.",
"Because ignorance is bliss": "Pretože nevedomosť je sladká",
"en": "sk",
"Paste does not exist, has expired or has been deleted.": "Vložený text neexistuje, jeho platnosť vypršala alebo bol vymazaný.",
"%s requires php %s or above to work. Sorry.": "%s vyžaduje php %s alebo vyššie. Prepáčte.",
"%s requires configuration section [%s] to be present in configuration file.": "%s vyžaduje, aby bola v konfiguračnom súbore prítomná sekcia [%s].",
"Please wait %d seconds between each post.": [
"Počet sekúnd do ďalšieho príspevku: %d",
"Počet sekúnd do ďalšieho príspevku: %d",
"Počet sekúnd do ďalšieho príspevku: %d",
"Počet sekúnd do ďalšieho príspevku: %d"
],
"Paste is limited to %s of encrypted data.": "Príspevok je obmedzený na %s zašifrovaných údajov.",
"Invalid data.": "Neplatné údaje.",
"You are unlucky. Try again.": "Ľutujem. Skúste to znova.",
"Error saving comment. Sorry.": "Pri ukladaní komentára sa vyskytla chyba.",
"Error saving paste. Sorry.": "Pri ukladaní príspevku sa vyskytla chyba.",
"Invalid paste ID.": "Chybne vložené ID.",
"Paste is not of burn-after-reading type.": "Príspevok nieje nastavený na zmazanie po prečítaní.",
"Wrong deletion token. Paste was not deleted.": "Nesprávny token odstránenia. Príspevok nebol odstránený.",
"Paste was properly deleted.": "Príspevok bol správne vymazaný.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Na fungovanie %s je potrebný JavaScript. Ospravedlňujeme sa za nepríjemnosti.",
"%s requires a modern browser to work.": "%s vyžaduje na fungovanie moderný prehliadač.",
"New": "Nový",
"Send": "Odoslať",
"Clone": "Klonovať",
"Raw text": "Surový text",
"Expires": "Expirácia",
"Burn after reading": "Po prečítaní zmazať",
"Open discussion": "Povoliť komentáre",
"Password (recommended)": "Heslo (doporučené)",
"Discussion": "Komentáre",
"Toggle navigation": "Prepnúť navigáciu",
"%d seconds": [
"%d sekunda",
"%d sekundy",
"%d sekúnd",
"%d sekúnd"
],
"%d minutes": [
"%d minúta",
"%d minúty",
"%d minút",
"%d minút"
],
"%d hours": [
"%d hodina",
"%d hodiny",
"%d hodín",
"%d hodín"
],
"%d days": [
"%d deň",
"%d dni",
"%d dní",
"%d dní"
],
"%d weeks": [
"%d týždeň",
"%d týždne",
"%d týždňov",
"%d týždňov"
],
"%d months": [
"%d mesiac",
"%d mesiace",
"%d mesiacov",
"%d mesiacov"
],
"%d years": [
"%d rok",
"%d roky",
"%d rokov",
"%d rokov"
],
"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 testovacia služba: Údaje môžu byť kedykoľvek vymazané. Pri zneužití tejto služby zomrú mačiatka.",
"This document will expire in %d seconds.": [
"Platnosť tohto dokumentu vyprší o %d sekundu.",
"Platnosť tohto dokumentu vyprší o %d sekundy.",
"Platnosť tohto dokumentu vyprší o %d sekúnd.",
"Platnosť tohto dokumentu vyprší o %d sekúnd."
],
"This document will expire in %d minutes.": [
"Platnosť tohto dokumentu vyprší o %d minútu.",
"Platnosť tohto dokumentu vyprší o %d minúty.",
"Platnosť tohto dokumentu vyprší o %d minút.",
"Platnosť tohto dokumentu vyprší o %d minút."
],
"This document will expire in %d hours.": [
"Platnosť tohto dokumentu vyprší o %d hodinu.",
"Platnosť tohto dokumentu vyprší o %d hodiny.",
"Platnosť tohto dokumentu vyprší o %d hodín.",
"Platnosť tohto dokumentu vyprší o %d hodín."
],
"This document will expire in %d days.": [
"Platnosť tohto dokumentu vyprší o %d deň.",
"Platnosť tohto dokumentu vyprší o %d dni.",
"Platnosť tohto dokumentu vyprší o %d dní.",
"Platnosť tohto dokumentu vyprší o %d dní."
],
"This document will expire in %d months.": [
"Platnosť tohto dokumentu vyprší o %d mesiac.",
"Platnosť tohto dokumentu vyprší o %d mesiace.",
"Platnosť tohto dokumentu vyprší o %d mesiacov.",
"Platnosť tohto dokumentu vyprší o %d mesiacov."
],
"Please enter the password for this paste:": "Zadajte prosím heslo:",
"Could not decrypt data (Wrong key?)": "Nepodarilo sa dešifrovať údaje (nesprávny kľúč?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Nepodarilo sa odstrániť príspevok, nebol uložený v režime zmazania po prečítaní.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "IBA PRE VAŠE OČI. Toto okno nezatvárajte, táto správa sa nedá znova zobraziť.",
"Could not decrypt comment; Wrong key?": "Nepodarilo sa dešifrovať komentár. Nesprávny kľúč?",
"Reply": "Odpovedať",
"Anonymous": "Anonymný",
"Avatar generated from IP address": "Avatar vygenerovaný z IP adresy",
"Add comment": "Pridať komentár",
"Optional nickname…": "Voliteľná prezývka…",
"Post comment": "Odoslať komentár",
"Sending comment…": "Odosielanie komentára…",
"Comment posted.": "Komentár odoslaný.",
"Could not refresh display: %s": "Nepodarilo sa obnoviť zobrazenie: %s",
"unknown status": "neznámy stav",
"server error or not responding": "chyba servera alebo server neodpovedá",
"Could not post comment: %s": "Nepodarilo sa pridať komentár: %s",
"Sending paste…": "Odosiela sa príspevok…",
"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",
"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?)",
"B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"Format": "Formát",
"Plain Text": "Čistý text",
"Source Code": "Zdrojový kód",
"Markdown": "Markdown",
"Download attachment": "Stiahnuť prílohu",
"Cloned: '%s'": "Naklonované: '%s'",
"The cloned file '%s' was attached to this paste.": "K tomuto príspevku bol pripojený klonovaný súbor '%s'.",
"Attach a file": "Priložiť súbor",
"alternatively drag & drop a file or paste an image from the clipboard": "prípadne presuňte súbor myšou alebo vložte obrázok zo schránky",
"File too large, to display a preview. Please download the attachment.": "Súbor je príliš veľký na zobrazenie ukážky. Stiahnite si prosím prílohu.",
"Remove attachment": "Odstrániť prílohu",
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Váš prehliadač nepodporuje nahrávanie šifrovaných súborov. Použite prosím novší prehliadač.",
"Invalid attachment.": "Neplatná príloha.",
"Options": "Možnosti",
"Shorten URL": "Skrátiť URL",
"Editor": "Editor",
"Preview": "Náhľad",
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s vyžaduje, aby PATH končila na \"%s\". Aktualizujte prosím PATH vo svojom index.php.",
"Decrypt": "Dešifrovať",
"Enter password": "Zadajte heslo",
"Loading…": "Načítava sa…",
"Decrypting paste…": "Dešifrovanie príspevku…",
"Preparing new paste…": "Príprava nového príspevku…",
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "V prípade, že táto správa nezmizne, pozrite si <a href=\"%s\">tieto často kladené otázky, kde nájdete informácie na riešenie problémov</a>.",
"+++ no paste text +++": "+++ žiadny vložený text +++",
"Could not get paste data: %s": "Nepodarilo sa načítať údaje príspevku: %s",
"QR code": "QR kód",
"This website is using an insecure HTTP connection! Please use it only for testing.": "Táto webová stránka používa nezabezpečené pripojenie HTTP! Používajte ju len na testovanie.",
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Pre viac informácií si pozrite <a href=\"%s\">tento záznam FAQ</a>.",
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Váš prehliadač môže na podporu rozhrania WebCrypto API vyžadovať pripojenie HTTPS. Skúste <a href=\"%s\">prepnúť 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áš prehliadač nepodporuje WebAssembly, ktorý sa používa na kompresiu zlib. Môžete vytvárať nekomprimované dokumenty, ale nemôžete čítať komprimované.",
"waiting on user to provide a password": "čakám na zadanie hesla",
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Údaje sa nepodarilo dešifrovať. Zadali ste nesprávne heslo? Skúste to znova pomocou tlačidla v hornej časti.",
"Retry": "Opakovať",
"Showing raw text…": "Zobrazuje sa surový text…",
"Notice:": "Upozornenie:",
"This link will expire after %s.": "Platnosť odkazu vyprší za %s.",
"This link can only be accessed once, do not use back or refresh button in your browser.": "Tento odkaz je prístupný iba raz, nepoužívajte v prehliadači tlačidlo Späť ani Obnoviť.",
"Link:": "Odkaz:",
"Recipient may become aware of your timezone, convert time to UTC?": "Príjemca sa môže dozvedieť o vašom časovom pásme, previesť čas na UTC?",
"Use Current Timezone": "Použiť aktuálne časové pásmo",
"Convert To UTC": "Previesť na UTC",
"Close": "Zavrieť",
"Encrypted note on %s": "Zašifrovaná poznámka na %s",
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Ak chcete zobraziť poznámku, navštívte tento odkaz. Poskytnutie adresy URL komukoľvek im umožní prístup aj k poznámke.",
"URL shortener may expose your decrypt key in URL.": "Skracovač adries URL môže odhaliť váš dešifrovací kľúč v adrese URL.",
"Save paste": "Uložiť príspevok",
"Your IP is not authorized to create pastes.": "Vaša IP adresa nie je oprávnená vytvárať príspevky.",
"Trying to shorten a URL that isn't pointing at our instance.": "Pokúšate sa skrátiť adresu URL, ktorá neukazuje na túto inštanciu.",
"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."
}

View File

@@ -1,135 +1,125 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s je minimalističen, odprtokodni spletni 'pastebin', kjer server ne ve ničesar o prilepljenih podatkih. Podatki so zakodirani/odkodirani %sv brskalniku%s z uporabo 256 bitnega AES.", "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> 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>.": "Več informacij na <a href=\"https://privatebin.info/\">spletni strani projekta.</a>.", "%s je minimalističen, odprtokodni spletni 'pastebin', kjer server ne ve ničesar o prilepljenih podatkih. Podatki so zakodirani/odkodirani <i>v brskalniku</i> z uporabo 256 bitnega AES. Več informacij na <a href=\"https://privatebin.info/\">spletni strani projekta.</a>.",
"Because ignorance is bliss": "Ker kar ne veš ne boli.", "Because ignorance is bliss":
"Ker kar ne veš ne boli.",
"en": "sl", "en": "sl",
"Paste does not exist, has expired or has been deleted.": "Prilepek ne obstaja, mu je potekla življenjska doba, ali pa je izbrisan.", "Paste does not exist, has expired or has been deleted.":
"%s requires php %s or above to work. Sorry.": "Oprosti, %s za delovanje potrebuje vsaj php %s.", "Prilepek ne obstaja, mu je potekla življenjska doba, ali pa je izbrisan.",
"%s requires configuration section [%s] to be present in configuration file.": "%s potrebuje sekcijo konfiguracij [%s] v konfiguracijski datoteki.", "%s requires php %s or above to work. Sorry.":
"Please wait %d seconds between each post.": [ "Oprosti, %s za delovanje potrebuje vsaj php %s.",
"Prosim počakaj vsaj %d sekundo pred vsako naslednjo objavo.", "%s requires configuration section [%s] to be present in configuration file.":
"Prosim počakaj vsaj %d sekundi pred vsako naslednjo objavo.", "%s potrebuje sekcijo konfiguracij [%s] v konfiguracijski datoteki.",
"Prosim počakaj vsaj %d sekunde pred vsako naslednjo objavo.", "Please wait %d seconds between each post.":
"Prosim počakaj vsaj %d sekund pred vsako naslednjo objavo." "Prosim počakaj vsaj %d sekund pred vsako naslednjo objavo.",
], "Paste is limited to %s of encrypted data.":
"Paste is limited to %s of encrypted data.": "Velikost prilepka je omejena na %s zakodiranih podatkov.", "Velikost prilepka je omejena na %s zakodiranih podatkov.",
"Invalid data.": "Neveljavni podatki.", "Invalid data.":
"You are unlucky. Try again.": "Nimaš sreče, poskusi ponovno.", "Neveljavni podatki.",
"Error saving comment. Sorry.": "Nekaj je šlo narobe pri shranjevanju komentarja. Oprosti.", "You are unlucky. Try again.":
"Error saving paste. Sorry.": "Nekaj je šlo narobe pri shranjevanju prilepka. Oprosti.", "Nimaš sreče, poskusi ponovno.",
"Invalid paste ID.": "Napačen ID prilepka.", "Error saving comment. Sorry.":
"Paste is not of burn-after-reading type.": "Prilepek ni tipa zažgi-po-branju.", "Nekaj je šlo narobe pri shranjevanju komentarja. Oprosti.",
"Wrong deletion token. Paste was not deleted.": "Napačen token za izbris. Prilepek ni bil izbrisan..", "Error saving paste. Sorry.":
"Paste was properly deleted.": "Prilepek je uspešno izbrisan.", "Nekaj je šlo narobe pri shranjevanju prilepka. Oprosti.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Da %s deluje, moraš vklopiti JavaScript. Oprosti za povročene nevšečnosti.", "Invalid paste ID.":
"%s requires a modern browser to work.": "%s za svoje delovanje potrebuje moderen brskalnik.", "Napačen ID prilepka.",
"New": "Nov prilepek", "Paste is not of burn-after-reading type.":
"Send": "Pošlji", "Prilepek ni tipa zažgi-po-branju.",
"Clone": "Kloniraj", "Wrong deletion token. Paste was not deleted.":
"Raw text": "Surov tekst", "Napačen token za izbris. Prilepek ni bil izbrisan..",
"Expires": "Poteče", "Paste was properly deleted.":
"Burn after reading": "Zažgi (pobriši) po branju", "Prilepek je uspešno izbrisan.",
"Open discussion": "Dovoli razpravo", "JavaScript is required for %s to work. Sorry for the inconvenience.":
"Password (recommended)": "Geslo (priporočeno)", "Da %s deluje, moraš vklopiti JavaScript. Oprosti za povročene nevšečnosti.",
"Discussion": "Razprava", "%s requires a modern browser to work.":
"Toggle navigation": "Preklopi navigacijo", "%s za svoje delovanje potrebuje moderen brskalnik.",
"%d seconds": [ "New":
"%d sekunda", "Nov prilepek",
"%d sekundi", "Send":
"%d sekunde", "Pošlji",
"%d sekund" "Clone":
], "Kloniraj",
"%d minutes": [ "Raw text":
"%d minuta", "Surov tekst",
"%d minuti", "Expires":
"%d minute", "Poteče",
"%d minut" "Burn after reading":
], "Zažgi (pobriši) po branju",
"%d hours": [ "Open discussion":
"%d ura", "Dovoli razpravo",
"%d uri", "Password (recommended)":
"%d ure", "Geslo (priporočeno)",
"%d ur" "Discussion":
], "Razprava",
"%d days": [ "Toggle navigation":
"%d dan", "Preklopi navigacijo",
"%d dneva", "%d seconds": ["%d sekunda", "%d sekundi", "%d sekunde", "%d sekund"],
"%d dnevi", "%d minutes": ["%d minuta", "%d minuti", "%d minute", "%d minut"],
"%d dni" "%d hours": ["%d ura", "%d uri", "%d ure", "%d ur"],
], "%d days": ["%d dan", "%d dneva", "%d dnevi", "%d dni"],
"%d weeks": [ "%d weeks": ["%d teden", "%d tedna", "%d tedni", "%d tednov"],
"%d teden", "%d months": ["%d mesec", "%d meseca", "%d meseci", "%d mesecev"],
"%d tedna", "%d years": ["%d leto", "%d leti", "%d leta", "%d let"],
"%d tedni", "Never":
"%d tednov" "Nikoli",
], "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
"%d months": [ "Ne pozabi: To je testna storitev: Podatki so lahko kadarkoli pobrisani. Mucki bodo umrli, če boš zlorabljala to storitev.",
"%d mesec", "This document will expire in %d seconds.":
"%d meseca", ["Ta dokument bo potekel čez %d sekundo.", "Ta dokument bo potekel čez %d sekundi.", "Ta dokument bo potekel čez %d sekunde.", "Ta dokument bo potekel čez %d sekund."],
"%d meseci", "This document will expire in %d minutes.":
"%d mesecev" ["Ta dokument bo potekel čez %d minuto.", "Ta dokument bo potekel čez %d minuti.", "Ta dokument bo potekel čez %d minute.", "Ta dokument bo potekel čez %d minut."],
], "This document will expire in %d hours.":
"%d years": [ ["Ta dokument bo potekel čez %d uro.", "Ta dokument bo potekel čez %d uri.", "Ta dokument bo potekel čez %d ure.", "Ta dokument bo potekel čez %d ur."],
"%d leto", "This document will expire in %d days.":
"%d leti", ["Ta dokument bo potekel čez %d dan.", "Ta dokument bo potekel čez %d dni.", "Ta dokument bo potekel čez %d dni.", "Ta dokument bo potekel čez %d dni."],
"%d leta", "This document will expire in %d months.":
"%d let" ["Ta dokument bo potekel čez %d mesec.", "Ta dokument bo potekel čez %d meseca.", "Ta dokument bo potekel čez %d mesece.", "Ta dokument bo potekel čez %d mesecev."],
], "Please enter the password for this paste:":
"Never": "Nikoli", "Prosim vnesi geslo tega prilepka:",
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Ne pozabi: To je testna storitev: Podatki so lahko kadarkoli pobrisani. Mucki bodo umrli, če boš zlorabljala to storitev.", "Could not decrypt data (Wrong key?)":
"This document will expire in %d seconds.": [ "Nemogoče odkodirati podakte (Imaš napačen ključ?)",
"Ta dokument bo potekel čez %d sekundo.", "Could not delete the paste, it was not stored in burn after reading mode.":
"Ta dokument bo potekel čez %d sekundi.", "Prilepek je nemogoče izbrisati, ni bil shranjen v načinu \"zažgi po branju\".",
"Ta dokument bo potekel čez %d sekunde.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
"Ta dokument bo potekel čez %d sekund." "SAMO ZA TVOJE OČI. Ne zapri tega okna (zavihka), to sporočilo ne bo prikazano nikoli več.",
], "Could not decrypt comment; Wrong key?":
"This document will expire in %d minutes.": [ "Ne morem odkodirati komentarja: Imaš napačen ključ?",
"Ta dokument bo potekel čez %d minuto.", "Reply":
"Ta dokument bo potekel čez %d minuti.", "Odgovori",
"Ta dokument bo potekel čez %d minute.", "Anonymous":
"Ta dokument bo potekel čez %d minut." "Aninomno",
], "Avatar generated from IP address":
"This document will expire in %d hours.": [ "Anonimen avatar (Vizhash IP naslova)",
"Ta dokument bo potekel čez %d uro.", "Add comment":
"Ta dokument bo potekel čez %d uri.", "Dodaj komentar",
"Ta dokument bo potekel čez %d ure.", "Optional nickname…":
"Ta dokument bo potekel čez %d ur." "Uporabniško ime (lahko izpustiš)",
], "Post comment":
"This document will expire in %d days.": [ "Objavi komentar",
"Ta dokument bo potekel čez %d dan.", "Sending comment…":
"Ta dokument bo potekel čez %d dni.", "Pošiljam komentar …",
"Ta dokument bo potekel čez %d dni.", "Comment posted.":
"Ta dokument bo potekel čez %d dni." "Komentar poslan.",
], "Could not refresh display: %s":
"This document will expire in %d months.": [ "Ne morem osvežiti zaslona : %s",
"Ta dokument bo potekel čez %d mesec.", "unknown status":
"Ta dokument bo potekel čez %d meseca.", "neznan status",
"Ta dokument bo potekel čez %d mesece.", "server error or not responding":
"Ta dokument bo potekel čez %d mesecev." "napaka na strežniku, ali pa se strežnik ne odziva",
], "Could not post comment: %s":
"Please enter the password for this paste:": "Prosim vnesi geslo tega prilepka:", "Komentarja ni bilo mogoče objaviti : %s",
"Could not decrypt data (Wrong key?)": "Nemogoče odkodirati podakte (Imaš napačen ključ?)", "Sending paste…":
"Could not delete the paste, it was not stored in burn after reading mode.": "Prilepek je nemogoče izbrisati, ni bil shranjen v načinu \"zažgi po branju\".", "Pošiljam prilepek…",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "SAMO ZA TVOJE OČI. Ne zapri tega okna (zavihka), to sporočilo ne bo prikazano nikoli več.", "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
"Could not decrypt comment; Wrong key?": "Ne morem odkodirati komentarja: Imaš napačen ključ?", "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>",
"Reply": "Odgovori", "Delete data":
"Anonymous": "Aninomno", "Izbriši podatke",
"Avatar generated from IP address": "Anonimen avatar (Vizhash IP naslova)", "Could not create paste: %s":
"Add comment": "Dodaj komentar", "Ne morem ustvariti prilepka: %s",
"Optional nickname…": "Uporabniško ime (lahko izpustiš)", "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
"Post comment": "Objavi komentar", "Ne morem odkodirati prilepka: V URL-ju manjka ključ (A si uporabil krajšalnik URL-jev, ki odstrani del URL-ja?)",
"Sending comment…": "Pošiljam komentar …",
"Comment posted.": "Komentar poslan.",
"Could not refresh display: %s": "Ne morem osvežiti zaslona : %s",
"unknown status": "neznan status",
"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",
"Sending paste…": "Pošiljam prilepek…",
"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",
"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?)",
"B": "o", "B": "o",
"KiB": "KB", "KiB": "KB",
"MiB": "MB", "MiB": "MB",
@@ -150,44 +140,58 @@
"alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard", "alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard",
"File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.", "File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.",
"Remove attachment": "Odstrani priponko", "Remove attachment": "Odstrani priponko",
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Tvoj brskalnik ne omogoča nalaganje zakodiranih datotek. Prosim uporabi novejši brskalnik.", "Your browser does not support uploading encrypted files. Please use a newer browser.":
"Tvoj brskalnik ne omogoča nalaganje zakodiranih datotek. Prosim uporabi novejši brskalnik.",
"Invalid attachment.": "Neveljavna priponka.", "Invalid attachment.": "Neveljavna priponka.",
"Options": "Možnosti", "Options": "Možnosti",
"Shorten URL": "Skrajšajte URL", "Shorten URL": "Skrajšajte URL",
"Editor": "Uredi", "Editor": "Uredi",
"Preview": "Predogled", "Preview": "Predogled",
"%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.", "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.":
"Decrypt": "Decrypt", "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.",
"Enter password": "Prosim vnesi geslo", "Decrypt":
"Decrypt",
"Enter password":
"Prosim vnesi geslo",
"Loading…": "Loading…", "Loading…": "Loading…",
"Decrypting paste…": "Decrypting paste…", "Decrypting paste…": "Decrypting paste…",
"Preparing new paste…": "Preparing new 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> (in English).", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.":
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a> (in English).",
"+++ no paste text +++": "+++ no paste text +++", "+++ no paste text +++": "+++ no paste text +++",
"Could not get paste data: %s": "Could not get paste data: %s", "Could not get paste data: %s":
"Could not get paste data: %s",
"QR code": "QR code", "QR code": "QR code",
"This website is using an insecure HTTP connection! Please use it only for testing.": "This website is using an insecure HTTP connection! Please use it only for testing.", "This website is using an insecure HTTP connection! Please use it only for testing.":
"For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.", "This website is using an insecure HTTP connection! Please use it only for testing.",
"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>.", "For more information <a href=\"%s\">see this FAQ entry</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.", "For more information <a href=\"%s\">see this FAQ entry</a>.",
"waiting on user to provide a password": "waiting on user to provide a password", "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.":
"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.", "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.",
"Retry": "Retry", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.":
"Showing raw text…": "Showing raw text…", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.",
"Notice:": "Notice:", "waiting on user to provide a password":
"This link will expire after %s.": "This link will expire after %s.", "waiting on user to provide a password",
"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.", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.":
"Link:": "Link:", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.",
"Recipient may become aware of your timezone, convert time to UTC?": "Recipient may become aware of your timezone, convert time to UTC?", "Retry":
"Use Current Timezone": "Use Current Timezone", "Retry",
"Convert To UTC": "Convert To UTC", "Showing raw text…":
"Close": "Close", "Showing raw text…",
"Encrypted note on %s": "Encrypted note on %s", "Notice:":
"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.", "Notice:",
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.", "This link will expire after %s.":
"Save paste": "Save paste", "This link will expire after %s.",
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.", "This link can only be accessed once, do not use back or refresh button in your browser.":
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", "This link can only be accessed once, do not use back or refresh button in your browser.",
"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\".", "Link:":
"Error parsing YOURLS response.": "Error parsing YOURLS response." "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"
} }

View File

@@ -1,193 +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",
"en": "sv",
"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)"
],
"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",
"Send": "Send",
"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 minutes": [
"%d minute (singular)",
"%d minutes (1st plural)",
"%d minutes (2nd plural)",
"%d minutes (3rd plural)"
],
"%d hours": [
"%d hour (singular)",
"%d hours (1st plural)",
"%d hours (2nd plural)",
"%d hours (3rd plural)"
],
"%d days": [
"%d day (singular)",
"%d days (1st plural)",
"%d days (2nd plural)",
"%d days (3rd plural)"
],
"%d weeks": [
"%d week (singular)",
"%d weeks (1st plural)",
"%d weeks (2nd plural)",
"%d weeks (3rd plural)"
],
"%d months": [
"%d month (singular)",
"%d months (1st plural)",
"%d months (2nd plural)",
"%d months (3rd plural)"
],
"%d years": [
"%d year (singular)",
"%d years (1st plural)",
"%d years (2nd plural)",
"%d years (3rd 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 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 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 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 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)"
],
"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 [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",
"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."
}

View File

@@ -1,193 +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 sunucunun burada paylaştığınız veriyi görmediği, minimal, açık kaynak bir pastebindir. Veriler tarayıcıda 256 bit AES kullanılarak şifrelenir/çözülür.",
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Daha fazla bilgi için <a href=\"https://privatebin.info/\">proje sayfası</a>'na göz atabilirsiniz.",
"Because ignorance is bliss": "Çünkü, cehalet mutluluktur",
"en": "tr",
"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 veya daha üstünü gerektirir.",
"%s requires configuration section [%s] to be present in configuration file.": "%s konfigürasyon bölümünün [%s] bulunmasını gerektir.",
"Please wait %d seconds between each post.": [
"Lütfen paylaşımlar arasında %d saniye bekleyiniz.",
"Lütfen paylaşımlar arasında %d saniye bekleyiniz.",
"Lütfen paylaşımlar arasında %d saniye bekleyiniz.",
"Lütfen paylaşımlar arasında %d saniye bekleyiniz."
],
"Paste is limited to %s of encrypted data.": "Yazılar %s şifreli veriyle sınırlıdır.",
"Invalid data.": "Geçersiz veri.",
"You are unlucky. Try again.": "Lütfen tekrar deneyiniz.",
"Error saving comment. Sorry.": "Yorum kaydedilemedi.",
"Error saving paste. Sorry.": "Yazı kaydedilemedi. Üzgünüz.",
"Invalid paste ID.": "Geçersiz yazı ID'si.",
"Paste is not of burn-after-reading type.": "Yazı okunduğunda silinmeyecek şekilde ayarlanmış.",
"Wrong deletion token. Paste was not deleted.": "Yanlış silme anahtarı. Yazı silinemedi.",
"Paste was properly deleted.": "Yazı başarıyla silindi.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript %s 'in çalışması için gereklidir. Rahatsızlıktan dolayı özür dileriz.",
"%s requires a modern browser to work.": "%s çalışmak için çağdaş bir tarayıcı gerektirir.",
"New": "Yeni",
"Send": "Gönder",
"Clone": "Kopyala",
"Raw text": "Açık yazı",
"Expires": "Süre Sonu",
"Burn after reading": "Okuduktan sonra sil",
"Open discussion": "Açık Tartışmalar",
"Password (recommended)": "Şifre (önerilir)",
"Discussion": "Tartışma",
"Toggle navigation": "Gezinmeyi değiştir",
"%d seconds": [
"%d saniye",
"%d saniye",
"%d saniye",
"%d saniye"
],
"%d minutes": [
"%d dakika",
"%d dakika",
"%d dakika",
"%d dakika"
],
"%d hours": [
"%d saat",
"%d saat",
"%d saat",
"%d saat"
],
"%d days": [
"%d gün",
"%d gün",
"%d gün",
"%d gün"
],
"%d weeks": [
"%d hafta",
"%d haftalar",
"%d hafta",
"%d hafta"
],
"%d months": [
"%d ay",
"%d ay",
"%d ay",
"%d ay"
],
"%d years": [
"%d yıl",
"%d yıl",
"%d yıl",
"%d yıl"
],
"Never": "Asla",
"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.": [
"Bu belge %d saniyede silinecektir.",
"Bu belge %d saniyede silinecektir.",
"Bu belge %d saniyede silinecektir.",
"Bu belge %d saniyede silinecektir."
],
"This document will expire in %d minutes.": [
"Bu belge %d dakikada silinecektir.",
"Bu belge %d dakikada silinecektir.",
"Bu belge %d dakikada silinecektir.",
"Bu belge %d dakikada silinecektir."
],
"This document will expire in %d hours.": [
"Bu belge %d saatte silinecektir.",
"Bu belge %d saatte silinecektir.",
"Bu belge %d saatte silinecektir.",
"Bu belge %d saatte silinecektir."
],
"This document will expire in %d days.": [
"Bu belge %d günde silinecektir.",
"Bu belge %d günde silinecektir.",
"Bu belge %d günde silinecektir.",
"Bu belge %d günde silinecektir."
],
"This document will expire in %d months.": [
"Bu belge %d ayda silinecektir.",
"Bu belge %d ayda silinecektir.",
"Bu belge %d ayda silinecektir.",
"Bu belge %d ayda silinecektir."
],
"Please enter the password for this paste:": "Lütfen bu yazı için şifrenizi girin:",
"Could not decrypt data (Wrong key?)": "Şifre çözülemedi (Yanlış anahtar mı kullandınız?)",
"Could not delete the paste, it was not stored in burn after reading mode.": "Yazı silinemedi, okunduktan sonra silinmek için ayarlanmadı.",
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "BU DOSYAYI SADECE SİZ GÖRÜNTÜLEYEBİLİRSİNİZ. Bu pencereyi kapatmayın, yazıyı tekrar görüntüleyemeyeceksiniz.",
"Could not decrypt comment; Wrong key?": "Dosya şifresi çözülemedi, doğru anahtarı girdiğinizden emin misiniz?",
"Reply": "Cevapla",
"Anonymous": "Anonim",
"Avatar generated from IP address": "IP adresinden oluşturulmuş avatar",
"Add comment": "Yorum ekle",
"Optional nickname…": "İsteğe bağlı takma isim…",
"Post comment": "Yorumu gönder",
"Sending comment…": "Yorum gönderiliyor…",
"Comment posted.": "Yorum gönderildi.",
"Could not refresh display: %s": "Görüntü yenilenemedi: %s",
"unknown status": "bilinmeyen durum",
"server error or not responding": "sunucu hatası veya yanıt vermiyor",
"Could not post comment: %s": "Yorum paylaşılamadı: %s",
"Sending paste…": "Yazı gönderiliyor…",
"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",
"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.)",
"B": "B",
"KiB": "KiB",
"MiB": "MiB",
"GiB": "GiB",
"TiB": "TiB",
"PiB": "PiB",
"EiB": "EiB",
"ZiB": "ZiB",
"YiB": "YiB",
"Format": "Format",
"Plain Text": "Düz Yazı",
"Source Code": "Kaynak Kodu",
"Markdown": "Markdown",
"Download attachment": "Eki indir",
"Cloned: '%s'": "Klonlandı: '%s'",
"The cloned file '%s' was attached to this paste.": "Klonlanmış dosya '%s' bu yazıya eklendi.",
"Attach a file": "Dosya ekle",
"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.",
"Remove attachment": "Eki sil",
"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.",
"Options": "Seçenekler",
"Shorten URL": "URL kısaltma",
"Editor": "Düzenleyici",
"Preview": "Ön izleme",
"%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",
"Enter password": "Şifreyi girin",
"Loading…": "Yükleniyor…",
"Decrypting paste…": "Yazı şifresi çözülü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>.": "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": "Yazı verisi alınamıyor: %s",
"QR code": "QR kodu",
"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.": "Dosya şifresi çözülemedi, doğru şifreyi kullandığınıza emin misiniz? Üstteki buton ile tekrar deneyin.",
"Retry": "Yeniden Dene",
"Showing raw text…": "Açık yazı gösteriliyor…",
"Notice:": "Bildirim:",
"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ı sadece bir kere erişilebilir, lütfen sayfayı yenilemeyiniz.",
"Link:": "Bağlantı:",
"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": "Şuanki zaman dilimini kullan",
"Convert To UTC": "UTC zaman dilimine çevir",
"Close": "Kapat",
"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 et. Bağlantıya sahip olan birisi notu görebilir.",
"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",
"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.": "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."
}

View File

@@ -1,135 +1,125 @@
{ {
"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 <i>in the browser</i> 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>.": "Подробиці можна дізнатися на <a href=\"https://privatebin.info/\">сайті проєкту</a>.", "%s це мінімалістичний Open Source проєкт для створення нотаток, де сервер не знає нічого про дані, що зберігаються. Дані шифруються/розшифровуються <i>у переглядачі</i> з використанням 256-бітного шифрувания AES. Подробиці можна дізнатися на <a href=\"https://privatebin.info/\">сайті проєкту</a>.",
"Because ignorance is bliss": "Бо незнання - благо", "Because ignorance is bliss":
"Бо незнання - благо",
"en": "uk", "en": "uk",
"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 configuration section [%s] to be present in configuration file.": "%s потрібна секція [%s] в конфігураційному файлі.", "%s requires php %s or above to work. Sorry.":
"Please wait %d seconds between each post.": [ "Для роботи %s потрібен php %s и вище. Вибачте.",
"Будь ласка, зачекайте %d секунду між створеннями.", "%s requires configuration section [%s] to be present in configuration file.":
"Будь ласка, зачекайте %d секунди між створеннями.", "%s потрібна секція [%s] в конфігураційному файлі.",
"Будь ласка, зачекайте %d секунд між створеннями.", "Please wait %d seconds between each post.":
"Будь ласка, зачекайте %d секунд між створеннями." ["Будь ласка, зачекайте %d секунду між дописами.", "Будь ласка, зачекайте %d секунди між дописами.", "Будь ласка, зачекайте %d секунд між дописами."],
], "Paste is limited to %s of encrypted data.":
"Paste is limited to %s of encrypted data.": "Розмір допису обмежений %s зашифрованих даних.", "Розмір допису обмежений %s зашифрованих даних.",
"Invalid data.": "Неправильні дані.", "Invalid data.":
"You are unlucky. Try again.": "Вам не пощастило. Спробуйте ще раз.", "Неправильні дані.",
"Error saving comment. Sorry.": "Помилка при збереженні коментаря. Вибачте.", "You are unlucky. Try again.":
"Error saving paste. Sorry.": "Помилка при збереженні допису. Вибачте.", "Вам не пощастило. Спробуйте ще раз.",
"Invalid paste ID.": "Неправильний ID допису.", "Error saving comment. Sorry.":
"Paste is not of burn-after-reading type.": "Тип допису не \"Знищити після прочитання\".", "Помилка при збереженні коментаря. Вибачте.",
"Wrong deletion token. Paste was not deleted.": "Неправильний ключ вилучення допису. Допис не вилучено.", "Error saving paste. Sorry.":
"Paste was properly deleted.": "Допис був вилучений повністю.", "Помилка при збереженні допису. Вибачте.",
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Для роботи %s потрібен увімкнутий JavaScript. Вибачте.", "Invalid paste ID.":
"%s requires a modern browser to work.": "Для роботи %s потрібен більш сучасний переглядач.", "Неправильний ID допису.",
"New": "Новий допис", "Paste is not of burn-after-reading type.":
"Send": "Відправити", "Тип допису не \"Знищити після прочитання\".",
"Clone": "Дублювати", "Wrong deletion token. Paste was not deleted.":
"Raw text": "Початковий текст", "Неправильний ключ вилучення допису. Допис не вилучено.",
"Expires": "Вилучити через", "Paste was properly deleted.":
"Burn after reading": "Знищити після прочитання", "Допис був вилучений повністю.",
"Open discussion": "Відкрити обговорення", "JavaScript is required for %s to work. Sorry for the inconvenience.":
"Password (recommended)": "Пароль (рекомендується)", "Для роботи %s потрібен увімкнутий JavaScript. Вибачте.",
"Discussion": "Обговорення", "%s requires a modern browser to work.":
"Toggle navigation": "Перемкнути навігацію", "Для роботи %s потрібен більш сучасний переглядач.",
"%d seconds": [ "New":
"%d секунду", "Новий допис",
"%d секунди", "Send":
"%d секунд", "Відправити",
"%d секунд" "Clone":
], "Дублювати",
"%d minutes": [ "Raw text":
"%d хвилину", "Початковий текст",
"%d хвилини", "Expires":
"%d хвилин", "Вилучити через",
"%d хвилин" "Burn after reading":
], "Знищити після прочитання",
"%d hours": [ "Open discussion":
"%d годину", "Відкрити обговорення",
"%d години", "Password (recommended)":
"%d годин", "Пароль (рекомендується)",
"%d годин" "Discussion":
], "Обговорення",
"%d days": [ "Toggle navigation":
"%d день", "Перемкнути навігацію",
"%d дні", "%d seconds": ["%d секунду", "%d секунди", "%d секунд"],
"%d днів", "%d minutes": ["%d хвилину", "%d хвилини", "%d хвилин"],
"%d днів" "%d hours": ["%d годину", "%d години", "%d годин"],
], "%d days": ["%d день", "%d дні", "%d днів"],
"%d weeks": [ "%d weeks": ["%d тиждень", "%d тижні", "%d тижнів"],
"%d тиждень", "%d months": ["%d місяць", "%d місяці", "%d місяців"],
"%d тижні", "%d years": ["%d рік", "%d роки", "%d років"],
"%d тижнів", "Never":
"%d тижнів" "Ніколи",
], "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
"%d months": [ "Примітка: Це тестовий сервіс: Дані можуть бути вилучені в будь який момент. Кошенята помруть, якщо ви будете зловживати сервісом.",
"%d місяць", "This document will expire in %d seconds.":
"%d місяці", ["Документ буде вилучений через %d секунду.", "Документ буде вилучений через %d секунди.", "Документ буде вилучений через %d секунд."],
"%d місяців", "This document will expire in %d minutes.":
"%d місяців" ["Документ буде вилучений через %d хвилину.", "Документ буде вилучений через %d хвилини.", "Документ буде вилучений через %d хвилин."],
], "This document will expire in %d hours.":
"%d years": [ ["Документ буде вилучений через %d годину.", "Документ буде вилучений через %d години.", "Документ буде вилучений через %d годин."],
"%d рік", "This document will expire in %d days.":
"%d роки", ["Документ буде вилучений через %d день.", "Документ буде вилучений через %d дні.", "Документ буде вилучений через %d днів."],
"%d років", "This document will expire in %d months.":
"%d років" ["Документ буде вилучений через %d місяць.", "Документ буде вилучений через %d місяці.", "Документ буде вилучений через %d місяців."],
], "Please enter the password for this paste:":
"Never": "Ніколи", "Будь ласка, введіть пароль від допису:",
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Примітка: Це тестовий сервіс: Дані можуть бути вилучені в будь який момент. Кошенята помруть, якщо ви будете зловживати сервісом.", "Could not decrypt data (Wrong key?)":
"This document will expire in %d seconds.": [ "Неможливо розшифрувати дані (Неправильний ключ?)",
"Документ буде вилучений через %d секунду.", "Could not delete the paste, it was not stored in burn after reading mode.":
"Документ буде вилучений через %d секунди.", "Неможливо вилучити допис, він не був збережений в режимі знищити після прочитання.",
"Документ буде вилучений через %d секунд.", "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
"Документ буде вилучений через %d секунд." "ЛИШЕ ДЛЯ ВАШИХ ОЧЕЙ. Не закривайте це вікно, це повідомлення не може бути показано знову.",
], "Could not decrypt comment; Wrong key?":
"This document will expire in %d minutes.": [ "Неможливо розшифрувати коментар; Неправильний ключ?",
"Документ буде вилучений через %d хвилину.", "Reply":
"Документ буде вилучений через %d хвилини.", "Відповісти",
"Документ буде вилучений через %d хвилин.", "Anonymous":
"Документ буде вилучений через %d хвилин." "Анонім",
], "Avatar generated from IP address":
"This document will expire in %d hours.": [ "Аватар зґенерований з IP-адреси",
"Документ буде вилучений через %d годину.", "Add comment":
"Документ буде вилучений через %d години.", "Додати коментар",
"Документ буде вилучений через %d годин.", "Optional nickname…":
"Документ буде вилучений через %d годин." "Необов’язкове прізвисько…",
], "Post comment":
"This document will expire in %d days.": [ "Відправити коментар",
"Документ буде вилучений через %d день.", "Sending comment…":
"Документ буде вилучений через %d дні.", "Відправка коментаря…",
"Документ буде вилучений через %d днів.", "Comment posted.":
"Документ буде вилучений через %d днів." "Коментар опублікований.",
], "Could not refresh display: %s":
"This document will expire in %d months.": [ "Не вдалося оновити екран: %s",
"Документ буде вилучений через %d місяць.", "unknown status":
"Документ буде вилучений через %d місяці.", "невідома причина",
"Документ буде вилучений через %d місяців.", "server error or not responding":
"Документ буде вилучений через %d місяців." "помилка на сервері чи немає відповіді",
], "Could not post comment: %s":
"Please enter the password for this paste:": "Будь ласка, введіть пароль від допису:", "Не вдалося опублікувати коментар: %s",
"Could not decrypt data (Wrong key?)": "Неможливо розшифрувати дані (Неправильний ключ?)", "Sending paste…":
"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.": "ЛИШЕ ДЛЯ ВАШИХ ОЧЕЙ. Не закривайте це вікно, це повідомлення не може бути показано знову.", "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
"Could not decrypt comment; Wrong key?": "Неможливо розшифрувати коментар; Неправильний ключ?", "Посилання на допис <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Тисніть [Ctrl]+[c], щоб скопіювати посилання)</span>",
"Reply": "Відповісти", "Delete data":
"Anonymous": "Анонім", "Видалити допис",
"Avatar generated from IP address": "Аватар зґенерований з IP-адреси", "Could not create paste: %s":
"Add comment": "Додати коментар", "Не вдалося опублікувати допис: %s",
"Optional nickname…": "Необов’язкове прізвисько…", "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
"Post comment": "Відправити коментар", "Неможливо розшифрувати запис: Ключ дешифрування відсутній в посиланні (Можливо, ви використовуєте скорочувач посилань, що видаляє частину посилання?)",
"Sending comment…": "Відправка коментаря…",
"Comment posted.": "Коментар опублікований.",
"Could not refresh display: %s": "Не вдалося оновити екран: %s",
"unknown status": "невідома причина",
"server error or not responding": "помилка на сервері чи немає відповіді",
"Could not post comment: %s": "Не вдалося опублікувати коментар: %s",
"Sending paste…": "Відправка допису…",
"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": "Видалити допис",
"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?)": "Неможливо розшифрувати запис: Ключ дешифрування відсутній в посиланні (Можливо, ви використовуєте скорочувач посилань, що видаляє частину посилання?)",
"B": "байт", "B": "байт",
"KiB": "Кбайт", "KiB": "Кбайт",
"MiB": "Мбайт", "MiB": "Мбайт",
@@ -145,49 +135,64 @@
"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.":
"Дублікат файлу '%s' був прикріплений до цього запису.",
"Attach a file": "Прикріпити файл", "Attach a file": "Прикріпити файл",
"alternatively drag & drop a file or paste an image from the clipboard": "також можна перенести файл у вікно переглядача чи вставити зображення з буфера", "alternatively drag & drop a file or paste an image from the clipboard": "також можна перенести файл у вікно переглядача чи вставити зображення з буфера",
"File too large, to display a preview. Please download the attachment.": "Файл завеликий для відображення передогляду. Будь ласка, звантажте прикріплений файл.", "File too large, to display a preview. Please download the attachment.": "Файл завеликий для відображення передогляду. Будь ласка, звантажте прикріплений файл.",
"Remove attachment": "Видалити вкладення", "Remove attachment": "Видалити вкладення",
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Ваш переглядач не підтримує відправлення зашифрованих файлів. Використовуйте сучасніший переглядач.", "Your browser does not support uploading encrypted files. Please use a newer browser.":
"Ваш переглядач не підтримує відправлення зашифрованих файлів. Використовуйте сучасніший переглядач.",
"Invalid attachment.": "Невідоме вкладення.", "Invalid attachment.": "Невідоме вкладення.",
"Options": "Опції", "Options": "Опції",
"Shorten URL": "Коротке посилання", "Shorten URL": "Коротке посилання",
"Editor": "Редактор", "Editor": "Редактор",
"Preview": "Передогляд", "Preview": "Передогляд",
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "Змінна PATH необхідна %s в конці \"%s\". Будь ласка, оновіть змінну PATH у вашому index.php.", "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.":
"Decrypt": "Розшифрувати", "Змінна PATH необхідна %s в конці \"%s\". Будь ласка, оновіть змінну PATH у вашому index.php.",
"Enter password": "Введіть пароль", "Decrypt":
"Розшифрувати",
"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\">цей FAQ з інформацією про можливе вирішення проблеми</a>.", "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.":
"Якщо це повідомлення не зникатиме тривалий час, подивіться <a href=\"%s\">цей FAQ з інформацією про можливе вирішення проблеми</a>.",
"+++ no paste text +++": "+++ у дописі немає тексту +++", "+++ no 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.":
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Для подробиць <a href=\"%s\">дивіться інформацію в FAQ</a>.", "Цей сайт використовує незахищене HTTP підключення! Будь ласка, використовуйте його лише для тестування.",
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Ваш переглядач вимагає підключення HTTPS для підтримки WebCrypto API. Спробуйте <a href=\"%s\">перемкнутися на HTTPS</a>.", "For more information <a href=\"%s\">see this FAQ entry</a>.":
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Ваш переглядач не підтримує WebAssembly, що використовується для стиснення zlib. Ви можете створювати нестиснені документи, але не зможете читати стиснені.", "Для подробиць <a href=\"%s\">дивіться інформацію в FAQ</a>.",
"waiting on user to provide a password": "очікування користувача для вводу паролю", "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.":
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Не вдалося розшифрувати дані. Може, ви ввели неправильний пароль? Спробуйте знову за допомогою верхньої кнопки.", "Ваш переглядач вимагає підключення HTTPS для підтримки WebCrypto API. Спробуйте <a href=\"%s\">перемкнутися на HTTPS</a>.",
"Retry": "Спробуйте ще раз", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.":
"Showing raw text…": "Відображається неформатований текст…", "Ваш переглядач не підтримує WebAssembly, що використовується для стиснення zlib. Ви можете створювати нестиснені документи, але не зможете читати стиснені.",
"Notice:": "Зверніть увагу:", "waiting on user to provide a password":
"This link will expire after %s.": "Термін дії цього посилання сплине через %s.", "waiting on user to provide a password",
"This link can only be accessed once, do not use back or refresh button in your browser.": "Дане посилання доступна тільки один раз, не натискайте кнопку назад та не обновляйте сторінку браузера.", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.":
"Link:": "Посилання:", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.",
"Recipient may become aware of your timezone, convert time to UTC?": "Отримувач дізнається ваш часовий пояс, перетворити час в UTC?", "Retry":
"Use Current Timezone": "Використовувати поточний часовий пояс", "Retry",
"Convert To UTC": "Конвертувати в UTC", "Showing raw text…":
"Close": "Закрити", "Showing raw text…",
"Encrypted note on %s": "Зашифрована нотатка на %s", "Notice:":
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Відвідайте посилання, щоб переглянути нотатку. Передача посилання будь-кому дозволить їм переглянути нотатку.", "Notice:",
"URL shortener may expose your decrypt key in URL.": "Сервіс скорочення посилань може викрити ваш ключ дешифрування з URL.", "This link will expire after %s.":
"Save paste": "Зберегти вставку", "This link will expire after %s.",
"Your IP is not authorized to create pastes.": "Вашому IP не дозволено створювати вставки.", "This link can only be accessed once, do not use back or refresh button in your browser.":
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", "This link can only be accessed once, do not use back or refresh button in your browser.",
"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\".", "Link:":
"Error parsing YOURLS response.": "Error parsing YOURLS response." "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"
} }

View File

@@ -1,193 +1,188 @@
{ {
"PrivateBin": "PrivateBin", "PrivateBin": "PrivateBin",
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s 是一个极简、开源、对粘贴内容毫不知情的在线粘贴板,数据%s在浏览器内%s进行 AES-256 加密和解密。", "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> 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>.": "更多信息请查看<a href=\"https://privatebin.info/\">项目主页</a>。", "%s是一个极简、开源、对粘贴内容毫不知情的在线粘贴板数据<i>在浏览器内</i>进行AES-256加密。更多信息请查看<a href=\"https://privatebin.info/\">项目主页</a>。",
"Because ignorance is bliss": "因为无知是福", "Because ignorance is bliss":
"因为无知是福",
"en": "zh", "en": "zh",
"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 configuration section [%s] to be present in configuration file.": "%s 需要设置配置文件中的 [%s] 部分。", "%s requires php %s or above to work. Sorry.":
"Please wait %d seconds between each post.": [ "%s需要PHP %s及以上版本来工作抱歉。",
"%s requires configuration section [%s] to be present in configuration file.":
"%s需要设置配置文件中 [%s] 部分。",
"Please wait %d seconds between each post.":
"每 %d 秒只能粘贴一次。", "每 %d 秒只能粘贴一次。",
"每 %d 秒只能粘贴一次。", "Paste is limited to %s of encrypted data.":
"每 %d 秒只能粘贴一次。", "粘贴受限于 %s 加密数据。",
"每 %d 秒只能粘贴一次。" "Invalid data.":
], "无效的数据。",
"Paste is limited to %s of encrypted data.": "对于加密数据,上限为 %s。", "You are unlucky. Try again.":
"Invalid data.": "无效的数据。", "请再试一次。",
"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。", "保存粘贴内容时出现错误,抱歉。",
"Paste is not of burn-after-reading type.": "粘贴内容不是阅后即焚类型。", "Invalid paste ID.":
"Wrong deletion token. Paste was not deleted.": "错误的删除token粘贴内容没有被删除。", "无效的ID。",
"Paste was properly deleted.": "粘贴内容已被正确删除。", "Paste is not of burn-after-reading type.":
"JavaScript is required for %s to work. Sorry for the inconvenience.": "%s 需要 JavaScript 来进行加解密。 给你带来的不便敬请谅解。", "粘贴内容不是阅后即焚类型。",
"%s requires a modern browser to work.": "%s 需要在现代浏览器上工作。", "Wrong deletion token. Paste was not deleted.":
"New": "新建", "错误的删除token粘贴内容没有被删除。",
"Send": "送出", "Paste was properly deleted.":
"Clone": "复制", "粘贴内容已被正确删除。",
"Raw text": "纯文本", "JavaScript is required for %s to work. Sorry for the inconvenience.":
"Expires": "有效期", "%s需要JavaScript来进行加解密。 给你带来的不便敬请谅解。",
"Burn after reading": "阅后即焚", "%s requires a modern browser to work.":
"Open discussion": "开放讨论", "%s需要在现代浏览器上工作。",
"Password (recommended)": "密码(推荐)", "New":
"Discussion": "讨论", "新建",
"Toggle navigation": "切换导航栏", "Send":
"%d seconds": [ "送出",
"%d 秒", "Clone":
"%d 秒", "复制",
"%d 秒", "Raw text":
"%d 秒" "纯文本",
], "Expires":
"%d minutes": [ "有效期",
"%d 分钟", "Burn after reading":
"%d 分钟", "阅后即焚",
"%d 秒", "Open discussion":
"%d 秒" "开放讨论",
], "Password (recommended)":
"%d hours": [ "密码(推荐)",
"%d 小时", "Discussion":
"%d 小时", "讨论",
"%d 小时", "Toggle navigation":
"%d 小时" "切换导航栏",
], "%d seconds": ["%d 秒", "%d 秒"],
"%d days": [ "%d minutes": ["%d 分钟", "%d 分钟"],
"%d 天", "%d hours": ["%d 小时", "%d 小时"],
"%d 天", "%d days": ["%d 天", "%d 天"],
"%d 天", "%d weeks": ["%d 周", "%d 周"],
"%d 天" "%d months": ["%d 个月", "%d 个月"],
], "%d years": ["%d 年", "%d 年"],
"%d weeks": [ "Never":
"%d 周", "永不过期",
"%d 周", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
"%d 周", "注意:这是一个测试服务,数据随时可能被删除。如果你滥用这个服务的话,小猫咪会死的。",
"%d 周" "This document will expire in %d seconds.":
], ["这份文档将在一秒后过期。", "这份文档将在 %d 秒后过期"],
"%d months": [ "This document will expire in %d minutes.":
"%d 个月", ["这份文档将在一分钟后过期。", "这份文档将在 %d 分钟后过期。"],
"%d 个月", "This document will expire in %d hours.":
"%d 个月", ["这份文档将在一小时后过期。", "这份文档将在 %d 小时后过期。"],
"%d 个月" "This document will expire in %d days.":
], ["这份文档将在一天后过期。", "这份文档将在 %d 天后过期。"],
"%d years": [ "This document will expire in %d months.":
"%d 年", ["这份文档将在一个月后过期。", "这份文档将在 %d 个月后过期。"],
"%d 年", "Please enter the password for this paste:":
"%d 年", "请输入这份粘贴内容的密码:",
"%d 年" "Could not decrypt data (Wrong key?)":
], "无法解密数据(密钥错误?)",
"Never": "永不过期", "Could not delete the paste, it was not stored in burn after reading mode.":
"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.": [ "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
"这份文档将在一秒后过期。", "看!仔!细!了!不要关闭窗口,否则你再也见不到这条消息了。",
"这份文档将在 %d 秒后过期。", "Could not decrypt comment; Wrong key?":
"这份文档将在 %d 秒后过期。", "无法解密评论; 密钥错误?",
"这份文档将在 %d 秒后过期。" "Reply":
], "回复",
"This document will expire in %d minutes.": [ "Anonymous":
"这份文档将在一分钟后过期。", "匿名",
"这份文档将在 %d 分钟后过期。", "Avatar generated from IP address":
"这份文档将在 %d 分钟后过期。", "由IP生成的头像",
"这份文档将在 %d 分钟后过期。" "Add comment":
], "添加评论",
"This document will expire in %d hours.": [ "Optional nickname…":
"这份文档将在一小时后过期。", "可选昵称…",
"这份文档将在 %d 小时后过期。", "Post comment":
"这份文档将在 %d 小时后过期。", "评论",
"这份文档将在 %d 小时后过期。" "Sending comment…":
], "评论发送中…",
"This document will expire in %d days.": [ "Comment posted.":
"这份文档将在一天后过期。", "评论已发送。",
"这份文档将在 %d 天后过期。", "Could not refresh display: %s":
"这份文档将在 %d 天后过期。", "无法刷新显示:%s",
"这份文档将在 %d 天后过期。" "unknown status":
], "未知状态",
"This document will expire in %d months.": [ "server error or not responding":
"这份文档将在一个月后过期。", "服务器错误或无回应",
"这份文档将在 %d 个月后过期。", "Could not post comment: %s":
"这份文档将在 %d 个月后过期。", "无法发送评论: %s",
"这份文档将在 %d 个月后过期。" "Sending paste…":
], "粘贴内容提交中…",
"Please enter the password for this paste:": "请输入这份粘贴内容的密码:", "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
"Could not decrypt data (Wrong key?)": "无法解密数据(密钥错误?)", "您粘贴内容的链接是<a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(按下 [Ctrl]+[c] 以复制)</span>",
"Could not delete the paste, it was not stored in burn after reading mode.": "无法删除此粘贴内容,它没有以阅后即焚模式保存。", "Delete data":
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "看!仔!细!了!不要关闭窗口,否则你再也见不到这条消息了。", "删除数据",
"Could not decrypt comment; Wrong key?": "无法解密评论;密钥错误?", "Could not create paste: %s":
"Reply": "回复", "无法创建粘贴:%s",
"Anonymous": "匿名", "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
"Avatar generated from IP address": "由IP生成的头像", "无法解密粘贴URL中缺失解密密钥是否使用了重定向或者短链接导致密钥丢失",
"Add comment": "添加评论",
"Optional nickname…": "可选昵称…",
"Post comment": "评论",
"Sending comment…": "评论发送中…",
"Comment posted.": "评论已发送。",
"Could not refresh display: %s": "无法刷新显示:%s",
"unknown status": "未知状态",
"server error or not responding": "服务器错误或无回应",
"Could not post comment: %s": "无法发送评论: %s",
"Sending paste…": "粘贴内容提交中…",
"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": "删除数据",
"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中缺失解密密钥是否使用了重定向或者短链接导致密钥丢失",
"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", "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.": "副本 '%s' 已附加到此粘贴内容。",
"Attach a file": "添加一个附件", "Attach a file": "添加一个附件",
"alternatively drag & drop a file or paste an image from the clipboard": "拖放文件或从剪贴板粘贴图片", "alternatively drag & drop a file or paste an image from the clipboard": "拖放文件或从剪贴板粘贴图片",
"File too large, to display a preview. Please download the attachment.": "文件过大,无法显示预览请下载附件。", "File too large, to display a preview. Please download the attachment.": "文件过大。要显示预览请下载附件。",
"Remove attachment": "移除附件", "Remove attachment": "移除附件",
"Your browser does not support uploading encrypted files. Please use a newer browser.": "您的浏览器不支持上传加密的文件,请使用新版本的浏览器。", "Your browser does not support uploading encrypted files. Please use a newer browser.":
"您的浏览器不支持上传加密的文件,请使用更新的浏览器。",
"Invalid attachment.": "无效的附件", "Invalid attachment.": "无效的附件",
"Options": "选项", "Options": "选项",
"Shorten URL": "缩短链接", "Shorten URL": "缩短链接",
"Editor": "编辑", "Editor": "编辑",
"Preview": "预览", "Preview": "预览",
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s 的 PATH 变量必须结束于“%s”。 请修改你的 index.php 中的 PATH 变量。", "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.":
"Decrypt": "解密", "%s 的 PATH 变量必须结束于 \"%s\"。 请修改你的 index.php 中的 PATH 变量。",
"Enter password": "输入密码", "Decrypt":
"解密",
"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\">这里的 FAQ英文版</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 +++": "+++ 无粘贴内容 +++", "如果这个消息一直存在,请参考 <a href=\"%s\">这里的 FAQ (英文版)</a>进行故障排除。",
"Could not get paste data: %s": "无法获取粘贴数据:%s", "+++ no paste text +++": "+++ 没有粘贴内容 +++",
"Could not get paste data: %s":
"无法获取粘贴数据:%s",
"QR code": "二维码", "QR code": "二维码",
"This website is using an insecure HTTP connection! Please use it only for testing.": "该网站使用了不安全的 HTTP 连接!请仅将其用于测试。", "This website is using an insecure HTTP connection! Please use it only for testing.":
"For more information <a href=\"%s\">see this FAQ entry</a>.": "有关更多信息,请参阅<a href=\"%s\">此常见问题解答</a>。", "该网站使用了不安全的HTTP连接 请仅将其用于测试。",
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "您的浏览器可能需要 HTTPS 连接才能支持 WebCrypto API。 尝试<a href=\"%s\">切换到 HTTPS</a>", "For more information <a href=\"%s\">see this FAQ entry</a>.":
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "您的浏览器不支持用于 zlib 压缩的 WebAssembly。 您可以创建未压缩的文档,但不能读取压缩的文档。", "有关更多信息,<a href=\"%s\">请参阅此常见问题解答</a>。",
"waiting on user to provide a password": "请输入密码", "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.":
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "无法解密数据。您是否输入了错误的密码?按顶部的按钮重试。", "您的浏览器可能需要HTTPS连接才能支持WebCrypto API。 尝试<a href=\"%s\">切换到HTTPS </a>。",
"Retry": "重试", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.":
"Showing raw text…": "显示原始文字…", "您的浏览器不支持用于zlib压缩的WebAssembly。 您可以创建未压缩的文档,但不能读取压缩的文档。",
"Notice:": "注意:", "waiting on user to provide a password":
"This link will expire after %s.": "这个链接将会在 %s 过期。", "请输入密码",
"This link can only be accessed once, do not use back or refresh button in your browser.": "此链接只能被访问一次,请勿使用浏览器中的返回和刷新按钮。", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.":
"Link:": "链接:", "无法解密数据。 您输入了错误的密码吗? 点顶部的按钮重试。",
"Recipient may become aware of your timezone, convert time to UTC?": "收件人可能会知道您的时区,将时间转换为 UTC", "Retry":
"Use Current Timezone": "使用当前时区", "重试",
"Convert To UTC": "转换为 UTC", "Showing raw text…":
"Close": "关闭", "显示原始文字…",
"Encrypted note on %s": "%s 上的加密笔记", "Notice:":
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "访问此链接来查看该笔记。将此 URL 发送给任何人即可允许其访问该笔记。", "注意:",
"URL shortener may expose your decrypt key in URL.": "短链接服务可能会暴露您在 URL 中的解密密钥。", "This link will expire after %s.":
"Save paste": "保存内容", "这个链接将会在 %s 过期。",
"Your IP is not authorized to create pastes.": "您的 IP 无权创建粘贴。", "This link can only be accessed once, do not use back or refresh button in your browser.":
"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\".", "Link:":
"Error parsing YOURLS response.": "Error parsing YOURLS response." "链接地址:",
"Recipient may become aware of your timezone, convert time to UTC?":
"收件人可能会知道您的时区将时间转换为UTC",
"Use Current Timezone":
"使用当前时区",
"Convert To UTC":
"转换为UTC",
"Close":
"关闭"
} }

View File

@@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin * @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net) * @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License * @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.4.0 * @version 1.3.3
*/ */
// change this, if your php files and data is outside of your webservers document root // change this, if your php files and data is outside of your webservers document root

View File

@@ -1,16 +1,17 @@
'use strict'; 'use strict';
// base-x encoding / decoding // base-x encoding / decoding
// based on https://github.com/cryptocoinjs/base-x 3.0.7
// modification: removed Buffer dependency and node.modules entry
// Copyright (c) 2018 base-x contributors // Copyright (c) 2018 base-x contributors
// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp) // Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)
// Distributed under the MIT software license, see the accompanying // Distributed under the MIT software license, see the accompanying
// file LICENSE or http://www.opensource.org/licenses/mit-license.php. // file LICENSE or http://www.opensource.org/licenses/mit-license.php.
(function(){ (function(){
this.baseX = function base (ALPHABET) { this.baseX = function base (ALPHABET) {
if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') } if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }
var BASE_MAP = new Uint8Array(256) var BASE_MAP = new Uint8Array(256)
for (var j = 0; j < BASE_MAP.length; j++) { BASE_MAP.fill(255)
BASE_MAP[j] = 255
}
for (var i = 0; i < ALPHABET.length; i++) { for (var i = 0; i < ALPHABET.length; i++) {
var x = ALPHABET.charAt(i) var x = ALPHABET.charAt(i)
var xc = x.charCodeAt(0) var xc = x.charCodeAt(0)
@@ -22,13 +23,6 @@ this.baseX = function base (ALPHABET) {
var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up
var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up
function encode (source) { function encode (source) {
if (source instanceof Uint8Array) {
} else if (ArrayBuffer.isView(source)) {
source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength)
} else if (Array.isArray(source)) {
source = Uint8Array.from(source)
}
if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }
if (source.length === 0) { return '' } if (source.length === 0) { return '' }
// Skip & count leading zeroes. // Skip & count leading zeroes.
var zeroes = 0 var zeroes = 0
@@ -68,8 +62,10 @@ this.baseX = function base (ALPHABET) {
} }
function decodeUnsafe (source) { function decodeUnsafe (source) {
if (typeof source !== 'string') { throw new TypeError('Expected String') } if (typeof source !== 'string') { throw new TypeError('Expected String') }
if (source.length === 0) { return new Uint8Array() } if (source.length === 0) { return '' }
var psz = 0 var psz = 0
// Skip leading spaces.
if (source[psz] === ' ') { return }
// Skip and count leading '1's. // Skip and count leading '1's.
var zeroes = 0 var zeroes = 0
var length = 0 var length = 0
@@ -96,12 +92,14 @@ this.baseX = function base (ALPHABET) {
length = i length = i
psz++ psz++
} }
// Skip trailing spaces.
if (source[psz] === ' ') { return }
// Skip leading zeroes in b256. // Skip leading zeroes in b256.
var it4 = size - length var it4 = size - length
while (it4 !== size && b256[it4] === 0) { while (it4 !== size && b256[it4] === 0) {
it4++ it4++
} }
var vch = new Uint8Array(zeroes + (size - it4)) var vch = []
var j = zeroes var j = zeroes
while (it4 !== size) { while (it4 !== size) {
vch[j++] = b256[it4++] vch[j++] = b256[it4++]

7
js/bootstrap-3.3.7.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -7,20 +7,20 @@ global.jsdom = require('jsdom-global');
global.cleanup = global.jsdom(); global.cleanup = global.jsdom();
global.URL = require('jsdom-url').URL; global.URL = require('jsdom-url').URL;
global.fs = require('fs'); global.fs = require('fs');
global.WebCrypto = require('@peculiar/webcrypto').Crypto; global.WebCrypto = require('node-webcrypto-ossl');
// application libraries to test // application libraries to test
global.$ = global.jQuery = require('./jquery-3.6.0'); global.$ = global.jQuery = require('./jquery-3.4.1');
global.RawDeflate = require('./rawinflate-0.3').RawDeflate; global.RawDeflate = require('./rawinflate-0.3').RawDeflate;
global.zlib = require('./zlib-1.2.13').zlib; global.zlib = require('./zlib-1.2.11').zlib;
require('./prettify'); 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.0.3'); global.showdown = require('./showdown-1.9.1');
global.DOMPurify = require('./purify-2.3.6'); global.DOMPurify = require('./purify-2.0.8');
global.baseX = require('./base-x-4.0.0').baseX; global.baseX = require('./base-x-3.0.7').baseX;
global.Legacy = require('./legacy').Legacy; global.Legacy = require('./legacy').Legacy;
require('./bootstrap-3.4.1'); require('./bootstrap-3.3.7');
require('./privatebin'); require('./privatebin');
// internal variables // internal variables
@@ -131,3 +131,4 @@ exports.jscMimeTypes = function() {
exports.jscFormats = function() { exports.jscFormats = function() {
return jsc.elements(formats); return jsc.elements(formats);
}; };

2
js/jquery-3.4.1.js vendored Normal file

File diff suppressed because one or more lines are too long

2
js/jquery-3.6.0.js vendored

File diff suppressed because one or more lines are too long

2
js/kjua-0.6.0.js Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1785
js/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{ {
"name": "privatebin", "name": "privatebin",
"version": "1.4.0", "version": "1.3.0",
"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": {
@@ -12,7 +12,7 @@
"jsdom-global": "^2.1.1", "jsdom-global": "^2.1.1",
"jsdom-url": "^2.2.1", "jsdom-url": "^2.2.1",
"jsverify": "^0.8.3", "jsverify": "^0.8.3",
"@peculiar/webcrypto": "^1.1.1" "node-webcrypto-ossl": "^1.0.37"
}, },
"scripts": { "scripts": {
"test": "mocha" "test": "mocha"

View File

@@ -6,7 +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.4.0 * @version 1.3.3
* @name PrivateBin * @name PrivateBin
* @namespace * @namespace
*/ */
@@ -52,31 +52,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
*/ */
let z; let z;
/**
* DOMpurify settings for HTML content
*
* @private
*/
const purifyHtmlConfig = {
ALLOWED_URI_REGEXP: /^(?:(?:(?:f|ht)tps?|mailto|magnet):)/i,
SAFE_FOR_JQUERY: true,
USE_PROFILES: {
html: true
}
};
/**
* DOMpurify settings for SVG content
*
* @private
*/
const purifySvgConfig = {
USE_PROFILES: {
svg: true,
svgFilters: true
}
};
/** /**
* CryptoData class * CryptoData class
* *
@@ -268,18 +243,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
*/ */
const day = 86400; const day = 86400;
/**
* number of seconds in a week
*
* = 60 * 60 * 24 * 7 seconds
*
* @name Helper.week
* @private
* @enum {number}
* @readonly
*/
const week = 604800;
/** /**
* number of seconds in a month (30 days, an approximation) * number of seconds in a month (30 days, an approximation)
* *
@@ -363,7 +326,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
*/ */
me.durationToSeconds = function(duration) me.durationToSeconds = function(duration)
{ {
let pieces = duration.split(/(\D+)/), let pieces = duration.split(/\d+/),
factor = pieces[0] || 0, factor = pieces[0] || 0,
timespan = pieces[1] || pieces[0]; timespan = pieces[1] || pieces[0];
switch (timespan) switch (timespan)
@@ -374,8 +337,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
return factor * hour; return factor * hour;
case 'day': case 'day':
return factor * day; return factor * day;
case 'week':
return factor * week;
case 'month': case 'month':
return factor * month; return factor * month;
case 'year': case 'year':
@@ -414,7 +375,32 @@ jQuery.PrivateBin = (function($, RawDeflate) {
}; };
/** /**
* convert URLs to clickable links in the provided element. * formats the text that needs to be formatted, so DomPurify can properly escape it.
*
* @name Helper.preformatTextForDomPurify
* @function
* @param {string} html
* @param {'markdown'|'syntaxhighlighting'|'plaintext'} text
* @return {string} new text
*/
me.preformatTextForDomPurify = function(text, format)
{
if (!format) {
throw new TypeError('invalid format parameter');
}
// encode < to make sure DomPurify does not interpret e.g. HTML or XML markup as code
// cf. https://developer.mozilla.org/en-US/docs/Web/HTML/Element/xmp#Summary
// As Markdown, by definition, is/allows HTML code, we do not do anything there.
if (format !== 'markdown') {
// one character is enough, as this is not security-relevant (all output will go through DOMPurify later)
text = text.replace(/</g, '&lt;');
}
return text;
};
/**
* convert URLs to clickable links.
* *
* URLs to handle: * URLs to handle:
* <pre> * <pre>
@@ -425,18 +411,14 @@ jQuery.PrivateBin = (function($, RawDeflate) {
* *
* @name Helper.urls2links * @name Helper.urls2links
* @function * @function
* @param {HTMLElement} element * @param {string} html
* @return {string}
*/ */
me.urls2links = function(element) me.urls2links = function(html)
{ {
element.html( return html.replace(
DOMPurify.sanitize( /(((https?|ftp):\/\/[\w?!=&.\/-;#@~%+*-]+(?![\w\s?!&.\/;#~%"=-]>))|((magnet):[\w?=&.\/-;#@~%+*-]+))/ig,
element.html().replace( '<a href="$1" rel="nofollow">$1</a>'
/(((https?|ftp):\/\/[\w?!=&.\/-;#@~%+*-]+(?![\w\s?!&.\/;#~%"=-]>))|((magnet):[\w?=&.\/-;#@~%+*-]+))/ig,
'<a href="$1" rel="nofollow noopener noreferrer">$1</a>'
),
purifyHtmlConfig
)
); );
}; };
@@ -627,7 +609,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
* @prop {string[]} * @prop {string[]}
* @readonly * @readonly
*/ */
const supportedLanguages = ['bg', 'ca', 'co', 'cs', 'de', 'el', 'es', 'et', 'fi', 'fr', 'he', 'hu', 'id', 'it', 'jbo', 'lt', 'no', 'nl', 'pl', 'pt', 'oc', 'ru', 'sk', 'sl', 'tr', 'uk', 'zh']; const supportedLanguages = ['bg', 'cs', 'de', 'es', 'fr', 'it', 'hu', 'no', 'nl', 'pl', 'pt', 'oc', 'ru', 'sl', 'uk', 'zh'];
/** /**
* built in language * built in language
@@ -793,7 +775,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
/** /**
* per language functions to use to determine the plural form * per language functions to use to determine the plural form
* *
* @see {@link https://docs.translatehouse.org/projects/localization-guide/en/latest/l10n/pluralforms.html} * @see {@link http://localization-guide.readthedocs.org/en/latest/l10n/pluralforms.html}
* @name I18n.getPluralForm * @name I18n.getPluralForm
* @function * @function
* @param {int} n * @param {int} n
@@ -803,29 +785,19 @@ jQuery.PrivateBin = (function($, RawDeflate) {
switch (language) switch (language)
{ {
case 'cs': case 'cs':
case 'sk': return n === 1 ? 0 : (n >= 2 && n <=4 ? 1 : 2);
return n === 1 ? 0 : (n >= 2 && n <= 4 ? 1 : 2);
case 'co':
case 'fr': case 'fr':
case 'oc': case 'oc':
case 'tr':
case 'zh': case 'zh':
return n > 1 ? 1 : 0; return n > 1 ? 1 : 0;
case 'he':
return n === 1 ? 0 : (n === 2 ? 1 : ((n < 0 || n > 10) && (n % 10 === 0) ? 2 : 3));
case 'id':
case 'jbo':
return 0;
case 'lt':
return n % 10 === 1 && n % 100 !== 11 ? 0 : ((n % 10 >= 2 && n % 100 < 10 || n % 100 >= 20) ? 1 : 2);
case 'pl': case 'pl':
return n === 1 ? 0 : (n % 10 >= 2 && n %10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2); return n === 1 ? 0 : (n % 10 >= 2 && n %10 <=4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);
case 'ru': case 'ru':
case 'uk': case 'uk':
return n % 10 === 1 && n % 100 !== 11 ? 0 : (n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2); return n % 10 === 1 && n % 100 !== 11 ? 0 : (n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);
case 'sl': case 'sl':
return n % 100 === 1 ? 1 : (n % 100 === 2 ? 2 : (n % 100 === 3 || n % 100 === 4 ? 3 : 0)); return n % 100 === 1 ? 1 : (n % 100 === 2 ? 2 : (n % 100 === 3 || n % 100 === 4 ? 3 : 0));
// bg, ca, de, el, en, es, et, fi, hu, it, nl, no, pt // bg, de, en, es, hu, it, nl, no, pt
default: default:
return n !== 1 ? 1 : 0; return n !== 1 ? 1 : 0;
} }
@@ -2027,11 +1999,15 @@ jQuery.PrivateBin = (function($, RawDeflate) {
return a.length - b.length; return a.length - b.length;
})[0]; })[0];
if (typeof shortUrl === 'string' && shortUrl.length > 0) { if (typeof shortUrl === 'string' && shortUrl.length > 0) {
I18n._(
$('#pastelink'),
'Your paste is <a id="pasteurl" href="%s">%s</a> <span id="copyhint">(Hit [Ctrl]+[c] to copy)</span>',
shortUrl, shortUrl
);
// we disable the button to avoid calling shortener again // we disable the button to avoid calling shortener again
$shortenButton.addClass('buttondisabled'); $shortenButton.addClass('buttondisabled');
// update link // save newly created element
$pasteUrl.text(shortUrl); $pasteUrl = $('#pasteurl');
$pasteUrl.prop('href', shortUrl);
// we pre-select the link so that the user only has to [Ctrl]+[c] the link // we pre-select the link so that the user only has to [Ctrl]+[c] the link
Helper.selectText($pasteUrl[0]); Helper.selectText($pasteUrl[0]);
return; return;
@@ -2452,7 +2428,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
/** /**
* hides the Editor * hides the Editor
* *
* @name Editor.hide * @name Editor.reset
* @function * @function
*/ */
me.hide = function() me.hide = function()
@@ -2553,25 +2529,13 @@ jQuery.PrivateBin = (function($, RawDeflate) {
return; return;
} }
if (format === 'markdown') { let processedText = Helper.preformatTextForDomPurify(text, format);
const converter = new showdown.Converter({
strikethrough: true, // link URLs
tables: true, processedText = Helper.urls2links(processedText);
tablesHeaderId: true,
simplifiedAutoLink: true, switch (format) {
excludeTrailingPunctuationFromURLs: true case 'syntaxhighlighting':
});
// let showdown convert the HTML and sanitize HTML *afterwards*!
$plainText.html(
DOMPurify.sanitize(
converter.makeHtml(text),
purifyHtmlConfig
)
);
// add table classes from bootstrap css
$plainText.find('table').addClass('table-condensed table-bordered');
} else {
if (format === 'syntaxhighlighting') {
// yes, this is really needed to initialize the environment // yes, this is really needed to initialize the environment
if (typeof prettyPrint === 'function') if (typeof prettyPrint === 'function')
{ {
@@ -2579,15 +2543,40 @@ jQuery.PrivateBin = (function($, RawDeflate) {
} }
$prettyPrint.html( $prettyPrint.html(
prettyPrintOne( DOMPurify.sanitize(
Helper.htmlEntities(text), null, true prettyPrintOne(processedText, null, true)
) )
); );
} else { break;
// = 'plaintext' case 'markdown':
$prettyPrint.text(text); const converter = new showdown.Converter({
strikethrough: true,
tables: true,
tablesHeaderId: true,
simplifiedAutoLink: true,
excludeTrailingPunctuationFromURLs: true
});
// let showdown convert the HTML and sanitize HTML *afterwards*!
$plainText.html(
DOMPurify.sanitize(
// use original text, because showdown handles autolinking on it's own
converter.makeHtml(text)
)
);
// add table classes from bootstrap css
$plainText.find('table').addClass('table-condensed table-bordered');
break;
default: // = 'plaintext'
$prettyPrint.html(DOMPurify.sanitize(
processedText, {
ALLOWED_TAGS: ['a'],
ALLOWED_ATTR: ['href', 'rel']
}
));
} }
Helper.urls2links($prettyPrint);
// set block style for non-Markdown formatting
if (format !== 'markdown') {
$prettyPrint.css('white-space', 'pre-wrap'); $prettyPrint.css('white-space', 'pre-wrap');
$prettyPrint.css('word-break', 'normal'); $prettyPrint.css('word-break', 'normal');
$prettyPrint.removeClass('prettyprint'); $prettyPrint.removeClass('prettyprint');
@@ -2781,34 +2770,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
$dropzone; $dropzone;
/** /**
* get blob URL from string data and mime type
*
* @name AttachmentViewer.getBlobUrl
* @private
* @function
* @param {string} data - raw data of attachment
* @param {string} data - mime type of attachment
* @return {string} objectURL
*/
function getBlobUrl(data, mimeType)
{
// Transform into a Blob
const buf = new Uint8Array(data.length);
for (let i = 0; i < data.length; ++i) {
buf[i] = data.charCodeAt(i);
}
const blob = new window.Blob(
[buf],
{
type: mimeType
}
);
// Get blob URL
return window.URL.createObjectURL(blob);
}
/**
* sets the attachment but does not yet show it * sets the attachment but does not yet show it
* *
* @name AttachmentViewer.setAttachment * @name AttachmentViewer.setAttachment
@@ -2818,42 +2779,43 @@ jQuery.PrivateBin = (function($, RawDeflate) {
*/ */
me.setAttachment = function(attachmentData, fileName) me.setAttachment = function(attachmentData, fileName)
{ {
// skip, if attachments got disabled // data URI format: data:[<mediaType>][;base64],<data>
if (!$attachmentLink || !$attachmentPreview) return;
// data URI format: data:[<mimeType>][;base64],<data>
// position in data URI string of where data begins // position in data URI string of where data begins
const base64Start = attachmentData.indexOf(',') + 1; const base64Start = attachmentData.indexOf(',') + 1;
// position in data URI string of where mimeType ends // position in data URI string of where mediaType ends
const mimeTypeEnd = attachmentData.indexOf(';'); const mediaTypeEnd = attachmentData.indexOf(';');
// extract mimeType // extract mediaType
const mimeType = attachmentData.substring(5, mimeTypeEnd); const mediaType = attachmentData.substring(5, mediaTypeEnd);
// extract data and convert to binary // extract data and convert to binary
const rawData = attachmentData.substring(base64Start); const decodedData = atob(attachmentData.substring(base64Start));
const decodedData = rawData.length > 0 ? atob(rawData) : '';
let blobUrl = getBlobUrl(decodedData, mimeType); // Transform into a Blob
$attachmentLink.attr('href', blobUrl); const buf = new Uint8Array(decodedData.length);
for (let i = 0; i < decodedData.length; ++i) {
buf[i] = decodedData.charCodeAt(i);
}
const blob = new window.Blob([ buf ], { type: mediaType });
// Get Blob URL
const blobUrl = window.URL.createObjectURL(blob);
// IE does not support setting a data URI on an a element
// Using msSaveBlob to download
if (window.Blob && navigator.msSaveBlob) {
$attachmentLink.off('click').on('click', function () {
navigator.msSaveBlob(blob, fileName);
});
} else {
$attachmentLink.attr('href', blobUrl);
}
if (typeof fileName !== 'undefined') { if (typeof fileName !== 'undefined') {
$attachmentLink.attr('download', fileName); $attachmentLink.attr('download', fileName);
} }
// sanitize SVG preview me.handleBlobAttachmentPreview($attachmentPreview, blobUrl, mediaType);
// prevents executing embedded scripts when CSP is not set and user
// right-clicks/long-taps and opens the SVG in a new tab - prevented
// in the preview by use of an img tag, which disables scripts, too
if (mimeType.match(/^image\/.*svg/i)) {
const sanitizedData = DOMPurify.sanitize(
decodedData,
purifySvgConfig
);
blobUrl = getBlobUrl(sanitizedData, mimeType);
}
me.handleBlobAttachmentPreview($attachmentPreview, blobUrl, mimeType);
}; };
/** /**
@@ -2864,9 +2826,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
*/ */
me.showAttachment = function() me.showAttachment = function()
{ {
// skip, if attachments got disabled
if (!$attachment || !$attachmentPreview) return;
$attachment.removeClass('hidden'); $attachment.removeClass('hidden');
if (attachmentHasPreview) { if (attachmentHasPreview) {
@@ -3074,13 +3033,13 @@ jQuery.PrivateBin = (function($, RawDeflate) {
me.handleBlobAttachmentPreview = function ($targetElement, blobUrl, mimeType) { me.handleBlobAttachmentPreview = function ($targetElement, blobUrl, mimeType) {
if (blobUrl) { if (blobUrl) {
attachmentHasPreview = true; attachmentHasPreview = true;
if (mimeType.match(/^image\//i)) { if (mimeType.match(/image\//i)) {
$targetElement.html( $targetElement.html(
$(document.createElement('img')) $(document.createElement('img'))
.attr('src', blobUrl) .attr('src', blobUrl)
.attr('class', 'img-thumbnail') .attr('class', 'img-thumbnail')
); );
} else if (mimeType.match(/^video\//i)) { } else if (mimeType.match(/video\//i)) {
$targetElement.html( $targetElement.html(
$(document.createElement('video')) $(document.createElement('video'))
.attr('controls', 'true') .attr('controls', 'true')
@@ -3091,7 +3050,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
.attr('type', mimeType) .attr('type', mimeType)
.attr('src', blobUrl)) .attr('src', blobUrl))
); );
} else if (mimeType.match(/^audio\//i)) { } else if (mimeType.match(/audio\//i)) {
$targetElement.html( $targetElement.html(
$(document.createElement('audio')) $(document.createElement('audio'))
.attr('controls', 'true') .attr('controls', 'true')
@@ -3189,15 +3148,19 @@ jQuery.PrivateBin = (function($, RawDeflate) {
*/ */
function addClipboardEventHandler() { function addClipboardEventHandler() {
$(document).on('paste', function (event) { $(document).on('paste', function (event) {
if (TopNav.isAttachmentReadonly()) {
event.stopPropagation();
event.preventDefault();
return false;
}
const items = (event.clipboardData || event.originalEvent.clipboardData).items; const items = (event.clipboardData || event.originalEvent.clipboardData).items;
const lastItem = items[items.length - 1]; for (let i = 0; i < items.length; ++i) {
if (lastItem.kind === 'file') { if (items[i].kind === 'file') {
if (TopNav.isAttachmentReadonly()) { //Clear the file input:
event.stopPropagation(); $fileInput.wrap('<form>').closest('form').get(0).reset();
event.preventDefault(); $fileInput.unwrap();
return false;
} else { readFileData(items[i].getAsFile());
readFileData(lastItem.getAsFile());
} }
} }
}); });
@@ -3380,7 +3343,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
*/ */
me.addComment = function(comment, commentText, nickname) me.addComment = function(comment, commentText, nickname)
{ {
if (commentText === '') { if (!commentText) {
commentText = 'comment decryption failed'; commentText = 'comment decryption failed';
} }
@@ -3390,8 +3353,15 @@ jQuery.PrivateBin = (function($, RawDeflate) {
const $commentEntryData = $commentEntry.find('div.commentdata'); const $commentEntryData = $commentEntry.find('div.commentdata');
// set & parse text // set & parse text
$commentEntryData.text(commentText); commentText = Helper.preformatTextForDomPurify(commentText, 'plaintext');
Helper.urls2links($commentEntryData); $commentEntryData.html(
DOMPurify.sanitize(
Helper.urls2links(commentText), {
ALLOWED_TAGS: ['a'],
ALLOWED_ATTR: ['href', 'rel']
}
)
);
// set nickname // set nickname
if (nickname.length > 0) { if (nickname.length > 0) {
@@ -3522,7 +3492,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
if (fadeOut === true) { if (fadeOut === true) {
setTimeout(function () { setTimeout(function () {
$comment.removeClass('highlight'); $comment.removeClass('highlight');
}, 300); }, 300);
} }
}; };
@@ -3568,8 +3537,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
let createButtonsDisplayed = false, let createButtonsDisplayed = false,
viewButtonsDisplayed = false, viewButtonsDisplayed = false,
burnAfterReadingDefault = false,
openDiscussionDefault = false,
$attach, $attach,
$burnAfterReading, $burnAfterReading,
$burnAfterReadingOption, $burnAfterReadingOption,
@@ -3585,7 +3552,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
$password, $password,
$passwordInput, $passwordInput,
$rawTextButton, $rawTextButton,
$downloadTextButton,
$qrCodeLink, $qrCodeLink,
$emailLink, $emailLink,
$sendButton, $sendButton,
@@ -3679,20 +3645,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
} }
} }
/**
* Clear the attachment input in the top navigation.
*
* @name TopNav.clearAttachmentInput
* @function
*/
function clearAttachmentInput()
{
// hide UI for selected files
// our up-to-date jQuery can handle it :)
$fileWrap.find('input').val('');
}
/** /**
* return raw text * return raw text
* *
@@ -3723,41 +3675,10 @@ jQuery.PrivateBin = (function($, RawDeflate) {
for (let i = 0; i < $head.length; ++i) { for (let i = 0; i < $head.length; ++i) {
newDoc.write($head[i].outerHTML); newDoc.write($head[i].outerHTML);
} }
newDoc.write( newDoc.write('</head><body><pre>' + DOMPurify.sanitize(Helper.htmlEntities(paste)) + '</pre></body></html>');
'</head><body><pre>' +
DOMPurify.sanitize(
Helper.htmlEntities(paste),
purifyHtmlConfig
) +
'</pre></body></html>'
);
newDoc.close(); newDoc.close();
} }
/**
* download text
*
* @name TopNav.downloadText
* @private
* @function
*/
function downloadText()
{
var filename='paste-' + Model.getPasteId() + '.txt';
var text = PasteViewer.getText();
var element = document.createElement('a');
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
element.setAttribute('download', filename);
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}
/** /**
* saves the language in a cookie and reloads the page * saves the language in a cookie and reloads the page
* *
@@ -3768,7 +3689,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
*/ */
function setLanguage(event) function setLanguage(event)
{ {
document.cookie = 'lang=' + $(event.target).data('lang') + ';secure'; document.cookie = 'lang=' + $(event.target).data('lang');
UiHelper.reloadHome(); UiHelper.reloadHome();
} }
@@ -3818,7 +3739,9 @@ jQuery.PrivateBin = (function($, RawDeflate) {
// in any case, remove saved attachment data // in any case, remove saved attachment data
AttachmentViewer.removeAttachmentData(); AttachmentViewer.removeAttachmentData();
clearAttachmentInput(); // hide UI for selected files
// our up-to-date jQuery can handle it :)
$fileWrap.find('input').val('');
AttachmentViewer.clearDragAndDrop(); AttachmentViewer.clearDragAndDrop();
// pevent '#' from appearing in the URL // pevent '#' from appearing in the URL
@@ -3861,12 +3784,8 @@ jQuery.PrivateBin = (function($, RawDeflate) {
if (expirationDateString !== null) { if (expirationDateString !== null) {
emailBody += EOL; emailBody += EOL;
emailBody += BULLET; emailBody += BULLET;
// avoid DOMPurify mess with forward slash in expirationDateString emailBody += I18n._(
emailBody += Helper.sprintf( 'This link will expire after %s.',
I18n._(
'This link will expire after %s.',
'%s'
),
expirationDateString expirationDateString
); );
} }
@@ -3984,7 +3903,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
$newButton.removeClass('hidden'); $newButton.removeClass('hidden');
$cloneButton.removeClass('hidden'); $cloneButton.removeClass('hidden');
$rawTextButton.removeClass('hidden'); $rawTextButton.removeClass('hidden');
$downloadTextButton.removeClass('hidden');
$qrCodeLink.removeClass('hidden'); $qrCodeLink.removeClass('hidden');
viewButtonsDisplayed = true; viewButtonsDisplayed = true;
@@ -4005,7 +3923,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
$cloneButton.addClass('hidden'); $cloneButton.addClass('hidden');
$newButton.addClass('hidden'); $newButton.addClass('hidden');
$rawTextButton.addClass('hidden'); $rawTextButton.addClass('hidden');
$downloadTextButton.addClass('hidden');
$qrCodeLink.addClass('hidden'); $qrCodeLink.addClass('hidden');
me.hideEmailButton(); me.hideEmailButton();
@@ -4167,17 +4084,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
$rawTextButton.addClass('hidden'); $rawTextButton.addClass('hidden');
}; };
/**
* only hides the download text button
*
* @name TopNav.hideRawButton
* @function
*/
me.hideDownloadButton = function()
{
$downloadTextButton.addClass('hidden');
};
/** /**
* only hides the qr code button * only hides the qr code button
* *
@@ -4250,29 +4156,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
} }
}; };
/**
* Reset the top navigation back to it's default values.
*
* @name TopNav.resetInput
* @function
*/
me.resetInput = function()
{
clearAttachmentInput();
$burnAfterReading.prop('checked', burnAfterReadingDefault);
$openDiscussion.prop('checked', openDiscussionDefault);
if (openDiscussionDefault || !burnAfterReadingDefault) $openDiscussionOption.removeClass('buttondisabled');
if (burnAfterReadingDefault || !openDiscussionDefault) $burnAfterReadingOption.removeClass('buttondisabled');
pasteExpiration = Model.getExpirationDefault() || pasteExpiration;
$('#pasteExpiration>option').each(function() {
const $this = $(this);
if ($this.val() === pasteExpiration) {
$('#pasteExpirationDisplay').text($this.text());
}
});
};
/** /**
* returns the currently set expiration time * returns the currently set expiration time
* *
@@ -4411,7 +4294,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
*/ */
me.isAttachmentReadonly = function() me.isAttachmentReadonly = function()
{ {
return !createButtonsDisplayed || $attach.hasClass('hidden'); return $attach.hasClass('hidden');
} }
/** /**
@@ -4439,7 +4322,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
$password = $('#password'); $password = $('#password');
$passwordInput = $('#passwordinput'); $passwordInput = $('#passwordinput');
$rawTextButton = $('#rawtextbutton'); $rawTextButton = $('#rawtextbutton');
$downloadTextButton = $('#downloadtextbutton');
$retryButton = $('#retrybutton'); $retryButton = $('#retrybutton');
$sendButton = $('#sendbutton'); $sendButton = $('#sendbutton');
$qrCodeLink = $('#qrcodelink'); $qrCodeLink = $('#qrcodelink');
@@ -4457,7 +4339,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
$sendButton.click(PasteEncrypter.sendPaste); $sendButton.click(PasteEncrypter.sendPaste);
$cloneButton.click(Controller.clonePaste); $cloneButton.click(Controller.clonePaste);
$rawTextButton.click(rawText); $rawTextButton.click(rawText);
$downloadTextButton.click(downloadText);
$retryButton.click(clickRetryButton); $retryButton.click(clickRetryButton);
$fileRemoveButton.click(removeAttachment); $fileRemoveButton.click(removeAttachment);
$qrCodeLink.click(displayQrCode); $qrCodeLink.click(displayQrCode);
@@ -4470,9 +4351,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
changeBurnAfterReading(); changeBurnAfterReading();
changeOpenDiscussion(); changeOpenDiscussion();
// get default values from template or fall back to set value // get default value from template or fall back to set value
burnAfterReadingDefault = me.getBurnAfterReading();
openDiscussionDefault = me.getOpenDiscussion();
pasteExpiration = Model.getExpirationDefault() || pasteExpiration; pasteExpiration = Model.getExpirationDefault() || pasteExpiration;
createButtonsDisplayed = false; createButtonsDisplayed = false;
@@ -4796,7 +4675,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
TopNav.showEmailButton(); TopNav.showEmailButton();
TopNav.hideRawButton(); TopNav.hideRawButton();
TopNav.hideDownloadButton();
Editor.hide(); Editor.hide();
// parse and show text // parse and show text
@@ -5299,7 +5177,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
Editor.show(); Editor.show();
Editor.focusInput(); Editor.focusInput();
AttachmentViewer.removeAttachment(); AttachmentViewer.removeAttachment();
TopNav.resetInput();
TopNav.showCreateButtons(); TopNav.showCreateButtons();
@@ -5459,21 +5336,9 @@ jQuery.PrivateBin = (function($, RawDeflate) {
// first load translations // first load translations
I18n.loadTranslations(); I18n.loadTranslations();
// Add a hook to make all links open a new window DOMPurify.setConfig({
DOMPurify.addHook('afterSanitizeAttributes', function(node) { ALLOWED_URI_REGEXP: /^(?:(?:(?:f|ht)tps?|mailto|magnet):)/i,
// set all elements owning target to target=_blank SAFE_FOR_JQUERY: true
if ('target' in node && node.id !== 'pasteurl') {
node.setAttribute('target', '_blank');
}
// set non-HTML/MathML links to xlink:show=new
if (!node.hasAttribute('target')
&& (node.hasAttribute('xlink:href')
|| node.hasAttribute('href'))) {
node.setAttribute('xlink:show', 'new');
}
if ('rel' in node) {
node.setAttribute('rel', 'nofollow noopener noreferrer');
}
}); });
// center all modals // center all modals
@@ -5507,12 +5372,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
} }
me.initZ(); me.initZ();
// if delete token is passed (i.e. paste has been deleted by this
// access), there is nothing more to do
if (Model.hasDeleteToken()) {
return;
}
// check whether existing paste needs to be shown // check whether existing paste needs to be shown
try { try {
Model.getPasteId(); Model.getPasteId();
@@ -5521,10 +5380,11 @@ jQuery.PrivateBin = (function($, RawDeflate) {
return me.newPaste(); return me.newPaste();
} }
// always reload on back button to invalidate cache(protect burn after read paste) // if delete token is passed (i.e. paste has been deleted by this
window.addEventListener('popstate', () => { // access), there is nothing more to do
window.location.reload(); if (Model.hasDeleteToken()) {
}); return;
}
// display an existing paste // display an existing paste
return me.showPaste(); return me.showPaste();

1
js/purify-2.0.8.js Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
js/showdown-1.9.1.js Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -110,3 +110,4 @@ describe('DiscussionViewer', function () {
); );
}); });
}); });

View File

@@ -52,12 +52,12 @@ describe('Editor', function () {
!$.PrivateBin.Editor.isPreview() && !$.PrivateBin.Editor.isPreview() &&
!$('#message').hasClass('hidden') !$('#message').hasClass('hidden')
); );
$('#messagepreview').trigger('click'); $('#messagepreview').click();
results.push( results.push(
$.PrivateBin.Editor.isPreview() && $.PrivateBin.Editor.isPreview() &&
$('#message').hasClass('hidden') $('#message').hasClass('hidden')
); );
$('#messageedit').trigger('click'); $('#messageedit').click();
results.push( results.push(
!$.PrivateBin.Editor.isPreview() && !$.PrivateBin.Editor.isPreview() &&
!$('#message').hasClass('hidden') !$('#message').hasClass('hidden')
@@ -68,3 +68,4 @@ describe('Editor', function () {
); );
}); });
}); });

View File

@@ -73,7 +73,6 @@ describe('Helper', function () {
}); });
describe('urls2links', function () { describe('urls2links', function () {
this.timeout(30000);
before(function () { before(function () {
cleanup = jsdom(); cleanup = jsdom();
}); });
@@ -82,15 +81,7 @@ describe('Helper', function () {
'ignores non-URL content', 'ignores non-URL content',
'string', 'string',
function (content) { function (content) {
content = content.replace(/\r|\f/g, '\n').replace(/\u0000/g, '').replace(/\u000b/g, ''); return content === $.PrivateBin.Helper.urls2links(content);
let clean = jsdom();
$('body').html('<div id="foo"></div>');
let e = $('#foo');
e.text(content);
$.PrivateBin.Helper.urls2links(e);
let result = e.text();
clean();
return content === result;
} }
); );
jsc.property( jsc.property(
@@ -104,12 +95,9 @@ describe('Helper', function () {
function (prefix, schema, address, query, fragment, postfix) { function (prefix, schema, address, query, fragment, postfix) {
query = query.join(''); query = query.join('');
fragment = fragment.join(''); fragment = fragment.join('');
prefix = prefix.replace(/\r|\f/g, '\n').replace(/\u0000/g, '').replace(/\u000b/g, ''); prefix = $.PrivateBin.Helper.htmlEntities(prefix);
postfix = ' ' + postfix.replace(/\r/g, '\n').replace(/\u0000/g, ''); postfix = ' ' + $.PrivateBin.Helper.htmlEntities(postfix);
let url = schema + '://' + address.join('') + '/?' + query + '#' + fragment, let url = schema + '://' + address.join('') + '/?' + query + '#' + fragment;
clean = jsdom();
$('body').html('<div id="foo"></div>');
let e = $('#foo');
// special cases: When the query string and fragment imply the beginning of an HTML entity, eg. &#0 or &#x // special cases: When the query string and fragment imply the beginning of an HTML entity, eg. &#0 or &#x
if ( if (
@@ -120,12 +108,8 @@ describe('Helper', function () {
url = schema + '://' + address.join('') + '/?' + query.substring(0, query.length - 1); url = schema + '://' + address.join('') + '/?' + query.substring(0, query.length - 1);
postfix = ''; postfix = '';
} }
e.text(prefix + url + postfix);
$.PrivateBin.Helper.urls2links(e); return prefix + '<a href="' + url + '" rel="nofollow">' + url + '</a>' + postfix === $.PrivateBin.Helper.urls2links(prefix + url + postfix);
let result = e.html();
clean();
url = $('<div />').text(url).html();
return $('<div />').text(prefix).html() + '<a href="' + url + '" target="_blank" rel="nofollow noopener noreferrer">' + url + '</a>' + $('<div />').text(postfix).html() === result;
} }
); );
jsc.property( jsc.property(
@@ -134,18 +118,10 @@ describe('Helper', function () {
jsc.array(common.jscQueryString()), jsc.array(common.jscQueryString()),
'string', 'string',
function (prefix, query, postfix) { function (prefix, query, postfix) {
prefix = prefix.replace(/\r|\f/g, '\n').replace(/\u0000/g, '').replace(/\u000b/g, ''); prefix = $.PrivateBin.Helper.htmlEntities(prefix);
postfix = ' ' + postfix.replace(/\r/g, '\n').replace(/\u0000/g, ''); postfix = $.PrivateBin.Helper.htmlEntities(postfix);
let url = 'magnet:?' + query.join('').replace(/^&+|&+$/gm,''), let url = 'magnet:?' + query.join('').replace(/^&+|&+$/gm,'');
clean = jsdom(); return prefix + '<a href="' + url + '" rel="nofollow">' + url + '</a> ' + postfix === $.PrivateBin.Helper.urls2links(prefix + url + ' ' + postfix);
$('body').html('<div id="foo"></div>');
let e = $('#foo');
e.text(prefix + url + postfix);
$.PrivateBin.Helper.urls2links(e);
let result = e.html();
clean();
url = $('<div />').text(url).html();
return $('<div />').text(prefix).html() + '<a href="' + url + '" target="_blank" rel="nofollow noopener noreferrer">' + url + '</a>' + $('<div />').text(postfix).html() === result;
} }
); );
}); });

View File

@@ -280,8 +280,7 @@ describe('TopNav', function () {
it( it(
'collapses the navigation when displayed on a small screen', 'collapses the navigation when displayed on a small screen',
function () { function () {
var clean = jsdom(), var results = [];
results = [];
$('body').html( $('body').html(
'<nav><div class="navbar-header"><button type="button" ' + '<nav><div class="navbar-header"><button type="button" ' +
'class="navbar-toggle collapsed" data-toggle="collapse" ' + 'class="navbar-toggle collapsed" data-toggle="collapse" ' +
@@ -302,11 +301,7 @@ describe('TopNav', function () {
$('.navbar-toggle').hasClass('collapsed') && $('.navbar-toggle').hasClass('collapsed') &&
$('#navbar').attr('aria-expanded') != 'true' $('#navbar').attr('aria-expanded') != 'true'
); );
/* $('.navbar-toggle').click();
with the upgrade for bootstrap-3.3.7.js to bootstrap-3.4.1.js
the mobile interface detection changed to check if the
ontouchstart event exists, which broke this section of the test
$('.navbar-toggle').trigger('click');
results.push( results.push(
!$('.navbar-toggle').hasClass('collapsed') && !$('.navbar-toggle').hasClass('collapsed') &&
$('#navbar').attr('aria-expanded') == 'true' $('#navbar').attr('aria-expanded') == 'true'
@@ -316,132 +311,6 @@ describe('TopNav', function () {
$('.navbar-toggle').hasClass('collapsed') && $('.navbar-toggle').hasClass('collapsed') &&
$('#navbar').attr('aria-expanded') == 'false' $('#navbar').attr('aria-expanded') == 'false'
); );
*/
clean();
assert.ok(results.every(element => element));
}
);
});
describe('resetInput', function () {
before(function () {
cleanup();
});
it(
'reset inputs to defaults (options off)',
function () {
var results = [];
$('body').html(
'<nav><div id="navbar"><ul><li id="burnafterreadingoption" ' +
'class="hidden"><label><input type="checkbox" ' +
'id="burnafterreading" name="burnafterreading" /> ' +
'Burn after reading</label></li><li id="opendiscussionoption" ' +
'class="hidden"><label><input type="checkbox" ' +
'id="opendiscussion" name="opendiscussion" /> ' +
'Open discussion</label></li></ul></div></nav>'
);
$.PrivateBin.TopNav.init();
results.push(
!$.PrivateBin.TopNav.getBurnAfterReading()
);
results.push(
!$.PrivateBin.TopNav.getOpenDiscussion()
);
$('#burnafterreading').attr('checked', 'checked');
$('#opendiscussion').attr('checked', 'checked');
results.push(
$.PrivateBin.TopNav.getBurnAfterReading()
);
results.push(
$.PrivateBin.TopNav.getOpenDiscussion()
);
$.PrivateBin.TopNav.resetInput();
results.push(
!$.PrivateBin.TopNav.getBurnAfterReading()
);
results.push(
!$.PrivateBin.TopNav.getOpenDiscussion()
);
cleanup();
assert.ok(results.every(element => element));
}
);
it(
'reset inputs to defaults (burnafterreading on)',
function () {
var results = [];
$('body').html(
'<nav><div id="navbar"><ul><li id="burnafterreadingoption" ' +
'class="hidden"><label><input type="checkbox" ' +
'id="burnafterreading" name="burnafterreading" checked="checked" /> ' +
'Burn after reading</label></li><li id="opendiscussionoption" ' +
'class="hidden"><label><input type="checkbox" ' +
'id="opendiscussion" name="opendiscussion" checked="checked" /> ' +
'Open discussion</label></li></ul></div></nav>'
);
$.PrivateBin.TopNav.init();
results.push(
$.PrivateBin.TopNav.getBurnAfterReading()
);
results.push(
!$.PrivateBin.TopNav.getOpenDiscussion()
);
$('#burnafterreading').removeAttr('checked');
results.push(
!$.PrivateBin.TopNav.getBurnAfterReading()
);
results.push(
!$.PrivateBin.TopNav.getOpenDiscussion()
);
$.PrivateBin.TopNav.resetInput();
results.push(
$.PrivateBin.TopNav.getBurnAfterReading()
);
results.push(
!$.PrivateBin.TopNav.getOpenDiscussion()
);
cleanup();
assert.ok(results.every(element => element));
}
);
it(
'reset inputs to defaults (opendiscussion on)',
function () {
var results = [];
$('body').html(
'<nav><div id="navbar"><ul><li id="burnafterreadingoption" ' +
'class="hidden"><label><input type="checkbox" ' +
'id="burnafterreading" name="burnafterreading" /> ' +
'Burn after reading</label></li><li id="opendiscussionoption" ' +
'class="hidden"><label><input type="checkbox" ' +
'id="opendiscussion" name="opendiscussion" checked="checked" /> ' +
'Open discussion</label></li></ul></div></nav>'
);
$.PrivateBin.TopNav.init();
results.push(
!$.PrivateBin.TopNav.getBurnAfterReading()
);
results.push(
$.PrivateBin.TopNav.getOpenDiscussion()
);
$('#opendiscussion').removeAttr('checked');
$('#burnafterreading').prop('checked', true);
results.push(
$.PrivateBin.TopNav.getBurnAfterReading()
);
results.push(
!$.PrivateBin.TopNav.getOpenDiscussion()
);
$.PrivateBin.TopNav.resetInput();
results.push(
!$.PrivateBin.TopNav.getBurnAfterReading()
);
results.push(
$.PrivateBin.TopNav.getOpenDiscussion()
);
cleanup(); cleanup();
assert.ok(results.every(element => element)); assert.ok(results.every(element => element));
} }
@@ -676,3 +545,4 @@ describe('TopNav', function () {
); );
}); });
}); });

View File

@@ -26,9 +26,9 @@
let buff; let buff;
if (typeof fetch === 'undefined') { if (typeof fetch === 'undefined') {
buff = fs.readFileSync('zlib-1.2.13.wasm'); buff = fs.readFileSync('zlib-1.2.11.wasm');
} else { } else {
const resp = await fetch('js/zlib-1.2.13.wasm'); const resp = await fetch('js/zlib-1.2.11.wasm');
buff = await resp.arrayBuffer(); buff = await resp.arrayBuffer();
} }
const module = await WebAssembly.compile(buff); const module = await WebAssembly.compile(buff);

BIN
js/zlib-1.2.11.wasm Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -7,13 +7,14 @@
* @link https://github.com/PrivateBin/PrivateBin * @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net) * @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License * @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.4.0 * @version 1.3.3
*/ */
namespace PrivateBin; namespace PrivateBin;
use Exception; use Exception;
use PDO; use PDO;
use PrivateBin\Persistence\DataStore;
/** /**
* Configuration * Configuration
@@ -37,24 +38,22 @@ class Configuration
private static $_defaults = array( private static $_defaults = array(
'main' => array( 'main' => array(
'name' => 'PrivateBin', 'name' => 'PrivateBin',
'basepath' => '',
'discussion' => true, 'discussion' => true,
'opendiscussion' => false, 'opendiscussion' => false,
'password' => true, 'password' => true,
'fileupload' => false, 'fileupload' => false,
'burnafterreadingselected' => false, 'burnafterreadingselected' => false,
'defaultformatter' => 'plaintext', 'defaultformatter' => 'plaintext',
'syntaxhighlightingtheme' => '', 'syntaxhighlightingtheme' => null,
'sizelimit' => 10485760, 'sizelimit' => 10485760,
'template' => 'bootstrap', 'template' => 'bootstrap',
'info' => 'More information on the <a href=\'https://privatebin.info/\'>project page</a>.',
'notice' => '', 'notice' => '',
'languageselection' => false, 'languageselection' => false,
'languagedefault' => '', 'languagedefault' => '',
'urlshortener' => '', 'urlshortener' => '',
'qrcode' => true, 'qrcode' => true,
'icon' => 'jdenticon', 'icon' => 'identicon',
'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', 'cspheader' => 'default-src \'none\'; manifest-src \'self\'; connect-src * blob:; script-src \'self\' \'unsafe-eval\'; style-src \'self\'; font-src \'self\'; img-src \'self\' data: blob:; media-src blob:; object-src blob:; sandbox allow-same-origin allow-scripts allow-forms allow-popups allow-modals',
'zerobincompatibility' => false, 'zerobincompatibility' => false,
'httpwarning' => true, 'httpwarning' => true,
'compression' => 'zlib', 'compression' => 'zlib',
@@ -78,14 +77,14 @@ class Configuration
'markdown' => 'Markdown', 'markdown' => 'Markdown',
), ),
'traffic' => array( 'traffic' => array(
'limit' => 10, 'limit' => 10,
'header' => '', 'header' => null,
'exempted' => '', 'dir' => 'data',
'creators' => '',
), ),
'purge' => array( 'purge' => array(
'limit' => 300, 'limit' => 300,
'batchsize' => 10, 'batchsize' => 10,
'dir' => 'data',
), ),
'model' => array( 'model' => array(
'class' => 'Filesystem', 'class' => 'Filesystem',
@@ -93,10 +92,6 @@ class Configuration
'model_options' => array( 'model_options' => array(
'dir' => 'data', 'dir' => 'data',
), ),
'yourls' => array(
'signature' => '',
'apiurl' => '',
),
); );
/** /**
@@ -106,23 +101,28 @@ class Configuration
*/ */
public function __construct() public function __construct()
{ {
$basePaths = array();
$config = array(); $config = array();
$configPath = getenv('CONFIG_PATH'); $basePath = (getenv('CONFIG_PATH') !== false ? getenv('CONFIG_PATH') : PATH . 'cfg') . DIRECTORY_SEPARATOR;
if ($configPath !== false && !empty($configPath)) { $configIni = $basePath . 'conf.ini';
$basePaths[] = $configPath; $configFile = $basePath . 'conf.php';
// rename INI files to avoid configuration leakage
if (is_readable($configIni)) {
DataStore::prependRename($configIni, $configFile, ';');
// cleanup sample, too
$configIniSample = $configIni . '.sample';
if (is_readable($configIniSample)) {
DataStore::prependRename($configIniSample, $basePath . 'conf.sample.php', ';');
}
} }
$basePaths[] = PATH . 'cfg';
foreach ($basePaths as $basePath) { if (is_readable($configFile)) {
$configFile = $basePath . DIRECTORY_SEPARATOR . 'conf.php'; $config = parse_ini_file($configFile, true);
if (is_readable($configFile)) { foreach (array('main', 'model', 'model_options') as $section) {
$config = parse_ini_file($configFile, true); if (!array_key_exists($section, $config)) {
foreach (array('main', 'model', 'model_options') as $section) { throw new Exception(I18n::_('PrivateBin requires configuration section [%s] to be present in configuration file.', $section), 2);
if (!array_key_exists($section, $config)) {
throw new Exception(I18n::_('PrivateBin requires configuration section [%s] to be present in configuration file.', $section), 2);
}
} }
break;
} }
} }
@@ -150,33 +150,6 @@ class Configuration
'pwd' => null, 'pwd' => null,
'opt' => array(PDO::ATTR_PERSISTENT => true), 'opt' => array(PDO::ATTR_PERSISTENT => true),
); );
} elseif (
$section == 'model_options' && in_array(
$this->_configuration['model']['class'],
array('GoogleCloudStorage')
)
) {
$values = array(
'bucket' => getenv('PRIVATEBIN_GCS_BUCKET') ? getenv('PRIVATEBIN_GCS_BUCKET') : null,
'prefix' => 'pastes',
'uniformacl' => false,
);
} elseif (
$section == 'model_options' && in_array(
$this->_configuration['model']['class'],
array('S3Storage')
)
) {
$values = array(
'region' => null,
'version' => null,
'endpoint' => null,
'accesskey' => null,
'secretkey' => null,
'use_path_style_endpoint' => null,
'bucket' => null,
'prefix' => '',
);
} }
// "*_options" sections don't require all defaults to be set // "*_options" sections don't require all defaults to be set
@@ -236,14 +209,6 @@ class Configuration
if (!array_key_exists($this->_configuration['expire']['default'], $this->_configuration['expire_options'])) { if (!array_key_exists($this->_configuration['expire']['default'], $this->_configuration['expire_options'])) {
$this->_configuration['expire']['default'] = key($this->_configuration['expire_options']); $this->_configuration['expire']['default'] = key($this->_configuration['expire_options']);
} }
// ensure the basepath ends in a slash, if one is set
if (
strlen($this->_configuration['main']['basepath']) &&
substr_compare($this->_configuration['main']['basepath'], '/', -1) !== 0
) {
$this->_configuration['main']['basepath'] .= '/';
}
} }
/** /**

View File

@@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin * @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net) * @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License * @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.4.0 * @version 1.3.3
*/ */
namespace PrivateBin; namespace PrivateBin;
@@ -28,7 +28,7 @@ class Controller
* *
* @const string * @const string
*/ */
const VERSION = '1.4.0'; const VERSION = '1.3.3';
/** /**
* minimal required PHP version * minimal required PHP version
@@ -136,9 +136,6 @@ class Controller
case 'jsonld': case 'jsonld':
$this->_jsonld($this->_request->getParam('jsonld')); $this->_jsonld($this->_request->getParam('jsonld'));
return; return;
case 'yourlsproxy':
$this->_yourlsproxy($this->_request->getParam('link'));
break;
} }
// output JSON or HTML // output JSON or HTML
@@ -165,6 +162,7 @@ class Controller
$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();
ServerSalt::setPath($this->_conf->getKey('dir', 'traffic'));
// set default language // set default language
$lang = $this->_conf->getKey('languagedefault'); $lang = $this->_conf->getKey('languagedefault');
@@ -172,7 +170,7 @@ class Controller
// 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
if (!$this->_conf->getKey('languageselection') && strlen($lang) == 2) { if (!$this->_conf->getKey('languageselection') && strlen($lang) == 2) {
$_COOKIE['lang'] = $lang; $_COOKIE['lang'] = $lang;
setcookie('lang', $lang, 0, '', '', true); setcookie('lang', $lang);
} }
} }
@@ -199,13 +197,14 @@ class Controller
private function _create() private function _create()
{ {
// Ensure last paste from visitors IP address was more than configured amount of seconds ago. // Ensure last paste from visitors IP address was more than configured amount of seconds ago.
ServerSalt::setStore($this->_model->getStore());
TrafficLimiter::setConfiguration($this->_conf); TrafficLimiter::setConfiguration($this->_conf);
TrafficLimiter::setStore($this->_model->getStore()); if (!TrafficLimiter::canPass()) {
try { $this->_return_message(
TrafficLimiter::canPass(); 1, I18n::_(
} catch (Exception $e) { 'Please wait %d seconds between each post.',
$this->_return_message(1, $e->getMessage()); $this->_conf->getKey('limit', 'traffic')
)
);
return; return;
} }
@@ -342,17 +341,10 @@ class Controller
header('Last-Modified: ' . $time); header('Last-Modified: ' . $time);
header('Vary: Accept'); header('Vary: Accept');
header('Content-Security-Policy: ' . $this->_conf->getKey('cspheader')); header('Content-Security-Policy: ' . $this->_conf->getKey('cspheader'));
header('Cross-Origin-Resource-Policy: same-origin');
header('Cross-Origin-Embedder-Policy: require-corp');
// disabled, because it prevents links from a paste to the same site to
// be opened. Didn't work with `same-origin-allow-popups` either.
// See issue https://github.com/PrivateBin/PrivateBin/issues/970 for details.
// header('Cross-Origin-Opener-Policy: same-origin');
header('Permissions-Policy: browsing-topics=()');
header('Referrer-Policy: no-referrer'); header('Referrer-Policy: no-referrer');
header('X-Xss-Protection: 1; mode=block');
header('X-Frame-Options: DENY');
header('X-Content-Type-Options: nosniff'); header('X-Content-Type-Options: nosniff');
header('X-Frame-Options: deny');
header('X-XSS-Protection: 1; mode=block');
// label all the expiration options // label all the expiration options
$expire = array(); $expire = array();
@@ -367,29 +359,12 @@ class Controller
$languageselection = ''; $languageselection = '';
if ($this->_conf->getKey('languageselection')) { if ($this->_conf->getKey('languageselection')) {
$languageselection = I18n::getLanguage(); $languageselection = I18n::getLanguage();
setcookie('lang', $languageselection, 0, '', '', true); setcookie('lang', $languageselection);
} }
// strip policies that are unsupported in meta tag
$metacspheader = str_replace(
array(
'frame-ancestors \'none\'; ',
'; sandbox allow-same-origin allow-scripts allow-forms allow-popups allow-modals allow-downloads',
),
'',
$this->_conf->getKey('cspheader')
);
$page = new View; $page = new View;
$page->assign('CSPHEADER', $metacspheader);
$page->assign('ERROR', I18n::_($this->_error));
$page->assign('NAME', $this->_conf->getKey('name')); $page->assign('NAME', $this->_conf->getKey('name'));
if ($this->_request->getOperation() === 'yourlsproxy') { $page->assign('ERROR', I18n::_($this->_error));
$page->assign('SHORTURL', $this->_status);
$page->draw('yourlsproxy');
return;
}
$page->assign('BASEPATH', I18n::_($this->_conf->getKey('basepath')));
$page->assign('STATUS', I18n::_($this->_status)); $page->assign('STATUS', I18n::_($this->_status));
$page->assign('VERSION', self::VERSION); $page->assign('VERSION', self::VERSION);
$page->assign('DISCUSSION', $this->_conf->getKey('discussion')); $page->assign('DISCUSSION', $this->_conf->getKey('discussion'));
@@ -399,7 +374,6 @@ class Controller
$page->assign('SYNTAXHIGHLIGHTINGTHEME', $this->_conf->getKey('syntaxhighlightingtheme')); $page->assign('SYNTAXHIGHLIGHTINGTHEME', $this->_conf->getKey('syntaxhighlightingtheme'));
$page->assign('FORMATTER', $formatters); $page->assign('FORMATTER', $formatters);
$page->assign('FORMATTERDEFAULT', $this->_conf->getKey('defaultformatter')); $page->assign('FORMATTERDEFAULT', $this->_conf->getKey('defaultformatter'));
$page->assign('INFO', I18n::_(str_replace("'", '"', $this->_conf->getKey('info'))));
$page->assign('NOTICE', I18n::_($this->_conf->getKey('notice'))); $page->assign('NOTICE', I18n::_($this->_conf->getKey('notice')));
$page->assign('BURNAFTERREADINGSELECTED', $this->_conf->getKey('burnafterreadingselected')); $page->assign('BURNAFTERREADINGSELECTED', $this->_conf->getKey('burnafterreadingselected'));
$page->assign('PASSWORD', $this->_conf->getKey('password')); $page->assign('PASSWORD', $this->_conf->getKey('password'));
@@ -447,22 +421,6 @@ class Controller
echo $content; echo $content;
} }
/**
* proxies link to YOURLS, updates status or error with response
*
* @access private
* @param string $link
*/
private function _yourlsproxy($link)
{
$yourls = new YourlsProxy($this->_conf, $link);
if ($yourls->isError()) {
$this->_error = $yourls->getError();
} else {
$this->_status = $yourls->getUrl();
}
}
/** /**
* prepares JSON encoded status message * prepares JSON encoded status message
* *

View File

@@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin * @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net) * @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License * @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.4.0 * @version 1.3.3
*/ */
namespace PrivateBin\Data; namespace PrivateBin\Data;
@@ -15,12 +15,12 @@ namespace PrivateBin\Data;
/** /**
* AbstractData * AbstractData
* *
* Abstract model for data access, implemented as a singleton. * Abstract model for PrivateBin data access, implemented as a singleton.
*/ */
abstract class AbstractData abstract class AbstractData
{ {
/** /**
* Singleton instance * singleton instance
* *
* @access protected * @access protected
* @static * @static
@@ -29,18 +29,9 @@ abstract class AbstractData
protected static $_instance = null; protected static $_instance = null;
/** /**
* cache for the traffic limiter * enforce singleton, disable constructor
* *
* @access private * Instantiate using {@link getInstance()}, privatebin is a singleton object.
* @static
* @var array
*/
protected static $_last_cache = array();
/**
* Enforce singleton, disable constructor
*
* Instantiate using {@link getInstance()}, this object implements the singleton pattern.
* *
* @access protected * @access protected
*/ */
@@ -49,9 +40,9 @@ abstract class AbstractData
} }
/** /**
* Enforce singleton, disable cloning * enforce singleton, disable cloning
* *
* Instantiate using {@link getInstance()}, this object implements the singleton pattern. * Instantiate using {@link getInstance()}, privatebin is a singleton object.
* *
* @access private * @access private
*/ */
@@ -60,7 +51,7 @@ abstract class AbstractData
} }
/** /**
* Get instance of singleton * get instance of singleton
* *
* @access public * @access public
* @static * @static
@@ -139,46 +130,6 @@ abstract class AbstractData
*/ */
abstract public function existsComment($pasteid, $parentid, $commentid); abstract public function existsComment($pasteid, $parentid, $commentid);
/**
* Purge outdated entries.
*
* @access public
* @param string $namespace
* @param int $time
* @return void
*/
public function purgeValues($namespace, $time)
{
if ($namespace === 'traffic_limiter') {
foreach (self::$_last_cache as $key => $last_submission) {
if ($last_submission <= $time) {
unset(self::$_last_cache[$key]);
}
}
}
}
/**
* Save a value.
*
* @access public
* @param string $value
* @param string $namespace
* @param string $key
* @return bool
*/
abstract public function setValue($value, $namespace, $key = '');
/**
* Load a value.
*
* @access public
* @param string $namespace
* @param string $key
* @return string
*/
abstract public function getValue($namespace, $key = '');
/** /**
* Returns up to batch size number of paste ids that have expired * Returns up to batch size number of paste ids that have expired
* *

View File

@@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin * @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net) * @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License * @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.4.0 * @version 1.3.3
*/ */
namespace PrivateBin\Data; namespace PrivateBin\Data;
@@ -97,11 +97,6 @@ class Database extends AbstractData
self::$_type = strtolower( self::$_type = strtolower(
substr($options['dsn'], 0, strpos($options['dsn'], ':')) substr($options['dsn'], 0, strpos($options['dsn'], ':'))
); );
// MySQL uses backticks to quote identifiers by default,
// tell it to expect ANSI SQL double quotes
if (self::$_type === 'mysql' && defined('PDO::MYSQL_ATTR_INIT_COMMAND')) {
$options['opt'][PDO::MYSQL_ATTR_INIT_COMMAND] = "SET SESSION sql_mode='ANSI_QUOTES'";
}
$tableQuery = self::_getTableQuery(self::$_type); $tableQuery = self::_getTableQuery(self::$_type);
self::$_db = new PDO( self::$_db = new PDO(
$options['dsn'], $options['dsn'],
@@ -203,25 +198,21 @@ class Database extends AbstractData
$opendiscussion = $paste['adata'][2]; $opendiscussion = $paste['adata'][2];
$burnafterreading = $paste['adata'][3]; $burnafterreading = $paste['adata'][3];
} }
try { return self::_exec(
return self::_exec( 'INSERT INTO ' . self::_sanitizeIdentifier('paste') .
'INSERT INTO "' . self::_sanitizeIdentifier('paste') . ' VALUES(?,?,?,?,?,?,?,?,?)',
'" VALUES(?,?,?,?,?,?,?,?,?)', array(
array( $pasteid,
$pasteid, $isVersion1 ? $paste['data'] : Json::encode($paste),
$isVersion1 ? $paste['data'] : Json::encode($paste), $created,
$created, $expire_date,
$expire_date, (int) $opendiscussion,
(int) $opendiscussion, (int) $burnafterreading,
(int) $burnafterreading, Json::encode($meta),
Json::encode($meta), $attachment,
$attachment, $attachmentname,
$attachmentname, )
) );
);
} catch (Exception $e) {
return false;
}
} }
/** /**
@@ -238,14 +229,11 @@ class Database extends AbstractData
} }
self::$_cache[$pasteid] = false; self::$_cache[$pasteid] = false;
try { $paste = self::_select(
$paste = self::_select( 'SELECT * FROM ' . self::_sanitizeIdentifier('paste') .
'SELECT * FROM "' . self::_sanitizeIdentifier('paste') . ' WHERE dataid = ?', array($pasteid), true
'" WHERE "dataid" = ?', array($pasteid), true );
);
} catch (Exception $e) {
$paste = false;
}
if ($paste === false) { if ($paste === false) {
return false; return false;
} }
@@ -277,9 +265,9 @@ class Database extends AbstractData
} }
// support v1 attachments // support v1 attachments
if (array_key_exists('attachment', $paste) && !empty($paste['attachment'])) { if (array_key_exists('attachment', $paste) && strlen($paste['attachment'])) {
self::$_cache[$pasteid]['attachment'] = $paste['attachment']; self::$_cache[$pasteid]['attachment'] = $paste['attachment'];
if (array_key_exists('attachmentname', $paste) && !empty($paste['attachmentname'])) { if (array_key_exists('attachmentname', $paste) && strlen($paste['attachmentname'])) {
self::$_cache[$pasteid]['attachmentname'] = $paste['attachmentname']; self::$_cache[$pasteid]['attachmentname'] = $paste['attachmentname'];
} }
} }
@@ -302,12 +290,12 @@ class Database extends AbstractData
public function delete($pasteid) public function delete($pasteid)
{ {
self::_exec( self::_exec(
'DELETE FROM "' . self::_sanitizeIdentifier('paste') . 'DELETE FROM ' . self::_sanitizeIdentifier('paste') .
'" WHERE "dataid" = ?', array($pasteid) ' WHERE dataid = ?', array($pasteid)
); );
self::_exec( self::_exec(
'DELETE FROM "' . self::_sanitizeIdentifier('comment') . 'DELETE FROM ' . self::_sanitizeIdentifier('comment') .
'" WHERE "pasteid" = ?', array($pasteid) ' WHERE pasteid = ?', array($pasteid)
); );
if ( if (
array_key_exists($pasteid, self::$_cache) array_key_exists($pasteid, self::$_cache)
@@ -360,23 +348,19 @@ class Database extends AbstractData
$meta[$key] = null; $meta[$key] = null;
} }
} }
try { return self::_exec(
return self::_exec( 'INSERT INTO ' . self::_sanitizeIdentifier('comment') .
'INSERT INTO "' . self::_sanitizeIdentifier('comment') . ' VALUES(?,?,?,?,?,?,?)',
'" VALUES(?,?,?,?,?,?,?)', array(
array( $commentid,
$commentid, $pasteid,
$pasteid, $parentid,
$parentid, $data,
$data, $meta['nickname'],
$meta['nickname'], $meta[$iconKey],
$meta[$iconKey], $meta[$createdKey],
$meta[$createdKey], )
) );
);
} catch (Exception $e) {
return false;
}
} }
/** /**
@@ -389,13 +373,13 @@ class Database extends AbstractData
public function readComments($pasteid) public function readComments($pasteid)
{ {
$rows = self::_select( $rows = self::_select(
'SELECT * FROM "' . self::_sanitizeIdentifier('comment') . 'SELECT * FROM ' . self::_sanitizeIdentifier('comment') .
'" WHERE "pasteid" = ?', array($pasteid) ' WHERE pasteid = ?', array($pasteid)
); );
// create comment list // create comment list
$comments = array(); $comments = array();
if (is_array($rows) && count($rows)) { if (count($rows)) {
foreach ($rows as $row) { foreach ($rows as $row) {
$i = $this->getOpenSlot($comments, (int) $row['postdate']); $i = $this->getOpenSlot($comments, (int) $row['postdate']);
$data = Json::decode($row['data']); $data = Json::decode($row['data']);
@@ -432,85 +416,13 @@ class Database extends AbstractData
*/ */
public function existsComment($pasteid, $parentid, $commentid) public function existsComment($pasteid, $parentid, $commentid)
{ {
try { return (bool) self::_select(
return (bool) self::_select( 'SELECT dataid FROM ' . self::_sanitizeIdentifier('comment') .
'SELECT "dataid" FROM "' . self::_sanitizeIdentifier('comment') . ' WHERE pasteid = ? AND parentid = ? AND dataid = ?',
'" WHERE "pasteid" = ? AND "parentid" = ? AND "dataid" = ?', array($pasteid, $parentid, $commentid), true
array($pasteid, $parentid, $commentid), true
);
} catch (Exception $e) {
return false;
}
}
/**
* Save a value.
*
* @access public
* @param string $value
* @param string $namespace
* @param string $key
* @return bool
*/
public function setValue($value, $namespace, $key = '')
{
if ($namespace === 'traffic_limiter') {
self::$_last_cache[$key] = $value;
try {
$value = Json::encode(self::$_last_cache);
} catch (Exception $e) {
return false;
}
}
return self::_exec(
'UPDATE "' . self::_sanitizeIdentifier('config') .
'" SET "value" = ? WHERE "id" = ?',
array($value, strtoupper($namespace))
); );
} }
/**
* Load a value.
*
* @access public
* @param string $namespace
* @param string $key
* @return string
*/
public function getValue($namespace, $key = '')
{
$configKey = strtoupper($namespace);
$value = $this->_getConfig($configKey);
if ($value === '') {
// initialize the row, so that setValue can rely on UPDATE queries
self::_exec(
'INSERT INTO "' . self::_sanitizeIdentifier('config') .
'" VALUES(?,?)',
array($configKey, '')
);
// migrate filesystem based salt into database
$file = 'data' . DIRECTORY_SEPARATOR . 'salt.php';
if ($namespace === 'salt' && is_readable($file)) {
$value = Filesystem::getInstance(array('dir' => 'data'))->getValue('salt');
$this->setValue($value, 'salt');
@unlink($file);
return $value;
}
}
if ($value && $namespace === 'traffic_limiter') {
try {
self::$_last_cache = Json::decode($value);
} catch (Exception $e) {
self::$_last_cache = array();
}
if (array_key_exists($key, self::$_last_cache)) {
return self::$_last_cache[$key];
}
}
return (string) $value;
}
/** /**
* Returns up to batch size number of paste ids that have expired * Returns up to batch size number of paste ids that have expired
* *
@@ -522,12 +434,11 @@ class Database extends AbstractData
{ {
$pastes = array(); $pastes = array();
$rows = self::_select( $rows = self::_select(
'SELECT "dataid" FROM "' . self::_sanitizeIdentifier('paste') . 'SELECT dataid FROM ' . self::_sanitizeIdentifier('paste') .
'" WHERE "expiredate" < ? AND "expiredate" != ? ' . ' WHERE expiredate < ? AND expiredate != ? LIMIT ?',
(self::$_type === 'oci' ? 'FETCH NEXT ? ROWS ONLY' : 'LIMIT ?'),
array(time(), 0, $batchsize) array(time(), 0, $batchsize)
); );
if (is_array($rows) && count($rows)) { if (count($rows)) {
foreach ($rows as $row) { foreach ($rows as $row) {
$pastes[] = $row['dataid']; $pastes[] = $row['dataid'];
} }
@@ -548,17 +459,7 @@ class Database extends AbstractData
private static function _exec($sql, array $params) private static function _exec($sql, array $params)
{ {
$statement = self::$_db->prepare($sql); $statement = self::$_db->prepare($sql);
foreach ($params as $key => &$parameter) { $result = $statement->execute($params);
$position = $key + 1;
if (is_int($parameter)) {
$statement->bindParam($position, $parameter, PDO::PARAM_INT);
} elseif (is_string($parameter) && strlen($parameter) >= 4000) {
$statement->bindParam($position, $parameter, PDO::PARAM_STR, strlen($parameter));
} else {
$statement->bindParam($position, $parameter);
}
}
$result = $statement->execute();
$statement->closeCursor(); $statement->closeCursor();
return $result; return $result;
} }
@@ -578,24 +479,10 @@ class Database extends AbstractData
{ {
$statement = self::$_db->prepare($sql); $statement = self::$_db->prepare($sql);
$statement->execute($params); $statement->execute($params);
if ($firstOnly) { $result = $firstOnly ?
$result = $statement->fetch(PDO::FETCH_ASSOC); $statement->fetch(PDO::FETCH_ASSOC) :
} elseif (self::$_type === 'oci') { $statement->fetchAll(PDO::FETCH_ASSOC);
// workaround for https://bugs.php.net/bug.php?id=46728
$result = array();
while ($row = $statement->fetch(PDO::FETCH_ASSOC)) {
$result[] = array_map('PrivateBin\Data\Database::_sanitizeClob', $row);
}
} else {
$result = $statement->fetchAll(PDO::FETCH_ASSOC);
}
$statement->closeCursor(); $statement->closeCursor();
if (self::$_type === 'oci' && is_array($result)) {
// returned CLOB values are streams, convert these into strings
$result = $firstOnly ?
array_map('PrivateBin\Data\Database::_sanitizeClob', $result) :
$result;
}
return $result; return $result;
} }
@@ -628,15 +515,14 @@ class Database extends AbstractData
{ {
switch ($type) { switch ($type) {
case 'ibm': case 'ibm':
$sql = 'SELECT "tabname" FROM "SYSCAT"."TABLES"'; $sql = 'SELECT tabname FROM SYSCAT.TABLES ';
break; break;
case 'informix': case 'informix':
$sql = 'SELECT "tabname" FROM "systables"'; $sql = 'SELECT tabname FROM systables ';
break; break;
case 'mssql': case 'mssql':
// U: tables created by the user $sql = 'SELECT name FROM sysobjects '
$sql = 'SELECT "name" FROM "sysobjects" ' . "WHERE type = 'U' ORDER BY name";
. 'WHERE "type" = \'U\' ORDER BY "name"';
break; break;
case 'mysql': case 'mysql':
$sql = 'SHOW TABLES'; $sql = 'SHOW TABLES';
@@ -645,23 +531,23 @@ 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 c."relname" AS "table_name" ' $sql = 'SELECT c.relname AS table_name '
. 'FROM "pg_class" c, "pg_user" u ' . 'FROM pg_class c, pg_user u '
. 'WHERE c."relowner" = u."usesysid" AND c."relkind" = \'r\' ' . "WHERE c.relowner = u.usesysid AND c.relkind = 'r' "
. 'AND NOT EXISTS (SELECT 1 FROM "pg_views" WHERE "viewname" = c."relname") ' . 'AND NOT EXISTS (SELECT 1 FROM pg_views WHERE viewname = c.relname) '
. "AND c.\"relname\" !~ '^(pg_|sql_)' " . "AND c.relname !~ '^(pg_|sql_)' "
. 'UNION ' . 'UNION '
. 'SELECT c."relname" AS "table_name" ' . 'SELECT c.relname AS table_name '
. 'FROM "pg_class" c ' . 'FROM pg_class c '
. "WHERE c.\"relkind\" = 'r' " . "WHERE c.relkind = 'r' "
. 'AND NOT EXISTS (SELECT 1 FROM "pg_views" WHERE "viewname" = c."relname") ' . '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 NOT EXISTS (SELECT 1 FROM pg_user WHERE usesysid = c.relowner) '
. "AND c.\"relname\" !~ '^pg_'"; . "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' "
. 'UNION ALL SELECT "name" FROM "sqlite_temp_master" ' . 'UNION ALL SELECT name FROM sqlite_temp_master '
. 'WHERE "type"=\'table\' ORDER BY "name"'; . "WHERE type='table' ORDER BY name";
break; break;
default: default:
throw new Exception( throw new Exception(
@@ -677,19 +563,16 @@ class Database extends AbstractData
* @access private * @access private
* @static * @static
* @param string $key * @param string $key
* @throws PDOException
* @return string * @return string
*/ */
private static function _getConfig($key) private static function _getConfig($key)
{ {
try { $row = self::_select(
$row = self::_select( 'SELECT value FROM ' . self::_sanitizeIdentifier('config') .
'SELECT "value" FROM "' . self::_sanitizeIdentifier('config') . ' WHERE id = ?', array($key), true
'" WHERE "id" = ?', array($key), true );
); return $row['value'];
} catch (PDOException $e) {
return '';
}
return $row ? $row['value'] : '';
} }
/** /**
@@ -703,14 +586,10 @@ class Database extends AbstractData
private static function _getPrimaryKeyClauses($key = 'dataid') private static function _getPrimaryKeyClauses($key = 'dataid')
{ {
$main_key = $after_key = ''; $main_key = $after_key = '';
switch (self::$_type) { if (self::$_type === 'mysql') {
case 'mysql': $after_key = ", PRIMARY KEY ($key)";
case 'oci': } else {
$after_key = ", PRIMARY KEY (\"$key\")"; $main_key = ' PRIMARY KEY';
break;
default:
$main_key = ' PRIMARY KEY';
break;
} }
return array($main_key, $after_key); return array($main_key, $after_key);
} }
@@ -718,7 +597,7 @@ class Database extends AbstractData
/** /**
* get the data type, depending on the database driver * get the data type, depending on the database driver
* *
* PostgreSQL and OCI uses a different API for BLOBs then SQL, hence we use TEXT and CLOB * PostgreSQL uses a different API for BLOBs then SQL, hence we use TEXT
* *
* @access private * @access private
* @static * @static
@@ -726,20 +605,13 @@ class Database extends AbstractData
*/ */
private static function _getDataType() private static function _getDataType()
{ {
switch (self::$_type) { return self::$_type === 'pgsql' ? 'TEXT' : 'BLOB';
case 'oci':
return 'CLOB';
case 'pgsql':
return 'TEXT';
default:
return 'BLOB';
}
} }
/** /**
* get the attachment type, depending on the database driver * get the attachment type, depending on the database driver
* *
* PostgreSQL and OCI use different APIs for BLOBs then SQL, hence we use TEXT and CLOB * PostgreSQL uses a different API for BLOBs then SQL, hence we use TEXT
* *
* @access private * @access private
* @static * @static
@@ -747,33 +619,7 @@ class Database extends AbstractData
*/ */
private static function _getAttachmentType() private static function _getAttachmentType()
{ {
switch (self::$_type) { return self::$_type === 'pgsql' ? 'TEXT' : 'MEDIUMBLOB';
case 'oci':
return 'CLOB';
case 'pgsql':
return 'TEXT';
default:
return 'MEDIUMBLOB';
}
}
/**
* get the meta type, depending on the database driver
*
* OCI doesn't accept TEXT so it has to be VARCHAR2(4000)
*
* @access private
* @static
* @return string
*/
private static function _getMetaType()
{
switch (self::$_type) {
case 'oci':
return 'VARCHAR2(4000)';
default:
return 'TEXT';
}
} }
/** /**
@@ -787,18 +633,17 @@ class Database extends AbstractData
list($main_key, $after_key) = self::_getPrimaryKeyClauses(); list($main_key, $after_key) = self::_getPrimaryKeyClauses();
$dataType = self::_getDataType(); $dataType = self::_getDataType();
$attachmentType = self::_getAttachmentType(); $attachmentType = self::_getAttachmentType();
$metaType = self::_getMetaType();
self::$_db->exec( self::$_db->exec(
'CREATE TABLE "' . self::_sanitizeIdentifier('paste') . '" ( ' . 'CREATE TABLE ' . self::_sanitizeIdentifier('paste') . ' ( ' .
"\"dataid\" CHAR(16) NOT NULL$main_key, " . "dataid CHAR(16) NOT NULL$main_key, " .
"\"data\" $attachmentType, " . "data $attachmentType, " .
'"postdate" INT, ' . 'postdate INT, ' .
'"expiredate" INT, ' . 'expiredate INT, ' .
'"opendiscussion" INT, ' . 'opendiscussion INT, ' .
'"burnafterreading" INT, ' . 'burnafterreading INT, ' .
"\"meta\" $metaType, " . 'meta TEXT, ' .
"\"attachment\" $attachmentType, " . "attachment $attachmentType, " .
"\"attachmentname\" $dataType$after_key )" "attachmentname $dataType$after_key );"
); );
} }
@@ -813,37 +658,19 @@ class Database extends AbstractData
list($main_key, $after_key) = self::_getPrimaryKeyClauses(); list($main_key, $after_key) = self::_getPrimaryKeyClauses();
$dataType = self::_getDataType(); $dataType = self::_getDataType();
self::$_db->exec( self::$_db->exec(
'CREATE TABLE "' . self::_sanitizeIdentifier('comment') . '" ( ' . 'CREATE TABLE ' . self::_sanitizeIdentifier('comment') . ' ( ' .
"\"dataid\" CHAR(16) NOT NULL$main_key, " . "dataid CHAR(16) NOT NULL$main_key, " .
'"pasteid" CHAR(16), ' . 'pasteid CHAR(16), ' .
'"parentid" CHAR(16), ' . 'parentid CHAR(16), ' .
"\"data\" $dataType, " . "data $dataType, " .
"\"nickname\" $dataType, " . "nickname $dataType, " .
"\"vizhash\" $dataType, " . "vizhash $dataType, " .
"\"postdate\" INT$after_key )" "postdate INT$after_key );"
);
self::$_db->exec(
'CREATE INDEX IF NOT EXISTS comment_parent ON ' .
self::_sanitizeIdentifier('comment') . '(pasteid);'
); );
if (self::$_type === 'oci') {
self::$_db->exec(
'declare
already_exists exception;
columns_indexed exception;
pragma exception_init( already_exists, -955 );
pragma exception_init(columns_indexed, -1408);
begin
execute immediate \'create index "comment_parent" on "' . self::_sanitizeIdentifier('comment') . '" ("pasteid")\';
exception
when already_exists or columns_indexed then
NULL;
end;'
);
} else {
// CREATE INDEX IF NOT EXISTS not supported as of Oracle MySQL <= 8.0
self::$_db->exec(
'CREATE INDEX "' .
self::_sanitizeIdentifier('comment_parent') . '" ON "' .
self::_sanitizeIdentifier('comment') . '" ("pasteid")'
);
}
} }
/** /**
@@ -855,37 +682,17 @@ class Database extends AbstractData
private static function _createConfigTable() private static function _createConfigTable()
{ {
list($main_key, $after_key) = self::_getPrimaryKeyClauses('id'); list($main_key, $after_key) = self::_getPrimaryKeyClauses('id');
$charType = self::$_type === 'oci' ? 'VARCHAR2(16)' : 'CHAR(16)';
$textType = self::_getMetaType();
self::$_db->exec( self::$_db->exec(
'CREATE TABLE "' . self::_sanitizeIdentifier('config') . 'CREATE TABLE ' . self::_sanitizeIdentifier('config') .
"\" ( \"id\" $charType NOT NULL$main_key, \"value\" $textType$after_key )" " ( id CHAR(16) NOT NULL$main_key, value TEXT$after_key );"
); );
self::_exec( self::_exec(
'INSERT INTO "' . self::_sanitizeIdentifier('config') . 'INSERT INTO ' . self::_sanitizeIdentifier('config') .
'" VALUES(?,?)', ' VALUES(?,?)',
array('VERSION', Controller::VERSION) array('VERSION', Controller::VERSION)
); );
} }
/**
* sanitizes CLOB values used with OCI
*
* From: https://stackoverflow.com/questions/36200534/pdo-oci-into-a-clob-field
*
* @access public
* @static
* @param int|string|resource $value
* @return int|string
*/
public static function _sanitizeClob($value)
{
if (is_resource($value)) {
$value = stream_get_contents($value);
}
return $value;
}
/** /**
* sanitizes identifiers * sanitizes identifiers
* *
@@ -914,50 +721,43 @@ class Database extends AbstractData
case '0.21': case '0.21':
// create the meta column if necessary (pre 0.21 change) // create the meta column if necessary (pre 0.21 change)
try { try {
self::$_db->exec( self::$_db->exec('SELECT meta FROM ' . self::_sanitizeIdentifier('paste') . ' LIMIT 1;');
'SELECT "meta" FROM "' . self::_sanitizeIdentifier('paste') . '" ' .
(self::$_type === 'oci' ? 'FETCH NEXT 1 ROWS ONLY' : 'LIMIT 1')
);
} catch (PDOException $e) { } catch (PDOException $e) {
self::$_db->exec('ALTER TABLE "' . self::_sanitizeIdentifier('paste') . '" ADD COLUMN "meta" TEXT'); self::$_db->exec('ALTER TABLE ' . self::_sanitizeIdentifier('paste') . ' ADD COLUMN meta TEXT;');
} }
// SQLite only allows one ALTER statement at a time... // SQLite only allows one ALTER statement at a time...
self::$_db->exec( self::$_db->exec(
'ALTER TABLE "' . self::_sanitizeIdentifier('paste') . 'ALTER TABLE ' . self::_sanitizeIdentifier('paste') .
"\" ADD COLUMN \"attachment\" $attachmentType" " ADD COLUMN attachment $attachmentType;"
); );
self::$_db->exec( self::$_db->exec(
'ALTER TABLE "' . self::_sanitizeIdentifier('paste') . "\" ADD COLUMN \"attachmentname\" $dataType" 'ALTER TABLE ' . self::_sanitizeIdentifier('paste') . " ADD COLUMN attachmentname $dataType;"
); );
// SQLite doesn't support MODIFY, but it allows TEXT of similar // SQLite doesn't support MODIFY, but it allows TEXT of similar
// size as BLOB, so there is no need to change it there // size as BLOB, so there is no need to change it there
if (self::$_type !== 'sqlite') { if (self::$_type !== 'sqlite') {
self::$_db->exec( self::$_db->exec(
'ALTER TABLE "' . self::_sanitizeIdentifier('paste') . 'ALTER TABLE ' . self::_sanitizeIdentifier('paste') .
"\" ADD PRIMARY KEY (\"dataid\"), MODIFY COLUMN \"data\" $dataType" " ADD PRIMARY KEY (dataid), MODIFY COLUMN data $dataType;"
); );
self::$_db->exec( self::$_db->exec(
'ALTER TABLE "' . self::_sanitizeIdentifier('comment') . 'ALTER TABLE ' . self::_sanitizeIdentifier('comment') .
"\" ADD PRIMARY KEY (\"dataid\"), MODIFY COLUMN \"data\" $dataType, " . " ADD PRIMARY KEY (dataid), MODIFY COLUMN data $dataType, " .
"MODIFY COLUMN \"nickname\" $dataType, MODIFY COLUMN \"vizhash\" $dataType" "MODIFY COLUMN nickname $dataType, MODIFY COLUMN vizhash $dataType;"
); );
} else { } else {
self::$_db->exec( self::$_db->exec(
'CREATE UNIQUE INDEX IF NOT EXISTS "' . 'CREATE UNIQUE INDEX IF NOT EXISTS paste_dataid ON ' .
self::_sanitizeIdentifier('paste_dataid') . '" ON "' . self::_sanitizeIdentifier('paste') . '(dataid);'
self::_sanitizeIdentifier('paste') . '" ("dataid")'
); );
self::$_db->exec( self::$_db->exec(
'CREATE UNIQUE INDEX IF NOT EXISTS "' . 'CREATE UNIQUE INDEX IF NOT EXISTS comment_dataid ON ' .
self::_sanitizeIdentifier('comment_dataid') . '" ON "' . self::_sanitizeIdentifier('comment') . '(dataid);'
self::_sanitizeIdentifier('comment') . '" ("dataid")'
); );
} }
// CREATE INDEX IF NOT EXISTS not supported as of Oracle MySQL <= 8.0
self::$_db->exec( self::$_db->exec(
'CREATE INDEX "' . 'CREATE INDEX IF NOT EXISTS comment_parent ON ' .
self::_sanitizeIdentifier('comment_parent') . '" ON "' . self::_sanitizeIdentifier('comment') . '(pasteid);'
self::_sanitizeIdentifier('comment') . '" ("pasteid")'
); );
// no break, continue with updates for 0.22 and later // no break, continue with updates for 0.22 and later
case '1.3': case '1.3':
@@ -966,15 +766,15 @@ class Database extends AbstractData
// to change it there // to change it there
if (self::$_type !== 'sqlite' && self::$_type !== 'pgsql') { if (self::$_type !== 'sqlite' && self::$_type !== 'pgsql') {
self::$_db->exec( self::$_db->exec(
'ALTER TABLE "' . self::_sanitizeIdentifier('paste') . 'ALTER TABLE ' . self::_sanitizeIdentifier('paste') .
"\" MODIFY COLUMN \"data\" $attachmentType" " MODIFY COLUMN data $attachmentType;"
); );
} }
// no break, continue with updates for all newer versions // no break, continue with updates for all newer versions
default: default:
self::_exec( self::_exec(
'UPDATE "' . self::_sanitizeIdentifier('config') . 'UPDATE ' . self::_sanitizeIdentifier('config') .
'" SET "value" = ? WHERE "id" = ?', ' SET value = ? WHERE id = ?',
array(Controller::VERSION, 'VERSION') array(Controller::VERSION, 'VERSION')
); );
} }

View File

@@ -7,13 +7,12 @@
* @link https://github.com/PrivateBin/PrivateBin * @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net) * @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License * @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.4.0 * @version 1.3.3
*/ */
namespace PrivateBin\Data; namespace PrivateBin\Data;
use Exception; use PrivateBin\Persistence\DataStore;
use PrivateBin\Json;
/** /**
* Filesystem * Filesystem
@@ -22,29 +21,6 @@ use PrivateBin\Json;
*/ */
class Filesystem extends AbstractData class Filesystem extends AbstractData
{ {
/**
* first line in paste or comment files, to protect their contents from browsing exposed data directories
*
* @const string
*/
const PROTECTION_LINE = '<?php http_response_code(403); /*';
/**
* line in generated .htaccess files, to protect exposed directories from being browsable on apache web servers
*
* @const string
*/
const HTACCESS_LINE = 'Require all denied';
/**
* path in which to persist something
*
* @access private
* @static
* @var string
*/
private static $_path = 'data';
/** /**
* get instance of singleton * get instance of singleton
* *
@@ -64,7 +40,7 @@ class Filesystem extends AbstractData
is_array($options) && is_array($options) &&
array_key_exists('dir', $options) array_key_exists('dir', $options)
) { ) {
self::$_path = $options['dir']; DataStore::setPath($options['dir']);
} }
return self::$_instance; return self::$_instance;
} }
@@ -87,7 +63,7 @@ class Filesystem extends AbstractData
if (!is_dir($storagedir)) { if (!is_dir($storagedir)) {
mkdir($storagedir, 0700, true); mkdir($storagedir, 0700, true);
} }
return self::_store($file, $paste); return DataStore::store($file, $paste);
} }
/** /**
@@ -99,13 +75,12 @@ class Filesystem extends AbstractData
*/ */
public function read($pasteid) public function read($pasteid)
{ {
if ( if (!$this->exists($pasteid)) {
!$this->exists($pasteid) ||
!$paste = self::_get(self::_dataid2path($pasteid) . $pasteid . '.php')
) {
return false; return false;
} }
return self::upgradePreV1Format($paste); return self::upgradePreV1Format(
DataStore::get(self::_dataid2path($pasteid) . $pasteid . '.php')
);
} }
/** /**
@@ -152,7 +127,7 @@ class Filesystem extends AbstractData
$pastePath = $basePath . '.php'; $pastePath = $basePath . '.php';
// convert to PHP protected files if needed // convert to PHP protected files if needed
if (is_readable($basePath)) { if (is_readable($basePath)) {
self::_prependRename($basePath, $pastePath); DataStore::prependRename($basePath, $pastePath);
// convert comments, too // convert comments, too
$discdir = self::_dataid2discussionpath($pasteid); $discdir = self::_dataid2discussionpath($pasteid);
@@ -161,7 +136,7 @@ class Filesystem extends AbstractData
while (false !== ($filename = $dir->read())) { while (false !== ($filename = $dir->read())) {
if (substr($filename, -4) !== '.php' && strlen($filename) >= 16) { if (substr($filename, -4) !== '.php' && strlen($filename) >= 16) {
$commentFilename = $discdir . $filename . '.php'; $commentFilename = $discdir . $filename . '.php';
self::_prependRename($discdir . $filename, $commentFilename); DataStore::prependRename($discdir . $filename, $commentFilename);
} }
} }
$dir->close(); $dir->close();
@@ -190,7 +165,7 @@ class Filesystem extends AbstractData
if (!is_dir($storagedir)) { if (!is_dir($storagedir)) {
mkdir($storagedir, 0700, true); mkdir($storagedir, 0700, true);
} }
return self::_store($file, $comment); return DataStore::store($file, $comment);
} }
/** /**
@@ -212,7 +187,7 @@ class Filesystem extends AbstractData
// - commentid is the comment identifier itself. // - commentid is the comment identifier itself.
// - parentid is the comment this comment replies to (It can be pasteid) // - parentid is the comment this comment replies to (It can be pasteid)
if (is_file($discdir . $filename)) { if (is_file($discdir . $filename)) {
$comment = self::_get($discdir . $filename); $comment = DataStore::get($discdir . $filename);
$items = explode('.', $filename); $items = explode('.', $filename);
// Add some meta information not contained in file. // Add some meta information not contained in file.
$comment['id'] = $items[1]; $comment['id'] = $items[1];
@@ -248,97 +223,6 @@ class Filesystem extends AbstractData
); );
} }
/**
* Save a value.
*
* @access public
* @param string $value
* @param string $namespace
* @param string $key
* @return bool
*/
public function setValue($value, $namespace, $key = '')
{
switch ($namespace) {
case 'purge_limiter':
return self::_storeString(
self::$_path . DIRECTORY_SEPARATOR . 'purge_limiter.php',
'<?php' . PHP_EOL . '$GLOBALS[\'purge_limiter\'] = ' . $value . ';'
);
case 'salt':
return self::_storeString(
self::$_path . DIRECTORY_SEPARATOR . 'salt.php',
'<?php # |' . $value . '|'
);
case 'traffic_limiter':
self::$_last_cache[$key] = $value;
return self::_storeString(
self::$_path . DIRECTORY_SEPARATOR . 'traffic_limiter.php',
'<?php' . PHP_EOL . '$GLOBALS[\'traffic_limiter\'] = ' . var_export(self::$_last_cache, true) . ';'
);
}
return false;
}
/**
* Load a value.
*
* @access public
* @param string $namespace
* @param string $key
* @return string
*/
public function getValue($namespace, $key = '')
{
switch ($namespace) {
case 'purge_limiter':
$file = self::$_path . DIRECTORY_SEPARATOR . 'purge_limiter.php';
if (is_readable($file)) {
require $file;
return $GLOBALS['purge_limiter'];
}
break;
case 'salt':
$file = self::$_path . DIRECTORY_SEPARATOR . 'salt.php';
if (is_readable($file)) {
$items = explode('|', file_get_contents($file));
if (is_array($items) && count($items) == 3) {
return $items[1];
}
}
break;
case 'traffic_limiter':
$file = self::$_path . DIRECTORY_SEPARATOR . 'traffic_limiter.php';
if (is_readable($file)) {
require $file;
self::$_last_cache = $GLOBALS['traffic_limiter'];
if (array_key_exists($key, self::$_last_cache)) {
return self::$_last_cache[$key];
}
}
break;
}
return '';
}
/**
* get the data
*
* @access public
* @static
* @param string $filename
* @return array|false $data
*/
private static function _get($filename)
{
return Json::decode(
substr(
file_get_contents($filename),
strlen(self::PROTECTION_LINE . PHP_EOL)
)
);
}
/** /**
* Returns up to batch size number of paste ids that have expired * Returns up to batch size number of paste ids that have expired
* *
@@ -349,17 +233,18 @@ class Filesystem extends AbstractData
protected function _getExpiredPastes($batchsize) protected function _getExpiredPastes($batchsize)
{ {
$pastes = array(); $pastes = array();
$mainpath = DataStore::getPath();
$firstLevel = array_filter( $firstLevel = array_filter(
scandir(self::$_path), scandir($mainpath),
'PrivateBin\Data\Filesystem::_isFirstLevelDir' 'self::_isFirstLevelDir'
); );
if (count($firstLevel) > 0) { if (count($firstLevel) > 0) {
// try at most 10 times the $batchsize pastes before giving up // try at most 10 times the $batchsize pastes before giving up
for ($i = 0, $max = $batchsize * 10; $i < $max; ++$i) { for ($i = 0, $max = $batchsize * 10; $i < $max; ++$i) {
$firstKey = array_rand($firstLevel); $firstKey = array_rand($firstLevel);
$secondLevel = array_filter( $secondLevel = array_filter(
scandir(self::$_path . DIRECTORY_SEPARATOR . $firstLevel[$firstKey]), scandir($mainpath . DIRECTORY_SEPARATOR . $firstLevel[$firstKey]),
'PrivateBin\Data\Filesystem::_isSecondLevelDir' 'self::_isSecondLevelDir'
); );
// skip this folder in the next checks if it is empty // skip this folder in the next checks if it is empty
@@ -369,7 +254,7 @@ class Filesystem extends AbstractData
} }
$secondKey = array_rand($secondLevel); $secondKey = array_rand($secondLevel);
$path = self::$_path . DIRECTORY_SEPARATOR . $path = $mainpath . DIRECTORY_SEPARATOR .
$firstLevel[$firstKey] . DIRECTORY_SEPARATOR . $firstLevel[$firstKey] . DIRECTORY_SEPARATOR .
$secondLevel[$secondKey]; $secondLevel[$secondKey];
if (!is_dir($path)) { if (!is_dir($path)) {
@@ -429,9 +314,10 @@ class Filesystem extends AbstractData
*/ */
private static function _dataid2path($dataid) private static function _dataid2path($dataid)
{ {
return self::$_path . DIRECTORY_SEPARATOR . return DataStore::getPath(
substr($dataid, 0, 2) . DIRECTORY_SEPARATOR . substr($dataid, 0, 2) . DIRECTORY_SEPARATOR .
substr($dataid, 2, 2) . DIRECTORY_SEPARATOR; substr($dataid, 2, 2) . DIRECTORY_SEPARATOR
);
} }
/** /**
@@ -461,7 +347,7 @@ class Filesystem extends AbstractData
private static function _isFirstLevelDir($element) private static function _isFirstLevelDir($element)
{ {
return self::_isSecondLevelDir($element) && return self::_isSecondLevelDir($element) &&
is_dir(self::$_path . DIRECTORY_SEPARATOR . $element); is_dir(DataStore::getPath($element));
} }
/** /**
@@ -476,97 +362,4 @@ class Filesystem extends AbstractData
{ {
return (bool) preg_match('/^[a-f0-9]{2}$/', $element); return (bool) preg_match('/^[a-f0-9]{2}$/', $element);
} }
/**
* store the data
*
* @access public
* @static
* @param string $filename
* @param array $data
* @return bool
*/
private static function _store($filename, array $data)
{
try {
return self::_storeString(
$filename,
self::PROTECTION_LINE . PHP_EOL . Json::encode($data)
);
} catch (Exception $e) {
return false;
}
}
/**
* store a string
*
* @access public
* @static
* @param string $filename
* @param string $data
* @return bool
*/
private static function _storeString($filename, $data)
{
// Create storage directory if it does not exist.
if (!is_dir(self::$_path)) {
if (!@mkdir(self::$_path, 0700)) {
return false;
}
}
$file = self::$_path . DIRECTORY_SEPARATOR . '.htaccess';
if (!is_file($file)) {
$writtenBytes = 0;
if ($fileCreated = @touch($file)) {
$writtenBytes = @file_put_contents(
$file,
self::HTACCESS_LINE . PHP_EOL,
LOCK_EX
);
}
if (
$fileCreated === false ||
$writtenBytes === false ||
$writtenBytes < strlen(self::HTACCESS_LINE . PHP_EOL)
) {
return false;
}
}
$fileCreated = true;
$writtenBytes = 0;
if (!is_file($filename)) {
$fileCreated = @touch($filename);
}
if ($fileCreated) {
$writtenBytes = @file_put_contents($filename, $data, LOCK_EX);
}
if ($fileCreated === false || $writtenBytes === false || $writtenBytes < strlen($data)) {
return false;
}
@chmod($filename, 0640); // protect file from access by other users on the host
return true;
}
/**
* rename a file, prepending the protection line at the beginning
*
* @access public
* @static
* @param string $srcFile
* @param string $destFile
* @return void
*/
private static function _prependRename($srcFile, $destFile)
{
// don't overwrite already converted file
if (!is_readable($destFile)) {
$handle = fopen($srcFile, 'r', false, stream_context_create());
file_put_contents($destFile, self::PROTECTION_LINE . PHP_EOL);
file_put_contents($destFile, $handle, FILE_APPEND);
fclose($handle);
}
unlink($srcFile);
}
} }

View File

@@ -1,364 +0,0 @@
<?php
namespace PrivateBin\Data;
use Exception;
use Google\Cloud\Core\Exception\NotFoundException;
use Google\Cloud\Storage\Bucket;
use Google\Cloud\Storage\StorageClient;
use PrivateBin\Json;
class GoogleCloudStorage extends AbstractData
{
/**
* GCS client
*
* @access private
* @static
* @var StorageClient
*/
private static $_client = null;
/**
* GCS bucket
*
* @access private
* @static
* @var Bucket
*/
private static $_bucket = null;
/**
* object prefix
*
* @access private
* @static
* @var string
*/
private static $_prefix = 'pastes';
/**
* bucket acl type
*
* @access private
* @static
* @var bool
*/
private static $_uniformacl = false;
/**
* returns a Google Cloud Storage data backend.
*
* @access public
* @static
* @param array $options
* @return GoogleCloudStorage
*/
public static function getInstance(array $options)
{
// if needed initialize the singleton
if (!(self::$_instance instanceof self)) {
self::$_instance = new self;
}
$bucket = null;
if (getenv('PRIVATEBIN_GCS_BUCKET')) {
$bucket = getenv('PRIVATEBIN_GCS_BUCKET');
}
if (is_array($options) && array_key_exists('bucket', $options)) {
$bucket = $options['bucket'];
}
if (is_array($options) && array_key_exists('prefix', $options)) {
self::$_prefix = $options['prefix'];
}
if (is_array($options) && array_key_exists('uniformacl', $options)) {
self::$_uniformacl = $options['uniformacl'];
}
if (empty(self::$_client)) {
self::$_client = class_exists('StorageClientStub', false) ?
new \StorageClientStub(array()) :
new StorageClient(array('suppressKeyFileNotice' => true));
}
self::$_bucket = self::$_client->bucket($bucket);
return self::$_instance;
}
/**
* returns the google storage object key for $pasteid in self::$_bucket.
*
* @access private
* @param $pasteid string to get the key for
* @return string
*/
private function _getKey($pasteid)
{
if (self::$_prefix != '') {
return self::$_prefix . '/' . $pasteid;
}
return $pasteid;
}
/**
* Uploads the payload in the self::$_bucket under the specified key.
* The entire payload is stored as a JSON document. The metadata is replicated
* as the GCS object's metadata except for the fields attachment, attachmentname
* and salt.
*
* @param $key string to store the payload under
* @param $payload array to store
* @return bool true if successful, otherwise false.
*/
private function _upload($key, $payload)
{
$metadata = array_key_exists('meta', $payload) ? $payload['meta'] : array();
unset($metadata['attachment'], $metadata['attachmentname'], $metadata['salt']);
foreach ($metadata as $k => $v) {
$metadata[$k] = strval($v);
}
try {
$data = array(
'name' => $key,
'chunkSize' => 262144,
'metadata' => array(
'content-type' => 'application/json',
'metadata' => $metadata,
),
);
if (!self::$_uniformacl) {
$data['predefinedAcl'] = 'private';
}
self::$_bucket->upload(Json::encode($payload), $data);
} catch (Exception $e) {
error_log('failed to upload ' . $key . ' to ' . self::$_bucket->name() . ', ' .
trim(preg_replace('/\s\s+/', ' ', $e->getMessage())));
return false;
}
return true;
}
/**
* @inheritDoc
*/
public function create($pasteid, array $paste)
{
if ($this->exists($pasteid)) {
return false;
}
return $this->_upload($this->_getKey($pasteid), $paste);
}
/**
* @inheritDoc
*/
public function read($pasteid)
{
try {
$o = self::$_bucket->object($this->_getKey($pasteid));
$data = $o->downloadAsString();
return Json::decode($data);
} catch (NotFoundException $e) {
return false;
} catch (Exception $e) {
error_log('failed to read ' . $pasteid . ' from ' . self::$_bucket->name() . ', ' .
trim(preg_replace('/\s\s+/', ' ', $e->getMessage())));
return false;
}
}
/**
* @inheritDoc
*/
public function delete($pasteid)
{
$name = $this->_getKey($pasteid);
try {
foreach (self::$_bucket->objects(array('prefix' => $name . '/discussion/')) as $comment) {
try {
self::$_bucket->object($comment->name())->delete();
} catch (NotFoundException $e) {
// ignore if already deleted.
}
}
} catch (NotFoundException $e) {
// there are no discussions associated with the paste
}
try {
self::$_bucket->object($name)->delete();
} catch (NotFoundException $e) {
// ignore if already deleted
}
}
/**
* @inheritDoc
*/
public function exists($pasteid)
{
$o = self::$_bucket->object($this->_getKey($pasteid));
return $o->exists();
}
/**
* @inheritDoc
*/
public function createComment($pasteid, $parentid, $commentid, array $comment)
{
if ($this->existsComment($pasteid, $parentid, $commentid)) {
return false;
}
$key = $this->_getKey($pasteid) . '/discussion/' . $parentid . '/' . $commentid;
return $this->_upload($key, $comment);
}
/**
* @inheritDoc
*/
public function readComments($pasteid)
{
$comments = array();
$prefix = $this->_getKey($pasteid) . '/discussion/';
try {
foreach (self::$_bucket->objects(array('prefix' => $prefix)) as $key) {
$comment = JSON::decode(self::$_bucket->object($key->name())->downloadAsString());
$comment['id'] = basename($key->name());
$slot = $this->getOpenSlot($comments, (int) $comment['meta']['created']);
$comments[$slot] = $comment;
}
} catch (NotFoundException $e) {
// no comments found
}
return $comments;
}
/**
* @inheritDoc
*/
public function existsComment($pasteid, $parentid, $commentid)
{
$name = $this->_getKey($pasteid) . '/discussion/' . $parentid . '/' . $commentid;
$o = self::$_bucket->object($name);
return $o->exists();
}
/**
* @inheritDoc
*/
public function purgeValues($namespace, $time)
{
$path = 'config/' . $namespace;
try {
foreach (self::$_bucket->objects(array('prefix' => $path)) as $object) {
$name = $object->name();
if (strlen($name) > strlen($path) && substr($name, strlen($path), 1) !== '/') {
continue;
}
$info = $object->info();
if (key_exists('metadata', $info) && key_exists('value', $info['metadata'])) {
$value = $info['metadata']['value'];
if (is_numeric($value) && intval($value) < $time) {
try {
$object->delete();
} catch (NotFoundException $e) {
// deleted by another instance.
}
}
}
}
} catch (NotFoundException $e) {
// no objects in the bucket yet
}
}
/**
* For GoogleCloudStorage, the value will also be stored in the metadata for the
* namespaces traffic_limiter and purge_limiter.
* @inheritDoc
*/
public function setValue($value, $namespace, $key = '')
{
if ($key === '') {
$key = 'config/' . $namespace;
} else {
$key = 'config/' . $namespace . '/' . $key;
}
$metadata = array('namespace' => $namespace);
if ($namespace != 'salt') {
$metadata['value'] = strval($value);
}
try {
$data = array(
'name' => $key,
'chunkSize' => 262144,
'metadata' => array(
'content-type' => 'application/json',
'metadata' => $metadata,
),
);
if (!self::$_uniformacl) {
$data['predefinedAcl'] = 'private';
}
self::$_bucket->upload($value, $data);
} catch (Exception $e) {
error_log('failed to set key ' . $key . ' to ' . self::$_bucket->name() . ', ' .
trim(preg_replace('/\s\s+/', ' ', $e->getMessage())));
return false;
}
return true;
}
/**
* @inheritDoc
*/
public function getValue($namespace, $key = '')
{
if ($key === '') {
$key = 'config/' . $namespace;
} else {
$key = 'config/' . $namespace . '/' . $key;
}
try {
$o = self::$_bucket->object($key);
return $o->downloadAsString();
} catch (NotFoundException $e) {
return '';
}
}
/**
* @inheritDoc
*/
protected function _getExpiredPastes($batchsize)
{
$expired = array();
$now = time();
$prefix = self::$_prefix;
if ($prefix != '') {
$prefix .= '/';
}
try {
foreach (self::$_bucket->objects(array('prefix' => $prefix)) as $object) {
$metadata = $object->info()['metadata'];
if ($metadata != null && array_key_exists('expire_date', $metadata)) {
$expire_at = intval($metadata['expire_date']);
if ($expire_at != 0 && $expire_at < $now) {
array_push($expired, basename($object->name()));
}
}
if (count($expired) > $batchsize) {
break;
}
}
} catch (NotFoundException $e) {
// no objects in the bucket yet
}
return $expired;
}
}

View File

@@ -1,464 +0,0 @@
<?php
/**
* S3.php
*
* an S3 compatible data backend for PrivateBin with CEPH/RadosGW in mind
* see https://docs.ceph.com/en/latest/radosgw/s3/php/
* based on lib/Data/GoogleCloudStorage.php from PrivateBin version 1.4.0
*
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2022 Felix J. Ogris (https://ogris.de/)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.4.1
*
* Installation:
* 1. Make sure you have composer.lock and composer.json in the document root of your PasteBin
* 2. If not, grab a copy from https://github.com/PrivateBin/PrivateBin
* 3. As non-root user, install the AWS SDK for PHP:
* composer require aws/aws-sdk-php
* (On FreeBSD, install devel/php-composer2 prior, e.g.: make -C /usr/ports/devel/php-composer2 install clean)
* 4. In cfg/conf.php, comment out all [model] and [model_options] settings
* 5. Still in cfg/conf.php, add a new [model] section:
* [model]
* class = S3Storage
* 6. Add a new [model_options] as well, e.g. for a Rados gateway as part of your CEPH cluster:
* [model_options]
* region = ""
* version = "2006-03-01"
* endpoint = "https://s3.my-ceph.invalid"
* use_path_style_endpoint = true
* bucket = "my-bucket"
* prefix = "privatebin" (place all PrivateBin data beneath this prefix)
* accesskey = "my-rados-user"
* secretkey = "my-rados-pass"
*/
namespace PrivateBin\Data;
use Aws\S3\Exception\S3Exception;
use Aws\S3\S3Client;
use PrivateBin\Json;
class S3Storage extends AbstractData
{
/**
* S3 client
*
* @access private
* @static
* @var S3Client
*/
private static $_client = null;
/**
* S3 client options
*
* @access private
* @static
* @var array
*/
private static $_options = array();
/**
* S3 bucket
*
* @access private
* @static
* @var string
*/
private static $_bucket = null;
/**
* S3 prefix for all PrivateBin data in this bucket
*
* @access private
* @static
* @var string
*/
private static $_prefix = '';
/**
* returns an S3 data backend.
*
* @access public
* @static
* @param array $options
* @return S3Storage
*/
public static function getInstance(array $options)
{
// if needed initialize the singleton
if (!(self::$_instance instanceof self)) {
self::$_instance = new self;
}
self::$_options = array();
self::$_options['credentials'] = array();
if (is_array($options) && array_key_exists('region', $options)) {
self::$_options['region'] = $options['region'];
}
if (is_array($options) && array_key_exists('version', $options)) {
self::$_options['version'] = $options['version'];
}
if (is_array($options) && array_key_exists('endpoint', $options)) {
self::$_options['endpoint'] = $options['endpoint'];
}
if (is_array($options) && array_key_exists('accesskey', $options)) {
self::$_options['credentials']['key'] = $options['accesskey'];
}
if (is_array($options) && array_key_exists('secretkey', $options)) {
self::$_options['credentials']['secret'] = $options['secretkey'];
}
if (is_array($options) && array_key_exists('use_path_style_endpoint', $options)) {
self::$_options['use_path_style_endpoint'] = filter_var($options['use_path_style_endpoint'], FILTER_VALIDATE_BOOLEAN);
}
if (is_array($options) && array_key_exists('bucket', $options)) {
self::$_bucket = $options['bucket'];
}
if (is_array($options) && array_key_exists('prefix', $options)) {
self::$_prefix = $options['prefix'];
}
if (empty(self::$_client)) {
self::$_client = new S3Client(self::$_options);
}
return self::$_instance;
}
/**
* returns all objects in the given prefix.
*
* @access private
* @param $prefix string with prefix
* @return array all objects in the given prefix
*/
private function _listAllObjects($prefix)
{
$allObjects = array();
$options = array(
'Bucket' => self::$_bucket,
'Prefix' => $prefix,
);
do {
$objectsListResponse = self::$_client->listObjects($options);
$objects = $objectsListResponse['Contents'] ?? array();
foreach ($objects as $object) {
$allObjects[] = $object;
$options['Marker'] = $object['Key'];
}
} while ($objectsListResponse['IsTruncated']);
return $allObjects;
}
/**
* returns the S3 storage object key for $pasteid in self::$_bucket.
*
* @access private
* @param $pasteid string to get the key for
* @return string
*/
private function _getKey($pasteid)
{
if (self::$_prefix != '') {
return self::$_prefix . '/' . $pasteid;
}
return $pasteid;
}
/**
* Uploads the payload in the self::$_bucket under the specified key.
* The entire payload is stored as a JSON document. The metadata is replicated
* as the S3 object's metadata except for the fields attachment, attachmentname
* and salt.
*
* @param $key string to store the payload under
* @param $payload array to store
* @return bool true if successful, otherwise false.
*/
private function _upload($key, $payload)
{
$metadata = array_key_exists('meta', $payload) ? $payload['meta'] : array();
unset($metadata['attachment'], $metadata['attachmentname'], $metadata['salt']);
foreach ($metadata as $k => $v) {
$metadata[$k] = strval($v);
}
try {
self::$_client->putObject(array(
'Bucket' => self::$_bucket,
'Key' => $key,
'Body' => Json::encode($payload),
'ContentType' => 'application/json',
'Metadata' => $metadata,
));
} catch (S3Exception $e) {
error_log('failed to upload ' . $key . ' to ' . self::$_bucket . ', ' .
trim(preg_replace('/\s\s+/', ' ', $e->getMessage())));
return false;
}
return true;
}
/**
* @inheritDoc
*/
public function create($pasteid, array $paste)
{
if ($this->exists($pasteid)) {
return false;
}
return $this->_upload($this->_getKey($pasteid), $paste);
}
/**
* @inheritDoc
*/
public function read($pasteid)
{
try {
$object = self::$_client->getObject(array(
'Bucket' => self::$_bucket,
'Key' => $this->_getKey($pasteid),
));
$data = $object['Body']->getContents();
return Json::decode($data);
} catch (S3Exception $e) {
error_log('failed to read ' . $pasteid . ' from ' . self::$_bucket . ', ' .
trim(preg_replace('/\s\s+/', ' ', $e->getMessage())));
return false;
}
}
/**
* @inheritDoc
*/
public function delete($pasteid)
{
$name = $this->_getKey($pasteid);
try {
$comments = $this->_listAllObjects($name . '/discussion/');
foreach ($comments as $comment) {
try {
self::$_client->deleteObject(array(
'Bucket' => self::$_bucket,
'Key' => $comment['Key'],
));
} catch (S3Exception $e) {
// ignore if already deleted.
}
}
} catch (S3Exception $e) {
// there are no discussions associated with the paste
}
try {
self::$_client->deleteObject(array(
'Bucket' => self::$_bucket,
'Key' => $name,
));
} catch (S3Exception $e) {
// ignore if already deleted
}
}
/**
* @inheritDoc
*/
public function exists($pasteid)
{
return self::$_client->doesObjectExistV2(self::$_bucket, $this->_getKey($pasteid));
}
/**
* @inheritDoc
*/
public function createComment($pasteid, $parentid, $commentid, array $comment)
{
if ($this->existsComment($pasteid, $parentid, $commentid)) {
return false;
}
$key = $this->_getKey($pasteid) . '/discussion/' . $parentid . '/' . $commentid;
return $this->_upload($key, $comment);
}
/**
* @inheritDoc
*/
public function readComments($pasteid)
{
$comments = array();
$prefix = $this->_getKey($pasteid) . '/discussion/';
try {
$entries = $this->_listAllObjects($prefix);
foreach ($entries as $entry) {
$object = self::$_client->getObject(array(
'Bucket' => self::$_bucket,
'Key' => $entry['Key'],
));
$body = JSON::decode($object['Body']->getContents());
$items = explode('/', $entry['Key']);
$body['id'] = $items[3];
$body['parentid'] = $items[2];
$slot = $this->getOpenSlot($comments, (int) $object['Metadata']['created']);
$comments[$slot] = $body;
}
} catch (S3Exception $e) {
// no comments found
}
return $comments;
}
/**
* @inheritDoc
*/
public function existsComment($pasteid, $parentid, $commentid)
{
$name = $this->_getKey($pasteid) . '/discussion/' . $parentid . '/' . $commentid;
return self::$_client->doesObjectExistV2(self::$_bucket, $name);
}
/**
* @inheritDoc
*/
public function purgeValues($namespace, $time)
{
$path = self::$_prefix;
if ($path != '') {
$path .= '/';
}
$path .= 'config/' . $namespace;
try {
foreach ($this->_listAllObjects($path) as $object) {
$name = $object['Key'];
if (strlen($name) > strlen($path) && substr($name, strlen($path), 1) !== '/') {
continue;
}
$head = self::$_client->headObject(array(
'Bucket' => self::$_bucket,
'Key' => $name,
));
if (array_key_exists('Metadata', $head) && array_key_exists('value', $head['Metadata'])) {
$value = $head['Metadata']['value'];
if (is_numeric($value) && intval($value) < $time) {
try {
self::$_client->deleteObject(array(
'Bucket' => self::$_bucket,
'Key' => $name,
));
} catch (S3Exception $e) {
// deleted by another instance.
}
}
}
}
} catch (S3Exception $e) {
// no objects in the bucket yet
}
}
/**
* For S3, the value will also be stored in the metadata for the
* namespaces traffic_limiter and purge_limiter.
* @inheritDoc
*/
public function setValue($value, $namespace, $key = '')
{
$prefix = self::$_prefix;
if ($prefix != '') {
$prefix .= '/';
}
if ($key === '') {
$key = $prefix . 'config/' . $namespace;
} else {
$key = $prefix . 'config/' . $namespace . '/' . $key;
}
$metadata = array('namespace' => $namespace);
if ($namespace != 'salt') {
$metadata['value'] = strval($value);
}
try {
self::$_client->putObject(array(
'Bucket' => self::$_bucket,
'Key' => $key,
'Body' => $value,
'ContentType' => 'application/json',
'Metadata' => $metadata,
));
} catch (S3Exception $e) {
error_log('failed to set key ' . $key . ' to ' . self::$_bucket . ', ' .
trim(preg_replace('/\s\s+/', ' ', $e->getMessage())));
return false;
}
return true;
}
/**
* @inheritDoc
*/
public function getValue($namespace, $key = '')
{
$prefix = self::$_prefix;
if ($prefix != '') {
$prefix .= '/';
}
if ($key === '') {
$key = $prefix . 'config/' . $namespace;
} else {
$key = $prefix . 'config/' . $namespace . '/' . $key;
}
try {
$object = self::$_client->getObject(array(
'Bucket' => self::$_bucket,
'Key' => $key,
));
return $object['Body']->getContents();
} catch (S3Exception $e) {
return '';
}
}
/**
* @inheritDoc
*/
protected function _getExpiredPastes($batchsize)
{
$expired = array();
$now = time();
$prefix = self::$_prefix;
if ($prefix != '') {
$prefix .= '/';
}
try {
foreach ($this->_listAllObjects($prefix) as $object) {
$head = self::$_client->headObject(array(
'Bucket' => self::$_bucket,
'Key' => $object['Key'],
));
if (array_key_exists('Metadata', $head) && array_key_exists('expire_date', $head['Metadata'])) {
$expire_at = intval($head['Metadata']['expire_date']);
if ($expire_at != 0 && $expire_at < $now) {
array_push($expired, $object['Key']);
}
}
if (count($expired) > $batchsize) {
break;
}
}
} catch (S3Exception $e) {
// no objects in the bucket yet
}
return $expired;
}
}

View File

@@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin * @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net) * @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License * @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.4.0 * @version 1.3.3
*/ */
namespace PrivateBin; namespace PrivateBin;

View File

@@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin * @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net) * @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License * @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.4.0 * @version 1.3.3
*/ */
namespace PrivateBin; namespace PrivateBin;
@@ -52,11 +52,6 @@ class FormatV2
} }
} }
// Make sure adata is an array.
if (!is_array($message['adata'])) {
return false;
}
$cipherParams = $isComment ? $message['adata'] : $message['adata'][0]; $cipherParams = $isComment ? $message['adata'] : $message['adata'][0];
// Make sure some fields are base64 data: // Make sure some fields are base64 data:

View File

@@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin * @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net) * @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License * @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.4.0 * @version 1.3.3
*/ */
namespace PrivateBin; namespace PrivateBin;
@@ -84,7 +84,7 @@ class I18n
*/ */
public static function _($messageId) public static function _($messageId)
{ {
return forward_static_call_array('PrivateBin\I18n::translate', func_get_args()); return forward_static_call_array('self::translate', func_get_args());
} }
/** /**
@@ -195,10 +195,11 @@ class I18n
if (count(self::$_availableLanguages) == 0) { if (count(self::$_availableLanguages) == 0) {
$i18n = dir(self::_getPath()); $i18n = dir(self::_getPath());
while (false !== ($file = $i18n->read())) { while (false !== ($file = $i18n->read())) {
if (preg_match('/^([a-z]{2,3}).json$/', $file, $match) === 1) { if (preg_match('/^([a-z]{2}).json$/', $file, $match) === 1) {
self::$_availableLanguages[] = $match[1]; self::$_availableLanguages[] = $match[1];
} }
} }
self::$_availableLanguages[] = 'en';
} }
return self::$_availableLanguages; return self::$_availableLanguages;
} }
@@ -305,7 +306,7 @@ class I18n
/** /**
* determines the plural form to use based on current language and given number * determines the plural form to use based on current language and given number
* *
* From: https://docs.translatehouse.org/projects/localization-guide/en/latest/l10n/pluralforms.html * From: http://localization-guide.readthedocs.org/en/latest/l10n/pluralforms.html
* *
* @access protected * @access protected
* @static * @static
@@ -316,31 +317,21 @@ class I18n
{ {
switch (self::$_language) { switch (self::$_language) {
case 'cs': case 'cs':
case 'sk': return $n == 1 ? 0 : ($n >= 2 && $n <= 4 ? 1 : 2);
return $n === 1 ? 0 : ($n >= 2 && $n <= 4 ? 1 : 2);
case 'co':
case 'fr': case 'fr':
case 'oc': case 'oc':
case 'tr':
case 'zh': case 'zh':
return $n > 1 ? 1 : 0; return $n > 1 ? 1 : 0;
case 'he':
return $n === 1 ? 0 : ($n === 2 ? 1 : (($n < 0 || $n > 10) && ($n % 10 === 0) ? 2 : 3));
case 'id':
case 'jbo':
return 0;
case 'lt':
return $n % 10 === 1 && $n % 100 !== 11 ? 0 : (($n % 10 >= 2 && $n % 100 < 10 || $n % 100 >= 20) ? 1 : 2);
case 'pl': case 'pl':
return $n === 1 ? 0 : ($n % 10 >= 2 && $n % 10 <= 4 && ($n % 100 < 10 || $n % 100 >= 20) ? 1 : 2); return $n == 1 ? 0 : ($n % 10 >= 2 && $n % 10 <= 4 && ($n % 100 < 10 || $n % 100 >= 20) ? 1 : 2);
case 'ru': case 'ru':
case 'uk': case 'uk':
return $n % 10 === 1 && $n % 100 != 11 ? 0 : ($n % 10 >= 2 && $n % 10 <= 4 && ($n % 100 < 10 || $n % 100 >= 20) ? 1 : 2); return $n % 10 == 1 && $n % 100 != 11 ? 0 : ($n % 10 >= 2 && $n % 10 <= 4 && ($n % 100 < 10 || $n % 100 >= 20) ? 1 : 2);
case 'sl': case 'sl':
return $n % 100 === 1 ? 1 : ($n % 100 === 2 ? 2 : ($n % 100 === 3 || $n % 100 === 4 ? 3 : 0)); return $n % 100 == 1 ? 1 : ($n % 100 == 2 ? 2 : ($n % 100 == 3 || $n % 100 == 4 ? 3 : 0));
// bg, ca, de, el, en, es, et, fi, hu, it, nl, no, pt // bg, de, en, es, hu, it, nl, no, pt
default: default:
return $n !== 1 ? 1 : 0; return $n != 1 ? 1 : 0;
} }
} }

View File

@@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin * @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net) * @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License * @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.4.0 * @version 1.3.3
*/ */
namespace PrivateBin; namespace PrivateBin;
@@ -44,13 +44,13 @@ class Json
* @static * @static
* @param string $input * @param string $input
* @throws Exception * @throws Exception
* @return mixed * @return array
*/ */
public static function decode($input) public static function decode($input)
{ {
$output = json_decode($input, true); $array = json_decode($input, true);
self::_detectError(); self::_detectError();
return $output; return $array;
} }
/** /**

View File

@@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin * @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net) * @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License * @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.4.0 * @version 1.3.3
*/ */
namespace PrivateBin; namespace PrivateBin;
@@ -54,7 +54,7 @@ class Model
*/ */
public function getPaste($pasteId = null) public function getPaste($pasteId = null)
{ {
$paste = new Paste($this->_conf, $this->getStore()); $paste = new Paste($this->_conf, $this->_getStore());
if ($pasteId !== null) { if ($pasteId !== null) {
$paste->setId($pasteId); $paste->setId($pasteId);
} }
@@ -67,9 +67,8 @@ class Model
public function purge() public function purge()
{ {
PurgeLimiter::setConfiguration($this->_conf); PurgeLimiter::setConfiguration($this->_conf);
PurgeLimiter::setStore($this->getStore());
if (PurgeLimiter::canPurge()) { if (PurgeLimiter::canPurge()) {
$this->getStore()->purge($this->_conf->getKey('batchsize', 'purge')); $this->_getStore()->purge($this->_conf->getKey('batchsize', 'purge'));
} }
} }
@@ -78,7 +77,7 @@ class Model
* *
* @return Data\AbstractData * @return Data\AbstractData
*/ */
public function getStore() private function _getStore()
{ {
if ($this->_store === null) { if ($this->_store === null) {
$this->_store = forward_static_call( $this->_store = forward_static_call(

View File

@@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin * @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net) * @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License * @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.4.0 * @version 1.3.3
*/ */
namespace PrivateBin\Model; namespace PrivateBin\Model;

View File

@@ -7,14 +7,13 @@
* @link https://github.com/PrivateBin/PrivateBin * @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net) * @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License * @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.4.0 * @version 1.3.3
*/ */
namespace PrivateBin\Model; namespace PrivateBin\Model;
use Exception; use Exception;
use Identicon\Identicon; use Identicon\Identicon;
use Jdenticon\Identicon as Jdenticon;
use PrivateBin\Persistence\TrafficLimiter; use PrivateBin\Persistence\TrafficLimiter;
use PrivateBin\Vizhash16x16; use PrivateBin\Vizhash16x16;
@@ -165,17 +164,7 @@ class Comment extends AbstractModel
if ($icon != 'none') { if ($icon != 'none') {
$pngdata = ''; $pngdata = '';
$hmac = TrafficLimiter::getHash(); $hmac = TrafficLimiter::getHash();
if ($icon == 'jdenticon') { if ($icon == 'identicon') {
$jdenticon = new Jdenticon(array(
'hash' => $hmac,
'size' => 16,
'style' => array(
'backgroundColor' => '#fff0', // fully transparent, for dark mode
'padding' => 0,
),
));
$pngdata = $jdenticon->getImageDataUri('png');
} elseif ($icon == 'identicon') {
$identicon = new Identicon(); $identicon = new Identicon();
$pngdata = $identicon->getImageDataUri($hmac, 16); $pngdata = $identicon->getImageDataUri($hmac, 16);
} elseif ($icon == 'vizhash') { } elseif ($icon == 'vizhash') {

View File

@@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin * @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net) * @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License * @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.4.0 * @version 1.3.3
*/ */
namespace PrivateBin\Model; namespace PrivateBin\Model;
@@ -93,7 +93,7 @@ class Paste extends AbstractModel
} }
$this->_data['meta']['created'] = time(); $this->_data['meta']['created'] = time();
$this->_data['meta']['salt'] = ServerSalt::generate(); $this->_data['meta']['salt'] = serversalt::generate();
// store paste // store paste
if ( if (

View File

@@ -7,12 +7,12 @@
* @link https://github.com/PrivateBin/PrivateBin * @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net) * @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License * @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.4.0 * @version 1.3.3
*/ */
namespace PrivateBin\Persistence; namespace PrivateBin\Persistence;
use PrivateBin\Data\AbstractData; use Exception;
/** /**
* AbstractPersistence * AbstractPersistence
@@ -22,23 +22,104 @@ use PrivateBin\Data\AbstractData;
abstract class AbstractPersistence abstract class AbstractPersistence
{ {
/** /**
* data storage to use to persist something * path in which to persist something
* *
* @access private * @access private
* @static * @static
* @var AbstractData * @var string
*/ */
protected static $_store; private static $_path = 'data';
/** /**
* set the path * set the path
* *
* @access public * @access public
* @static * @static
* @param AbstractData $store * @param string $path
*/ */
public static function setStore(AbstractData $store) public static function setPath($path)
{ {
self::$_store = $store; self::$_path = $path;
}
/**
* get the path
*
* @access public
* @static
* @param string $filename
* @return string
*/
public static function getPath($filename = null)
{
if (strlen($filename)) {
return self::$_path . DIRECTORY_SEPARATOR . $filename;
} else {
return self::$_path;
}
}
/**
* checks if the file exists
*
* @access protected
* @static
* @param string $filename
* @return bool
*/
protected static function _exists($filename)
{
self::_initialize();
return is_file(self::$_path . DIRECTORY_SEPARATOR . $filename);
}
/**
* prepares path for storage
*
* @access protected
* @static
* @throws Exception
*/
protected static function _initialize()
{
// Create storage directory if it does not exist.
if (!is_dir(self::$_path)) {
if (!@mkdir(self::$_path, 0700)) {
throw new Exception('unable to create directory ' . self::$_path, 10);
}
}
$file = self::$_path . DIRECTORY_SEPARATOR . '.htaccess';
if (!is_file($file)) {
$writtenBytes = @file_put_contents(
$file,
'Require all denied' . PHP_EOL,
LOCK_EX
);
if ($writtenBytes === false || $writtenBytes < 19) {
throw new Exception('unable to write to file ' . $file, 11);
}
}
}
/**
* store the data
*
* @access protected
* @static
* @param string $filename
* @param string $data
* @throws Exception
* @return string
*/
protected static function _store($filename, $data)
{
self::_initialize();
$file = self::$_path . DIRECTORY_SEPARATOR . $filename;
$writtenBytes = @file_put_contents($file, $data, LOCK_EX);
if ($writtenBytes === false || $writtenBytes < strlen($data)) {
throw new Exception('unable to write to file ' . $file, 13);
}
@chmod($file, 0640); // protect file access
return $file;
} }
} }

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