mirror of
https://github.com/PrivateBin/PrivateBin.git
synced 2024-12-24 23:09:28 -05:00
Merge branch 'master' into wasm-streaming
This commit is contained in:
commit
6b180ac7b1
46
.devcontainer/devcontainer.json
Normal file
46
.devcontainer/devcontainer.json
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
{
|
||||||
|
"name": "PHP",
|
||||||
|
"image": "mcr.microsoft.com/devcontainers/php",
|
||||||
|
"customizations": {
|
||||||
|
"vscode": {
|
||||||
|
"extensions": [
|
||||||
|
"github.codespaces",
|
||||||
|
// PHP from https://github.com/devcontainers/templates/tree/main/src/php
|
||||||
|
"xdebug.php-debug",
|
||||||
|
"bmewburn.vscode-intelephense-client",
|
||||||
|
"xdebug.php-pack",
|
||||||
|
// PHP
|
||||||
|
"DEVSENSE.phptools-vscode",
|
||||||
|
"DEVSENSE.composer-php-vscode",
|
||||||
|
// linting
|
||||||
|
"EditorConfig.EditorConfig",
|
||||||
|
"dbaeumer.vscode-eslint",
|
||||||
|
"raymondcamden.CSSLint",
|
||||||
|
// testing
|
||||||
|
"maty.vscode-mocha-sidebar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"codespaces": {
|
||||||
|
"openFiles": [
|
||||||
|
"README.md",
|
||||||
|
"doc/README.md"
|
||||||
|
],
|
||||||
|
"repositories": {
|
||||||
|
"PrivateBin/*": {
|
||||||
|
"permissions": {
|
||||||
|
"pull_requests": "write"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"features": {
|
||||||
|
"ghcr.io/devcontainers-contrib/features/mocha:2": {}
|
||||||
|
},
|
||||||
|
"forwardPorts": [
|
||||||
|
8080
|
||||||
|
],
|
||||||
|
"postCreateCommand": ".devcontainer/postCreateCommand.sh",
|
||||||
|
// alternatiuve: apache2ctl start (but requires root)
|
||||||
|
"postAttachCommand": "php -S 0.0.0.0:8080"
|
||||||
|
}
|
9
.devcontainer/postCreateCommand.sh
Executable file
9
.devcontainer/postCreateCommand.sh
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
export PATH="$PATH:$HOME/.composer/vendor/bin"
|
||||||
|
ln -s ./conf.sample.php cfg/conf.php
|
||||||
|
composer install --no-dev --optimize-autoloader
|
||||||
|
|
||||||
|
sudo chmod a+x "$(pwd)" && sudo rm -rf /var/www/html && sudo ln -s "$(pwd)" /var/www/html
|
||||||
|
|
||||||
|
npm install --global nyc
|
7
.gitattributes
vendored
7
.gitattributes
vendored
@ -1,5 +1,8 @@
|
|||||||
|
bin/configuration-test-generator export-ignore
|
||||||
|
bin/icon-test export-ignore
|
||||||
doc/ export-ignore
|
doc/ export-ignore
|
||||||
tst/ export-ignore
|
tst/ export-ignore
|
||||||
|
i18n/en.json export-ignore
|
||||||
img/browserstack.svg export-ignore
|
img/browserstack.svg export-ignore
|
||||||
js/.istanbul.yml export-ignore
|
js/.istanbul.yml export-ignore
|
||||||
js/.nycrc.yml export-ignore
|
js/.nycrc.yml export-ignore
|
||||||
@ -7,6 +10,7 @@ js/common.js export-ignore
|
|||||||
js/test/ export-ignore
|
js/test/ export-ignore
|
||||||
.codeclimate.yml export-ignore
|
.codeclimate.yml export-ignore
|
||||||
.csslintrc export-ignore
|
.csslintrc export-ignore
|
||||||
|
.devcontainer export-ignore
|
||||||
.editorconfig export-ignore
|
.editorconfig export-ignore
|
||||||
.eslintignore export-ignore
|
.eslintignore export-ignore
|
||||||
.eslintrc export-ignore
|
.eslintrc export-ignore
|
||||||
@ -19,10 +23,9 @@ js/test/ export-ignore
|
|||||||
.scrutinizer.yml export-ignore
|
.scrutinizer.yml export-ignore
|
||||||
.styleci.yml export-ignore
|
.styleci.yml export-ignore
|
||||||
.travis.yml export-ignore
|
.travis.yml export-ignore
|
||||||
|
.vscode export-ignore
|
||||||
codacy-analysis.yml export-ignore
|
codacy-analysis.yml export-ignore
|
||||||
crowdin.yml export-ignore
|
crowdin.yml export-ignore
|
||||||
composer.json 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
|
Makefile export-ignore
|
||||||
|
90
.github/DISCUSSION_TEMPLATE/q-a.yml
vendored
Normal file
90
.github/DISCUSSION_TEMPLATE/q-a.yml
vendored
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
labels: ["question/support"]
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
## Thanks for taking the time to fill out this form!
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: Describe the problem/question
|
||||||
|
description: A clear and concise description of what the problem/issue or question is.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: checkboxes
|
||||||
|
id: readed-faq
|
||||||
|
attributes:
|
||||||
|
label: Did you use the FAQ section?
|
||||||
|
description: Have you read [the FAQ](https://github.com/PrivateBin/PrivateBin/wiki/FAQ)?
|
||||||
|
options:
|
||||||
|
- label: Yes, I have read [the FAQ](https://github.com/PrivateBin/PrivateBin/wiki/FAQ) and I found no solution/answer there.
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: what_you_did
|
||||||
|
attributes:
|
||||||
|
label: What you did?
|
||||||
|
description: Tell us how to reproduce the problem.
|
||||||
|
value: |
|
||||||
|
1.
|
||||||
|
2.
|
||||||
|
...
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: what_happens
|
||||||
|
attributes:
|
||||||
|
label: What happens
|
||||||
|
placeholder: Tell us what you see!
|
||||||
|
- type: textarea
|
||||||
|
id: what_should_happen
|
||||||
|
attributes:
|
||||||
|
label: What should happen
|
||||||
|
placeholder: Tell us what you want to see!
|
||||||
|
- type: textarea
|
||||||
|
id: additional_info
|
||||||
|
attributes:
|
||||||
|
label: Additional information
|
||||||
|
description: E.g. if you have access to the server log files, copy them here. Or copy the browser console content, if appropiate.
|
||||||
|
- type: input
|
||||||
|
id: server_address
|
||||||
|
attributes:
|
||||||
|
label: Server address
|
||||||
|
description: The instance of PrivateBin, where you experience the issue.
|
||||||
|
placeholder: e.g. https://privatebin.net
|
||||||
|
- type: input
|
||||||
|
id: server_os
|
||||||
|
attributes:
|
||||||
|
label: Server OS
|
||||||
|
placeholder: e.g. Ubuntu
|
||||||
|
- type: input
|
||||||
|
id: webserver
|
||||||
|
attributes:
|
||||||
|
label: Webserver
|
||||||
|
placeholder: e.g. Apache
|
||||||
|
- type: input
|
||||||
|
id: privatebin_version
|
||||||
|
attributes:
|
||||||
|
label: PrivateBin version
|
||||||
|
description: The PrivateBin version, where you experience the issue. It is e.g. shown at the bottom left in the web interface.
|
||||||
|
placeholder: e.g. v1.5.2
|
||||||
|
- type: input
|
||||||
|
id: browser
|
||||||
|
attributes:
|
||||||
|
label: Browser and version
|
||||||
|
placeholder: e.g. Firefox v116.3.0 (desktop)
|
||||||
|
- type: input
|
||||||
|
id: client
|
||||||
|
attributes:
|
||||||
|
label: Local operating system and version
|
||||||
|
placeholder: e.g. Windows 10
|
||||||
|
- type: dropdown
|
||||||
|
id: reproduce_issue
|
||||||
|
attributes:
|
||||||
|
label: Issue reproducibility
|
||||||
|
description: Can you reproduce this issue on [https://privatebin.net](https://privatebin.net)?
|
||||||
|
options:
|
||||||
|
- "No, I cannot reproduce it on https://privatebin.net."
|
||||||
|
- "Yes, reproducible on https://privatebin.net."
|
||||||
|
default: 0
|
||||||
|
validations:
|
||||||
|
required: true
|
@ -1,5 +1,19 @@
|
|||||||
<!-- Please have a look at our FAQ before submitting an issue: https://github.com/PrivateBin/PrivateBin/wiki/FAQ -->
|
---
|
||||||
<!-- This is a template for a bug report. If you would like to suggest a feature, feel free to delete the part below. -->
|
name: Bug report
|
||||||
|
about: Create a report to help us improve (only for software bugs)
|
||||||
|
title: ''
|
||||||
|
labels: bug
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- Please make sure to **only** use this template when it is about bugs in the PrivateBin PHP project.
|
||||||
|
Otherwise, for help and support issues e.g. for deployment issues, please go back and chose the appropiate category. -->
|
||||||
|
|
||||||
|
**Did you use the FAQ section?**
|
||||||
|
- [ ] Yes, I have read [the FAQ](https://github.com/PrivateBin/PrivateBin/wiki/FAQ) and I found no solution/answer there.
|
||||||
|
|
||||||
|
<!-- Describe the bug: A clear and concise description of what the bug is. -->
|
||||||
|
|
||||||
## Steps to reproduce
|
## Steps to reproduce
|
||||||
<!-- Tell us how to reproduce the problem. -->
|
<!-- Tell us how to reproduce the problem. -->
|
||||||
@ -26,7 +40,7 @@ If you have access to the server log files, also copy them here.
|
|||||||
<!-- The Operation System of your server -->
|
<!-- The Operation System of your server -->
|
||||||
**Server OS:**
|
**Server OS:**
|
||||||
|
|
||||||
<!-- The webserver running on your server, preferrably including the version -->
|
<!-- The webserver running on your server, preferably including the version -->
|
||||||
**Webserver:**
|
**Webserver:**
|
||||||
|
|
||||||
<!-- The version of your browser (when it is a client-side issue) -->
|
<!-- The version of your browser (when it is a client-side issue) -->
|
9
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
9
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
blank_issues_enabled: false
|
||||||
|
contact_links:
|
||||||
|
- name: Question and support
|
||||||
|
url: https://github.com/orgs/PrivateBin/discussions/new?category=q-a
|
||||||
|
about: Your setup is not working and you need help or you have a question regarding PrivateBin
|
||||||
|
- name: Problem with the container image
|
||||||
|
url: https://github.com/PrivateBin/docker-nginx-fpm-alpine/issues/new
|
||||||
|
about: Please report all problems that apply only(!) to the official (Docker) image “docker-nginx-fpm-alpine” here.
|
||||||
|
|
22
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
22
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
name: Feature request
|
||||||
|
about: Suggest an idea for this project
|
||||||
|
title: ''
|
||||||
|
labels: enhancement
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## The problem
|
||||||
|
|
||||||
|
<!-- Is your feature request related to a problem? Please describe.
|
||||||
|
A clear and concise description of what the problem is. Ex. I'm always frustrated when -->
|
||||||
|
|
||||||
|
## The solution
|
||||||
|
<!-- A clear and concise description of what you want to happen. Pitch your solution! What would happen, if we don't implement this? -->
|
||||||
|
|
||||||
|
## Alternatives
|
||||||
|
<!-- A clear and concise description of any alternative solutions or features you've considered. -->
|
||||||
|
|
||||||
|
## Additional context
|
||||||
|
<!-- Add any other context or screenshots about the feature request here. -->
|
14
.github/dependabot.yml
vendored
Normal file
14
.github/dependabot.yml
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
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"
|
6
.github/workflows/codeql-analysis.yml
vendored
6
.github/workflows/codeql-analysis.yml
vendored
@ -33,11 +33,11 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v1
|
uses: github/codeql-action/init@v3
|
||||||
with:
|
with:
|
||||||
languages: ${{ matrix.language }}
|
languages: ${{ matrix.language }}
|
||||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||||
@ -46,4 +46,4 @@ jobs:
|
|||||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@v1
|
uses: github/codeql-action/analyze@v3
|
||||||
|
50
.github/workflows/release.yml
vendored
Normal file
50
.github/workflows/release.yml
vendored
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
name: Draft Release
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags: '[0-9]+.[0-9]?[0-9]?[0-9]?.?[0-9]+'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
draft:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Fetch changelog from tag
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
sparse-checkout: CHANGELOG.md
|
||||||
|
sparse-checkout-cone-mode: false
|
||||||
|
|
||||||
|
- name: Extract latest changelog entry and attach it to draft
|
||||||
|
uses: taiki-e/create-gh-release-action@v1
|
||||||
|
with:
|
||||||
|
changelog: CHANGELOG.md
|
||||||
|
draft: true
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
release:
|
||||||
|
outputs:
|
||||||
|
hashes: ${{ steps.hash.outputs.hashes }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Collect artifacts
|
||||||
|
run: |
|
||||||
|
wget -q https://github.com/PrivateBin/PrivateBin/archive/refs/tags/${GITHUB_REF_NAME}.tar.gz
|
||||||
|
wget -q https://github.com/PrivateBin/PrivateBin/archive/refs/tags/${GITHUB_REF_NAME}.zip
|
||||||
|
|
||||||
|
- name: Generate hashes
|
||||||
|
shell: bash
|
||||||
|
id: hash
|
||||||
|
run: echo "hashes=$(sha256sum ${GITHUB_REF_NAME}.* | base64 -w0)" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
provenance:
|
||||||
|
needs:
|
||||||
|
- release
|
||||||
|
permissions:
|
||||||
|
actions: read
|
||||||
|
id-token: write
|
||||||
|
contents: write
|
||||||
|
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.0.0
|
||||||
|
with:
|
||||||
|
base64-subjects: "${{ needs.release.outputs.hashes }}"
|
||||||
|
draft-release: true
|
||||||
|
upload-assets: true
|
5
.github/workflows/snyk-scan.yml
vendored
5
.github/workflows/snyk-scan.yml
vendored
@ -12,8 +12,9 @@ jobs:
|
|||||||
# https://github.com/snyk/actions/tree/master/php
|
# https://github.com/snyk/actions/tree/master/php
|
||||||
snyk-php:
|
snyk-php:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
if: ${{ github.repository == 'PrivateBin/PrivateBin' }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@master
|
- uses: actions/checkout@v4
|
||||||
- name: Install Google Cloud Storage
|
- name: Install Google Cloud Storage
|
||||||
run: composer require --no-update google/cloud-storage && composer update --no-dev
|
run: composer require --no-update google/cloud-storage && composer update --no-dev
|
||||||
- name: Run Snyk to check for vulnerabilities
|
- name: Run Snyk to check for vulnerabilities
|
||||||
@ -24,6 +25,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
args: --sarif-file-output=snyk.sarif
|
args: --sarif-file-output=snyk.sarif
|
||||||
- name: Upload result to GitHub Code Scanning
|
- name: Upload result to GitHub Code Scanning
|
||||||
uses: github/codeql-action/upload-sarif@v1
|
uses: github/codeql-action/upload-sarif@v3
|
||||||
with:
|
with:
|
||||||
sarif_file: snyk.sarif
|
sarif_file: snyk.sarif
|
||||||
|
38
.github/workflows/test-results.yml
vendored
Normal file
38
.github/workflows/test-results.yml
vendored
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
name: Test Results
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_run:
|
||||||
|
workflows: ["Tests"]
|
||||||
|
types:
|
||||||
|
- completed
|
||||||
|
permissions: {}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test-results:
|
||||||
|
name: Test Results
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: github.event.workflow_run.conclusion != 'skipped'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
checks: write
|
||||||
|
|
||||||
|
# needed unless run with comment_mode: off
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
# required by download step to access artifacts API
|
||||||
|
actions: read
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Download and Extract Artifacts
|
||||||
|
uses: dawidd6/action-download-artifact@bf251b5aa9c2f7eeb574a96ee720e24f801b7c11
|
||||||
|
with:
|
||||||
|
run_id: ${{ github.event.workflow_run.id }}
|
||||||
|
path: artifacts
|
||||||
|
|
||||||
|
- name: Publish Test Results
|
||||||
|
uses: EnricoMi/publish-unit-test-result-action@v2
|
||||||
|
with:
|
||||||
|
commit: ${{ github.event.workflow_run.head_sha }}
|
||||||
|
event_file: artifacts/Event File/event.json
|
||||||
|
event_name: ${{ github.event.workflow_run.event }}
|
||||||
|
files: "artifacts/**/*.xml"
|
127
.github/workflows/tests.yml
vendored
127
.github/workflows/tests.yml
vendored
@ -1,54 +1,153 @@
|
|||||||
name: Tests
|
name: Tests
|
||||||
on: [push]
|
on:
|
||||||
|
push:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|
||||||
Composer:
|
Composer:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v4
|
||||||
- name: Validate composer.json and composer.lock
|
- name: Validate composer.json and composer.lock
|
||||||
run: composer validate
|
run: composer validate
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: composer install --prefer-dist --no-dev
|
run: composer install --prefer-dist --no-dev
|
||||||
|
|
||||||
PHPunit:
|
PHPunit:
|
||||||
|
name: PHP ${{ matrix.php-versions }} unit tests on ${{ matrix.operating-system }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
# https://docs.github.com/en/actions/using-jobs/using-a-matrix-for-your-jobs#handling-failures
|
||||||
|
continue-on-error: "${{ matrix.experimental }}"
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
php-versions: ['5.6', '7.0', '7.1', '7.2', '7.3', '7.4']
|
php-versions: ['7.3', '7.4', '8.0', '8.1', '8.2', '8.3']
|
||||||
name: PHP ${{ matrix.php-versions }} unit tests on ${{ matrix.operating-system }}
|
experimental: [false]
|
||||||
|
include:
|
||||||
|
- php-versions: '8.4' # development release, things can break
|
||||||
|
experimental: true
|
||||||
|
env:
|
||||||
|
extensions: gd, sqlite3
|
||||||
|
extensions-cache-key-name: phpextensions
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
|
# let's get started!
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
# 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@v4
|
||||||
|
with:
|
||||||
|
path: ${{ steps.extcache.outputs.dir }}
|
||||||
|
key: ${{ steps.extcache.outputs.key }}
|
||||||
|
restore-keys: ${{ runner.os }}-${{ env.extensions-cache-key }}
|
||||||
|
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: gd, sqlite3
|
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
|
- name: Remove composer lock
|
||||||
run: rm 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@v4
|
||||||
|
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: Unset platform requirement
|
||||||
|
run: composer config --unset platform
|
||||||
|
|
||||||
- name: Setup PHPunit
|
- name: Setup PHPunit
|
||||||
run: composer install -n
|
run: composer install -n
|
||||||
|
|
||||||
- name: Install Google Cloud Storage
|
- name: Install Google Cloud Storage
|
||||||
run: composer require google/cloud-storage
|
run: composer require google/cloud-storage
|
||||||
|
|
||||||
|
# testing
|
||||||
- name: Run unit tests
|
- name: Run unit tests
|
||||||
run: ../vendor/bin/phpunit --no-coverage
|
run: ../vendor/bin/phpunit --no-coverage --log-junit results.xml
|
||||||
working-directory: tst
|
working-directory: tst
|
||||||
|
|
||||||
|
- name: Upload Test Results
|
||||||
|
if: always()
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: Test Results (PHP ${{ matrix.php-versions }})
|
||||||
|
path: tst/results.xml
|
||||||
|
|
||||||
Mocha:
|
Mocha:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@v1
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: '12'
|
node-version: '20'
|
||||||
|
cache: 'npm'
|
||||||
|
cache-dependency-path: 'js/package-lock.json'
|
||||||
|
|
||||||
- name: Setup Mocha
|
- name: Setup Mocha
|
||||||
run: npm install -g mocha
|
run: npm install -g mocha
|
||||||
|
|
||||||
- name: Setup Node modules
|
- name: Setup Node modules
|
||||||
run: npm install
|
run: npm ci
|
||||||
working-directory: js
|
|
||||||
- name: Run unit tests
|
|
||||||
run: mocha
|
|
||||||
working-directory: js
|
working-directory: js
|
||||||
|
|
||||||
|
- name: Run unit tests
|
||||||
|
run: npm run ci-test
|
||||||
|
working-directory: js
|
||||||
|
|
||||||
|
- name: Upload Test Results
|
||||||
|
if: always()
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: Test Results (Mocha)
|
||||||
|
path: js/mocha-results.xml
|
||||||
|
|
||||||
|
event_file:
|
||||||
|
name: "Event File"
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Upload
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: Event File
|
||||||
|
path: "${{ github.event_path }}"
|
||||||
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -28,12 +28,15 @@ vendor/**/build_phar.php
|
|||||||
|
|
||||||
# Ignore local node modules, unit testing logs, api docs and IDE project files
|
# Ignore local node modules, unit testing logs, api docs and IDE project files
|
||||||
js/node_modules/
|
js/node_modules/
|
||||||
|
js/mocha-results.xml
|
||||||
js/test.log
|
js/test.log
|
||||||
tst/log/
|
tst/log/
|
||||||
tst/ConfigurationCombinationsTest.php
|
tst/ConfigurationCombinationsTest.php
|
||||||
|
tst/.phpunit.result.cache
|
||||||
.settings
|
.settings
|
||||||
.buildpath
|
.buildpath
|
||||||
.project
|
.project
|
||||||
|
.phpdoc
|
||||||
.externalToolBuilders
|
.externalToolBuilders
|
||||||
.c9
|
.c9
|
||||||
/.idea/
|
/.idea/
|
||||||
|
@ -15,9 +15,10 @@ coding_style:
|
|||||||
additive: false
|
additive: false
|
||||||
concatenation: true
|
concatenation: true
|
||||||
build:
|
build:
|
||||||
|
image: default-bionic
|
||||||
environment:
|
environment:
|
||||||
php:
|
php:
|
||||||
version: '7.2'
|
version: 7.4
|
||||||
tests:
|
tests:
|
||||||
override:
|
override:
|
||||||
-
|
-
|
||||||
@ -30,7 +31,4 @@ build:
|
|||||||
analysis:
|
analysis:
|
||||||
tests:
|
tests:
|
||||||
override:
|
override:
|
||||||
-
|
|
||||||
command: phpcs-run
|
|
||||||
use_website_config: true
|
|
||||||
- php-scrutinizer-run
|
- php-scrutinizer-run
|
||||||
|
@ -29,3 +29,9 @@ disabled:
|
|||||||
- short_array_syntax
|
- short_array_syntax
|
||||||
- single_line_after_imports
|
- single_line_after_imports
|
||||||
- unalign_equals
|
- unalign_equals
|
||||||
|
|
||||||
|
finder:
|
||||||
|
path:
|
||||||
|
- "lib/"
|
||||||
|
- "tpl/"
|
||||||
|
- "tst/"
|
||||||
|
7
.vscode/extensions.json
vendored
Normal file
7
.vscode/extensions.json
vendored
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"recommendations": [
|
||||||
|
"recca0120.vscode-phpunit",
|
||||||
|
"onecentlin.phpunit-snippets",
|
||||||
|
"devsense.profiler-php-vscode"
|
||||||
|
]
|
||||||
|
}
|
35
.vscode/launch.json
vendored
Normal file
35
.vscode/launch.json
vendored
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Launch built-in server and debug",
|
||||||
|
"type": "php",
|
||||||
|
"request": "launch",
|
||||||
|
"runtimeArgs": [
|
||||||
|
"-S",
|
||||||
|
"localhost:8000",
|
||||||
|
"-t",
|
||||||
|
"."
|
||||||
|
],
|
||||||
|
"port": 9003,
|
||||||
|
"serverReadyAction": {
|
||||||
|
"action": "openExternally"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Debug current script in console",
|
||||||
|
"type": "php",
|
||||||
|
"request": "launch",
|
||||||
|
"program": "${file}",
|
||||||
|
"cwd": "${fileDirname}",
|
||||||
|
"externalConsole": false,
|
||||||
|
"port": 9003
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Listen for Xdebug",
|
||||||
|
"type": "php",
|
||||||
|
"request": "launch",
|
||||||
|
"port": 9003
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
5
.vscode/settings.json
vendored
Normal file
5
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"files.associations": {
|
||||||
|
"**/cfg/conf*.php": "ini"
|
||||||
|
}
|
||||||
|
}
|
643
CHANGELOG.md
643
CHANGELOG.md
@ -1,263 +1,386 @@
|
|||||||
# PrivateBin version history
|
# PrivateBin version history
|
||||||
|
|
||||||
* **1.4 (not yet released)**
|
## 1.7.6 (not yet released)
|
||||||
* ADDED: Translation for Estonian
|
|
||||||
* ADDED: new HTTP headers improving security (#765)
|
## 1.7.5 (2024-11-16)
|
||||||
* ADDED: Download button for paste text (#774)
|
* ADDED: Allow non persistent SQL connections, if configured (#1394)
|
||||||
* ADDED: Opt-out of federated learning of cohorts (FLoC) (#776)
|
* ADDED: Show a button (that redirects to the `basepath` URL) inside the alert after a paste is deleted
|
||||||
* ADDED: Configuration option to exempt IPs from the rate-limiter (#787)
|
* CHANGED: Tweaked page footer of the `bootstrap5` template (#1392)
|
||||||
* ADDED: Google Cloud Storage backend support (#795)
|
* CHANGED: Simpler PostgreSQL table lookup query (#1361)
|
||||||
* CHANGED: Language selection cookie only transmitted over HTTPS (#472)
|
* CHANGED: SRI hashes are now configurable, no longer hardcoded in templates (#1365)
|
||||||
* CHANGED: Upgrading libraries to: random_compat 2.0.20
|
* CHANGED: Upgrading libraries to: DOMpurify 3.1.7, ip-lib 1.18.1, cloud-storage 1.43.0, aws-sdk-php 3.325.0
|
||||||
* CHANGED: Removed automatic `.ini` configuration file migration (#808)
|
* FIXED: Numeric array keys being cast to integer causing failures under strict type checking (#1435)
|
||||||
* CHANGED: Removed configurable `dir` for `traffic` & `purge` limiters (#419)
|
|
||||||
* CHANGED: Server salt, traffic and purge limiter now stored in the storage backend (#419)
|
## 1.7.4 (2024-07-09)
|
||||||
* **1.3.5 (2021-04-05)**
|
* CHANGED: Saving markdown pastes uses `.md` extension instead of `.txt` (#1293)
|
||||||
* ADDED: Translation for Hebrew, Lithuanian, Indonesian and Catalan
|
* CHANGED: Enable strict type checking in PHP (#1350)
|
||||||
* ADDED: Make the project info configurable (#681)
|
* CHANGED: Various tweaks of the `bootstrap5` template, suggested by the community
|
||||||
* CHANGED: Upgrading libraries to: DOMpurify 2.2.7, kjua 0.9.0 & random_compat 2.0.18
|
* FIXED: Reset password input field on creation of new paste (#1194)
|
||||||
* CHANGED: Open all links in new window (#630)
|
* FIXED: Allow database schema upgrade to skip versions (#1343)
|
||||||
* FIXED: PDF display in Firefox (#630)
|
* FIXED: `bootstrap5` dark mode toggle unset on dark browser preference (#1340)
|
||||||
* FIXED: Allow pasting into password input dialog (#630)
|
* FIXED: Prevent bypassing YOURLS proxy URL filter, allowing to shorten non-self URLs
|
||||||
* FIXED: Display of expiration date in email (#630)
|
|
||||||
* FIXED: Allow display of durations in weeks (#630)
|
## 1.7.3 (2024-05-13)
|
||||||
* FIXED: Avoid exposing burn-after-reading messages from cache (#630)
|
* CHANGED: Various tweaks of the `bootstrap5` template, suggested by the community
|
||||||
* FIXED: Only display the dropzone when it should (#630)
|
* CHANGED: Upgrading libraries to: DOMpurify 3.1.3
|
||||||
* FIXED: Detect delete token properly (#630)
|
* FIXED: Selected expiration not being applied, when using bootstrap template (#1309)
|
||||||
* FIXED: Sanitize output from `Helper.urls2links()` (#630)
|
|
||||||
* FIXED: Avoid recreation of existing pasteurl element when calling URL shortener (#630)
|
## 1.7.2 (2024-05-05)
|
||||||
* FIXED: Downloads in Chrome >= 83 (#634)
|
* ADDED: Allow use of `shortenviayourls` in query parameters (#1267)
|
||||||
* FIXED: Display of empty files (#663)
|
* ADDED: Input sanitation to some not yet filtered query and server parameters
|
||||||
* FIXED: Improve OpenGraph attributes (#651)
|
* ADDED: Optional Bootstrap CSS 5.3.3 based template, use configuration `template = "bootstrap5"` to switch to it (#728)
|
||||||
* FIXED: Reset to configured burn-after-reading, discussion and expiration settings (#682)
|
* CHANGED: "Send" button now labeled "Create" (#946)
|
||||||
* FIXED: Italic segment of project information (#756)
|
* CHANGED: Drop some PHP < 5.6 fallbacks, minimum version is PHP 7.3 as of release 1.6.0
|
||||||
* **1.3.4 (2020-03-22)**
|
* CHANGED: Set `lang` cookie with lax `SameSite` property
|
||||||
* 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: DOMpurify 3.1.2 (#1299) & jQuery 3.7.1
|
||||||
* CHANGED: Upgrading libraries to: identicon 2.0.0
|
* CHANGED: `create` attribute is no longer returned in API for pastes & can be disabled for comments using `discussiondatedisplay` as well (#1290)
|
||||||
* FIXED: Support custom expiration options in email function (#586)
|
* FIXED: Add cache control headers also to API calls (#1263)
|
||||||
* FIXED: Regression with encoding of HTML entities (#588)
|
* FIXED: Shortened paste URL does not appear in email (#606)
|
||||||
* FIXED: Unable to paste password on paste with attachment (#565 & #595)
|
|
||||||
* **1.3.3 (2020-02-16)**
|
## 1.7.1 (2024-02-11)
|
||||||
* CHANGED: Upgrading libraries to: DOMpurify 2.0.8
|
* FIXED: zlib 1.3.1 wasm file reference
|
||||||
* CHANGED: Several translations got updated with missing messages
|
|
||||||
* CHANGED: Introduce HTML entity encoding on server side (#581)
|
## 1.7.0 (2024-02-11)
|
||||||
* FIXED: HTML entity double encoding issues introduced in 1.3.2 (#560)
|
* ADDED: Translations for Romanian
|
||||||
* **1.2.3 (2020-02-16)**
|
* ADDED: Detect and report on damaged pastes (#1218)
|
||||||
* CHANGED: Upgrading libraries to: DOMpurify 2.0.8
|
* CHANGED: Ask for confirmation, before loading burn after reading pastes (#1237)
|
||||||
* CHANGED: Introduce HTML entity encoding on server side (#581)
|
* CHANGED: Focus on password input in modal dialog
|
||||||
* FIXED: HTML entity double encoding issues introduced in 1.3.2 (#560)
|
* CHANGED: Upgrading libraries to: DOMpurify 3.0.8 & zlib 1.3.1
|
||||||
* **1.3.2 (2020-01-11)**
|
* FIXED: Support more types of valid URLs for shorteners, incl. IDN ones (#1224)
|
||||||
* ADDED: Translation for Ukrainian (#533)
|
* FIXED: Email timezone buttons overlapping in some languages (#1039)
|
||||||
* ADDED: Option to send a mail with the link, when creating a paste (#398)
|
* FIXED: Changing language mangles URL (#1191)
|
||||||
* ADDED: Add support for CONFIG_PATH environment variable (#552)
|
* FIXED: Needless reload when visiting default URL
|
||||||
* CHANGED: Upgrading libraries to: base-x 3.0.7, DOMpurify 2.0.7 & Showdown 1.9.1
|
|
||||||
* FIXED: HTML injection via unescaped attachment filename (#554)
|
## 1.6.2 (2023-12-15)
|
||||||
* FIXED: Password disabling option (#527)
|
* FIXED: English not selectable when `languageselection` enabled (#1208)
|
||||||
* **1.2.2 (2020-01-11)**
|
* FIXED: SRI mismatch due to cached file having changed (#1207)
|
||||||
* 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)
|
## 1.6.1 (2023-12-04)
|
||||||
* **1.3.1 (2019-09-22)**
|
* ADDED: Right-To-Left (RTL) support for Arabic & Hebrew (#1174)
|
||||||
* ADDED: Translation for Bulgarian (#455)
|
* CHANGED: Upgrading libraries to: DOMpurify 3.0.6
|
||||||
* CHANGED: Improved mobile UI - obscured send button and hard to click shortener button (#477)
|
|
||||||
* CHANGED: Enhanced URL shortener integration (#479)
|
## 1.6.0 (2023-09-11)
|
||||||
* CHANGED: Improved file upload drag & drop UI (#317)
|
* ADDED: Translations for Japanese & Arabic
|
||||||
* CHANGED: Increased default size limit from 2 to 10 MiB, switch data from BLOB to MEDIUMBLOB in MySQL (#458)
|
* ADDED: Configuration option to disable email button (#1164)
|
||||||
* CHANGED: Upgrading libraries to: DOMpurify 2.0.1
|
* CHANGED: Minimum required PHP version is 7.3, due to upgrading PHPunit (#707)
|
||||||
* FIXED: Enabling browsers without WASM to create pastes and read uncompressed ones (#454)
|
* CHANGED: Removed PHP 5 polyfill for random_bytes()
|
||||||
* FIXED: Cloning related issues (#489, #491, #493, #494)
|
|
||||||
* FIXED: Enable file operation only when editing (#497)
|
## 1.5.2 (2023-07-09)
|
||||||
* FIXED: Clicking 'New' on a previously submitted paste does not blank address bar (#354)
|
* ADDED: Allow AWS SDK to use default credential provider chain for S3Storage (#1070)
|
||||||
* FIXED: Clear address bar when create new paste from existing paste (#479)
|
* CHANGED: Upgrading libraries to: DOMpurify 3.0.4 & jQuery 3.7.0
|
||||||
* FIXED: Discussion section not hiding when new/clone paste is clicked on (#484)
|
* FIXED: Addressed PHP 8.2 deprecation warnings (#1092)
|
||||||
* FIXED: Showdown.js error when posting svg qrcode (#485)
|
* FIXED: Expose types JSON-LD incl. configured expiration dates (#1045)
|
||||||
* FIXED: Failed to handle the case where user cancelled attachment selection properly (#487)
|
|
||||||
* FIXED: Displaying the appropriate errors in older browsers (#508)
|
## 1.5.1 (2022-12-24)
|
||||||
* **1.3 (2019-07-09)**
|
* ADDED: script for administrative tasks: deleting pastes (#274), removing empty directories (#277), purging expired pastes (#276) & statistics (#319)
|
||||||
* ADDED: Translation for Czech (#424)
|
* FIXED: Revert Filesystem purge to limited and randomized lookup (#1030)
|
||||||
* ADDED: Threat modeled the application (#177)
|
* FIXED: Catch JSON decode errors when invalid data gets sent to the API (#1030)
|
||||||
* ADDED: Made compression configurable (#38)
|
* FIXED: Support sorting v1 format in mixed version comments in Filesystem backend (#1030)
|
||||||
* CHANGED: Minimum required PHP version is 5.5, due to a change in the identicon library
|
|
||||||
* CHANGED: Minimum required browser versions are Firefox 54, Chrome 57, Opera 44, Safari 11, Edge 16, due to use of WebCrypto API, async/await, ES6 & WebAssembly features - all Internet Explorer versions are incompatible
|
## 1.5 (2022-12-11)
|
||||||
* CHANGED: JSON and encryption formats were changed to replace SJCL library by browser integrated WebCrypto API (#28, #74)
|
* ADDED: script for data storage backend migrations (#1012)
|
||||||
* CHANGED: Replaced rawdeflate.js with zlib.wasm to resolve decompression failures and gain compatibility with standard deflate implementations (#193, #260, #328, #434, #440)
|
* ADDED: Translations for Turkish, Slovak, Greek and Thai
|
||||||
* CHANGED: Increase PBKDF2 iterations to 100k (#350)
|
* ADDED: S3 Storage backend (#994)
|
||||||
* CHANGED: Replaced last use of MD5 with Fowler–Noll–Vo checksum which produces the exact length we need for the paste ID (#49)
|
* ADDED: Jdenticons as an option for comment icons (#793)
|
||||||
* CHANGED: Simplified some PHP code & renamed PrivateBin class into Controller, to make MVC pattern use more obvious (#342)
|
* CHANGED: Avoid `SUPER` privilege for setting the `sql_mode` for MariaDB/MySQL (#919)
|
||||||
* CHANGED: Upgrading libraries to: identicon 1.2.0, random_compat 2.0.18, jQuery 3.4.1, Showdown 1.9.0, DOMpurify 1.0.11 & kjua 0.6.0
|
* CHANGED: Upgrading libraries to: DOMpurify 2.4.6, jQuery 3.6.1, Showdown 2.1.0 & zlib 1.2.13
|
||||||
* FIXED: Prevent Chrome from sending content of paste to Google for translation (#378)
|
* FIXED: Revert to CREATE INDEX without IF NOT EXISTS clauses, to support MySQL (#943)
|
||||||
* FIXED: To support attachments larger then 2 MiB in newer Chrome versions, we switched to blob instead of data URIs (#432)
|
* FIXED: Apply table prefix to indexes as well, to support multiple instances sharing a single database (#943)
|
||||||
* FIXED: Since Outlook strips trailing equal signs in links, the key in URL hash is now base58 encoded, instead of base64 (#377)
|
* FIXED: YOURLS integration via new proxy, storing signature in configuration (#725)
|
||||||
* FIXED: Facebooks started injecting parameters into shared URLs for tracking that lead to inaccessible pastes (#396)
|
|
||||||
* FIXED: Properly escaped HTML in raw text mode (#358)
|
## 1.4 (2022-04-09)
|
||||||
* FIXED: Made download links better readable in the dark bootstrap theme (#364)
|
* ADDED: Translations for Corsican, Estonian, Finnish and Lojban
|
||||||
* FIXED: Allow Letsencrypt bot to access on apache servers (#413)
|
* ADDED: new HTTP headers improving security (#765)
|
||||||
* **1.2.1 (2018-08-11)**
|
* ADDED: Download button for paste text (#774)
|
||||||
* ADDED: Add support for mega.nz links in pastes and comments (#331)
|
* ADDED: Opt-out of federated learning of cohorts (FLoC) (#776)
|
||||||
* CHANGED: Added some missing Russian translations (#348)
|
* ADDED: Configuration option to exempt IPs from the rate-limiter (#787)
|
||||||
* CHANGED: Minor PHP refactoring: Rename PrivateBin class to Controller, improved logic of some persistence classes (#342)
|
* ADDED: Google Cloud Storage backend support (#795)
|
||||||
* CHANGED: Upgrading DOMpurify library to 1.0.7
|
* ADDED: Oracle database support (#868)
|
||||||
* FIXED: Ensure legacy browsers without webcrypto support can't create paste keys with insufficient entropy (#346)
|
* ADDED: Configuration option to limit paste creation and commenting to certain IPs (#883)
|
||||||
* FIXED: Re-add support for old browsers (Firefox<21, Chrome<31, Safari<7, IE<11), broken in 1.2, will be removed again in 1.3
|
* ADDED: Set CSP also as meta tag, to deal with misconfigured webservers mangling the HTTP header
|
||||||
* **1.2 (2018-07-22)**
|
* ADDED: Sanitize SVG preview, preventing script execution in instance context
|
||||||
* ADDED: Translations for Spanish, Occitan, Norwegian, Portuguese, Dutch and Hungarian
|
* CHANGED: Language selection cookie only transmitted over HTTPS (#472)
|
||||||
* ADDED: Option in configuration to change the default "PrivateBin" title of the site
|
* 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
|
||||||
* ADDED: Added display of video, audio & PDF, drag & drop, preview of attachments (#182)
|
* CHANGED: Removed automatic `.ini` configuration file migration (#808)
|
||||||
* ADDED: QR code generation (#169)
|
* CHANGED: Removed configurable `dir` for `traffic` & `purge` limiters (#419)
|
||||||
* ADDED: Introduced DOMpurify library to sanitize generated HTML before display (#183)
|
* CHANGED: Server salt, traffic and purge limiter now stored in the storage backend (#419)
|
||||||
* CHANGED: Force JSON request for getting paste data & password retry (#216)
|
* CHANGED: Drop support for attachment download in IE
|
||||||
* CHANGED: Minimum required PHP version is 5.4 (#186)
|
* FIXED: Error when attachments are disabled, but paste with attachment gets displayed
|
||||||
* CHANGED: Shipped .htaccess files were updated for Apache 2.4 (#192)
|
|
||||||
* CHANGED: Cleanup of bootstrap template variants and moved icons to `img` directory
|
## 1.3.5 (2021-04-05)
|
||||||
* CHANGED: Removed option to hide clone button on expiring pastes, since this requires reading the paste for rendering the template, which leaks information on the pastes state
|
* ADDED: Translations for Hebrew, Lithuanian, Indonesian and Catalan
|
||||||
* CHANGED: Upgrading libraries to: SJCL 1.0.7, jQuery 3.3.1, Base64 2.4.5, Showdown 1.8.6, DOMpurify 1.0.5 & Prettify 453bd5f
|
* ADDED: Make the project info configurable (#681)
|
||||||
* CHANGED: Refactored JavaScript code, making it modular with private and public functions, making it much easier to maintain (#178)
|
* CHANGED: Upgrading libraries to: DOMpurify 2.2.7, kjua 0.9.0 & random_compat 2.0.18
|
||||||
* FIXED: To counteract regressions introduced by the refactoring, we finally introduced property based unit testing for the JavaScript code, this caught several regressions, but also some very old bugs not found so far (#32)
|
* CHANGED: Open all links in new window (#630)
|
||||||
* **1.1.1 (2017-10-06)**
|
* FIXED: PDF display in Firefox (#630)
|
||||||
* CHANGED: Switched to `.php` file extension for configuration file, to avoid leaking configuration data in unprotected installation.
|
* FIXED: Allow pasting into password input dialog (#630)
|
||||||
* **1.1 (2016-12-26)**
|
* FIXED: Display of expiration date in email (#630)
|
||||||
* ADDED: Translations for Italian and Russian
|
* FIXED: Allow display of durations in weeks (#630)
|
||||||
* ADDED: Loading message displayed until decryption succeeded for slower (in terms of CPU or network) systems
|
* FIXED: Avoid exposing burn-after-reading messages from cache (#630)
|
||||||
* ADDED: Dockerfile for docker container creation
|
* FIXED: Only display the dropzone when it should (#630)
|
||||||
* CHANGED: Using modal dialog to request password input instead of native JS input window (#69)
|
* FIXED: Detect delete token properly (#630)
|
||||||
* CHANGED: Suppressed referrer HTTP header sending when following links in a paste or comment (#96) and added additional HTTP headers for XSS mitigation (#91)
|
* FIXED: Sanitize output from `Helper.urls2links()` (#630)
|
||||||
* CHANGED: Updated random_compat and jQuery libraries
|
* FIXED: Avoid recreation of existing pasteurl element when calling URL shortener (#630)
|
||||||
* FIXED: XSS using JavaScript stored as markdown formatted paste, after clicking on Raw paste button (#137)
|
* FIXED: Downloads in Chrome >= 83 (#634)
|
||||||
* FIXED: Automatic purging deleting non-expiring pastes, when using database store (#149)
|
* FIXED: Display of empty files (#663)
|
||||||
* **1.0 (2016-08-25)**
|
* FIXED: Improve OpenGraph attributes (#651)
|
||||||
* ADDED: Translations for Slowene and Chinese
|
* FIXED: Reset to configured burn-after-reading, discussion and expiration settings (#682)
|
||||||
* ADDED: re-introduced (optional) URL shortener support, which was removed back in version 0.16 for privacy concerns
|
* FIXED: Italic segment of project information (#756)
|
||||||
* ADDED: Preview tab, helpful for writing markdown code or check the source code rendering
|
|
||||||
* ADDED: Automatic purging of expired pastes, done on paste creation
|
## 1.3.4 (2020-03-22)
|
||||||
* ADDED: Option to disable icons in discussions (will only affect newly created pastes)
|
* CHANGED: Minimum required PHP version is 5.6, due to a change in the identicon library and to use php's native hash_equals()
|
||||||
* ADDED: Composer support
|
* CHANGED: Upgrading libraries to: identicon 2.0.0
|
||||||
* CHANGED: Renamed the ZeroBin fork to PrivateBin
|
* FIXED: Support custom expiration options in email function (#586)
|
||||||
* CHANGED: Removed unmaintained RainTPL template engine, replacing the templates with straight forward PHP files
|
* FIXED: Regression with encoding of HTML entities (#588)
|
||||||
* CHANGED: New logo and favicons
|
* FIXED: Unable to paste password on paste with attachment (#565 & #595)
|
||||||
* CHANGED: Upgrading SJCL library to 1.0.4
|
|
||||||
* CHANGED: Switched to GCM instead of CCM mode for AES encryption for newly created pastes
|
## 1.3.3 (2020-02-16)
|
||||||
* CHANGED: Use backported random bytes function from PHP7 for older PHP versions instead of mcrypt
|
* CHANGED: Upgrading libraries to: DOMpurify 2.0.8
|
||||||
* CHANGED: Switched to a SHA256 HMAC of the IP in traffic limiter instead of storing it in plain text on the server
|
* CHANGED: Several translations got updated with missing messages
|
||||||
* CHANGED: Introduced content security policy header to reduce cross site scripting (XSS) risks
|
* CHANGED: Introduce HTML entity encoding on server side (#581)
|
||||||
* CHANGED: Added SHA512 subresource integrity hashes for all javascript includes to reduce the risk of manipulated scripts and easier detection of such
|
* FIXED: HTML entity double encoding issues introduced in 1.3.2 (#560)
|
||||||
* CHANGED: Refactored PHP code to conform to PSR-4 and PSR-2 standards
|
|
||||||
* CHANGED: Switched to Identicons as the default for comments with nicknames
|
## 1.2.3 (2020-02-16)
|
||||||
* CHANGED: Vizhash is now optional and based on (128 byte) SHA512 HMAC instead of (144 byte) combination of MD5, SHA1 and a reversal of that string
|
* CHANGED: Upgrading libraries to: DOMpurify 2.0.8
|
||||||
* FIXED: Content-type negociation for HTML in certain uncommon browser configurations
|
* CHANGED: Introduce HTML entity encoding on server side (#581)
|
||||||
* FIXED: JavaScript error displayed before page is loaded or during attachment load
|
* FIXED: HTML entity double encoding issues introduced in 1.3.2 (#560)
|
||||||
* FIXED: Don't strip space characters at beginning or end of optional password
|
|
||||||
* FIXED: Various UI glitches in mobile version or on smaller desktops with language menu, button spacing and long URLs
|
## 1.3.2 (2020-01-11)
|
||||||
* FIXED: Back button now works as expected after switching to raw text view of a paste
|
* ADDED: Translation for Ukrainian (#533)
|
||||||
* FIXED: Reactivated second error message above send comment button to ensure its visibility when the main error message is outside the viewport
|
* ADDED: Option to send a mail with the link, when creating a paste (#398)
|
||||||
* FIXED: Raw text now displays original markdown instead of rendered HTML
|
* ADDED: Add support for CONFIG_PATH environment variable (#552)
|
||||||
* FIXED: Removed unused code detected with the help of various code review tools
|
* CHANGED: Upgrading libraries to: base-x 3.0.7, DOMpurify 2.0.7 & Showdown 1.9.1
|
||||||
* FIXED: Table format for PostgreSQL, making it possible to use PostgreSQL as backend in addition to MySQL, SQLite and flat files
|
* FIXED: HTML injection via unescaped attachment filename (#554)
|
||||||
* **0.22 (2015-11-09)**:
|
* FIXED: Password disabling option (#527)
|
||||||
* ADDED: Tab character input support
|
|
||||||
* ADDED: Dark bootstrap theme
|
## 1.2.2 (2020-01-11)
|
||||||
* ADDED: Option to hide clone button on expiring pastes
|
* 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
|
||||||
* ADDED: Option to set a different default language then English and/or enforce it as the only language
|
* FIXED: HTML injection via unescaped attachment filename (#554)
|
||||||
* ADDED: Database now contains version to allow automatic update of structure, only if necessary; removing database structure check on each request
|
|
||||||
* ADDED: Favicons
|
## 1.3.1 (2019-09-22)
|
||||||
* FIXING: Regressions in database layer, prohibiting pastes from being stored
|
* ADDED: Translation for Bulgarian (#455)
|
||||||
* FIXING: Fixing "missing" comments when they were posted during the same second to the same paste
|
* CHANGED: Improved mobile UI - obscured send button and hard to click shortener button (#477)
|
||||||
* FIXING: JS failing when password input disabled
|
* CHANGED: Enhanced URL shortener integration (#479)
|
||||||
* CHANGED: Switching positions of "New" and "Send" button, highlighting the latter to improve workflow
|
* CHANGED: Improved file upload drag & drop UI (#317)
|
||||||
* CHANGED: Renamed config file to make updates easier
|
* CHANGED: Increased default size limit from 2 to 10 MiB, switch data from BLOB to MEDIUMBLOB in MySQL (#458)
|
||||||
* CHANGED: Switching to JSON-based REST-API
|
* CHANGED: Upgrading libraries to: DOMpurify 2.0.1
|
||||||
* CHANGED: Database structure to store attachments, allowing larger attachments to be stored (depending on maximum BLOB size of database backend)
|
* FIXED: Enabling browsers without WASM to create pastes and read uncompressed ones (#454)
|
||||||
* CHANGED: Refactored data model, traffic limiting & request handling
|
* FIXED: Cloning related issues (#489, #491, #493, #494)
|
||||||
* **0.21.1 (2015-09-21)**:
|
* FIXED: Enable file operation only when editing (#497)
|
||||||
* FIXING: lost meta data when using DB model instead of flat files
|
* FIXED: Clicking 'New' on a previously submitted paste does not blank address bar (#354)
|
||||||
* FIXING: mobile navbar getting triggered on load
|
* FIXED: Clear address bar when create new paste from existing paste (#479)
|
||||||
* CHANGED: database table "paste" gets automatically extended with a "meta" column
|
* FIXED: Discussion section not hiding when new/clone paste is clicked on (#484)
|
||||||
* CHANGED: navbar of "bootstrap" template now spans full width of view port on large screens
|
* FIXED: Showdown.js error when posting svg qrcode (#485)
|
||||||
* **0.21 (2015-09-19)**:
|
* FIXED: Failed to handle the case where user cancelled attachment selection properly (#487)
|
||||||
* ADDED: Translations for German, French and Polish, language selection menu (optional)
|
* FIXED: Displaying the appropriate errors in older browsers (#508)
|
||||||
* ADDED: File upload and image display support (optional)
|
|
||||||
* ADDED: Markdown format support
|
## 1.3 (2019-07-09)
|
||||||
* ADDED: "bootstrap-compact" template that hides some of the options in a drop down menu to ensure the nav bar fitting on one line on smaller screen sizes
|
* ADDED: Translation for Czech (#424)
|
||||||
* FIXING: Various usability issues with different screen sizes / device types in the "bootstrap" template
|
* ADDED: Threat modeled the application (#177)
|
||||||
* CHANGED: Instead of having different options to enable and preselect certain formats there is now a generic `[formatter_options]` section where formats can be added to the displayed format drop down menu. A `defaultformatter` can be set, it defaults to "plaintext". The `syntaxhighlighting` configuration got deprecated.
|
* ADDED: Made compression configurable (#38)
|
||||||
* `zerobin.js` got a major refactoring:
|
* CHANGED: Minimum required PHP version is 5.5, due to a change in the identicon library
|
||||||
* moved from global namespace into anonymous function
|
* CHANGED: Minimum required browser versions are Firefox 54, Chrome 57, Opera 44, Safari 11, Edge 16, due to use of WebCrypto API, async/await, ES6 & WebAssembly features - all Internet Explorer versions are incompatible
|
||||||
* events are no longer set via "onclick" attributes in the templates, but bound by from JS side
|
* CHANGED: JSON and encryption formats were changed to replace SJCL library by browser integrated WebCrypto API (#28, #74)
|
||||||
* for simpler maintenance the functions were grouped into objects: zerobin (display logic, event handling), filter (compression,
|
* CHANGED: Replaced rawdeflate.js with zlib.wasm to resolve decompression failures and gain compatibility with standard deflate implementations (#193, #260, #328, #434, #440)
|
||||||
|
* CHANGED: Increase PBKDF2 iterations to 100k (#350)
|
||||||
|
* CHANGED: Replaced last use of MD5 with Fowler–Noll–Vo checksum which produces the exact length we need for the paste ID (#49)
|
||||||
|
* CHANGED: Simplified some PHP code & renamed PrivateBin class into Controller, to make MVC pattern use more obvious (#342)
|
||||||
|
* CHANGED: Upgrading libraries to: identicon 1.2.0, random_compat 2.0.18, jQuery 3.4.1, Showdown 1.9.0, DOMpurify 1.0.11 & kjua 0.6.0
|
||||||
|
* FIXED: Prevent Chrome from sending content of paste to Google for translation (#378)
|
||||||
|
* FIXED: To support attachments larger then 2 MiB in newer Chrome versions, we switched to blob instead of data URIs (#432)
|
||||||
|
* FIXED: Since Outlook strips trailing equal signs in links, the key in URL hash is now base58 encoded, instead of base64 (#377)
|
||||||
|
* FIXED: Facebooks started injecting parameters into shared URLs for tracking that lead to inaccessible pastes (#396)
|
||||||
|
* FIXED: Properly escaped HTML in raw text mode (#358)
|
||||||
|
* FIXED: Made download links better readable in the dark bootstrap theme (#364)
|
||||||
|
* FIXED: Allow Letsencrypt bot to access on apache servers (#413)
|
||||||
|
|
||||||
|
## 1.2.1 (2018-08-11)
|
||||||
|
* ADDED: Add support for mega.nz links in pastes and comments (#331)
|
||||||
|
* CHANGED: Added some missing Russian translations (#348)
|
||||||
|
* CHANGED: Minor PHP refactoring: Rename PrivateBin class to Controller, improved logic of some persistence classes (#342)
|
||||||
|
* CHANGED: Upgrading DOMpurify library to 1.0.7
|
||||||
|
* FIXED: Ensure legacy browsers without webcrypto support can't create paste keys with insufficient entropy (#346)
|
||||||
|
* FIXED: Re-add support for old browsers (Firefox<21, Chrome<31, Safari<7, IE<11), broken in 1.2, will be removed again in 1.3
|
||||||
|
|
||||||
|
## 1.2 (2018-07-22)
|
||||||
|
* ADDED: Translations for Spanish, Occitan, Norwegian, Portuguese, Dutch and Hungarian
|
||||||
|
* ADDED: Option in configuration to change the default "PrivateBin" title of the site
|
||||||
|
* ADDED: Added display of video, audio & PDF, drag & drop, preview of attachments (#182)
|
||||||
|
* ADDED: QR code generation (#169)
|
||||||
|
* ADDED: Introduced DOMpurify library to sanitize generated HTML before display (#183)
|
||||||
|
* CHANGED: Force JSON request for getting paste data & password retry (#216)
|
||||||
|
* CHANGED: Minimum required PHP version is 5.4 (#186)
|
||||||
|
* CHANGED: Shipped .htaccess files were updated for Apache 2.4 (#192)
|
||||||
|
* CHANGED: Cleanup of bootstrap template variants and moved icons to `img` directory
|
||||||
|
* CHANGED: Removed option to hide clone button on expiring pastes, since this requires reading the paste for rendering the template, which leaks information on the pastes state
|
||||||
|
* CHANGED: Upgrading libraries to: SJCL 1.0.7, jQuery 3.3.1, Base64 2.4.5, Showdown 1.8.6, DOMpurify 1.0.5 & Prettify 453bd5f
|
||||||
|
* CHANGED: Refactored JavaScript code, making it modular with private and public functions, making it much easier to maintain (#178)
|
||||||
|
* FIXED: To counteract regressions introduced by the refactoring, we finally introduced property based unit testing for the JavaScript code, this caught several regressions, but also some very old bugs not found so far (#32)
|
||||||
|
|
||||||
|
## 1.1.1 (2017-10-06)
|
||||||
|
* CHANGED: Switched to `.php` file extension for configuration file, to avoid leaking configuration data in unprotected installation.
|
||||||
|
|
||||||
|
## 1.1 (2016-12-26)
|
||||||
|
* ADDED: Translations for Italian and Russian
|
||||||
|
* ADDED: Loading message displayed until decryption succeeded for slower (in terms of CPU or network) systems
|
||||||
|
* ADDED: Dockerfile for docker container creation
|
||||||
|
* CHANGED: Using modal dialog to request password input instead of native JS input window (#69)
|
||||||
|
* CHANGED: Suppressed referrer HTTP header sending when following links in a paste or comment (#96) and added additional HTTP headers for XSS mitigation (#91)
|
||||||
|
* CHANGED: Updated random_compat and jQuery libraries
|
||||||
|
* FIXED: XSS using JavaScript stored as markdown formatted paste, after clicking on Raw paste button (#137)
|
||||||
|
* FIXED: Automatic purging deleting non-expiring pastes, when using database store (#149)
|
||||||
|
|
||||||
|
## 1.0 (2016-08-25)
|
||||||
|
* ADDED: Translations for Slowene and Chinese
|
||||||
|
* ADDED: re-introduced (optional) URL shortener support, which was removed back in version 0.16 for privacy concerns
|
||||||
|
* ADDED: Preview tab, helpful for writing markdown code or check the source code rendering
|
||||||
|
* ADDED: Automatic purging of expired pastes, done on paste creation
|
||||||
|
* ADDED: Option to disable icons in discussions (will only affect newly created pastes)
|
||||||
|
* ADDED: Composer support
|
||||||
|
* CHANGED: Renamed the ZeroBin fork to PrivateBin
|
||||||
|
* CHANGED: Removed unmaintained RainTPL template engine, replacing the templates with straight forward PHP files
|
||||||
|
* CHANGED: New logo and favicons
|
||||||
|
* CHANGED: Upgrading SJCL library to 1.0.4
|
||||||
|
* CHANGED: Switched to GCM instead of CCM mode for AES encryption for newly created pastes
|
||||||
|
* CHANGED: Use backported random bytes function from PHP7 for older PHP versions instead of mcrypt
|
||||||
|
* CHANGED: Switched to a SHA256 HMAC of the IP in traffic limiter instead of storing it in plain text on the server
|
||||||
|
* CHANGED: Introduced content security policy header to reduce cross site scripting (XSS) risks
|
||||||
|
* CHANGED: Added SHA512 subresource integrity hashes for all javascript includes to reduce the risk of manipulated scripts and easier detection of such
|
||||||
|
* CHANGED: Refactored PHP code to conform to PSR-4 and PSR-2 standards
|
||||||
|
* CHANGED: Switched to Identicons as the default for comments with nicknames
|
||||||
|
* CHANGED: Vizhash is now optional and based on (128 byte) SHA512 HMAC instead of (144 byte) combination of MD5, SHA1 and a reversal of that string
|
||||||
|
* FIXED: Content-type negociation for HTML in certain uncommon browser configurations
|
||||||
|
* FIXED: JavaScript error displayed before page is loaded or during attachment load
|
||||||
|
* FIXED: Don't strip space characters at beginning or end of optional password
|
||||||
|
* FIXED: Various UI glitches in mobile version or on smaller desktops with language menu, button spacing and long URLs
|
||||||
|
* FIXED: Back button now works as expected after switching to raw text view of a paste
|
||||||
|
* FIXED: Reactivated second error message above send comment button to ensure its visibility when the main error message is outside the viewport
|
||||||
|
* FIXED: Raw text now displays original markdown instead of rendered HTML
|
||||||
|
* FIXED: Removed unused code detected with the help of various code review tools
|
||||||
|
* FIXED: Table format for PostgreSQL, making it possible to use PostgreSQL as backend in addition to MySQL, SQLite and flat files
|
||||||
|
|
||||||
|
## 0.22 (2015-11-09):
|
||||||
|
* ADDED: Tab character input support
|
||||||
|
* ADDED: Dark bootstrap theme
|
||||||
|
* ADDED: Option to hide clone button on expiring pastes
|
||||||
|
* ADDED: Option to set a different default language then English and/or enforce it as the only language
|
||||||
|
* ADDED: Database now contains version to allow automatic update of structure, only if necessary; removing database structure check on each request
|
||||||
|
* ADDED: Favicons
|
||||||
|
* FIXING: Regressions in database layer, prohibiting pastes from being stored
|
||||||
|
* FIXING: Fixing "missing" comments when they were posted during the same second to the same paste
|
||||||
|
* FIXING: JS failing when password input disabled
|
||||||
|
* CHANGED: Switching positions of "New" and "Send" button, highlighting the latter to improve workflow
|
||||||
|
* CHANGED: Renamed config file to make updates easier
|
||||||
|
* CHANGED: Switching to JSON-based REST-API
|
||||||
|
* CHANGED: Database structure to store attachments, allowing larger attachments to be stored (depending on maximum BLOB size of database backend)
|
||||||
|
* CHANGED: Refactored data model, traffic limiting & request handling
|
||||||
|
|
||||||
|
## 0.21.1 (2015-09-21):
|
||||||
|
* FIXING: lost meta data when using DB model instead of flat files
|
||||||
|
* FIXING: mobile navbar getting triggered on load
|
||||||
|
* CHANGED: database table "paste" gets automatically extended with a "meta" column
|
||||||
|
* CHANGED: navbar of "bootstrap" template now spans full width of view port on large screens
|
||||||
|
|
||||||
|
## 0.21 (2015-09-19):
|
||||||
|
* ADDED: Translations for German, French and Polish, language selection menu (optional)
|
||||||
|
* ADDED: File upload and image display support (optional)
|
||||||
|
* ADDED: Markdown format support
|
||||||
|
* ADDED: "bootstrap-compact" template that hides some of the options in a drop down menu to ensure the nav bar fitting on one line on smaller screen sizes
|
||||||
|
* FIXING: Various usability issues with different screen sizes / device types in the "bootstrap" template
|
||||||
|
* CHANGED: Instead of having different options to enable and preselect certain formats there is now a generic `[formatter_options]` section where formats can be added to the displayed format drop down menu. A `defaultformatter` can be set, it defaults to "plaintext". The `syntaxhighlighting` configuration got deprecated.
|
||||||
|
* `zerobin.js` got a major refactoring:
|
||||||
|
* moved from global namespace into anonymous function
|
||||||
|
* events are no longer set via "onclick" attributes in the templates, but bound by from JS side
|
||||||
|
* for simpler maintenance the functions were grouped into objects: zerobin (display logic, event handling), filter (compression,
|
||||||
encryption), i18n (translation, counterpart of i18n.php) and helper (stateless utilities)
|
encryption), i18n (translation, counterpart of i18n.php) and helper (stateless utilities)
|
||||||
* Wiki pages were added to address common topics:
|
* Wiki pages were added to address common topics:
|
||||||
* [Upgrading from ZeroBin 0.19 Alpha](https://github.com/PrivateBin/PrivateBin/wiki/Upgrading-from-ZeroBin-0.19-Alpha)
|
* [Upgrading from ZeroBin 0.19 Alpha](https://github.com/PrivateBin/PrivateBin/wiki/Upgrading-from-ZeroBin-0.19-Alpha)
|
||||||
* [Directory of public PrivateBin servers](https://github.com/PrivateBin/PrivateBin/wiki/PrivateBin-Directory)
|
* [Directory of public PrivateBin servers](https://github.com/PrivateBin/PrivateBin/wiki/PrivateBin-Directory)
|
||||||
* [Translation](https://github.com/PrivateBin/PrivateBin/wiki/Translation)
|
* [Translation](https://github.com/PrivateBin/PrivateBin/wiki/Translation)
|
||||||
* [Templates](https://github.com/PrivateBin/PrivateBin/wiki/Templates)
|
* [Templates](https://github.com/PrivateBin/PrivateBin/wiki/Templates)
|
||||||
* **0.20 (2015-09-03)**:
|
|
||||||
* ADDED: Password protected pastes (optional)
|
## 0.20 (2015-09-03):
|
||||||
* ADDED: configuration options for highlighting, password, discussions, expiration times, rate limiting
|
* ADDED: Password protected pastes (optional)
|
||||||
* ADDED: JSON-only retrieval of paste incl. discussion, used to be able to refresh paste when posting a comment
|
* ADDED: configuration options for highlighting, password, discussions, expiration times, rate limiting
|
||||||
* ADDED: bootstrap CSS based template
|
* ADDED: JSON-only retrieval of paste incl. discussion, used to be able to refresh paste when posting a comment
|
||||||
* CHANGED: "Burn after reading" pastes are now deleted only after the paste was successfully decrypted via callback. This prevents accidental deletion by chatbots following URLs and the like. Usage of a password is suggested to ensure only the desired recipient is able to encrypt it.
|
* ADDED: bootstrap CSS based template
|
||||||
* CHANGED: the "opendiscussion" option now only controls if the discussion checkbox is preselected. Use "discussion = false" to disable the discussion feature completely (which also removes the checkbox from the template).
|
* CHANGED: "Burn after reading" pastes are now deleted only after the paste was successfully decrypted via callback. This prevents accidental deletion by chatbots following URLs and the like. Usage of a password is suggested to ensure only the desired recipient is able to encrypt it.
|
||||||
* FIXING: Behaviour of several conflicting configuration options. As a general measure unit tests for 9 of the options and all their possible configurations were added via a unit test generator.
|
* CHANGED: the "opendiscussion" option now only controls if the discussion checkbox is preselected. Use "discussion = false" to disable the discussion feature completely (which also removes the checkbox from the template).
|
||||||
* updated JS libraries: jquery to 1.11.3, sjcl to 1.0.2, base64.js to 2.1.9, deflate to 0.5, inflate to 0.3 and prettify to latest
|
* FIXING: Behaviour of several conflicting configuration options. As a general measure unit tests for 9 of the options and all their possible configurations were added via a unit test generator.
|
||||||
* generally improved documentation, both inline phpdoc / JSdoc source code documentation, as well as Wiki pages on installation, configuration, development and JSON-API
|
* updated JS libraries: jquery to 1.11.3, sjcl to 1.0.2, base64.js to 2.1.9, deflate to 0.5, inflate to 0.3 and prettify to latest
|
||||||
* **Alpha 0.19 (2013-07-05)**:
|
* generally improved documentation, both inline phpdoc / JSdoc source code documentation, as well as Wiki pages on installation, configuration, development and JSON-API
|
||||||
* Corrected XSS security flaw which affected IE<10. Other browsers were not affected.
|
|
||||||
* Corrected spacing display in IE<10.
|
## Alpha 0.19 (2013-07-05):
|
||||||
* **Alpha 0.18 (2013-02-24)**:
|
* Corrected XSS security flaw which affected IE<10. Other browsers were not affected.
|
||||||
* ADDED: The resulting URL is automatically selected after pressing "Send". You just have to press CTRL+C.
|
* Corrected spacing display in IE<10.
|
||||||
* ADDED: Automatic syntax highlighting for 53 languages using highlight.js
|
|
||||||
* ADDED: "5 minutes" and "1 week" expirations.
|
## Alpha 0.18 (2013-02-24):
|
||||||
* ADDED: "Raw text" button.
|
* ADDED: The resulting URL is automatically selected after pressing "Send". You just have to press CTRL+C.
|
||||||
* jQuery upgraded to 1.9.1
|
* ADDED: Automatic syntax highlighting for 53 languages using highlight.js
|
||||||
* sjcl upgraded to GitHub master 2013-02-23
|
* ADDED: "5 minutes" and "1 week" expirations.
|
||||||
* base64.js upgraded to 1.7
|
* ADDED: "Raw text" button.
|
||||||
* FIXED: Dates in discussion are now proper local dates.
|
* jQuery upgraded to 1.9.1
|
||||||
* ADDED: Robot meta tags in HTML to prevent search engines indexing.
|
* sjcl upgraded to GitHub master 2013-02-23
|
||||||
* ADDED: Better json checking (including entropy).
|
* base64.js upgraded to 1.7
|
||||||
* ADDED: Added version to js/css assets URLs in order to prevent some abusive caches to serve an obsolete version of these files when ZeroBin is upgraded.
|
* FIXED: Dates in discussion are now proper local dates.
|
||||||
* "Burn after reading" option has been moved out of Expiration combo to a separate checkbox. Reason is: You can prevent a read-once paste to be available ad vitam eternam on the net.
|
* ADDED: Robot meta tags in HTML to prevent search engines indexing.
|
||||||
* **Alpha 0.17 (2013-02-23)**:
|
* ADDED: Better json checking (including entropy).
|
||||||
* ADDED: Deletion URL.
|
* ADDED: Added version to js/css assets URLs in order to prevent some abusive caches to serve an obsolete version of these files when ZeroBin is upgraded.
|
||||||
* small refactoring.
|
* "Burn after reading" option has been moved out of Expiration combo to a separate checkbox. Reason is: You can prevent a read-once paste to be available ad vitam eternam on the net.
|
||||||
* improved regex checks.
|
|
||||||
* larger server alt on installation.
|
## Alpha 0.17 (2013-02-23):
|
||||||
* **Alpha 0.16**:
|
* ADDED: Deletion URL.
|
||||||
* FIXED minor php warnings.
|
* small refactoring.
|
||||||
* FIXED: zerobin.js reformated and properly commented.
|
* improved regex checks.
|
||||||
* FIXED: Directory structure re-organized.
|
* larger server alt on installation.
|
||||||
* CHANGED: URL shortening button was removed. (It was bad for privacy.)
|
|
||||||
* **Alpha 0.15 (2012-04-20):**
|
## Alpha 0.16:
|
||||||
* FIXED: 2 minor corrections to avoid notices in php log.
|
* FIXED minor php warnings.
|
||||||
* FIXED: Sources converted to UTF-8.
|
* FIXED: zerobin.js reformated and properly commented.
|
||||||
* **Alpha 0.14 (2012-04-20):**
|
* FIXED: Directory structure re-organized.
|
||||||
* ADDED: GD presence is checked.
|
* CHANGED: URL shortening button was removed. (It was bad for privacy.)
|
||||||
* 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.
|
## Alpha 0.15 (2012-04-20):
|
||||||
* **Alpha 0.13 (2012-04-18):**
|
* FIXED: 2 minor corrections to avoid notices in php log.
|
||||||
* FIXED: ''imageantialias()'' call removed because it's not really usefull and can be a problem on most hosts (if GD is not compiled in php).
|
* FIXED: Sources converted to UTF-8.
|
||||||
* FIXED: $error not properly initialized in index.php
|
|
||||||
* **Alpha 0.12 (2012-04-18):**
|
## Alpha 0.14 (2012-04-20):
|
||||||
* **DISCUSSIONS !** Now you can enable discussions on your pastes. Of course, posted comments and nickname are also encrypted and the server cannot see them.
|
* ADDED: GD presence is checked.
|
||||||
* This feature implies a change in storage format. You will have to delete all previous pastes in your ZeroBin.
|
* CHANGED: Traffic limiter data files moved to data/ (→easier rights management)
|
||||||
* 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: "Burn after reading" implemented. Opening the URL will display the paste and immediately destroy it on server.
|
||||||
* 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.
|
## Alpha 0.13 (2012-04-18):
|
||||||
* Better cleaning of the URL (to make sure the key is not broken by some stupid redirection service)
|
* FIXED: ''imageantialias()'' call removed because it's not really usefull and can be a problem on most hosts (if GD is not compiled in php).
|
||||||
* **Alpha 0.11 (2012-04-12):**
|
* FIXED: $error not properly initialized in index.php
|
||||||
* Automatically ignore parameters (such as &utm_source=...) added //after// the anchor by some stupid Web 2.0 services.
|
|
||||||
* First public release.
|
## Alpha 0.12 (2012-04-18):
|
||||||
* **Alpha 0.10 (2012-04-12):**
|
## DISCUSSIONS ! Now you can enable discussions on your pastes. Of course, posted comments and nickname are also encrypted and the server cannot see them.
|
||||||
* 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.)
|
* This feature implies a change in storage format. You will have to delete all previous pastes in your ZeroBin.
|
||||||
* **Alpha 0.9 (2012-04-11):**
|
* 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.
|
||||||
* 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.
|
* Remaining time before expiration is now displayed.
|
||||||
* **Alpha 0.8 (2012-04-11):**
|
* Explicit tags were added to CSS and jQuery selectors (eg. div#aaa instead of #aaa) to speed up browser.
|
||||||
* Source code not published yet.
|
* Better cleaning of the URL (to make sure the key is not broken by some stupid redirection service)
|
||||||
* Interface completely redesigned. Icons added.
|
|
||||||
* Now properly supports IE6/7 (ugly display, but it works. "Clone" button is disabled though.)
|
## Alpha 0.11 (2012-04-12):
|
||||||
* Added one level of depth for storage directories (This is better for higher load servers).
|
* Automatically ignore parameters (such as &utm_source=...) added //after// the anchor by some stupid Web 2.0 services.
|
||||||
* php version is now checked (min: 5.2.6)
|
* First public release.
|
||||||
* Better checks on posted json data on server.
|
|
||||||
* Added "1 year" expiration.
|
## Alpha 0.10 (2012-04-12):
|
||||||
* URLs are now converted to clickable links. This include http, https, ftp and magnet links.
|
* 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.)
|
||||||
* Clickable links include ''rel="nofollow"'' to discourage SEO.
|
|
||||||
* On my public service (http://sebsauvage.net/paste/)
|
## Alpha 0.9 (2012-04-11):
|
||||||
* All data will be deleted (you were warned - this is a test service)
|
* 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.
|
||||||
* Default paste expiration is now 1 month to prevent clogging-up my host.
|
|
||||||
|
## Alpha 0.8 (2012-04-11):
|
||||||
|
* Source code not published yet.
|
||||||
|
* Interface completely redesigned. Icons added.
|
||||||
|
* Now properly supports IE6/7 (ugly display, but it works. "Clone" button is disabled though.)
|
||||||
|
* Added one level of depth for storage directories (This is better for higher load servers).
|
||||||
|
* php version is now checked (min: 5.2.6)
|
||||||
|
* Better checks on posted json data on server.
|
||||||
|
* Added "1 year" expiration.
|
||||||
|
* URLs are now converted to clickable links. This include http, https, ftp and magnet links.
|
||||||
|
* Clickable links include ''rel="nofollow"'' to discourage SEO.
|
||||||
|
* On my public service (http://sebsauvage.net/paste/)
|
||||||
|
* All data will be deleted (you were warned - this is a test service)
|
||||||
|
* Default paste expiration is now 1 month to prevent clogging-up my host.
|
||||||
|
26
CREDITS.md
26
CREDITS.md
@ -2,18 +2,17 @@
|
|||||||
|
|
||||||
## 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, containers images, database backend, MVC, configuration, i18n
|
* Simon Rupf - WebCrypto, unit tests, container images, database backend, 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
|
||||||
@ -29,6 +28,11 @@ Sébastien Sauvage - original idea and main developer
|
|||||||
* 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
|
* rodehoed - option to exempt ips from the rate-limiter
|
||||||
* Mark van Holsteijn - Google Cloud Storage backend
|
* Mark van Holsteijn - Google Cloud Storage backend
|
||||||
|
* Austin Huang - Oracle database support
|
||||||
|
* Felix J. Ogris - S3 Storage backend, script for data backend migrations, dropped singleton behaviour of data backends
|
||||||
|
* Mounir Idrassi & J. Mozdzen - secure YOURLS integration
|
||||||
|
* Felipe Nakandakari - enabled AWS SDK to use default credential provider chain in the S3 Storage backend
|
||||||
|
* Aaron Sherber - cache control headers for API calls & use of `shortenviayourls` in query parameters
|
||||||
|
|
||||||
## Translations
|
## Translations
|
||||||
* Hexalyse - French
|
* Hexalyse - French
|
||||||
@ -53,3 +57,13 @@ Sébastien Sauvage - original idea and main developer
|
|||||||
* whenwesober - Indonesian
|
* whenwesober - Indonesian
|
||||||
* retiolus - Catalan
|
* retiolus - Catalan
|
||||||
* sarnane - Estonian
|
* sarnane - Estonian
|
||||||
|
* foxsouns - Lojban
|
||||||
|
* Patriccollu di Santa Maria è Sichè - Corsican
|
||||||
|
* Markus Mikkonen - Finnish
|
||||||
|
* Emir Ensar Rahmanlar - Turkish
|
||||||
|
* Stevo984 - Slovak
|
||||||
|
* Christos Karamolegkos - Greek
|
||||||
|
* jaideejung007 - Thai
|
||||||
|
* Nicolas Le Gall - Japanese
|
||||||
|
* lazerns - Arabic
|
||||||
|
* Edward205 - Romanian
|
||||||
|
210
INSTALL.md
210
INSTALL.md
@ -1,210 +0,0 @@
|
|||||||
# Installation
|
|
||||||
|
|
||||||
**TL;DR:** Download the
|
|
||||||
[latest release archive](https://github.com/PrivateBin/PrivateBin/releases/latest)
|
|
||||||
and extract it in your web hosts folder where you want to install your PrivateBin
|
|
||||||
instance. We try to provide a mostly safe default configuration, but we urge you to
|
|
||||||
check the [security section](#hardening-and-security) below and the [configuration
|
|
||||||
options](#configuration) to adjust as you see fit.
|
|
||||||
|
|
||||||
**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.
|
|
||||||
|
|
||||||
**NOTE:** There is a [ansible](https://ansible.com) role by @e1mo available to 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 7.0 or above
|
|
||||||
- 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 (mcrypt needs to be able to access `/dev/urandom`. This means if `open_basedir` is set, it must include this file.)
|
|
||||||
- com_dotnet extension
|
|
||||||
- GD extension
|
|
||||||
- zlib extension
|
|
||||||
- some disk space or (optionally) 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
|
|
||||||
- A web browser with JavaScript support
|
|
||||||
|
|
||||||
## Hardening and security
|
|
||||||
|
|
||||||
### Changing the path
|
|
||||||
|
|
||||||
In the index.php you can define a different `PATH`. This is useful to secure your
|
|
||||||
installation. You can move the configuration, data files, templates and PHP
|
|
||||||
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 / PHP
|
|
||||||
process (see also
|
|
||||||
[open_basedir setting](https://secure.php.net/manual/en/ini.core.php#ini.open-basedir)).
|
|
||||||
|
|
||||||
> #### PATH Example
|
|
||||||
> Your PrivateBin installation lives in a subfolder called "paste" inside of
|
|
||||||
> your document root. The URL looks like this:
|
|
||||||
> http://example.com/paste/
|
|
||||||
>
|
|
||||||
> The full path of PrivateBin on your webserver is:
|
|
||||||
> /home/example.com/htdocs/paste
|
|
||||||
>
|
|
||||||
> When setting the path like this:
|
|
||||||
> define('PATH', '../../secret/privatebin/');
|
|
||||||
>
|
|
||||||
> PrivateBin will look for your includes / data here:
|
|
||||||
> /home/example.com/secret/privatebin
|
|
||||||
|
|
||||||
### Changing the config path only
|
|
||||||
|
|
||||||
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,
|
|
||||||
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.
|
|
||||||
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.
|
|
||||||
|
|
||||||
Note that your PHP process will need read access to the config wherever it may be.
|
|
||||||
|
|
||||||
> #### CONFIG_PATH example
|
|
||||||
> Setting the value in an Apache Vhost:
|
|
||||||
> SetEnv CONFIG_PATH /var/lib/privatebin/conf.php
|
|
||||||
>
|
|
||||||
> In a php-fpm pool config:
|
|
||||||
> env[CONFIG_PATH] = /var/lib/privatebin/conf.php
|
|
||||||
>
|
|
||||||
> In the index.php, near the top:
|
|
||||||
> putenv('CONFIG_PATH=/var/lib/privatebin/conf.php');
|
|
||||||
|
|
||||||
### Transport security
|
|
||||||
|
|
||||||
When setting up PrivateBin, also set up HTTPS, if you haven't already. Without HTTPS
|
|
||||||
PrivateBin is not secure, as the JavaScript files could be manipulated during transmission.
|
|
||||||
For more information on this, see our [FAQ entry on HTTPS setup](https://github.com/PrivateBin/PrivateBin/wiki/FAQ#how-should-i-setup-https).
|
|
||||||
|
|
||||||
### File-level permissions
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
## Configuration
|
|
||||||
|
|
||||||
In the file `cfg/conf.php` you can configure PrivateBin. A `cfg/conf.sample.php`
|
|
||||||
is provided containing all options and default values. You can copy it to
|
|
||||||
`cfg/conf.php` and adapt it as needed. Alternatively you can copy it anywhere and
|
|
||||||
set the `CONFIG_PATH` environment variable (see above notes). The config file is
|
|
||||||
divided into multiple sections, which are enclosed in square brackets.
|
|
||||||
|
|
||||||
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
|
|
||||||
you set a time limit in seconds. Users may not post more often then this limit
|
|
||||||
to your PrivateBin installation.
|
|
||||||
|
|
||||||
More details can be found in the
|
|
||||||
[configuration documentation](https://github.com/PrivateBin/PrivateBin/wiki/Configuration).
|
|
||||||
|
|
||||||
## Advanced installation
|
|
||||||
|
|
||||||
### Web server configuration
|
|
||||||
|
|
||||||
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
|
|
||||||
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
|
|
||||||
adjust the file if you already use a `robots.txt`.
|
|
||||||
|
|
||||||
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
|
|
||||||
file to `.htaccess` to enable this feature. If you use another webserver, you
|
|
||||||
have to configure it manually to do the same.
|
|
||||||
|
|
||||||
### When using Cloudflare
|
|
||||||
|
|
||||||
If you want to use PrivateBin behind Cloudflare, make sure you have disabled the Rocket
|
|
||||||
loader and unchecked "Javascript" for Auto Minify, found in your domain settings,
|
|
||||||
under "Speed". (More information
|
|
||||||
[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
|
|
||||||
|
|
||||||
In the configuration file the `[model]` and `[model_options]` sections let you
|
|
||||||
configure your favourite way of storing the pastes and discussions on your
|
|
||||||
server.
|
|
||||||
|
|
||||||
`Filesystem` is the default model, which stores everything in files in the
|
|
||||||
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
|
|
||||||
locally, you might want to switch to the `Database` model. This lets you
|
|
||||||
store your data in a database. Basically all databases that are supported by
|
|
||||||
[PDO](https://secure.php.net/manual/en/book.pdo.php) may be used. Automatic table
|
|
||||||
creation is provided for `pdo_ibm`, `pdo_informix`, `pdo_mssql`, `pdo_mysql`,
|
|
||||||
`pdo_oci`, `pdo_pgsql` and `pdo_sqlite`. You may want to provide a table prefix,
|
|
||||||
if you have to share the PrivateBin database with another application or you want
|
|
||||||
to use a prefix for
|
|
||||||
[security reasons](https://security.stackexchange.com/questions/119510/is-using-a-db-prefix-for-tables-more-secure).
|
|
||||||
The table prefix option is called `tbl`.
|
|
||||||
|
|
||||||
> #### Note
|
|
||||||
> The `Database` model has only been tested with SQLite, MySQL and PostgreSQL,
|
|
||||||
> although it would not be recommended to use SQLite in a production environment.
|
|
||||||
> If you gain any experience running PrivateBin on other RDBMS, please let us
|
|
||||||
> know.
|
|
||||||
|
|
||||||
The following GRANTs (privileges) are required for the PrivateBin user in **MySQL**. In normal operation:
|
|
||||||
- INSERT, SELECT, DELETE on the paste and comment tables
|
|
||||||
- SELECT on the config table
|
|
||||||
|
|
||||||
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:
|
|
||||||
- CREATE, INDEX and ALTER on the database
|
|
||||||
- INSERT and UPDATE on the config table
|
|
||||||
|
|
||||||
For reference or if you want to create the table schema for yourself to avoid having to give PrivateBin too many permissions (replace
|
|
||||||
`prefix_` with your own table prefix and create the table schema with your favourite MySQL console):
|
|
||||||
|
|
||||||
```sql
|
|
||||||
CREATE TABLE prefix_paste (
|
|
||||||
dataid CHAR(16) NOT NULL,
|
|
||||||
data MEDIUMBLOB,
|
|
||||||
postdate INT,
|
|
||||||
expiredate INT,
|
|
||||||
opendiscussion INT,
|
|
||||||
burnafterreading INT,
|
|
||||||
meta TEXT,
|
|
||||||
attachment MEDIUMBLOB,
|
|
||||||
attachmentname BLOB,
|
|
||||||
PRIMARY KEY (dataid)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE prefix_comment (
|
|
||||||
dataid CHAR(16),
|
|
||||||
pasteid CHAR(16),
|
|
||||||
parentid CHAR(16),
|
|
||||||
data BLOB,
|
|
||||||
nickname BLOB,
|
|
||||||
vizhash BLOB,
|
|
||||||
postdate INT,
|
|
||||||
PRIMARY KEY (dataid)
|
|
||||||
);
|
|
||||||
CREATE INDEX parent ON prefix_comment(pasteid);
|
|
||||||
|
|
||||||
CREATE TABLE prefix_config (
|
|
||||||
id CHAR(16) NOT NULL, value TEXT, PRIMARY KEY (id)
|
|
||||||
);
|
|
||||||
INSERT INTO prefix_config VALUES('VERSION', '1.3.5');
|
|
||||||
```
|
|
||||||
|
|
||||||
In **PostgreSQL**, the data, attachment, nickname and vizhash columns needs to
|
|
||||||
be TEXT and not BLOB or MEDIUMBLOB.
|
|
||||||
|
|
||||||
### 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 PASTEBIN_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`.
|
|
@ -1,7 +1,7 @@
|
|||||||
# License
|
# License
|
||||||
|
|
||||||
PrivateBin consists of PHP and JS code which was originally written by Sébastien
|
PrivateBin consists of PHP and JS code which was originally written by Sébastien
|
||||||
Sauvage in 2012 and falls unter the Zlib/libpng license. Also included are
|
Sauvage in 2012 and falls under the Zlib/libpng license. Also included are
|
||||||
libraries that fall under the GPLv2 (rawinflate), BSD 3-clause (Showdown), MIT
|
libraries that fall under the GPLv2 (rawinflate), BSD 3-clause (Showdown), MIT
|
||||||
(base64.js version 1.7, Bootstrap, Identicon, random_compat, composer, kjua,
|
(base64.js version 1.7, Bootstrap, Identicon, random_compat, composer, kjua,
|
||||||
base-x), Apache (prettify.js) and CC-BY (favicon, icon, logo) licenses. All of
|
base-x), Apache (prettify.js) and CC-BY (favicon, icon, logo) licenses. All of
|
||||||
@ -342,16 +342,16 @@ any theory of liability, whether in contract, strict liability, or tort
|
|||||||
(including negligence or otherwise) arising in any way out of the use of this
|
(including negligence or otherwise) arising in any way out of the use of this
|
||||||
software, even if advised of the possibility of such damage.
|
software, even if advised of the possibility of such damage.
|
||||||
|
|
||||||
## MIT License for base64.js version 1.7, Bootstrap, Identicon, random_compat, Composer, kjua and base-x
|
## MIT License for base64.js version 1.7, Bootstrap, Identicon, Composer, kjua and base-x
|
||||||
|
|
||||||
Copyright © 2012 Dan Kogai
|
Copyright © 2012 Dan Kogai
|
||||||
Copyright © 2011-2016 Twitter, Inc.
|
Copyright © 2011-2016 Twitter, Inc.
|
||||||
Copyright © 2013 Benjamin Laugueux <benjamin@yzalis.com>
|
Copyright © 2013 Benjamin Laugueux <benjamin@yzalis.com>
|
||||||
Copyright © 2015 Paragon Initiative Enterprises
|
|
||||||
Copyright © 2016 Nils Adermann, Jordi Boggiano
|
Copyright © 2016 Nils Adermann, Jordi Boggiano
|
||||||
Copyright © 2016 Lars Jung (https://larsjung.de)
|
Copyright © 2016 Lars Jung (https://larsjung.de)
|
||||||
Copyright © 2018 base-x contributors
|
Copyright © 2018 base-x contributors
|
||||||
Copyright © 2014-2018 The Bitcoin Core developers
|
Copyright © 2014-2018 The Bitcoin Core developers
|
||||||
|
Copyright © 2019-2024 The Bootstrap Authors
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
20
Makefile
20
Makefile
@ -1,8 +1,8 @@
|
|||||||
.PHONY: all coverage coverage-js coverage-php doc doc-js doc-php increment sign test test-js test-php help
|
.PHONY: all coverage coverage-js coverage-php doc doc-js doc-php increment sign test test-js test-php help
|
||||||
|
|
||||||
CURRENT_VERSION = 1.3.5
|
CURRENT_VERSION = 1.7.5
|
||||||
VERSION ?= 1.3.6
|
VERSION ?= 1.7.6
|
||||||
VERSION_FILES = index.php cfg/ *.md css/ i18n/ img/ js/package.json js/privatebin.js lib/ Makefile tpl/ tst/
|
VERSION_FILES = README.md SECURITY.md doc/Installation.md js/package*.json lib/Controller.php Makefile
|
||||||
REGEX_CURRENT_VERSION := $(shell echo $(CURRENT_VERSION) | sed "s/\./\\\./g")
|
REGEX_CURRENT_VERSION := $(shell echo $(CURRENT_VERSION) | sed "s/\./\\\./g")
|
||||||
REGEX_VERSION := $(shell echo $(VERSION) | sed "s/\./\\\./g")
|
REGEX_VERSION := $(shell echo $(VERSION) | sed "s/\./\\\./g")
|
||||||
|
|
||||||
@ -17,8 +17,8 @@ coverage-js: ## Run JS unit tests and generate code coverage reports.
|
|||||||
cd js && nyc mocha
|
cd js && nyc mocha
|
||||||
|
|
||||||
coverage-php: ## Run PHP unit tests and generate code coverage reports.
|
coverage-php: ## Run PHP unit tests and generate code coverage reports.
|
||||||
cd tst && phpunit 2> /dev/null
|
cd tst && XDEBUG_MODE=coverage phpunit 2> /dev/null
|
||||||
cd tst/log/php-coverage-report && sed -i "s#$(CURDIR)##g" *.html */*.html
|
cd tst/log/php-coverage-report && sed -i "s#$(CURDIR)/##g" *.html */*.html
|
||||||
|
|
||||||
doc: doc-js doc-php ## Generate all code documentation.
|
doc: doc-js doc-php ## Generate all code documentation.
|
||||||
|
|
||||||
@ -26,19 +26,19 @@ doc-js: ## Generate JS code documentation.
|
|||||||
jsdoc -p -d doc/jsdoc js/privatebin.js js/legacy.js
|
jsdoc -p -d doc/jsdoc js/privatebin.js js/legacy.js
|
||||||
|
|
||||||
doc-php: ## Generate JS code documentation.
|
doc-php: ## Generate JS code documentation.
|
||||||
phpdoc --visibility public,protected,private -t doc/phpdoc -d lib/
|
phpdoc --visibility=public,protected,private --target=doc/phpdoc --directory=lib/
|
||||||
|
|
||||||
increment: ## Increment and commit new version number, set target version using `make increment VERSION=1.2.3`.
|
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`; \
|
for F in `grep -l -R $(REGEX_CURRENT_VERSION) $(VERSION_FILES)`; \
|
||||||
do \
|
do \
|
||||||
sed -i "s/$(REGEX_CURRENT_VERSION)/$(REGEX_VERSION)/g" $$F; \
|
sed -i "s/$(REGEX_CURRENT_VERSION)/$(REGEX_VERSION)/g" $$F; \
|
||||||
done
|
done
|
||||||
git add $(VERSION_FILES)
|
git add $(VERSION_FILES) CHANGELOG.md
|
||||||
git commit -m "incrementing version"
|
git commit -m "incrementing version"
|
||||||
|
|
||||||
sign: ## Sign a release.
|
sign: ## Sign a release.
|
||||||
git tag $(VERSION)
|
git tag --sign --message "Release v$(VERSION)" $(VERSION)
|
||||||
git push --tags
|
git push origin $(VERSION)
|
||||||
signrelease.sh
|
signrelease.sh
|
||||||
|
|
||||||
test: test-js test-php ## Run all unit tests.
|
test: test-js test-php ## Run all unit tests.
|
||||||
|
55
README.md
55
README.md
@ -1,25 +1,27 @@
|
|||||||
# [![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.3.5*
|
*Current version: 1.7.5*
|
||||||
|
|
||||||
**PrivateBin** is a minimalist, open source online [pastebin](https://en.wikipedia.org/wiki/Pastebin)
|
**PrivateBin** is a minimalist, open source online
|
||||||
|
[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 [Galois Counter mode](https://en.wikipedia.org/wiki/Galois/Counter_Mode).
|
Data is encrypted and decrypted in the browser using 256bit AES in
|
||||||
|
[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). ZeroBin was refactored
|
[Sébastien Sauvage](https://github.com/sebsauvage/ZeroBin). PrivateBin was
|
||||||
to allow easier and cleaner extensions. PrivateBin has many more features than the
|
refactored to allow easier and cleaner extensions and has many additional
|
||||||
original ZeroBin. It is, however, still fully compatible to the original ZeroBin 0.19
|
features. 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 no knowledge of any
|
that is considered illegal in your country. You have plausible deniability of
|
||||||
of the pastes content. If requested or enforced, you can delete any paste from
|
any of the pastes content. If requested or enforced, you can delete any paste
|
||||||
your system.
|
from your system.
|
||||||
|
|
||||||
+ Pastebin-like system to store text documents, code samples, etc.
|
+ Pastebin-like system to store text documents, code samples, etc.
|
||||||
|
|
||||||
@ -31,13 +33,13 @@ 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 malicious
|
- As a user you have to trust the server administrator not to inject any
|
||||||
javascript code.
|
malicious code. For security, a PrivateBin installation *has to be used over*
|
||||||
For basic security, the PrivateBin installation *has to provide HTTPS*!
|
*HTTPS*! Otherwise you would also have to trust your internet provider, and
|
||||||
Otherwise you would also have to trust your internet provider, and any country
|
any jurisdiction the traffic passes through. Additionally the instance should
|
||||||
the traffic passes through.
|
be secured by
|
||||||
Additionally the instance should be secured by
|
[HSTS](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security). It can
|
||||||
[HSTS](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security). It can use traditional certificate authorities and/or use
|
use traditional certificate authorities and/or use a
|
||||||
[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)
|
||||||
@ -45,18 +47,17 @@ 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 be private. In this case, make sure to
|
Use a password if you want your paste to remain private. In that case, make
|
||||||
use a strong password and only share it privately and end-to-end-encrypted.
|
sure to use a strong password and share it privately and end-to-end-encrypted.
|
||||||
|
|
||||||
- A server admin might be forced to hand over access logs to the authorities.
|
- A server admin can 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 misused or the server admin could
|
on the server. However, the server could be abused or the server admin could
|
||||||
be legally forced into sending malicious JavaScript to all web users, which
|
be legally forced into sending malicious code to their users, which logs
|
||||||
grabs the decryption key and sends it to the server when a user accesses a
|
the decryption key and sends it to a server when a user accesses a paste.
|
||||||
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.
|
||||||
@ -77,8 +78,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, images get displayed (disabled by default, possibility
|
* File upload support, image, media and PDF preview (disabled by default, size
|
||||||
to adjust size limit)
|
limit adjustable)
|
||||||
|
|
||||||
* 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
|
||||||
@ -89,13 +90,13 @@ 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 generation of URL, to easily transfer pastes over to a mobile device
|
* QR code for paste URLs, to easily transfer them over to mobile devices
|
||||||
|
|
||||||
## Further resources
|
## Further resources
|
||||||
|
|
||||||
* [FAQ](https://github.com/PrivateBin/PrivateBin/wiki/FAQ)
|
* [FAQ](https://github.com/PrivateBin/PrivateBin/wiki/FAQ)
|
||||||
|
|
||||||
* [Installation guide](https://github.com/PrivateBin/PrivateBin/blob/master/INSTALL.md#installation)
|
* [Installation guide](https://github.com/PrivateBin/PrivateBin/blob/master/doc/Installation.md#installation)
|
||||||
|
|
||||||
* [Configuration guide](https://github.com/PrivateBin/PrivateBin/wiki/Configuration)
|
* [Configuration guide](https://github.com/PrivateBin/PrivateBin/wiki/Configuration)
|
||||||
|
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
|
|
||||||
| Version | Supported |
|
| Version | Supported |
|
||||||
| ------- | ------------------ |
|
| ------- | ------------------ |
|
||||||
| 1.3.5 | :heavy_check_mark: |
|
| 1.7.5 | :heavy_check_mark: |
|
||||||
| < 1.3.5 | :x: |
|
| < 1.7.5 | :x: |
|
||||||
|
|
||||||
## Reporting a Vulnerability
|
## Reporting a Vulnerability
|
||||||
|
|
||||||
|
331
bin/administration
Executable file
331
bin/administration
Executable file
@ -0,0 +1,331 @@
|
|||||||
|
#!/usr/bin/env php
|
||||||
|
<?php declare(strict_types=1);
|
||||||
|
/**
|
||||||
|
* PrivateBin
|
||||||
|
*
|
||||||
|
* a zero-knowledge paste bin
|
||||||
|
*
|
||||||
|
* @link https://github.com/PrivateBin/PrivateBin
|
||||||
|
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
|
||||||
|
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace PrivateBin;
|
||||||
|
|
||||||
|
use Exception;
|
||||||
|
use PrivateBin\Configuration;
|
||||||
|
use PrivateBin\Data\AbstractData;
|
||||||
|
use PrivateBin\Model\Paste;
|
||||||
|
|
||||||
|
define('PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR);
|
||||||
|
require PATH . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Administration
|
||||||
|
*
|
||||||
|
* Command line utility for administrative tasks.
|
||||||
|
*/
|
||||||
|
class Administration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* configuration
|
||||||
|
*
|
||||||
|
* @access private
|
||||||
|
* @var Configuration
|
||||||
|
*/
|
||||||
|
private $_conf;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* options, parsed from the command line arguments
|
||||||
|
*
|
||||||
|
* @access private
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
private $_opts = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* data storage model
|
||||||
|
*
|
||||||
|
* @access private
|
||||||
|
* @var AbstractData
|
||||||
|
*/
|
||||||
|
private $_store;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* deletes the requested paste ID, if a valid ID and it exists
|
||||||
|
*
|
||||||
|
* @access private
|
||||||
|
* @param string $pasteId
|
||||||
|
*/
|
||||||
|
private function _delete($pasteId)
|
||||||
|
{
|
||||||
|
if (!Paste::isValidId($pasteId)) {
|
||||||
|
self::_error('given ID is not a valid paste ID (16 hexadecimal digits)', 5);
|
||||||
|
}
|
||||||
|
if (!$this->_store->exists($pasteId)) {
|
||||||
|
self::_error('given ID does not exist, has expired or was already deleted', 6);
|
||||||
|
}
|
||||||
|
$this->_store->delete($pasteId);
|
||||||
|
if ($this->_store->exists($pasteId)) {
|
||||||
|
self::_error('paste ID exists after deletion, permission problem?', 7);
|
||||||
|
}
|
||||||
|
exit("paste $pasteId successfully deleted" . PHP_EOL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* removes empty directories, if current storage model uses Filesystem
|
||||||
|
*
|
||||||
|
* @access private
|
||||||
|
*/
|
||||||
|
private function _empty_dirs()
|
||||||
|
{
|
||||||
|
if ($this->_conf->getKey('class', 'model') !== 'Filesystem') {
|
||||||
|
self::_error('instance not using Filesystem storage, no directories to empty', 4);
|
||||||
|
}
|
||||||
|
$dir = $this->_conf->getKey('dir', 'model_options');
|
||||||
|
passthru("find $dir -type d -empty -delete", $code);
|
||||||
|
exit($code);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* display a message on STDERR and exits
|
||||||
|
*
|
||||||
|
* @access private
|
||||||
|
* @static
|
||||||
|
* @param string $message
|
||||||
|
* @param int $code optional, defaults to 1
|
||||||
|
*/
|
||||||
|
private static function _error($message, $code = 1)
|
||||||
|
{
|
||||||
|
self::_error_echo($message);
|
||||||
|
exit($code);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* display a message on STDERR
|
||||||
|
*
|
||||||
|
* @access private
|
||||||
|
* @static
|
||||||
|
* @param string $message
|
||||||
|
*/
|
||||||
|
private static function _error_echo($message)
|
||||||
|
{
|
||||||
|
fwrite(STDERR, 'Error: ' . $message . PHP_EOL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* display usage help on STDOUT and exits
|
||||||
|
*
|
||||||
|
* @access private
|
||||||
|
* @static
|
||||||
|
* @param int $code optional, defaults to 0
|
||||||
|
*/
|
||||||
|
private static function _help($code = 0)
|
||||||
|
{
|
||||||
|
echo <<<'EOT'
|
||||||
|
Usage:
|
||||||
|
administration [--delete <paste id> | --empty-dirs | --help | --purge | --statistics]
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-d, --delete deletes the requested paste ID
|
||||||
|
-e, --empty-dirs removes empty directories (only if Filesystem storage is
|
||||||
|
configured)
|
||||||
|
-h, --help displays this help message
|
||||||
|
-p, --purge purge all expired pastes
|
||||||
|
-s, --statistics reads all stored pastes and comments and reports statistics
|
||||||
|
EOT, PHP_EOL;
|
||||||
|
exit($code);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* return option for given short or long keyname, if it got set
|
||||||
|
*
|
||||||
|
* @access private
|
||||||
|
* @static
|
||||||
|
* @param string $short
|
||||||
|
* @param string $long
|
||||||
|
* @return string|null
|
||||||
|
*/
|
||||||
|
private function _option($short, $long)
|
||||||
|
{
|
||||||
|
foreach (array($short, $long) as $key) {
|
||||||
|
if (array_key_exists($key, $this->_opts)) {
|
||||||
|
return $this->_opts[$key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* initialize options from given argument array
|
||||||
|
*
|
||||||
|
* @access private
|
||||||
|
* @static
|
||||||
|
* @param array $arguments
|
||||||
|
*/
|
||||||
|
private function _options_initialize($arguments)
|
||||||
|
{
|
||||||
|
if ($arguments > 3) {
|
||||||
|
self::_error_echo('too many arguments given');
|
||||||
|
echo PHP_EOL;
|
||||||
|
self::_help(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($arguments < 2) {
|
||||||
|
self::_error_echo('missing arguments');
|
||||||
|
echo PHP_EOL;
|
||||||
|
self::_help(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->_opts = getopt('hd:eps', array('help', 'delete:', 'empty-dirs', 'purge', 'statistics'));
|
||||||
|
if (!$this->_opts) {
|
||||||
|
self::_error_echo('unsupported arguments given');
|
||||||
|
echo PHP_EOL;
|
||||||
|
self::_help(3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* reads all stored pastes and comments and reports statistics
|
||||||
|
*
|
||||||
|
* @access public
|
||||||
|
*/
|
||||||
|
private function _statistics()
|
||||||
|
{
|
||||||
|
$counters = array(
|
||||||
|
'burn' => 0,
|
||||||
|
'damaged' => 0,
|
||||||
|
'discussion' => 0,
|
||||||
|
'expired' => 0,
|
||||||
|
'md' => 0,
|
||||||
|
'percent' => 1,
|
||||||
|
'plain' => 0,
|
||||||
|
'progress' => 0,
|
||||||
|
'syntax' => 0,
|
||||||
|
'total' => 0,
|
||||||
|
'unknown' => 0,
|
||||||
|
);
|
||||||
|
$time = time();
|
||||||
|
$ids = $this->_store->getAllPastes();
|
||||||
|
$counters['total'] = count($ids);
|
||||||
|
$dots = $counters['total'] < 100 ? 10 : (
|
||||||
|
$counters['total'] < 1000 ? 50 : 100
|
||||||
|
);
|
||||||
|
$percentages = $counters['total'] < 100 ? 0 : (
|
||||||
|
$counters['total'] < 1000 ? 4 : 10
|
||||||
|
);
|
||||||
|
|
||||||
|
echo "Total:\t\t\t{$counters['total']}", PHP_EOL;
|
||||||
|
foreach ($ids as $pasteid) {
|
||||||
|
try {
|
||||||
|
$paste = $this->_store->read($pasteid);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
echo "Error reading paste {$pasteid}: ", $e->getMessage(), PHP_EOL;
|
||||||
|
++$counters['damaged'];
|
||||||
|
}
|
||||||
|
++$counters['progress'];
|
||||||
|
|
||||||
|
if (
|
||||||
|
array_key_exists('expire_date', $paste['meta']) &&
|
||||||
|
$paste['meta']['expire_date'] < $time
|
||||||
|
) {
|
||||||
|
++$counters['expired'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (array_key_exists('adata', $paste)) {
|
||||||
|
$format = $paste['adata'][1];
|
||||||
|
$discussion = $paste['adata'][2];
|
||||||
|
$burn = $paste['adata'][3];
|
||||||
|
} else {
|
||||||
|
$format = array_key_exists('formatter', $paste['meta']) ? $paste['meta']['formatter'] : 'plaintext';
|
||||||
|
$discussion = array_key_exists('opendiscussion', $paste['meta']) ? $paste['meta']['opendiscussion'] : false;
|
||||||
|
$burn = array_key_exists('burnafterreading', $paste['meta']) ? $paste['meta']['burnafterreading'] : false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($format === 'plaintext') {
|
||||||
|
++$counters['plain'];
|
||||||
|
} elseif ($format === 'syntaxhighlighting') {
|
||||||
|
++$counters['syntax'];
|
||||||
|
} elseif ($format === 'markdown') {
|
||||||
|
++$counters['md'];
|
||||||
|
} else {
|
||||||
|
++$counters['unknown'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$counters['discussion'] += (int) $discussion;
|
||||||
|
$counters['burn'] += (int) $burn;
|
||||||
|
|
||||||
|
// display progress
|
||||||
|
if ($counters['progress'] % $dots === 0) {
|
||||||
|
echo '.';
|
||||||
|
if ($percentages) {
|
||||||
|
$progress = $percentages / $counters['total'] * $counters['progress'];
|
||||||
|
if ($progress >= $counters['percent']) {
|
||||||
|
printf(' %d%% ', 100 / $percentages * $progress);
|
||||||
|
++$counters['percent'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
echo PHP_EOL, <<<EOT
|
||||||
|
Expired:\t\t{$counters['expired']}
|
||||||
|
Burn after reading:\t{$counters['burn']}
|
||||||
|
Discussions:\t\t{$counters['discussion']}
|
||||||
|
Plain Text:\t\t{$counters['plain']}
|
||||||
|
Source Code:\t\t{$counters['syntax']}
|
||||||
|
Markdown:\t\t{$counters['md']}
|
||||||
|
EOT, PHP_EOL;
|
||||||
|
if ($counters['damaged'] > 0) {
|
||||||
|
echo "Damaged:\t\t{$counters['damaged']}", PHP_EOL;
|
||||||
|
}
|
||||||
|
if ($counters['unknown'] > 0) {
|
||||||
|
echo "Unknown format:\t\t{$counters['unknown']}", PHP_EOL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* constructor
|
||||||
|
*
|
||||||
|
* initializes and runs administrative tasks
|
||||||
|
*
|
||||||
|
* @access public
|
||||||
|
*/
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->_options_initialize($_SERVER['argc']);
|
||||||
|
|
||||||
|
if ($this->_option('h', 'help') !== null) {
|
||||||
|
self::_help();
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->_conf = new Configuration;
|
||||||
|
|
||||||
|
if ($this->_option('e', 'empty-dirs') !== null) {
|
||||||
|
$this->_empty_dirs();
|
||||||
|
}
|
||||||
|
|
||||||
|
$class = 'PrivateBin\\Data\\' . $this->_conf->getKey('class', 'model');
|
||||||
|
$this->_store = new $class($this->_conf->getSection('model_options'));
|
||||||
|
|
||||||
|
if (($pasteId = $this->_option('d', 'delete')) !== null) {
|
||||||
|
$this->_delete($pasteId);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->_option('p', 'purge') !== null) {
|
||||||
|
try {
|
||||||
|
$this->_store->purge(PHP_INT_MAX);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
echo 'Error purging pastes: ', $e->getMessage(), PHP_EOL,
|
||||||
|
'Run the statistics to find damaged paste IDs and either delete them or restore them from backup.', PHP_EOL;
|
||||||
|
}
|
||||||
|
exit('purging of expired pastes concluded' . PHP_EOL);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->_option('s', 'statistics') !== null) {
|
||||||
|
$this->_statistics();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
new Administration();
|
@ -1,6 +1,14 @@
|
|||||||
#!/usr/bin/env php
|
#!/usr/bin/env php
|
||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
/**
|
/**
|
||||||
|
* PrivateBin
|
||||||
|
*
|
||||||
|
* a zero-knowledge paste bin
|
||||||
|
*
|
||||||
|
* @link https://github.com/PrivateBin/PrivateBin
|
||||||
|
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
|
||||||
|
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
|
||||||
|
*
|
||||||
* generates a config unit test class
|
* generates a config unit test class
|
||||||
*
|
*
|
||||||
* This generator is meant to test all possible configuration combinations
|
* This generator is meant to test all possible configuration combinations
|
||||||
@ -9,7 +17,9 @@
|
|||||||
* DANGER: Too many options/settings and too high max iteration setting may trigger
|
* DANGER: Too many options/settings and too high max iteration setting may trigger
|
||||||
* a fork bomb. Please save your work before executing this script.
|
* a fork bomb. Please save your work before executing this script.
|
||||||
*/
|
*/
|
||||||
include 'Bootstrap.php';
|
|
||||||
|
define('PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR);
|
||||||
|
include PATH . 'tst' . DIRECTORY_SEPARATOR . 'Bootstrap.php';
|
||||||
|
|
||||||
$vd = array('view', 'delete');
|
$vd = array('view', 'delete');
|
||||||
$vcd = array('view', 'create', 'delete');
|
$vcd = array('view', 'create', 'delete');
|
||||||
@ -21,7 +31,7 @@ new ConfigurationTestGenerator(array(
|
|||||||
'tests' => array(
|
'tests' => array(
|
||||||
array(
|
array(
|
||||||
'conditions' => array('steps' => $vd),
|
'conditions' => array('steps' => $vd),
|
||||||
'type' => 'RegExp',
|
'type' => 'MatchesRegularExpression',
|
||||||
'args' => array(
|
'args' => array(
|
||||||
'#<div[^>]*id="opendiscussionoption"[^>]*>#',
|
'#<div[^>]*id="opendiscussionoption"[^>]*>#',
|
||||||
'$content',
|
'$content',
|
||||||
@ -51,7 +61,7 @@ new ConfigurationTestGenerator(array(
|
|||||||
'setting' => false,
|
'setting' => false,
|
||||||
'tests' => array(
|
'tests' => array(
|
||||||
array(
|
array(
|
||||||
'type' => 'NotRegExp',
|
'type' => 'DoesNotMatchRegularExpression',
|
||||||
'args' => array(
|
'args' => array(
|
||||||
'#<div[^>]*id="opendiscussionoption"[^>]*>#',
|
'#<div[^>]*id="opendiscussionoption"[^>]*>#',
|
||||||
'$content',
|
'$content',
|
||||||
@ -68,7 +78,7 @@ new ConfigurationTestGenerator(array(
|
|||||||
'tests' => array(
|
'tests' => array(
|
||||||
array(
|
array(
|
||||||
'conditions' => array('main/discussion' => true),
|
'conditions' => array('main/discussion' => true),
|
||||||
'type' => 'RegExp',
|
'type' => 'MatchesRegularExpression',
|
||||||
'args' => array(
|
'args' => array(
|
||||||
'#<input[^>]+id="opendiscussion"[^>]*checked="checked"[^>]*>#',
|
'#<input[^>]+id="opendiscussion"[^>]*checked="checked"[^>]*>#',
|
||||||
'$content',
|
'$content',
|
||||||
@ -82,7 +92,7 @@ new ConfigurationTestGenerator(array(
|
|||||||
'tests' => array(
|
'tests' => array(
|
||||||
array(
|
array(
|
||||||
'conditions' => array('main/discussion' => true),
|
'conditions' => array('main/discussion' => true),
|
||||||
'type' => 'NotRegExp',
|
'type' => 'DoesNotMatchRegularExpression',
|
||||||
'args' => array(
|
'args' => array(
|
||||||
'#<input[^>]+id="opendiscussion"[^>]*checked="checked"[^>]*>#',
|
'#<input[^>]+id="opendiscussion"[^>]*checked="checked"[^>]*>#',
|
||||||
'$content',
|
'$content',
|
||||||
@ -98,7 +108,7 @@ new ConfigurationTestGenerator(array(
|
|||||||
'setting' => true,
|
'setting' => true,
|
||||||
'tests' => array(
|
'tests' => array(
|
||||||
array(
|
array(
|
||||||
'type' => 'RegExp',
|
'type' => 'MatchesRegularExpression',
|
||||||
'args' => array(
|
'args' => array(
|
||||||
'#<input[^>]+id="burnafterreading"[^>]*checked="checked"[^>]*>#',
|
'#<input[^>]+id="burnafterreading"[^>]*checked="checked"[^>]*>#',
|
||||||
'$content',
|
'$content',
|
||||||
@ -111,7 +121,7 @@ new ConfigurationTestGenerator(array(
|
|||||||
'setting' => false,
|
'setting' => false,
|
||||||
'tests' => array(
|
'tests' => array(
|
||||||
array(
|
array(
|
||||||
'type' => 'NotRegExp',
|
'type' => 'DoesNotMatchRegularExpression',
|
||||||
'args' => array(
|
'args' => array(
|
||||||
'#<input[^>]+id="burnafterreading"[^>]*checked="checked"[^>]*>#',
|
'#<input[^>]+id="burnafterreading"[^>]*checked="checked"[^>]*>#',
|
||||||
'$content',
|
'$content',
|
||||||
@ -127,7 +137,7 @@ new ConfigurationTestGenerator(array(
|
|||||||
'setting' => true,
|
'setting' => true,
|
||||||
'tests' => array(
|
'tests' => array(
|
||||||
array(
|
array(
|
||||||
'type' => 'RegExp',
|
'type' => 'MatchesRegularExpression',
|
||||||
'args' => array(
|
'args' => array(
|
||||||
'#<div[^>]*id="password"[^>]*>#',
|
'#<div[^>]*id="password"[^>]*>#',
|
||||||
'$content',
|
'$content',
|
||||||
@ -141,7 +151,7 @@ new ConfigurationTestGenerator(array(
|
|||||||
'tests' => array(
|
'tests' => array(
|
||||||
array(
|
array(
|
||||||
'conditions' => array('main/discussion' => true),
|
'conditions' => array('main/discussion' => true),
|
||||||
'type' => 'NotRegExp',
|
'type' => 'DoesNotMatchRegularExpression',
|
||||||
'args' => array(
|
'args' => array(
|
||||||
'#<div[^>]*id="password"[^>]*>#',
|
'#<div[^>]*id="password"[^>]*>#',
|
||||||
'$content',
|
'$content',
|
||||||
@ -157,14 +167,14 @@ new ConfigurationTestGenerator(array(
|
|||||||
'setting' => 'page',
|
'setting' => 'page',
|
||||||
'tests' => array(
|
'tests' => array(
|
||||||
array(
|
array(
|
||||||
'type' => 'RegExp',
|
'type' => 'MatchesRegularExpression',
|
||||||
'args' => array(
|
'args' => array(
|
||||||
'#<link[^>]+type="text/css"[^>]+rel="stylesheet"[^>]+href="css/privatebin\.css\\?\d[\d\.]+\d+"[^>]*/>#',
|
'#<link[^>]+type="text/css"[^>]+rel="stylesheet"[^>]+href="css/privatebin\.css\\?\d[\d\.]+\d+"[^>]*/>#',
|
||||||
'$content',
|
'$content',
|
||||||
'outputs "page" stylesheet correctly',
|
'outputs "page" stylesheet correctly',
|
||||||
),
|
),
|
||||||
), array(
|
), array(
|
||||||
'type' => 'NotRegExp',
|
'type' => 'DoesNotMatchRegularExpression',
|
||||||
'args' => array(
|
'args' => array(
|
||||||
'#<link[^>]+type="text/css"[^>]+rel="stylesheet"[^>]+href="css/bootstrap/bootstrap-\d[\d\.]+\d\.css"[^>]*/>#',
|
'#<link[^>]+type="text/css"[^>]+rel="stylesheet"[^>]+href="css/bootstrap/bootstrap-\d[\d\.]+\d\.css"[^>]*/>#',
|
||||||
'$content',
|
'$content',
|
||||||
@ -177,14 +187,14 @@ new ConfigurationTestGenerator(array(
|
|||||||
'setting' => 'bootstrap',
|
'setting' => 'bootstrap',
|
||||||
'tests' => array(
|
'tests' => array(
|
||||||
array(
|
array(
|
||||||
'type' => 'NotRegExp',
|
'type' => 'DoesNotMatchRegularExpression',
|
||||||
'args' => array(
|
'args' => array(
|
||||||
'#<link[^>]+type="text/css"[^>]+rel="stylesheet"[^>]+href="css/privatebin\.css\\?\d[\d\.]+\d+"[^>]*/>#',
|
'#<link[^>]+type="text/css"[^>]+rel="stylesheet"[^>]+href="css/privatebin\.css\\?\d[\d\.]+\d+"[^>]*/>#',
|
||||||
'$content',
|
'$content',
|
||||||
'removes "page" stylesheet correctly',
|
'removes "page" stylesheet correctly',
|
||||||
),
|
),
|
||||||
), array(
|
), array(
|
||||||
'type' => 'RegExp',
|
'type' => 'MatchesRegularExpression',
|
||||||
'args' => array(
|
'args' => array(
|
||||||
'#<link[^>]+type="text/css"[^>]+rel="stylesheet"[^>]+href="css/bootstrap/bootstrap-\d[\d\.]+\d\.css"[^>]*/>#',
|
'#<link[^>]+type="text/css"[^>]+rel="stylesheet"[^>]+href="css/bootstrap/bootstrap-\d[\d\.]+\d\.css"[^>]*/>#',
|
||||||
'$content',
|
'$content',
|
||||||
@ -359,7 +369,7 @@ class ConfigurationTestGenerator
|
|||||||
}
|
}
|
||||||
// skip if not all test conditions are met
|
// skip if not all test conditions are met
|
||||||
if (array_key_exists('conditions', $test)) {
|
if (array_key_exists('conditions', $test)) {
|
||||||
while (list($path, $setting) = each($test['conditions'])) {
|
foreach ($test['conditions'] as $path => $setting) {
|
||||||
if ($path == 'steps' && !in_array($step, $setting)) {
|
if ($path == 'steps' && !in_array($step, $setting)) {
|
||||||
continue 2;
|
continue 2;
|
||||||
} elseif ($path != 'steps') {
|
} elseif ($path != 'steps') {
|
||||||
@ -392,7 +402,7 @@ class ConfigurationTestGenerator
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
$code .= '}' . PHP_EOL;
|
$code .= '}' . PHP_EOL;
|
||||||
file_put_contents('ConfigurationCombinationsTest.php', $code);
|
file_put_contents(dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'tst' . DIRECTORY_SEPARATOR . 'ConfigurationCombinationsTest.php', $code);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -403,18 +413,19 @@ class ConfigurationTestGenerator
|
|||||||
private function _getHeader()
|
private function _getHeader()
|
||||||
{
|
{
|
||||||
return <<<'EOT'
|
return <<<'EOT'
|
||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
/**
|
/**
|
||||||
* DO NOT EDIT: This file is generated automatically using configGenerator.php
|
* DO NOT EDIT: This file is generated automatically using configGenerator.php
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
use PrivateBin\Controller;
|
use PrivateBin\Controller;
|
||||||
use PrivateBin\Data\Filesystem;
|
use PrivateBin\Data\Filesystem;
|
||||||
use PrivateBin\Persistence\ServerSalt;
|
use PrivateBin\Persistence\ServerSalt;
|
||||||
use PrivateBin\Persistence\TrafficLimiter;
|
use PrivateBin\Persistence\TrafficLimiter;
|
||||||
use PrivateBin\Request;
|
use PrivateBin\Request;
|
||||||
|
|
||||||
class ConfigurationCombinationsTest extends PHPUnit_Framework_TestCase
|
class ConfigurationCombinationsTest extends TestCase
|
||||||
{
|
{
|
||||||
private $_conf;
|
private $_conf;
|
||||||
|
|
||||||
@ -422,16 +433,18 @@ class ConfigurationCombinationsTest extends PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
private $_path;
|
private $_path;
|
||||||
|
|
||||||
public function setUp()
|
public function setUp(): void
|
||||||
{
|
{
|
||||||
/* Setup Routine */
|
/* Setup Routine */
|
||||||
Helper::confBackup();
|
Helper::confBackup();
|
||||||
$this->_path = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'privatebin_data';
|
$this->_path = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'privatebin_data';
|
||||||
$this->_model = Filesystem::getInstance(array('dir' => $this->_path));
|
$this->_model = new Filesystem(array('dir' => $this->_path));
|
||||||
|
ServerSalt::setStore($this->_model);
|
||||||
|
TrafficLimiter::setStore($this->_model);
|
||||||
$this->reset();
|
$this->reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function tearDown()
|
public function tearDown(): void
|
||||||
{
|
{
|
||||||
/* Tear Down Routine */
|
/* Tear Down Routine */
|
||||||
unlink(CONF);
|
unlink(CONF);
|
||||||
@ -560,7 +573,7 @@ EOT;
|
|||||||
case 'Delete':
|
case 'Delete':
|
||||||
$code .= <<<'EOT'
|
$code .= <<<'EOT'
|
||||||
|
|
||||||
$this->assertRegExp(
|
$this->assertMatchesRegularExpression(
|
||||||
'#<div[^>]*id="status"[^>]*>.*Paste was properly deleted[^<]*</div>#s',
|
'#<div[^>]*id="status"[^>]*>.*Paste was properly deleted[^<]*</div>#s',
|
||||||
$content,
|
$content,
|
||||||
'outputs deleted status correctly'
|
'outputs deleted status correctly'
|
||||||
@ -586,8 +599,9 @@ EOT;
|
|||||||
return $this->_configurations;
|
return $this->_configurations;
|
||||||
}
|
}
|
||||||
echo "generateConfigurations: iteration $this->_iterationCount", PHP_EOL;
|
echo "generateConfigurations: iteration $this->_iterationCount", PHP_EOL;
|
||||||
$continue = list($path, $settings) = each($this->_options);
|
$path = key($this->_options);
|
||||||
if ($continue === false) {
|
$settings = current($this->_options);
|
||||||
|
if (next($this->_options) === false) {
|
||||||
return $this->_configurations;
|
return $this->_configurations;
|
||||||
}
|
}
|
||||||
list($section, $option) = explode('/', $path);
|
list($section, $option) = explode('/', $path);
|
@ -1,23 +1,42 @@
|
|||||||
#!/usr/bin/env php
|
#!/usr/bin/env php
|
||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
/**
|
||||||
|
* PrivateBin
|
||||||
|
*
|
||||||
|
* a zero-knowledge paste bin
|
||||||
|
*
|
||||||
|
* @link https://github.com/PrivateBin/PrivateBin
|
||||||
|
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
|
||||||
|
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
|
||||||
|
*/
|
||||||
|
|
||||||
define('ITERATIONS', 100000);
|
define('ITERATIONS', 100000);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
require dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
|
require dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
|
||||||
use Identicon\Generator\GdGenerator;
|
use Identicon\Generator\GdGenerator;
|
||||||
use Identicon\Generator\ImageMagickGenerator;
|
use Identicon\Generator\ImageMagickGenerator;
|
||||||
use Identicon\Generator\SvgGenerator;
|
use Identicon\Generator\SvgGenerator;
|
||||||
use Identicon\Identicon;
|
use Identicon\Identicon;
|
||||||
|
use Jdenticon\Identicon as Jdenticon;
|
||||||
use PrivateBin\Vizhash16x16;
|
use PrivateBin\Vizhash16x16;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$vizhash = new Vizhash16x16();
|
$vizhash = new Vizhash16x16();
|
||||||
$identiconGenerators = array(
|
$identiconGenerators = array(
|
||||||
'identicon GD' => new Identicon(new GdGenerator()),
|
'identicon GD' => new Identicon(new GdGenerator()),
|
||||||
'identicon ImageMagick' => new Identicon(new ImageMagickGenerator()),
|
'identicon ImageMagick' => new Identicon(new ImageMagickGenerator()),
|
||||||
'identicon SVG' => new Identicon(new SvgGenerator())
|
'identicon SVG' => new Identicon(new SvgGenerator()),
|
||||||
|
);
|
||||||
|
$jdenticon = new Jdenticon(array(
|
||||||
|
'size' => 16,
|
||||||
|
'style' => array(
|
||||||
|
'backgroundColor' => '#fff0', // fully transparent, for dark mode
|
||||||
|
'padding' => 0,
|
||||||
|
),
|
||||||
|
));
|
||||||
|
$jdenticonGenerators = array(
|
||||||
|
'jdenticon' => 'png',
|
||||||
|
'jdenticon ImageMagick' => 'png',
|
||||||
|
'jdenticon SVG' => 'svg',
|
||||||
);
|
);
|
||||||
$results = array(
|
$results = array(
|
||||||
'vizhash' => array(
|
'vizhash' => array(
|
||||||
@ -35,21 +54,30 @@ $results = array(
|
|||||||
'identicon SVG' => array(
|
'identicon SVG' => array(
|
||||||
'lengths' => array(),
|
'lengths' => array(),
|
||||||
'time' => 0
|
'time' => 0
|
||||||
)
|
),
|
||||||
|
'jdenticon' => array(
|
||||||
|
'lengths' => array(),
|
||||||
|
'time' => 0
|
||||||
|
),
|
||||||
|
'jdenticon ImageMagick' => array(
|
||||||
|
'lengths' => array(),
|
||||||
|
'time' => 0
|
||||||
|
),
|
||||||
|
'jdenticon SVG' => array(
|
||||||
|
'lengths' => array(),
|
||||||
|
'time' => 0
|
||||||
|
),
|
||||||
);
|
);
|
||||||
$hmacs = array();
|
$hmacs = array();
|
||||||
|
|
||||||
echo 'generate ', ITERATIONS, ' hmacs and pre-populate the result array, so tests wont be slowed down', PHP_EOL;
|
echo 'generate ', ITERATIONS, ' hmacs and pre-populate the result array, so tests wont be slowed down', PHP_EOL;
|
||||||
for ($i = 0; $i < ITERATIONS; ++$i) {
|
for ($i = 0; $i < ITERATIONS; ++$i) {
|
||||||
$hmacs[$i] = hash_hmac('sha512', '127.0.0.1', bin2hex(random_bytes(256)));
|
$hmacs[$i] = hash_hmac('sha512', '127.0.0.1', bin2hex(random_bytes(256)));
|
||||||
$results['vizhash']['lengths'][$i] = 0;
|
foreach (array_keys($results) as $test) {
|
||||||
$results['identicon GD']['lengths'][$i] = 0;
|
$results[$test]['lengths'][$i] = 0;
|
||||||
$results['identicon ImageMagick']['lengths'][$i] = 0;
|
}
|
||||||
$results['identicon SVG']['lengths'][$i] = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
echo 'run vizhash tests', PHP_EOL;
|
echo 'run vizhash tests', PHP_EOL;
|
||||||
$start = microtime(true);
|
$start = microtime(true);
|
||||||
foreach ($hmacs as $i => $hmac) {
|
foreach ($hmacs as $i => $hmac) {
|
||||||
@ -60,7 +88,6 @@ foreach ($hmacs as $i => $hmac) {
|
|||||||
}
|
}
|
||||||
$results['vizhash']['time'] = microtime(true) - $start;
|
$results['vizhash']['time'] = microtime(true) - $start;
|
||||||
|
|
||||||
|
|
||||||
foreach ($identiconGenerators as $key => $identicon) {
|
foreach ($identiconGenerators as $key => $identicon) {
|
||||||
echo 'run ', $key,' tests', PHP_EOL;
|
echo 'run ', $key,' tests', PHP_EOL;
|
||||||
$start = microtime(true);
|
$start = microtime(true);
|
||||||
@ -71,9 +98,35 @@ foreach ($identiconGenerators as $key => $identicon) {
|
|||||||
$results[$key]['time'] = microtime(true) - $start;
|
$results[$key]['time'] = microtime(true) - $start;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach ($jdenticonGenerators as $key => $format) {
|
||||||
|
echo 'run ', $key,' tests', PHP_EOL;
|
||||||
|
if ($key === 'jdenticon ImageMagick') {
|
||||||
|
$jdenticon->enableImageMagick = true;
|
||||||
|
} else {
|
||||||
|
$jdenticon->enableImageMagick = false;
|
||||||
|
}
|
||||||
|
$start = microtime(true);
|
||||||
|
foreach ($hmacs as $i => $hmac) {
|
||||||
|
$jdenticon->setHash($hmac);
|
||||||
|
$data = $jdenticon->getImageDataUri($format);
|
||||||
|
$results[$key]['lengths'][$i] = strlen($data);
|
||||||
|
}
|
||||||
|
$results[$key]['time'] = microtime(true) - $start;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
define('PADDING_LENGTH', max(array_map(function ($key) { return strlen($key); }, array_keys($results))) + 1);
|
define(
|
||||||
|
'PADDING_LENGTH',
|
||||||
|
max(
|
||||||
|
array_map(
|
||||||
|
function ($key) {
|
||||||
|
return strlen($key);
|
||||||
|
},
|
||||||
|
array_keys($results)
|
||||||
|
)
|
||||||
|
) + 1
|
||||||
|
);
|
||||||
|
|
||||||
function format_result_line($generator, $min, $max, $avg, $sec) {
|
function format_result_line($generator, $min, $max, $avg, $sec) {
|
||||||
echo str_pad($generator, PADDING_LENGTH, ' '), "\t",
|
echo str_pad($generator, PADDING_LENGTH, ' '), "\t",
|
||||||
str_pad($min, 4, ' ', STR_PAD_LEFT), "\t",
|
str_pad($min, 4, ' ', STR_PAD_LEFT), "\t",
|
||||||
@ -84,7 +137,10 @@ function format_result_line($generator, $min, $max, $avg, $sec) {
|
|||||||
|
|
||||||
echo PHP_EOL;
|
echo PHP_EOL;
|
||||||
format_result_line('Generator:', 'min', 'max', 'avg', 'seconds');
|
format_result_line('Generator:', 'min', 'max', 'avg', 'seconds');
|
||||||
format_result_line(str_repeat('─', PADDING_LENGTH), str_repeat('─', 4), str_repeat('─', 4), str_repeat('─', 4), str_repeat('─', 7));
|
format_result_line(
|
||||||
|
str_repeat('─', PADDING_LENGTH), str_repeat('─', 4), str_repeat('─', 4),
|
||||||
|
str_repeat('─', 4), str_repeat('─', 7)
|
||||||
|
);
|
||||||
foreach ($results as $generator => $result) {
|
foreach ($results as $generator => $result) {
|
||||||
sort($result['lengths']);
|
sort($result['lengths']);
|
||||||
format_result_line(
|
format_result_line(
|
210
bin/migrate
Executable file
210
bin/migrate
Executable file
@ -0,0 +1,210 @@
|
|||||||
|
#!/usr/bin/env php
|
||||||
|
<?php declare(strict_types=1);
|
||||||
|
/**
|
||||||
|
* PrivateBin
|
||||||
|
*
|
||||||
|
* a zero-knowledge paste bin
|
||||||
|
*
|
||||||
|
* @link https://github.com/PrivateBin/PrivateBin
|
||||||
|
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
|
||||||
|
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
|
||||||
|
*/
|
||||||
|
|
||||||
|
// change this, if your php files and data are outside of your webservers document root
|
||||||
|
define('PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR);
|
||||||
|
|
||||||
|
define('PUBLIC_PATH', __DIR__ . DIRECTORY_SEPARATOR);
|
||||||
|
require PATH . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
|
||||||
|
|
||||||
|
use PrivateBin\Configuration;
|
||||||
|
use PrivateBin\Model;
|
||||||
|
|
||||||
|
// third argument in getopt requires PHP >= 7.1
|
||||||
|
if (version_compare(PHP_VERSION, '7.1.0') < 0) {
|
||||||
|
dieerr('migrate requires php 7.1 or above to work. Sorry.');
|
||||||
|
}
|
||||||
|
|
||||||
|
$longopts = array(
|
||||||
|
"delete-after",
|
||||||
|
"delete-during",
|
||||||
|
"help"
|
||||||
|
);
|
||||||
|
$opts_arr = getopt("fhnv", $longopts, $rest);
|
||||||
|
if ($opts_arr === false) {
|
||||||
|
dieerr("Erroneous command line options. Please use --help");
|
||||||
|
}
|
||||||
|
if (array_key_exists("h", $opts_arr) || array_key_exists("help", $opts_arr)) {
|
||||||
|
helpexit();
|
||||||
|
}
|
||||||
|
|
||||||
|
$delete_after = array_key_exists("delete-after", $opts_arr);
|
||||||
|
$delete_during = array_key_exists("delete-during", $opts_arr);
|
||||||
|
$force_overwrite = array_key_exists("f", $opts_arr);
|
||||||
|
$dryrun = array_key_exists("n", $opts_arr);
|
||||||
|
$verbose = array_key_exists("v", $opts_arr);
|
||||||
|
|
||||||
|
if ($rest >= $argc) {
|
||||||
|
dieerr("Missing source configuration directory");
|
||||||
|
}
|
||||||
|
if ($delete_after && $delete_during) {
|
||||||
|
dieerr("--delete-after and --delete-during are mutually exclusive");
|
||||||
|
}
|
||||||
|
|
||||||
|
$srcconf = getConfig("source", $argv[$rest]);
|
||||||
|
$rest++;
|
||||||
|
$dstconf = getConfig("destination", ($rest < $argc ? $argv[$rest] : ""));
|
||||||
|
|
||||||
|
if (($srcconf->getSection("model") == $dstconf->getSection("model")) &&
|
||||||
|
($srcconf->getSection("model_options") == $dstconf->getSection("model_options"))) {
|
||||||
|
dieerr("Source and destination storage configurations are identical");
|
||||||
|
}
|
||||||
|
|
||||||
|
$srcmodel = new Model($srcconf);
|
||||||
|
$srcstore = $srcmodel->getStore();
|
||||||
|
$dstmodel = new Model($dstconf);
|
||||||
|
$dststore = $dstmodel->getStore();
|
||||||
|
$ids = $srcstore->getAllPastes();
|
||||||
|
|
||||||
|
foreach ($ids as $id) {
|
||||||
|
debug("Reading paste id " . $id);
|
||||||
|
$paste = $srcstore->read($id);
|
||||||
|
$comments = $srcstore->readComments($id);
|
||||||
|
|
||||||
|
savePaste($force_overwrite, $dryrun, $id, $paste, $dststore);
|
||||||
|
foreach ($comments as $comment) {
|
||||||
|
saveComment($force_overwrite, $dryrun, $id, $comment, $dststore);
|
||||||
|
}
|
||||||
|
if ($delete_during) {
|
||||||
|
deletePaste($dryrun, $id, $srcstore);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($delete_after) {
|
||||||
|
foreach ($ids as $id) {
|
||||||
|
deletePaste($dryrun, $id, $srcstore);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
debug("Done.");
|
||||||
|
|
||||||
|
|
||||||
|
function deletePaste($dryrun, $pasteid, $srcstore)
|
||||||
|
{
|
||||||
|
if (!$dryrun) {
|
||||||
|
debug("Deleting paste id " . $pasteid);
|
||||||
|
$srcstore->delete($pasteid);
|
||||||
|
} else {
|
||||||
|
debug("Would delete paste id " . $pasteid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function saveComment ($force_overwrite, $dryrun, $pasteid, $comment, $dststore)
|
||||||
|
{
|
||||||
|
$parentid = $comment["parentid"];
|
||||||
|
$commentid = $comment["id"];
|
||||||
|
|
||||||
|
if (!$dststore->existsComment($pasteid, $parentid, $commentid)) {
|
||||||
|
if (!$dryrun) {
|
||||||
|
debug("Saving paste id " . $pasteid . ", parent id " .
|
||||||
|
$parentid . ", comment id " . $commentid);
|
||||||
|
$dststore->createComment($pasteid, $parentid, $commentid, $comment);
|
||||||
|
} else {
|
||||||
|
debug("Would save paste id " . $pasteid . ", parent id " .
|
||||||
|
$parentid . ", comment id " . $commentid);
|
||||||
|
}
|
||||||
|
} else if ($force_overwrite) {
|
||||||
|
if (!$dryrun) {
|
||||||
|
debug("Overwriting paste id " . $pasteid . ", parent id " .
|
||||||
|
$parentid . ", comment id " . $commentid);
|
||||||
|
$dststore->createComment($pasteid, $parentid, $commentid, $comment);
|
||||||
|
} else {
|
||||||
|
debug("Would overwrite paste id " . $pasteid . ", parent id " .
|
||||||
|
$parentid . ", comment id " . $commentid);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!$dryrun) {
|
||||||
|
dieerr("Not overwriting paste id " . $pasteid . ", parent id " .
|
||||||
|
$parentid . ", comment id " . $commentid);
|
||||||
|
} else {
|
||||||
|
dieerr("Would not overwrite paste id " . $pasteid . ", parent id " .
|
||||||
|
$parentid . ", comment id " . $commentid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function savePaste ($force_overwrite, $dryrun, $pasteid, $paste, $dststore)
|
||||||
|
{
|
||||||
|
if (!$dststore->exists($pasteid)) {
|
||||||
|
if (!$dryrun) {
|
||||||
|
debug("Saving paste id " . $pasteid);
|
||||||
|
$dststore->create($pasteid, $paste);
|
||||||
|
} else {
|
||||||
|
debug("Would save paste id " . $pasteid);
|
||||||
|
}
|
||||||
|
} else if ($force_overwrite) {
|
||||||
|
if (!$dryrun) {
|
||||||
|
debug("Overwriting paste id " . $pasteid);
|
||||||
|
$dststore->create($pasteid, $paste);
|
||||||
|
} else {
|
||||||
|
debug("Would overwrite paste id " . $pasteid);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!$dryrun) {
|
||||||
|
dieerr("Not overwriting paste id " . $pasteid);
|
||||||
|
} else {
|
||||||
|
dieerr("Would not overwrite paste id " . $pasteid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getConfig ($target, $confdir)
|
||||||
|
{
|
||||||
|
debug("Trying to load " . $target . " conf.php" .
|
||||||
|
($confdir === "" ? "" : " from " . $confdir));
|
||||||
|
|
||||||
|
putenv("CONFIG_PATH=" . $confdir);
|
||||||
|
$conf = new Configuration;
|
||||||
|
putenv("CONFIG_PATH=");
|
||||||
|
|
||||||
|
return $conf;
|
||||||
|
}
|
||||||
|
|
||||||
|
function dieerr ($text)
|
||||||
|
{
|
||||||
|
fprintf(STDERR, "ERROR: %s" . PHP_EOL, $text);
|
||||||
|
die(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
function debug ($text) {
|
||||||
|
if ($GLOBALS["verbose"]) {
|
||||||
|
printf("DEBUG: %s" . PHP_EOL, $text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function helpexit ()
|
||||||
|
{
|
||||||
|
print("migrate - Copy data between PrivateBin backends
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
migrate [--delete-after] [--delete-during] [-f] [-n] [-v] srcconfdir
|
||||||
|
[<dstconfdir>]
|
||||||
|
migrate [-h|--help]
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--delete-after delete data from source after all pastes and comments have
|
||||||
|
successfully been copied to the destination
|
||||||
|
--delete-during delete data from source after the current paste and its
|
||||||
|
comments have successfully been copied to the destination
|
||||||
|
-f forcefully overwrite data which already exists at the
|
||||||
|
destination
|
||||||
|
-h, --help displays this help message
|
||||||
|
-n dry run, do not copy data
|
||||||
|
-v be verbose
|
||||||
|
<srcconfdir> use storage backend configuration from conf.php found in
|
||||||
|
this directory as source
|
||||||
|
<dstconfdir> optionally, use storage backend configuration from conf.php
|
||||||
|
found in this directory as destination; defaults to:
|
||||||
|
" . PATH . "cfg" . DIRECTORY_SEPARATOR . "conf.php
|
||||||
|
");
|
||||||
|
exit();
|
||||||
|
}
|
@ -7,9 +7,10 @@
|
|||||||
; (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
|
; The full URL, with the domain name and directories that point to the
|
||||||
; This URL is essential to allow Opengraph images to be displayed on social networks
|
; PrivateBin files, including an ending slash (/). This URL is essential to
|
||||||
; basepath = ""
|
; 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
|
||||||
@ -17,6 +18,11 @@ discussion = true
|
|||||||
; preselect the discussion feature, defaults to false
|
; preselect the discussion feature, defaults to false
|
||||||
opendiscussion = false
|
opendiscussion = false
|
||||||
|
|
||||||
|
; enable or disable the display of dates & times in the comments, defaults to true
|
||||||
|
; Note that internally the creation time will still get tracked in order to sort
|
||||||
|
; the comments by creation time, but you can choose not to display them.
|
||||||
|
; discussiondatedisplay = false
|
||||||
|
|
||||||
; enable or disable the password feature, defaults to true
|
; enable or disable the password feature, defaults to true
|
||||||
password = true
|
password = true
|
||||||
|
|
||||||
@ -36,7 +42,12 @@ defaultformatter = "plaintext"
|
|||||||
; size limit per paste or comment in bytes, defaults to 10 Mebibytes
|
; size limit per paste or comment in bytes, defaults to 10 Mebibytes
|
||||||
sizelimit = 10485760
|
sizelimit = 10485760
|
||||||
|
|
||||||
; template to include, default is "bootstrap" (tpl/bootstrap.php)
|
; template to include, default is "bootstrap" (tpl/bootstrap.php), also
|
||||||
|
; available are "page" (tpl/page.php), the classic ZeroBin style and several
|
||||||
|
; bootstrap variants: "bootstrap-dark", "bootstrap-compact", "bootstrap-page",
|
||||||
|
; which can be combined with "-dark" and "-compact" for "bootstrap-dark-page"
|
||||||
|
; and finally "bootstrap-compact-page" - previews at:
|
||||||
|
; https://privatebin.info/screenshots.html
|
||||||
template = "bootstrap"
|
template = "bootstrap"
|
||||||
|
|
||||||
; (optional) info text to display
|
; (optional) info text to display
|
||||||
@ -55,20 +66,25 @@ 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.
|
||||||
; It works both when a new paste is created and when you view a paste.
|
; It works both when a new paste is created and when you view a paste.
|
||||||
; qrcode = true
|
; qrcode = true
|
||||||
|
|
||||||
|
; (optional) Let users send an email sharing the paste URL with one click.
|
||||||
|
; It works both when a new paste is created and when you view a paste.
|
||||||
|
; email = true
|
||||||
|
|
||||||
; (optional) IP based icons are a weak mechanism to detect if a comment was from
|
; (optional) IP based icons are a weak mechanism to detect if a comment was from
|
||||||
; a different user when the same username was used in a comment. It might be
|
; a different user when the same username was used in a comment. It might get
|
||||||
; used to get the IP of a non anonymous comment poster if the server salt is
|
; used to get the IP of a comment poster if the server salt is leaked and a
|
||||||
; leaked and a SHA256 HMAC rainbow table is generated for all (relevant) IPs.
|
; SHA512 HMAC rainbow table is generated for all (relevant) IPs.
|
||||||
; Can be set to one these values: "none" / "vizhash" / "identicon" (default).
|
; Can be set to one these values:
|
||||||
|
; "none" / "identicon" (default) / "jdenticon" / "vizhash".
|
||||||
; icon = "none"
|
; icon = "none"
|
||||||
|
|
||||||
; Content Security Policy headers allow a website to restrict what sources are
|
; Content Security Policy headers allow a website to restrict what sources are
|
||||||
@ -77,17 +93,17 @@ languageselection = false
|
|||||||
; scripts or run your site behind certain DDoS-protection services.
|
; scripts or run your site behind certain DDoS-protection services.
|
||||||
; Check the documentation at https://content-security-policy.com/
|
; Check the documentation at https://content-security-policy.com/
|
||||||
; Notes:
|
; Notes:
|
||||||
; - If you use a bootstrap theme, you can remove the allow-popups from the
|
; - If you use any bootstrap theme, you can remove the allow-popups from the
|
||||||
; sandbox restrictions.
|
; sandbox restrictions.
|
||||||
|
; - If you use the bootstrap5 theme, you must change default-src to 'self' to
|
||||||
|
; enable display of the svg icons
|
||||||
; - By default this disallows to load images from third-party servers, e.g. when
|
; - By default this disallows to load images from third-party servers, e.g. when
|
||||||
; they are embedded in pastes. If you wish to allow that, you can adjust the
|
; they are embedded in pastes. If you wish to allow that, you can adjust the
|
||||||
; policy here. See https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-it-load-embedded-images
|
; policy here. See https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-it-load-embedded-images
|
||||||
; for details.
|
; for details.
|
||||||
; - The 'unsafe-eval' is used in two cases; to check if the browser supports
|
; - The 'wasm-unsafe-eval' is used to enable webassembly support (used for zlib
|
||||||
; async functions and display an error if not and for Chrome to enable
|
; compression). You can remove it if compression doesn't need to be supported.
|
||||||
; webassembly support (used for zlib compression). You can remove it if Chrome
|
; cspheader = "default-src 'none'; base-uri 'self'; form-action 'none'; manifest-src 'self'; connect-src * blob:; script-src 'self' 'wasm-unsafe-eval'; style-src 'self'; font-src 'self'; frame-ancestors 'none'; img-src 'self' data: blob:; media-src blob:; object-src blob:; sandbox allow-same-origin allow-scripts allow-forms allow-popups allow-modals allow-downloads"
|
||||||
; 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' resource:; 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 allow-downloads"
|
|
||||||
|
|
||||||
; stay compatible with PrivateBin Alpha 0.19, less secure
|
; stay compatible with PrivateBin Alpha 0.19, less secure
|
||||||
; if enabled will use base64.js version 1.7 instead of 2.1.9 and sha1 instead of
|
; if enabled will use base64.js version 1.7 instead of 2.1.9 and sha1 instead of
|
||||||
@ -135,9 +151,17 @@ markdown = "Markdown"
|
|||||||
; Set this to 0 to disable rate limiting.
|
; Set this to 0 to disable rate limiting.
|
||||||
limit = 10
|
limit = 10
|
||||||
|
|
||||||
; Set ips (v4|v6) which should be exempted for the rate-limit. CIDR also supported. Needed to be comma separated.
|
; (optional) Set IPs addresses (v4 or v6) or subnets (CIDR) which are exempted
|
||||||
; Unset for enabling and invalid values will be ignored
|
; from the rate-limit. Invalid IPs will be ignored. If multiple values are to
|
||||||
; eg: exemptedIp = '1.2.3.4,10.10.10/24'
|
; 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
|
||||||
@ -161,12 +185,13 @@ class = Filesystem
|
|||||||
[model_options]
|
[model_options]
|
||||||
dir = PATH "data"
|
dir = PATH "data"
|
||||||
|
|
||||||
[model]
|
;[model]
|
||||||
; example of a Google Cloud Storage configuration
|
; example of a Google Cloud Storage configuration
|
||||||
;class = GoogleCloudStorage
|
;class = GoogleCloudStorage
|
||||||
;[model_options]
|
;[model_options]
|
||||||
;bucket = "my-private-bin"
|
;bucket = "my-private-bin"
|
||||||
;prefix = "pastes"
|
;prefix = "pastes"
|
||||||
|
;uniformacl = false
|
||||||
|
|
||||||
;[model]
|
;[model]
|
||||||
; example of DB configuration for MySQL
|
; example of DB configuration for MySQL
|
||||||
@ -186,3 +211,71 @@ 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"
|
||||||
|
|
||||||
|
;[model]
|
||||||
|
; example of S3 configuration for AWS using its SDK default credential provider chain
|
||||||
|
; if relying on environment variables, the AWS SDK will look for the following:
|
||||||
|
; - AWS_ACCESS_KEY_ID
|
||||||
|
; - AWS_SECRET_ACCESS_KEY
|
||||||
|
; - AWS_SESSION_TOKEN (if needed)
|
||||||
|
; for more details, see https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials.html#default-credential-chain
|
||||||
|
;class = S3Storage
|
||||||
|
;[model_options]
|
||||||
|
;region = "eu-central-1"
|
||||||
|
;version = "latest"
|
||||||
|
;bucket = "my-bucket"
|
||||||
|
|
||||||
|
;[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"
|
||||||
|
|
||||||
|
;[sri]
|
||||||
|
; Subresource integrity (SRI) hashes used in template files. Uncomment and set
|
||||||
|
; these for all js files used. See:
|
||||||
|
; https://github.com/PrivateBin/PrivateBin/wiki/FAQ#user-content-how-to-make-privatebin-work-when-i-have-changed-some-javascript-files
|
||||||
|
;js/privatebin.js = "sha512-[…]"
|
||||||
|
@ -24,16 +24,17 @@
|
|||||||
"docs" : "https://privatebin.info/codedoc/"
|
"docs" : "https://privatebin.info/codedoc/"
|
||||||
},
|
},
|
||||||
"require" : {
|
"require" : {
|
||||||
"php" : "^5.6.0 || ^7.0 || ^8.0",
|
"php": "^7.3 || ^8.0",
|
||||||
"paragonie/random_compat" : "2.0.20",
|
"jdenticon/jdenticon": "1.0.2",
|
||||||
"yzalis/identicon" : "2.0.0",
|
"mlocati/ip-lib": "1.18.1",
|
||||||
"mlocati/ip-lib" : "1.14.0"
|
"yzalis/identicon": "2.0.0"
|
||||||
},
|
},
|
||||||
"suggest" : {
|
"suggest" : {
|
||||||
"google/cloud-storage" : "1.23.1"
|
"google/cloud-storage" : "1.43.0",
|
||||||
|
"aws/aws-sdk-php" : "3.325.0"
|
||||||
},
|
},
|
||||||
"require-dev" : {
|
"require-dev" : {
|
||||||
"phpunit/phpunit" : "^4.6 || ^5.0"
|
"phpunit/phpunit" : "^9"
|
||||||
},
|
},
|
||||||
"autoload" : {
|
"autoload" : {
|
||||||
"psr-4" : {
|
"psr-4" : {
|
||||||
@ -41,6 +42,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"config" : {
|
"config" : {
|
||||||
"autoloader-suffix" : "DontChange"
|
"autoloader-suffix" : "DontChange",
|
||||||
|
"optimize-autoloader": true,
|
||||||
|
"preferred-install": "dist",
|
||||||
|
"sort-packages": true,
|
||||||
|
"platform": {
|
||||||
|
"php": "7.3"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
1708
composer.lock
generated
1708
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@ -1,14 +1,15 @@
|
|||||||
/**
|
/**
|
||||||
* PrivateBin
|
* PrivateBin
|
||||||
*
|
*
|
||||||
* a zero-knowledge paste bin
|
* Cascading style sheets for bootstrap template.
|
||||||
*
|
*
|
||||||
* @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.3.5
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@import url("../common.css");
|
||||||
|
|
||||||
body {
|
body {
|
||||||
padding: 0 0 30px;
|
padding: 0 0 30px;
|
||||||
}
|
}
|
||||||
@ -68,96 +69,8 @@ body.loading {
|
|||||||
margin-right: 8px;
|
margin-right: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#attachmentPreview img {
|
|
||||||
max-width: 100%;
|
|
||||||
height: auto;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#attachmentPreview .pdfPreview {
|
|
||||||
width: 100%;
|
|
||||||
height: 100vh;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#dropzone {
|
|
||||||
text-align: center;
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
z-index: 1000;
|
|
||||||
opacity: 0.6;
|
|
||||||
background-color: #99ccff;
|
|
||||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z'/%3E%3C/svg%3E");
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-position: center;
|
|
||||||
background-size: 25vh;
|
|
||||||
outline: 2px dashed #228bff;
|
|
||||||
outline-offset: -50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dragAndDropFile{
|
|
||||||
color: #777;
|
|
||||||
font-size: 1em;
|
|
||||||
display: inline;
|
|
||||||
white-space: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
#deletelink {
|
|
||||||
float: right;
|
|
||||||
margin-left: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#qrcodemodalClose {
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
#qrcode-display {
|
|
||||||
width: 200px;
|
|
||||||
height: 200px;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pastelink {
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pastelink > a {
|
|
||||||
word-wrap: break-word;
|
|
||||||
}
|
|
||||||
|
|
||||||
#preview {
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#message, .replymessage {
|
|
||||||
font-family: monospace;
|
|
||||||
resize: vertical;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nickname {
|
|
||||||
margin: 5px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#comments, #comments button {
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#filewrap {
|
|
||||||
transition: background-color 0.75s ease-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
.comment {
|
.comment {
|
||||||
border-left: 1px solid #ccc;
|
|
||||||
padding: 5px 0 5px 10px;
|
padding: 5px 0 5px 10px;
|
||||||
white-space: pre-wrap;
|
|
||||||
transition: background-color 0.75s ease-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
.highlight {
|
|
||||||
background-color: #ffdd86;
|
|
||||||
transition: background-color 0.2s ease-in;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
footer h4 {
|
footer h4 {
|
||||||
@ -205,3 +118,23 @@ li.L0, li.L1, li.L2, li.L3, li.L5, li.L6, li.L7, li.L8 {
|
|||||||
.modal .modal-content button {
|
.modal .modal-content button {
|
||||||
margin: 0.5em 0;
|
margin: 0.5em 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* right-to-left overrides */
|
||||||
|
html[dir="rtl"] .checkbox label {
|
||||||
|
padding-left: inherit;
|
||||||
|
padding-right: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
html[dir="rtl"] .checkbox input[type="checkbox"] {
|
||||||
|
margin-left: inherit;
|
||||||
|
margin-right: -20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
html[dir="rtl"] #language {
|
||||||
|
margin-left: inherit;
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
html[dir="rtl"] #deletelink, html[dir="rtl"] #qrcodemodalClose {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
5
css/bootstrap5/bootstrap-5.3.3.css
vendored
Normal file
5
css/bootstrap5/bootstrap-5.3.3.css
vendored
Normal file
File diff suppressed because one or more lines are too long
5
css/bootstrap5/bootstrap.rtl-5.3.3.css
vendored
Normal file
5
css/bootstrap5/bootstrap.rtl-5.3.3.css
vendored
Normal file
File diff suppressed because one or more lines are too long
41
css/bootstrap5/privatebin.css
Normal file
41
css/bootstrap5/privatebin.css
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
/**
|
||||||
|
* PrivateBin
|
||||||
|
*
|
||||||
|
* Cascading style sheets for bootstrap 5 template.
|
||||||
|
*
|
||||||
|
* @link https://github.com/PrivateBin/PrivateBin
|
||||||
|
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
|
||||||
|
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
|
||||||
|
*/
|
||||||
|
|
||||||
|
@import url("../common.css");
|
||||||
|
|
||||||
|
.hidden {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dropdown-menu {
|
||||||
|
--bs-dropdown-min-width: 23rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-bs-theme=light] pre, [data-bs-theme=light] .card {
|
||||||
|
background-color: RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
li.L0, li.L1, li.L2, li.L3, li.L4, li.L5, li.L6, li.L7, li.L8, li.L9 {
|
||||||
|
color: revert !important;
|
||||||
|
list-style-type: decimal !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-bs-theme=dark] li.L1, [data-bs-theme=dark] li.L3, [data-bs-theme=dark] li.L5,
|
||||||
|
[data-bs-theme=dark] li.L7, [data-bs-theme=dark] li.L9 {
|
||||||
|
background-color: var(--bs-gray-dark) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-right button {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
html[dir="rtl"] #deletelink, html[dir="rtl"] #qrcodemodalClose {
|
||||||
|
float: left;
|
||||||
|
}
|
102
css/common.css
Normal file
102
css/common.css
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
/**
|
||||||
|
* PrivateBin
|
||||||
|
*
|
||||||
|
* Common cascading style sheets for all templates.
|
||||||
|
*
|
||||||
|
* @link https://github.com/PrivateBin/PrivateBin
|
||||||
|
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
|
||||||
|
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
|
||||||
|
*/
|
||||||
|
|
||||||
|
#attachmentPreview img {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#attachmentPreview .pdfPreview {
|
||||||
|
width: 100%;
|
||||||
|
height: 100vh;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#dropzone {
|
||||||
|
text-align: center;
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
z-index: 1000;
|
||||||
|
opacity: 0.6;
|
||||||
|
background-color: #9cf;
|
||||||
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z'/%3E%3C/svg%3E");
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center;
|
||||||
|
background-size: 25vh;
|
||||||
|
outline: 2px dashed #28f;
|
||||||
|
outline-offset: -50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#filewrap {
|
||||||
|
transition: background-color 0.75s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
#deletelink {
|
||||||
|
float: right;
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#qrcodemodalClose {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
#qrcode-display {
|
||||||
|
width: 200px;
|
||||||
|
height: 200px;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pastelink {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pastelink > a, #plaintext > a {
|
||||||
|
word-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
#message {
|
||||||
|
height: 70dvh;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media ((max-width: 450px) and (max-height: 950px)) {
|
||||||
|
#message {
|
||||||
|
height: 55dvh;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#message, .replymessage {
|
||||||
|
font-family: monospace;
|
||||||
|
resize: vertical;
|
||||||
|
}
|
||||||
|
|
||||||
|
.comment {
|
||||||
|
border-left: 1px solid #ccc;
|
||||||
|
transition: background-color 0.75s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.commentdata {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dragAndDropFile {
|
||||||
|
color: #777;
|
||||||
|
font-size: 1em;
|
||||||
|
display: inline;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight {
|
||||||
|
background-color: #fd8;
|
||||||
|
transition: background-color 0.2s ease-in;
|
||||||
|
}
|
@ -1,15 +1,13 @@
|
|||||||
/**
|
/**
|
||||||
* PrivateBin
|
* PrivateBin
|
||||||
*
|
*
|
||||||
* CSS file only loaded when no JavaScript available.
|
* Cascading style sheet only loaded when JavaScript is not available.
|
||||||
*
|
*
|
||||||
* @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.3.5
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* When there is no script at all other */
|
|
||||||
.noscript-hide {
|
.noscript-hide {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
/**
|
/**
|
||||||
* PrivateBin
|
* PrivateBin
|
||||||
*
|
*
|
||||||
* Main CSS file.
|
* Cascading style sheets for page template.
|
||||||
*
|
*
|
||||||
* @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.3.5
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@import url("common.css");
|
||||||
|
|
||||||
/* 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.
|
||||||
Licensed under the BSD License. - http://yuilibrary.com/license/ */
|
Licensed under the BSD License. - http://yuilibrary.com/license/ */
|
||||||
html{color:#000;background:#fff}body,div,dl,dt,dd,ul,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal}ol,ul{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}q:before,q:after{content:''}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:text-top}sub{vertical-align:text-bottom}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit}input,textarea,select{font-size:100%;}legend{color:#000}
|
html{color:#000;background:#fff}body,div,dl,dt,dd,ul,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal}ol,ul{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}q:before,q:after{content:''}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:text-top}sub{vertical-align:text-bottom}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit}input,textarea,select{font-size:100%;}legend{color:#000}
|
||||||
@ -105,42 +106,6 @@ h3.title {
|
|||||||
resize: vertical;
|
resize: vertical;
|
||||||
}
|
}
|
||||||
|
|
||||||
#attachmentPreview img {
|
|
||||||
max-width: 100%;
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
#attachmentPreview .pdfPreview {
|
|
||||||
width: 100%;
|
|
||||||
height: 100vh;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#dropzone {
|
|
||||||
text-align: center;
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
z-index: 1000;
|
|
||||||
opacity: 0.6;
|
|
||||||
background-color: #99ccff;
|
|
||||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z'/%3E%3C/svg%3E");
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-position: center;
|
|
||||||
background-size: 25vh;
|
|
||||||
outline: 2px dashed #228bff;
|
|
||||||
outline-offset: -50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dragAndDropFile{
|
|
||||||
color: #777;
|
|
||||||
font-size: 1em;
|
|
||||||
display: inline;
|
|
||||||
white-space: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
#status {
|
#status {
|
||||||
clear: both;
|
clear: both;
|
||||||
padding: 5px 10px;
|
padding: 5px 10px;
|
||||||
@ -160,8 +125,6 @@ h3.title {
|
|||||||
|
|
||||||
#pasteresult button { margin-left: 11px; }
|
#pasteresult button { margin-left: 11px; }
|
||||||
|
|
||||||
#deletelink { float: right; }
|
|
||||||
|
|
||||||
#toolbar, #status { margin-bottom: 5px; }
|
#toolbar, #status { margin-bottom: 5px; }
|
||||||
|
|
||||||
#copyhint { color: #666; font-size: 0.85em }
|
#copyhint { color: #666; font-size: 0.85em }
|
||||||
@ -261,6 +224,7 @@ button img {
|
|||||||
|
|
||||||
#newbutton {
|
#newbutton {
|
||||||
float: right;
|
float: right;
|
||||||
|
margin-left: 0;
|
||||||
margin-right: 0;
|
margin-right: 0;
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
display: inline;
|
display: inline;
|
||||||
@ -429,15 +393,6 @@ h4.title {
|
|||||||
|
|
||||||
.commentdate { color: #bfcede; }
|
.commentdate { color: #bfcede; }
|
||||||
|
|
||||||
#filewrap {
|
|
||||||
transition: background-color 0.75s ease-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
.highlight {
|
|
||||||
background-color: #ffdd86;
|
|
||||||
transition: background-color 0.2s ease-in;
|
|
||||||
}
|
|
||||||
|
|
||||||
img.vizhash {
|
img.vizhash {
|
||||||
width: 16px;
|
width: 16px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
@ -488,3 +443,17 @@ img.vizhash {
|
|||||||
#cleartext h3 {
|
#cleartext h3 {
|
||||||
font-size: 1.2em;
|
font-size: 1.2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* right-to-left overrides */
|
||||||
|
html[dir="rtl"] #aboutbox, html[dir="rtl"] #deletelink, html[dir="rtl"] #newbutton {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
html[dir="rtl"] button, html[dir="rtl"] .button, html[dir="rtl"] button img {
|
||||||
|
margin-left: 5px;
|
||||||
|
margin-right: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
html[dir="rtl"] button img {
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
59
doc/Generating Source Code Documentation.md
Normal file
59
doc/Generating Source Code Documentation.md
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
# Generating Source Code Documentation
|
||||||
|
|
||||||
|
## Generating PHP documentation
|
||||||
|
|
||||||
|
In order to generate the documentation, you will need to install the following
|
||||||
|
packages and its dependencies:
|
||||||
|
* phpdoc
|
||||||
|
* graphviz
|
||||||
|
|
||||||
|
Details about
|
||||||
|
[installing phpDocumentor](https://phpdoc.org/docs/latest/getting-started/installing.html)
|
||||||
|
can be found in that projects documentation.
|
||||||
|
|
||||||
|
Example for Debian and Ubuntu:
|
||||||
|
```console
|
||||||
|
$ sudo apt install php-pear graphviz
|
||||||
|
$ sudo pear channel-discover pear.phpdoc.org
|
||||||
|
$ sudo pear install phpdoc/phpDocumentor
|
||||||
|
```
|
||||||
|
|
||||||
|
To generate the documentation, change into the main directory and run phpdoc:
|
||||||
|
```console
|
||||||
|
$ cd PrivateBin
|
||||||
|
$ phpdoc --visibility=public,protected,private --target=doc/phpdoc --directory=lib/
|
||||||
|
```
|
||||||
|
|
||||||
|
**Note:** When used with PHP 7, the prerelease of phpDocumentator 2.9 needs to be
|
||||||
|
manually installed by downloading it from
|
||||||
|
[GitHub](https://github.com/phpDocumentor/phpDocumentor2/releases/download/v2.9.0/phpDocumentor.phar)
|
||||||
|
and then manually moving it to e.g. `/usr/local/bin` and making it executable.
|
||||||
|
|
||||||
|
## Generating JS documentation
|
||||||
|
|
||||||
|
In order to generate the documentation, you will need to install the following
|
||||||
|
packages and its dependencies:
|
||||||
|
* npm
|
||||||
|
|
||||||
|
Then you can use the node package manager to install the latest stable release
|
||||||
|
of jsdoc globally:
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ npm install -g jsdoc
|
||||||
|
```
|
||||||
|
|
||||||
|
Example for Debian and Ubuntu, including steps to allow current user to install
|
||||||
|
node modules globally:
|
||||||
|
```console
|
||||||
|
$ sudo apt install npm
|
||||||
|
$ sudo mkdir /usr/local/lib/node_modules
|
||||||
|
$ sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
|
||||||
|
$ npm install -g jsdoc
|
||||||
|
$ ln -s /usr/bin/nodejs /usr/local/bin/node
|
||||||
|
```
|
||||||
|
|
||||||
|
To generate the documentation, change into the main directory and run phpdoc:
|
||||||
|
```console
|
||||||
|
$ cd PrivateBin
|
||||||
|
$ jsdoc -p -d doc/jsdoc js/privatebin.js js/legacy.js
|
||||||
|
```
|
293
doc/Installation.md
Normal file
293
doc/Installation.md
Normal file
@ -0,0 +1,293 @@
|
|||||||
|
# Installation
|
||||||
|
|
||||||
|
## TL;DR
|
||||||
|
|
||||||
|
Download the
|
||||||
|
[latest release archive](https://github.com/PrivateBin/PrivateBin/releases/latest)
|
||||||
|
(with the link labelled as "Source code (…)") and extract it in your web hosts
|
||||||
|
folder where you want to install your PrivateBin instance. We try to provide a
|
||||||
|
mostly safe default configuration, but we urge you to check the
|
||||||
|
[security section](#hardening-and-security) below and the
|
||||||
|
[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)
|
||||||
|
for more information.
|
||||||
|
|
||||||
|
**NOTE:** There are Ansible roles available for installing and configuring PrivateBin on your server. You can choose from the following options:
|
||||||
|
|
||||||
|
- [Podman Rootless - PrivateBin by @voidquark](https://galaxy.ansible.com/ui/standalone/roles/voidquark/privatebin/) ([Github source code](https://github.com/voidquark/privatebin)): Simplifies the deployment and management of a secure PrivateBin service using a rootless Podman container. Key features include root-less deployment, ensuring security within a user namespace, idempotent deployment for consistent state, out-of-the-box setup for Red Hat systems, and the flexibility to customize PrivateBin configurations. It has been tested on EL9.
|
||||||
|
|
||||||
|
- [Config Configuration - PrivateBin by @e1mo](https://galaxy.ansible.com/ui/standalone/roles/e1mo/privatebin/) ([Github source code](https://git.sr.ht/~e1mo/ansible-role-privatebin)): Deploy PrivateBin configuration to disk with a customized configuration.
|
||||||
|
|
||||||
|
### Minimal Requirements
|
||||||
|
|
||||||
|
- PHP version 7.3 or above
|
||||||
|
- ctype extension
|
||||||
|
- GD extension (when using identicon or vizhash icons, jdenticon works without it)
|
||||||
|
- zlib extension
|
||||||
|
- 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
|
||||||
|
- A web browser with JavaScript and (optional) WebAssembly support
|
||||||
|
|
||||||
|
## Hardening and Security
|
||||||
|
|
||||||
|
### Changing the Path
|
||||||
|
|
||||||
|
In the index.php you can define a different `PATH`. This is useful to secure
|
||||||
|
your installation. You can move the utilities, configuration, data files,
|
||||||
|
templates and PHP libraries (directories bin, cfg, doc, data, lib, tpl, tst and
|
||||||
|
vendor) outside of your document root. This new location must still be
|
||||||
|
accessible to your webserver and PHP process (see also
|
||||||
|
[open_basedir setting](https://secure.php.net/manual/en/ini.core.php#ini.open-basedir)).
|
||||||
|
|
||||||
|
> #### PATH Example
|
||||||
|
> Your PrivateBin installation lives in a subfolder called "paste" inside of
|
||||||
|
> your document root. The URL looks like this:
|
||||||
|
> http://example.com/paste/
|
||||||
|
>
|
||||||
|
> The full path of PrivateBin on your webserver is:
|
||||||
|
> /srv/example.com/htdocs/paste
|
||||||
|
>
|
||||||
|
> When setting the path like this:
|
||||||
|
> define('PATH', '../../secret/privatebin/');
|
||||||
|
>
|
||||||
|
> PrivateBin will look for your includes and data here:
|
||||||
|
> /srv/example.com/secret/privatebin
|
||||||
|
|
||||||
|
### Changing the config path only
|
||||||
|
|
||||||
|
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,
|
||||||
|
you may only want to change the `conf.php`. In this case, you can set the
|
||||||
|
`CONFIG_PATH` environment variable to the absolute path to the directory containing the `conf.php` file.
|
||||||
|
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.
|
||||||
|
|
||||||
|
Note that your PHP process will need read access to the configuration file,
|
||||||
|
wherever it may be.
|
||||||
|
|
||||||
|
> #### CONFIG_PATH example
|
||||||
|
> Setting the value in an Apache Vhost:
|
||||||
|
> SetEnv CONFIG_PATH /var/lib/privatebin/
|
||||||
|
>
|
||||||
|
> In a php-fpm pool config:
|
||||||
|
> env[CONFIG_PATH] = /var/lib/privatebin/
|
||||||
|
>
|
||||||
|
> In the index.php, near the top:
|
||||||
|
> putenv('CONFIG_PATH=/var/lib/privatebin/');
|
||||||
|
|
||||||
|
### Transport security
|
||||||
|
|
||||||
|
When setting up PrivateBin, also set up HTTPS, if you haven't already. Without
|
||||||
|
HTTPS PrivateBin is not secure, as the JavaScript or WebAssembly files could be
|
||||||
|
manipulated during transmission. For more information on this, see our
|
||||||
|
[FAQ entry on HTTPS setup recommendations](https://github.com/PrivateBin/PrivateBin/wiki/FAQ#how-should-i-setup-https).
|
||||||
|
|
||||||
|
### File-level permissions
|
||||||
|
|
||||||
|
After completing the installation, you should make sure, that other users on the
|
||||||
|
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)
|
||||||
|
for a detailed guide on how to "harden" access to files and folders.
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
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
|
||||||
|
`cfg/conf.php` and change it as needed. Alternatively you can copy it anywhere
|
||||||
|
and set the `CONFIG_PATH` environment variable (see above notes). The config
|
||||||
|
file is divided into multiple sections, which are enclosed in square brackets.
|
||||||
|
|
||||||
|
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
|
||||||
|
you set a time limit in seconds. Users may not post more often then this limit
|
||||||
|
to your PrivateBin installation.
|
||||||
|
|
||||||
|
More details can be found in the
|
||||||
|
[configuration documentation](https://github.com/PrivateBin/PrivateBin/wiki/Configuration).
|
||||||
|
|
||||||
|
## Advanced installation
|
||||||
|
|
||||||
|
### Web server configuration
|
||||||
|
|
||||||
|
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
|
||||||
|
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
|
||||||
|
adjust the file, if you already use a `robots.txt`.
|
||||||
|
|
||||||
|
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
|
||||||
|
file to `.htaccess` to enable this feature. If you use another webserver, you
|
||||||
|
have to configure it manually to do the same.
|
||||||
|
|
||||||
|
### On using Cloudflare
|
||||||
|
|
||||||
|
If you want to use PrivateBin behind Cloudflare, make sure you have disabled the
|
||||||
|
Rocket loader and unchecked "Javascript" for Auto Minify, found in your domain
|
||||||
|
settings, under "Speed". More information can be found in our
|
||||||
|
[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).
|
||||||
|
|
||||||
|
### Using a Database Instead of Flat Files
|
||||||
|
|
||||||
|
In the configuration file the `[model]` and `[model_options]` sections let you
|
||||||
|
configure your favourite way of storing the pastes and discussions on your
|
||||||
|
server.
|
||||||
|
|
||||||
|
`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.
|
||||||
|
|
||||||
|
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
|
||||||
|
store your data in a database. Basically all databases that are supported by
|
||||||
|
[PDO](https://secure.php.net/manual/en/book.pdo.php) may be used. Automatic table
|
||||||
|
creation is provided for `pdo_ibm`, `pdo_informix`, `pdo_mssql`, `pdo_mysql`,
|
||||||
|
`pdo_oci`, `pdo_pgsql` and `pdo_sqlite`. You may want to provide a table prefix,
|
||||||
|
if you have to share the PrivateBin database with another application or you want
|
||||||
|
to use a prefix for
|
||||||
|
[security reasons](https://security.stackexchange.com/questions/119510/is-using-a-db-prefix-for-tables-more-secure).
|
||||||
|
The table prefix option is called `tbl`.
|
||||||
|
|
||||||
|
> #### Note
|
||||||
|
> The `Database` model has only been tested with SQLite, MariaDB/MySQL and
|
||||||
|
> PostgreSQL, although it would not be recommended to use SQLite in a production
|
||||||
|
> environment. If you gain any experience running PrivateBin on other RDBMS,
|
||||||
|
> please let us know.
|
||||||
|
|
||||||
|
The following GRANTs (privileges) are required for the PrivateBin user in
|
||||||
|
**MariaDB/MySQL**. In normal operation:
|
||||||
|
- INSERT, SELECT, DELETE on the paste and comment tables
|
||||||
|
- SELECT on the config table
|
||||||
|
|
||||||
|
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:
|
||||||
|
- CREATE, INDEX and ALTER on the database
|
||||||
|
- INSERT and UPDATE on the config table
|
||||||
|
|
||||||
|
For reference or if you want to create the table schema for yourself to avoid
|
||||||
|
having to give PrivateBin too many permissions (replace `prefix_` with your own
|
||||||
|
table prefix and create the table schema with your favorite MariaDB/MySQL
|
||||||
|
client):
|
||||||
|
|
||||||
|
```sql
|
||||||
|
CREATE TABLE prefix_paste (
|
||||||
|
dataid CHAR(16) NOT NULL,
|
||||||
|
data MEDIUMBLOB,
|
||||||
|
expiredate INT,
|
||||||
|
opendiscussion INT,
|
||||||
|
burnafterreading INT,
|
||||||
|
meta TEXT,
|
||||||
|
attachment MEDIUMBLOB,
|
||||||
|
attachmentname BLOB,
|
||||||
|
PRIMARY KEY (dataid)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE prefix_comment (
|
||||||
|
dataid CHAR(16),
|
||||||
|
pasteid CHAR(16),
|
||||||
|
parentid CHAR(16),
|
||||||
|
data BLOB,
|
||||||
|
nickname BLOB,
|
||||||
|
vizhash BLOB,
|
||||||
|
postdate INT,
|
||||||
|
PRIMARY KEY (dataid)
|
||||||
|
);
|
||||||
|
CREATE INDEX parent ON prefix_comment(pasteid);
|
||||||
|
|
||||||
|
CREATE TABLE prefix_config (
|
||||||
|
id CHAR(16) NOT NULL, value TEXT, PRIMARY KEY (id)
|
||||||
|
);
|
||||||
|
INSERT INTO prefix_config VALUES('VERSION', '1.7.5');
|
||||||
|
```
|
||||||
|
|
||||||
|
In **PostgreSQL**, the `data`, `attachment`, `nickname` and `vizhash` columns
|
||||||
|
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)`.
|
||||||
|
|
||||||
|
### Cloud Storage Backends
|
||||||
|
|
||||||
|
Due to the large size of the respective cloud SDKs required for these, we didn't
|
||||||
|
include these in the `vendor` directory shipped in our release archives. To use
|
||||||
|
these in your manual installation, you will need [composer installed](https://getcomposer.org/)
|
||||||
|
and require the used library (see instructions below).
|
||||||
|
|
||||||
|
This is not required if using the dedicated container images that have these SDKs
|
||||||
|
preinstalled.
|
||||||
|
|
||||||
|
#### 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 first have to install the SDK from the installation
|
||||||
|
directory of PrivateBin:
|
||||||
|
|
||||||
|
```console
|
||||||
|
composer require --no-update google/cloud-storage
|
||||||
|
composer update --no-dev --optimize-autoloader
|
||||||
|
```
|
||||||
|
|
||||||
|
You have to 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.
|
||||||
|
|
||||||
|
#### 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 from the installation
|
||||||
|
directory of PrivateBin:
|
||||||
|
|
||||||
|
```console
|
||||||
|
composer require --no-update aws/aws-sdk-php
|
||||||
|
composer update --no-dev --optimize-autoloader
|
||||||
|
```
|
||||||
|
|
||||||
|
You have to create an 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"
|
||||||
|
```
|
@ -1,60 +1,37 @@
|
|||||||
Generating PHP documentation
|
# PrivateBin Documentation
|
||||||
============================
|
|
||||||
|
|
||||||
In order to generate the documentation, you will need to install the following
|
## [Frequently Asked Questions](https://github.com/PrivateBin/PrivateBin/wiki/FAQ)
|
||||||
packages and its dependencies:
|
|
||||||
* phpdoc
|
|
||||||
* graphviz
|
|
||||||
|
|
||||||
Details about
|
Please have a look at these questions *before* opening an issue in this repo.
|
||||||
[installing phpDocumentor](https://phpdoc.org/docs/latest/getting-started/installing.html)
|
|
||||||
can be found in that projects documentation.
|
|
||||||
|
|
||||||
Example for Debian and Ubuntu:
|
## [Installation guide](https://github.com/PrivateBin/PrivateBin/blob/master/doc/Installation.md#installation)
|
||||||
```console
|
|
||||||
$ sudo apt install php-pear graphviz
|
|
||||||
$ sudo pear channel-discover pear.phpdoc.org
|
|
||||||
$ sudo pear install phpdoc/phpDocumentor
|
|
||||||
```
|
|
||||||
|
|
||||||
To generate the documentation, change into the main directory and run phpdoc:
|
Minimal requirements, hardening and securing your installation and initial
|
||||||
```console
|
configuration.
|
||||||
$ cd PrivateBin
|
|
||||||
$ phpdoc --visibility public,protected,private -t doc/phpdoc -d lib/
|
|
||||||
```
|
|
||||||
|
|
||||||
**Note:** When used with PHP 7, the prerelease of phpDocumentator 2.9 needs to be
|
## [Configuration guide](https://github.com/PrivateBin/PrivateBin/wiki/Configuration)
|
||||||
manually installed by downloading it from
|
|
||||||
[GitHub](https://github.com/phpDocumentor/phpDocumentor2/releases/download/v2.9.0/phpDocumentor.phar)
|
|
||||||
and then manually moving it to e.g. `/usr/local/bin` and making it executable.
|
|
||||||
|
|
||||||
Generating JS documentation
|
Detailed guide on each configuration option and their effects.
|
||||||
============================
|
|
||||||
|
|
||||||
In order to generate the documentation, you will need to install the following
|
## [Templates](https://github.com/PrivateBin/PrivateBin/wiki/Templates)
|
||||||
packages and its dependencies:
|
|
||||||
* npm
|
|
||||||
|
|
||||||
Then you can use the node package manager to install the latest stable release
|
How to change an existing template or create your own, as well as an overview of
|
||||||
of jsdoc globally:
|
the currently included templates.
|
||||||
|
|
||||||
```console
|
## [Translation guide](https://github.com/PrivateBin/PrivateBin/wiki/Translation)
|
||||||
$ npm install -g jsdoc
|
|
||||||
```
|
|
||||||
|
|
||||||
Example for Debian and Ubuntu, including steps to allow current user to install
|
How to help translate PrivateBin and technical background on it's implementation.
|
||||||
node modules globally:
|
|
||||||
```console
|
|
||||||
$ sudo apt install npm
|
|
||||||
$ sudo mkdir /usr/local/lib/node_modules
|
|
||||||
$ sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
|
|
||||||
$ npm install -g jsdoc
|
|
||||||
$ ln -s /usr/bin/nodejs /usr/local/bin/node
|
|
||||||
```
|
|
||||||
|
|
||||||
To generate the documentation, change into the main directory and run phpdoc:
|
## [Developer guide](https://github.com/PrivateBin/PrivateBin/wiki/Development)
|
||||||
```console
|
|
||||||
$ cd PrivateBin
|
|
||||||
$ jsdoc -p -d doc/jsdoc js/privatebin.js js/legacy.js
|
|
||||||
```
|
|
||||||
|
|
||||||
|
Know how for participating in PrivateBins development.
|
||||||
|
|
||||||
|
### [Generating Source Code Documentation](https://github.com/PrivateBin/PrivateBin/blob/master/doc/Generating%20Source%20Code%20Documentation.md#generating-source-code-documentation)
|
||||||
|
|
||||||
|
How to generate the source code API documentation, as found on the project
|
||||||
|
website for [PHP](https://privatebin.info/codedoc/) and [JS](https://privatebin.info/jsdoc/)
|
||||||
|
|
||||||
|
### [Running Unit Tests](https://github.com/PrivateBin/PrivateBin/blob/master/doc/Running Unit Tests.md#running-all-unit-tests)
|
||||||
|
|
||||||
|
How to run the PHP & JS unit tests, including a brief introduction to property
|
||||||
|
based unit testing.
|
||||||
|
44
doc/Release.md
Normal file
44
doc/Release.md
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
# Release
|
||||||
|
|
||||||
|
## Overview of Supply-Chain Security
|
||||||
|
|
||||||
|
As of the PrivateBin 1.0 release we [cryptographically sign](https://git-scm.com/book/uz/v2/Git-Tools-Signing-Your-Work) our git commits and tags, so that you can verify we actually developed the software. Later, we also [started signing the release archives on GitHub](https://github.com/PrivateBin/PrivateBin/issues/219) and retroactively signed all releases from 1.0 forward.
|
||||||
|
|
||||||
|
Since [release 1.6.2](https://github.com/PrivateBin/PrivateBin/releases/tag/1.6.2) our release assets additionally also are [verified with the SLSA (Supply-chain Levels for Software Artifacts) framework](https://slsa.dev/), providing an in-toto manifest of the release archive.
|
||||||
|
|
||||||
|
This achieves the following:
|
||||||
|
1. It ensures no maintainer has gone rogue and has modified/tampered with the source code before “building” the release.
|
||||||
|
2. It ensures the release is build exactly according to the source as defined by the branch that was used for the release.
|
||||||
|
This includes the workflow file defining how the release is done itself.
|
||||||
|
3. Our release should achieve [SLSA build level 3](https://slsa.dev/spec/v1.0/levels#build-l3) as it [runs on GitHub](https://slsa.dev/spec/v1.0/threats). Some more properties [are thus achieved](https://slsa.dev/spec/v1.0/threats).
|
||||||
|
|
||||||
|
For more information [see the corresponding issue](https://github.com/PrivateBin/PrivateBin/issues/1169) and [the GitHub workflow file](/.github/workflows/release.yml).
|
||||||
|
|
||||||
|
## Reproducible builds
|
||||||
|
|
||||||
|
All releases `.tar.gz` and `.zip` archives since 1.0 come with corresponding `.asc` signatures that can be used to confirm the authenticity of the fact that the release has been issued by a PrivateBin maintainer.
|
||||||
|
|
||||||
|
This uses traditional [PGP](https://en.wikipedia.org/wiki/Pretty_Good_Privacy) signatures.
|
||||||
|
|
||||||
|
## Verification
|
||||||
|
|
||||||
|
You can use the gpg signatures for verifying the reproducibility and that a maintainer in posession with that PGP private key created the release with that content:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ gpg2 --verify 1.6.2.tar.gz.asc
|
||||||
|
gpg: assuming signed data in '1.6.2.tar.gz'
|
||||||
|
gpg: Signature made Fri Dec 15 06:21:08 2023 UTC
|
||||||
|
gpg: using RSA key 28CA7C964938EA5C1481D42AE11B7950E9E183DB
|
||||||
|
gpg: Good signature from "PrivateBin release (solely used for signing releases)" [unknown]
|
||||||
|
gpg: WARNING: This key is not certified with a trusted signature!
|
||||||
|
gpg: There is no indication that the signature belongs to the owner.
|
||||||
|
Primary key fingerprint: 28CA 7C96 4938 EA5C 1481 D42A E11B 7950 E9E1 83DB
|
||||||
|
```
|
||||||
|
|
||||||
|
For a more step-by-step guide in detail [see this FAQ](https://github.com/PrivateBin/PrivateBin/wiki/FAQ#how-can-i-securely-clonedownload-your-project).
|
||||||
|
|
||||||
|
SLSA verification can be performed using the [SLSA verifier](https://github.com/slsa-framework/slsa-verifier?tab=readme-ov-file#verification-for-github-builders).
|
||||||
|
|
||||||
|
## Release process
|
||||||
|
|
||||||
|
The release process is outlined in the [release checklist](https://github.com/PrivateBin/PrivateBin/wiki/Release-Checklist). The key manual steps are performed using a [Makefile](https://github.com/PrivateBin/PrivateBin/blob/master/Makefile#L31-L43) and using a [shell script](https://github.com/rugk/gittools/blob/master/signrelease.sh).
|
@ -1,5 +1,4 @@
|
|||||||
Running all unit tests
|
# Running All Unit Tests
|
||||||
======================
|
|
||||||
|
|
||||||
Since it is non-trivial to setup all dependencies for our unit testing suite,
|
Since it is non-trivial to setup all dependencies for our unit testing suite,
|
||||||
we provide a docker image that bundles all of them into one container, both
|
we provide a docker image that bundles all of them into one container, both
|
||||||
@ -29,13 +28,7 @@ docker run --rm --read-only -v ~/PrivateBin:/srv:ro privatebin/unit-testing phpu
|
|||||||
docker run --rm --read-only -v ~/PrivateBin:/srv:ro privatebin/unit-testing mocha
|
docker run --rm --read-only -v ~/PrivateBin:/srv:ro privatebin/unit-testing mocha
|
||||||
```
|
```
|
||||||
|
|
||||||
We also provide a Janitor image that includes the Cloud9 and Theia WebIDEs as
|
## Running PHP Unit Tests
|
||||||
well as the integrated unit testing utilities. See our [docker wiki
|
|
||||||
page](https://github.com/PrivateBin/PrivateBin/wiki/Docker#janitor-image-with-cloud9-and-theia-webide-janitortechnologyprivatebin)
|
|
||||||
for further details on this.
|
|
||||||
|
|
||||||
Running PHP unit tests
|
|
||||||
======================
|
|
||||||
|
|
||||||
In order to run these tests, you will need to install the following packages
|
In order to run these tests, you will need to install the following packages
|
||||||
and their dependencies:
|
and their dependencies:
|
||||||
@ -50,6 +43,14 @@ Example for Debian and Ubuntu:
|
|||||||
$ sudo apt install phpunit php-gd php-sqlite3 php-xdebug
|
$ sudo apt install phpunit php-gd php-sqlite3 php-xdebug
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Because the unit tests depend on this, you also need to install the optional. Otherwise they won't run:
|
||||||
|
```console
|
||||||
|
composer require google/cloud-storage
|
||||||
|
```
|
||||||
|
|
||||||
|
If you do this and want to develop further, please go into `.gitignore` and adjust it to ignore the whole
|
||||||
|
vendor directory. Otherwise your `git status` will be filled with lot's of unrelated PHP files.
|
||||||
|
|
||||||
To run the tests, change into the `tst` directory and run phpunit:
|
To run the tests, change into the `tst` directory and run phpunit:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
@ -63,20 +64,16 @@ configurations defined in its constructor, it generates the unit test file
|
|||||||
of these configurations and tests for (most of the) valid combinations. Some of
|
of these configurations and tests for (most of the) valid combinations. Some of
|
||||||
combinations can't be tested with this method, i.e. a valid option combined with
|
combinations can't be tested with this method, i.e. a valid option combined with
|
||||||
an invalid one. Other very specific test cases (i.e. to trigger multiple errors)
|
an invalid one. Other very specific test cases (i.e. to trigger multiple errors)
|
||||||
are covered in `tst/PrivateBinTest.php`. Here is how to generate the
|
are covered in `tst/ControllerTest.php`. Here is how to generate the
|
||||||
configuration test and run it:
|
configuration test and run it:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
$ cd PrivateBin/tst
|
$ cd PrivateBin/tst
|
||||||
$ php ConfigurationTestGenerator.php
|
$ ../bin/configuration-test-generator
|
||||||
$ phpunit ConfigurationCombinationsTest.php
|
$ phpunit ConfigurationCombinationsTest.php
|
||||||
```
|
```
|
||||||
|
|
||||||
Note that it can take an hour or longer to run the several thousand tests.
|
## Running JavaScript Unit Tests
|
||||||
|
|
||||||
|
|
||||||
Running JavaScript unit tests
|
|
||||||
=============================
|
|
||||||
|
|
||||||
In order to run these tests, you will need to install the following packages
|
In order to run these tests, you will need to install the following packages
|
||||||
and its dependencies:
|
and its dependencies:
|
||||||
@ -112,8 +109,7 @@ $ cd PrivateBin/js
|
|||||||
$ nyc mocha
|
$ nyc mocha
|
||||||
```
|
```
|
||||||
|
|
||||||
Property based unit testing
|
### Property Based Unit Testing
|
||||||
---------------------------
|
|
||||||
|
|
||||||
In the JavaScript unit tests we use the JSVerify library to leverage property
|
In the JavaScript unit tests we use the JSVerify library to leverage property
|
||||||
based unit testing. Instead of artificially creating specific test cases to
|
based unit testing. Instead of artificially creating specific test cases to
|
||||||
@ -154,4 +150,3 @@ with the same RNG state as follows:
|
|||||||
```console
|
```console
|
||||||
$ nyc mocha test --jsverifyRngState 88caf85079d32e416b
|
$ nyc mocha test --jsverifyRngState 88caf85079d32e416b
|
||||||
```
|
```
|
||||||
|
|
355
i18n/ar.json
355
i18n/ar.json
@ -1,189 +1,224 @@
|
|||||||
{
|
{
|
||||||
"PrivateBin": "PrivateBin",
|
"PrivateBin": "PrivateBin",
|
||||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.",
|
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s عبارة عن أداة لصق على الإنترنت بسيطة ومفتوحة المصدر حيث لا يمتلك الخادم أي معرفة بالبيانات الملصقة. يتم تشفير / فك تشفير البيانات %sفي المتصفح%s باستخدام 256 بت AES.",
|
||||||
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "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>.",
|
||||||
"Because ignorance is bliss": "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.": "Paste does not exist, has expired or has been deleted.",
|
"%s requires php %s or above to work. Sorry.": "%s يتطلب php %s أو أعلى للعمل. آسف.",
|
||||||
"%s requires php %s or above to work. Sorry.": "%s requires php %s or above to work. Sorry.",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s يتطلب وجود قسم [%s] تضبيط في ملف تضبيط.",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.",
|
|
||||||
"Please wait %d seconds between each post.": [
|
"Please wait %d seconds between each post.": [
|
||||||
"Please wait %d second between each post. (singular)",
|
"الرجاء الانتظار %d ثانية بين كل مشاركة.",
|
||||||
"Please wait %d seconds between each post. (1st plural)",
|
"الرجاء الانتظار %d ثواني بين كل مشاركة.",
|
||||||
"Please wait %d seconds between each post. (2nd plural)",
|
"الرجاء الانتظار %d ثواني بين كل مشاركة.",
|
||||||
"Please wait %d seconds between each post. (3rd plural)"
|
"الرجاء الانتظار %d ثواني بين كل مشاركة.",
|
||||||
|
"الرجاء الانتظار %d ثواني بين كل مشاركة.",
|
||||||
|
"الرجاء الانتظار %d ثواني بين كل مشاركة."
|
||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.",
|
"Paste is limited to %s of encrypted data.": "يقتصر اللصق على %s البيانات المشفرة.",
|
||||||
"Invalid data.": "Invalid data.",
|
"Invalid data.": "بيانات غير صالحة.",
|
||||||
"You are unlucky. Try again.": "You are unlucky. Try again.",
|
"You are unlucky. Try again.": "أنت غير محظوظ. أعِد المحاولة.",
|
||||||
"Error saving comment. Sorry.": "Error saving comment. Sorry.",
|
"Error saving comment. Sorry.": "خطأ في حفظ التعليق. آسف.",
|
||||||
"Error saving paste. Sorry.": "Error saving paste. Sorry.",
|
"Error saving paste. Sorry.": "خطأ في حفظ اللصق. آسف.",
|
||||||
"Invalid paste ID.": "Invalid paste ID.",
|
"Invalid paste ID.": "معرف لصق غير صالح.",
|
||||||
"Paste is not of burn-after-reading type.": "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.",
|
"Wrong deletion token. Paste was not deleted.": "رمز حذف خاطئ. لم يتم يحُذف اللصق.",
|
||||||
"Paste was properly 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.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "جافاسكرِبت (JavaScript) مطلوب %s للعمل. نأسف للإزعاج.",
|
||||||
"%s requires a modern browser to work.": "%s requires a modern browser to work.",
|
"%s requires a modern browser to work.": "%s يتطلب متصفحًا حديثًا للعمل.",
|
||||||
"New": "New",
|
"New": "جديد",
|
||||||
"Send": "Send",
|
"Create": "أنشِئ",
|
||||||
"Clone": "Clone",
|
"Clone": "استنساخ",
|
||||||
"Raw text": "Raw text",
|
"Raw text": "نص خام",
|
||||||
"Expires": "Expires",
|
"Expires": "تنتهي",
|
||||||
"Burn after reading": "Burn after reading",
|
"Burn after reading": "حرق بعد القراءة",
|
||||||
"Open discussion": "Open discussion",
|
"Open discussion": "مناقشة مفتوحة",
|
||||||
"Password (recommended)": "Password (recommended)",
|
"Password (recommended)": "كلمة المرور (مستحسن)",
|
||||||
"Discussion": "Discussion",
|
"Discussion": "مناقشة",
|
||||||
"Toggle navigation": "Toggle navigation",
|
"Toggle navigation": "تبديل التنقل",
|
||||||
"%d seconds": [
|
"%d seconds": [
|
||||||
"%d second (singular)",
|
"%d ثانية",
|
||||||
"%d seconds (1st plural)",
|
"%d ثواني",
|
||||||
"%d seconds (2nd plural)",
|
"%d ثواني",
|
||||||
"%d seconds (3rd plural)"
|
"%d ثواني",
|
||||||
|
"%d ثواني",
|
||||||
|
"%d ثواني"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"%d minute (singular)",
|
"%d دقيقة",
|
||||||
"%d minutes (1st plural)",
|
"%d دقائق",
|
||||||
"%d minutes (2nd plural)",
|
"%d دقائق",
|
||||||
"%d minutes (3rd plural)"
|
"%d دقائق",
|
||||||
|
"%d دقائق",
|
||||||
|
"%d دقائق"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d hour (singular)",
|
"%d ساعة",
|
||||||
"%d hours (1st plural)",
|
"%d ساعات",
|
||||||
"%d hours (2nd plural)",
|
"%d ساعات",
|
||||||
"%d hours (3rd plural)"
|
"%d ساعات",
|
||||||
|
"%d ساعات",
|
||||||
|
"%d ساعات"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d day (singular)",
|
"%d يوم",
|
||||||
"%d days (1st plural)",
|
"%d أيام",
|
||||||
"%d days (2nd plural)",
|
"%d أيام",
|
||||||
"%d days (3rd plural)"
|
"%d أيام",
|
||||||
|
"%d أيام",
|
||||||
|
"%d أيام"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d week (singular)",
|
"%d أسبوع",
|
||||||
"%d weeks (1st plural)",
|
"%d أسابيع",
|
||||||
"%d weeks (2nd plural)",
|
"%d أسابيع",
|
||||||
"%d weeks (3rd plural)"
|
"%d أسابيع",
|
||||||
|
"%d أسابيع",
|
||||||
|
"%d أسابيع"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d month (singular)",
|
"%d شهر",
|
||||||
"%d months (1st plural)",
|
"%d شهور",
|
||||||
"%d months (2nd plural)",
|
"%d شهور",
|
||||||
"%d months (3rd plural)"
|
"%d شهور",
|
||||||
|
"%d شهور",
|
||||||
|
"%d شهور"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
"%d year (singular)",
|
"%d سنة",
|
||||||
"%d years (1st plural)",
|
"%d سنين",
|
||||||
"%d years (2nd plural)",
|
"%d سنين",
|
||||||
"%d years (3rd plural)"
|
"%d سنين",
|
||||||
|
"%d سنين",
|
||||||
|
"%d سنين"
|
||||||
],
|
],
|
||||||
"Never": "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.",
|
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "ملاحظة: هذه خدمة اختبارية: يمكن حذف البيانات في أي وقت. سوف تموت القطط إذا أساءت استخدام هذه الخدمة.",
|
||||||
"This document will expire in %d seconds.": [
|
"This document will expire in %d seconds.": [
|
||||||
"This document will expire in %d second. (singular)",
|
"ستنتهي صلاحية هذا المستند في %d ثانية.",
|
||||||
"This document will expire in %d seconds. (1st plural)",
|
"ستنتهي صلاحية هذا المستند في %d ثواني.",
|
||||||
"This document will expire in %d seconds. (2nd plural)",
|
"ستنتهي صلاحية هذا المستند في %d ثواني.",
|
||||||
"This document will expire in %d seconds. (3rd plural)"
|
"ستنتهي صلاحية هذا المستند في %d ثواني.",
|
||||||
|
"ستنتهي صلاحية هذا المستند في %d ثواني.",
|
||||||
|
"ستنتهي صلاحية هذا المستند في %d ثواني."
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"This document will expire in %d minute. (singular)",
|
"ستنتهي صلاحية هذا المستند في %d دقيقة.",
|
||||||
"This document will expire in %d minutes. (1st plural)",
|
"ستنتهي صلاحية هذا المستند في %d دقائق.",
|
||||||
"This document will expire in %d minutes. (2nd plural)",
|
"ستنتهي صلاحية هذا المستند في %d دقائق.",
|
||||||
"This document will expire in %d minutes. (3rd plural)"
|
"ستنتهي صلاحية هذا المستند في %d دقائق.",
|
||||||
|
"ستنتهي صلاحية هذا المستند في %d دقائق.",
|
||||||
|
"ستنتهي صلاحية هذا المستند في %d دقائق."
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"This document will expire in %d hour. (singular)",
|
"ستنتهي صلاحية هذا المستند في غضون %d ساعة.",
|
||||||
"This document will expire in %d hours. (1st plural)",
|
"ستنتهي صلاحية هذا المستند في غضون %d ساعات.",
|
||||||
"This document will expire in %d hours. (2nd plural)",
|
"ستنتهي صلاحية هذا المستند في غضون %d ساعات.",
|
||||||
"This document will expire in %d hours. (3rd plural)"
|
"ستنتهي صلاحية هذا المستند في غضون %d ساعات.",
|
||||||
|
"ستنتهي صلاحية هذا المستند في غضون %d ساعات.",
|
||||||
|
"ستنتهي صلاحية هذا المستند في غضون %d ساعات."
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"This document will expire in %d day. (singular)",
|
"ستنتهي صلاحية هذا المستند خلال %d يوم.",
|
||||||
"This document will expire in %d days. (1st plural)",
|
"ستنتهي صلاحية هذا المستند خلال %d أيام.",
|
||||||
"This document will expire in %d days. (2nd plural)",
|
"ستنتهي صلاحية هذا المستند خلال %d أيام.",
|
||||||
"This document will expire in %d days. (3rd plural)"
|
"ستنتهي صلاحية هذا المستند خلال %d أيام.",
|
||||||
|
"ستنتهي صلاحية هذا المستند خلال %d أيام.",
|
||||||
|
"ستنتهي صلاحية هذا المستند خلال %d أيام."
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
"This document will expire in %d month. (singular)",
|
"ستنتهي صلاحية هذا المستند خلال %d شهر.",
|
||||||
"This document will expire in %d months. (1st plural)",
|
"ستنتهي صلاحية هذا المستند خلال %d شهور.",
|
||||||
"This document will expire in %d months. (2nd plural)",
|
"ستنتهي صلاحية هذا المستند خلال %d شهور.",
|
||||||
"This document will expire in %d months. (3rd plural)"
|
"ستنتهي صلاحية هذا المستند خلال %d شهور.",
|
||||||
|
"ستنتهي صلاحية هذا المستند خلال %d شهور.",
|
||||||
|
"ستنتهي صلاحية هذا المستند خلال %d شهور."
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "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 decrypt data (Wrong key?)": "تعذر فك تشفير البيانات (مفتاح غير صحيح؟)",
|
||||||
"Could not delete the paste, it was not stored in burn after reading mode.": "Could not delete the paste, it was not stored in burn after reading mode.",
|
"Could not delete the 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.",
|
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "فقط من أجل عينيك. لا تغلق هذه النافذة، لا يمكن عرض هذه الرسالة مرة أخرى.",
|
||||||
"Could not decrypt comment; Wrong key?": "Could not decrypt comment; Wrong key?",
|
"Could not decrypt comment; Wrong key?": "تعذر فك تشفير التعليق؛ المفتاح غير صحيح؟",
|
||||||
"Reply": "Reply",
|
"Reply": "رد",
|
||||||
"Anonymous": "Anonymous",
|
"Anonymous": "وهمي",
|
||||||
"Avatar generated from IP address": "Avatar generated from IP address",
|
"Avatar generated from IP address": "تم إنشاء أفتار من عنوان IP",
|
||||||
"Add comment": "Add comment",
|
"Add comment": "أضف تعليق",
|
||||||
"Optional nickname…": "Optional nickname…",
|
"Optional nickname…": "لقب اختياري…",
|
||||||
"Post comment": "Post comment",
|
"Post comment": "أضف تعليقا",
|
||||||
"Sending comment…": "Sending comment…",
|
"Sending comment…": "يُرسل تعليق…",
|
||||||
"Comment posted.": "Comment posted.",
|
"Comment posted.": "نُشر التعليق.",
|
||||||
"Could not refresh display: %s": "Could not refresh display: %s",
|
"Could not refresh display: %s": "تعذر تحديث العرض: %s",
|
||||||
"unknown status": "unknown status",
|
"unknown status": "حالة غير معروفة",
|
||||||
"server error or not responding": "server error or not responding",
|
"server error or not responding": "خطأ في الخادم أو لا يستجيب",
|
||||||
"Could not post comment: %s": "Could not post comment: %s",
|
"Could not post comment: %s": "لا يمكن نشر تعليق: %s",
|
||||||
"Sending paste…": "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>",
|
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "لصقك هو <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(اضغط على [Ctrl] + [c] للنسخ)</span>",
|
||||||
"Delete data": "Delete data",
|
"Delete data": "حذف البيانات",
|
||||||
"Could not create paste: %s": "Could not create paste: %s",
|
"Could not create paste: %s": "تعذر إنشاء اللصق: %s",
|
||||||
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)",
|
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "لا يمكن فك تشفير اللصق: مفتاح فك التشفير مفقود في URL (هل استخدمت معيد توجيه أو أداة تقصير لعناوين URL تزيل جزءًا من عنوان URL؟)",
|
||||||
"B": "B",
|
"B": "بايت",
|
||||||
"KiB": "KiB",
|
"KiB": "كيلوبايت",
|
||||||
"MiB": "MiB",
|
"MiB": "ميجابايت",
|
||||||
"GiB": "GiB",
|
"GiB": "جيجابايت",
|
||||||
"TiB": "TiB",
|
"TiB": "تيرابايت",
|
||||||
"PiB": "PiB",
|
"PiB": "بيتابايت",
|
||||||
"EiB": "EiB",
|
"EiB": "إكسابايت",
|
||||||
"ZiB": "ZiB",
|
"ZiB": "زيتابايت",
|
||||||
"YiB": "YiB",
|
"YiB": "يوتابايت",
|
||||||
"Format": "Format",
|
"Format": "التنسيق",
|
||||||
"Plain Text": "Plain Text",
|
"Plain Text": "نص عادي",
|
||||||
"Source Code": "Source Code",
|
"Source Code": "كود مصدر",
|
||||||
"Markdown": "Markdown",
|
"Markdown": "ماركداون",
|
||||||
"Download attachment": "Download attachment",
|
"Download attachment": "تنزيل المرفقات",
|
||||||
"Cloned: '%s'": "Cloned: '%s'",
|
"Cloned: '%s'": "مستنسخ: '%s'",
|
||||||
"The cloned file '%s' was attached to this paste.": "The cloned file '%s' was attached to this paste.",
|
"The cloned file '%s' was attached to this paste.": "تم إرفاق المِلَفّ المستنسخ '%s' بهذا اللصق.",
|
||||||
"Attach a file": "Attach a file",
|
"Attach a file": "إرفاق مِلَفّ",
|
||||||
"alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard",
|
"alternatively drag & drop a file or paste an image from the clipboard": "بدلاً من ذلك، اسحب ملفًا وأسقطه أو الصق صورة من الحافظة",
|
||||||
"File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.",
|
"File too large, to display a preview. Please download the attachment.": "المِلَفّ كبير جدًا، بحيث لا يمكن عرض معاينة. الرجاء تنزيل المرفق.",
|
||||||
"Remove attachment": "Remove attachment",
|
"Remove attachment": "إزالة المرفق",
|
||||||
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Your browser does not support uploading encrypted files. Please use a newer browser.",
|
"Your browser does not support uploading encrypted files. Please use a newer browser.": "متصفحك لا يدعم رفع الملفات المشفرة. الرجاء استخدام متصفح أحدث.",
|
||||||
"Invalid attachment.": "Invalid attachment.",
|
"Invalid attachment.": "مرفق غير صحيح.",
|
||||||
"Options": "Options",
|
"Options": "الخيارات",
|
||||||
"Shorten URL": "Shorten URL",
|
"Shorten URL": "تقصير URL",
|
||||||
"Editor": "Editor",
|
"Editor": "المحرّر",
|
||||||
"Preview": "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.",
|
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s يتطلب PATH لينتهي ب \"%s\". يرجى تحديث PATH في ملف index.php الخاص بك.",
|
||||||
"Decrypt": "Decrypt",
|
"Decrypt": "فك التشفير",
|
||||||
"Enter password": "Enter password",
|
"Enter password": "أدخل كلمة المرور",
|
||||||
"Loading…": "Loading…",
|
"Loading…": "تحميل…",
|
||||||
"Decrypting paste…": "Decrypting paste…",
|
"Decrypting 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 case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "في حالة عدم اختفاء هذه الرسالة مطلقًا ، يرجى إلقاء نظرة على <a href=\"%s\">الأسئلة الشائعة هذه للحصول على معلومات لتحري الخلل وإصلاحه</a>.",
|
||||||
"+++ no paste text +++": "+++ no paste text +++",
|
"+++ no paste text +++": "+++ لا يوجد نص لصق +++",
|
||||||
"Could not get paste data: %s": "Could not get paste data: %s",
|
"Could not get paste data: %s": "تعذر الحصول على لصق البيانات: %s",
|
||||||
"QR code": "QR code",
|
"QR code": "رمز 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.": "هذا الموقع يستخدم اتصال HTTP غير آمن! الرجاء استخدامه للاختبار فقط.",
|
||||||
"For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.",
|
"For more information <a href=\"%s\">see this FAQ entry</a>.": "لمزيد من المعلومات <a href=\"%s\">راجع هذه الأسئلة الشائعة</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 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.": "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.": "لا يدعم المستعرض الخاص بك WebAssembly، المستخدم لضغط zlib. يمكنك إنشاء مستندات غير مضغوطة، لكن لا يمكنك قراءة المستندات المضغوطة.",
|
||||||
"waiting on user to provide a password": "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.",
|
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "تعذر فك تشفير البيانات. هل أدخلت كلمة مرور خاطئة؟ أعِد المحاولة باستخدام الزر الموجود في الأعلى.",
|
||||||
"Retry": "Retry",
|
"Retry": "أعِد المحاولة",
|
||||||
"Showing raw text…": "Showing raw text…",
|
"Showing raw text…": "يُظهر نص خام…",
|
||||||
"Notice:": "Notice:",
|
"Notice:": "إشعار:",
|
||||||
"This link will expire after %s.": "This link will expire after %s.",
|
"This link will expire after %s.": "ستنتهي صلاحية هذا الرابط بعد %s.",
|
||||||
"This link can only be accessed once, do not use back or refresh button in your browser.": "This link can only be accessed once, do not use back or refresh button in your browser.",
|
"This link can only be accessed once, do not use back or refresh button in your browser.": "لا يمكن الوصول إلى هذا الرابط إلا مرة واحدة، لا تستخدم زر الرجوع أو التحديث في متصفحك.",
|
||||||
"Link:": "Link:",
|
"Link:": "الرابط:",
|
||||||
"Recipient may become aware of your timezone, convert time to UTC?": "Recipient may become aware of your timezone, convert time to UTC?",
|
"Recipient may become aware of your timezone, convert time to UTC?": "قد يكون المستلم على علم بمنطقتك الزمنية، هل تريد تحويل الوقت إلى التوقيت العالمي المنسق (UTC)؟",
|
||||||
"Use Current Timezone": "Use Current Timezone",
|
"Use Current Timezone": "استخدم المنطقة الزمنية الحالية",
|
||||||
"Convert To UTC": "Convert To UTC",
|
"Convert To UTC": "تحويل إلى UTC",
|
||||||
"Close": "Close",
|
"Close": "إغلاق",
|
||||||
"Encrypted note on PrivateBin": "Encrypted note on PrivateBin",
|
"Encrypted note on %s": "ملاحظة مشفرة على %s",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
|
"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 shortener may expose your decrypt key in URL.",
|
"URL shortener may expose your decrypt key in URL.": "قد يفضح أداة تقصير عناوين URL مفتاح فك التشفير الخاص بك في URL.",
|
||||||
"Save paste": "Save paste"
|
"Save paste": "احفظ اللصق",
|
||||||
|
"Your IP is not authorized to create pastes.": "عنوان IP الخاص بك غير مصرح له بإنشاء لصُق.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "محاولة تقصير عنوان URL لا يشير إلى خادمنا.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "خطأ في الاتصال بـ YOURLS. ربما تكون هناك مشكلة في التضبيط، مثل \"apiurl\" أو \"التوقيع\" الخاطئ أو المفقود.",
|
||||||
|
"Error parsing YOURLS response.": "خطأ في تحليل استجابة YOURLS.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "لا يمكن عرض اللصق احرقه بعد قراءته إلا مرة واحدة عند تحميله. هل تريد فتحه الآن؟",
|
||||||
|
"Yes, see it": "نعم، حمله",
|
||||||
|
"Dark Mode": "الوضع الداكن",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||||
|
"Start over": "Start over"
|
||||||
}
|
}
|
||||||
|
53
i18n/bg.json
53
i18n/bg.json
@ -3,7 +3,6 @@
|
|||||||
"%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 %sin the browser%s using 256 bits AES.": "%s е изчистен и изцяло достъпен като отворен код, онлайн \"paste\" услуга, където сървъра не знае подадената информация. Тя се шифрова/дешифрова %sвъв браузъра%s използвайки 256 битов AES алгоритъм.",
|
||||||
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Повече информация може да намерите на <a href=\"https://privatebin.info/\">страницата на проекта (Английски)</a>.",
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Повече информация може да намерите на <a href=\"https://privatebin.info/\">страницата на проекта (Английски)</a>.",
|
||||||
"Because ignorance is bliss": "Невежеството е блаженство",
|
"Because ignorance is bliss": "Невежеството е блаженство",
|
||||||
"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 php %s or above to work. Sorry.": "%s има нужда от PHP %s или по-нова, за да работи. Съжалявам.",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s задължава отдела от настройките [%s] да съществува във файла със настройките.",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s задължава отдела от настройките [%s] да съществува във файла със настройките.",
|
||||||
@ -11,6 +10,8 @@
|
|||||||
"Моля изчакайте една секунда между всяка публикация.",
|
"Моля изчакайте една секунда между всяка публикация.",
|
||||||
"Моля изчакайте %d секунди между всяка публикация.",
|
"Моля изчакайте %d секунди между всяка публикация.",
|
||||||
"Моля изчакайте %d секунди между всяка публикация.",
|
"Моля изчакайте %d секунди между всяка публикация.",
|
||||||
|
"Моля изчакайте %d секунди между всяка публикация.",
|
||||||
|
"Моля изчакайте %d секунди между всяка публикация.",
|
||||||
"Моля изчакайте %d секунди между всяка публикация."
|
"Моля изчакайте %d секунди между всяка публикация."
|
||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "Съдържанието е ограничено до %s криптирана информация.",
|
"Paste is limited to %s of encrypted data.": "Съдържанието е ограничено до %s криптирана информация.",
|
||||||
@ -25,7 +26,7 @@
|
|||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Услугата %s се нуждае от JavaScript, за да работи. Съжаляваме за неудобството.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Услугата %s се нуждае от JavaScript, за да работи. Съжаляваме за неудобството.",
|
||||||
"%s requires a modern browser to work.": "%s се нуждае от съвременен браузър за да работи.",
|
"%s requires a modern browser to work.": "%s се нуждае от съвременен браузър за да работи.",
|
||||||
"New": "Създаване",
|
"New": "Създаване",
|
||||||
"Send": "Изпрати",
|
"Create": "Създай",
|
||||||
"Clone": "Дублирай",
|
"Clone": "Дублирай",
|
||||||
"Raw text": "Чист текст",
|
"Raw text": "Чист текст",
|
||||||
"Expires": "Изтича",
|
"Expires": "Изтича",
|
||||||
@ -38,42 +39,56 @@
|
|||||||
"%d секунди",
|
"%d секунди",
|
||||||
"%d секунда",
|
"%d секунда",
|
||||||
"%d секунда",
|
"%d секунда",
|
||||||
|
"%d секунда",
|
||||||
|
"%d секунда",
|
||||||
"%d секунда"
|
"%d секунда"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"%d минути",
|
"%d минути",
|
||||||
"%d минута",
|
"%d минута",
|
||||||
"%d минута",
|
"%d минута",
|
||||||
|
"%d минута",
|
||||||
|
"%d минута",
|
||||||
"%d минута"
|
"%d минута"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d часа",
|
"%d часа",
|
||||||
"%d час",
|
"%d час",
|
||||||
"%d час",
|
"%d час",
|
||||||
|
"%d час",
|
||||||
|
"%d час",
|
||||||
"%d час"
|
"%d час"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d дни",
|
"%d дни",
|
||||||
"%d ден",
|
"%d ден",
|
||||||
"%d ден",
|
"%d ден",
|
||||||
|
"%d ден",
|
||||||
|
"%d ден",
|
||||||
"%d ден"
|
"%d ден"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d седмици",
|
"%d седмици",
|
||||||
"%d седмица",
|
"%d седмица",
|
||||||
"%d седмица",
|
"%d седмица",
|
||||||
|
"%d седмица",
|
||||||
|
"%d седмица",
|
||||||
"%d седмица"
|
"%d седмица"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d месеци",
|
"%d месеци",
|
||||||
"%d месец",
|
"%d месец",
|
||||||
"%d месец",
|
"%d месец",
|
||||||
|
"%d месец",
|
||||||
|
"%d месец",
|
||||||
"%d месец"
|
"%d месец"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
"%d години",
|
"%d години",
|
||||||
"%d година",
|
"%d година",
|
||||||
"%d година",
|
"%d година",
|
||||||
|
"%d година",
|
||||||
|
"%d година",
|
||||||
"%d година"
|
"%d година"
|
||||||
],
|
],
|
||||||
"Never": "Никога",
|
"Never": "Никога",
|
||||||
@ -82,30 +97,40 @@
|
|||||||
"Този документ изтича след една секунда.",
|
"Този документ изтича след една секунда.",
|
||||||
"Този документ изтича след %d секунди.",
|
"Този документ изтича след %d секунди.",
|
||||||
"Този документ изтича след %d секунди.",
|
"Този документ изтича след %d секунди.",
|
||||||
|
"Този документ изтича след %d секунди.",
|
||||||
|
"Този документ изтича след %d секунди.",
|
||||||
"Този документ изтича след %d секунди."
|
"Този документ изтича след %d секунди."
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"Този документ изтича след една минута.",
|
"Този документ изтича след една минута.",
|
||||||
"Този документ изтича след %d минути.",
|
"Този документ изтича след %d минути.",
|
||||||
"Този документ изтича след %d минути.",
|
"Този документ изтича след %d минути.",
|
||||||
|
"Този документ изтича след %d минути.",
|
||||||
|
"Този документ изтича след %d минути.",
|
||||||
"Този документ изтича след %d минути."
|
"Този документ изтича след %d минути."
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"Този документ изтича след един час.",
|
"Този документ изтича след един час.",
|
||||||
"Този документ изтича след %d часа.",
|
"Този документ изтича след %d часа.",
|
||||||
"Този документ изтича след %d часа.",
|
"Този документ изтича след %d часа.",
|
||||||
|
"Този документ изтича след %d часа.",
|
||||||
|
"Този документ изтича след %d часа.",
|
||||||
"Този документ изтича след %d часа."
|
"Този документ изтича след %d часа."
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"Този документ изтича след един ден.",
|
"Този документ изтича след един ден.",
|
||||||
"Този документ изтича след %d дни.",
|
"Този документ изтича след %d дни.",
|
||||||
"Този документ изтича след %d дни.",
|
"Този документ изтича след %d дни.",
|
||||||
|
"Този документ изтича след %d дни.",
|
||||||
|
"Този документ изтича след %d дни.",
|
||||||
"Този документ изтича след %d дни."
|
"Този документ изтича след %d дни."
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
"Този документ изтича след една година.",
|
"Този документ изтича след една година.",
|
||||||
"Този документ изтича след %d години.",
|
"Този документ изтича след %d години.",
|
||||||
"Този документ изтича след %d години.",
|
"Този документ изтича след %d години.",
|
||||||
|
"Този документ изтича след %d години.",
|
||||||
|
"Този документ изтича след %d години.",
|
||||||
"Този документ изтича след %d години."
|
"Този документ изтича след %d години."
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "Моля въведете паролата за това съдържание:",
|
"Please enter the password for this paste:": "Моля въведете паролата за това съдържание:",
|
||||||
@ -139,7 +164,7 @@
|
|||||||
"EiB": "EiB",
|
"EiB": "EiB",
|
||||||
"ZiB": "ZiB",
|
"ZiB": "ZiB",
|
||||||
"YiB": "YiB",
|
"YiB": "YiB",
|
||||||
"Format": "Format",
|
"Format": "Формат",
|
||||||
"Plain Text": "Чист текст",
|
"Plain Text": "Чист текст",
|
||||||
"Source Code": "Изходен код",
|
"Source Code": "Изходен код",
|
||||||
"Markdown": "Markdown",
|
"Markdown": "Markdown",
|
||||||
@ -172,18 +197,28 @@
|
|||||||
"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.",
|
"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",
|
"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.",
|
"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",
|
"Retry": "Нов опит",
|
||||||
"Showing raw text…": "Showing raw text…",
|
"Showing raw text…": "Showing raw text…",
|
||||||
"Notice:": "Notice:",
|
"Notice:": "Известие:",
|
||||||
"This link will expire after %s.": "This link will expire after %s.",
|
"This link will expire after %s.": "This link will expire after %s.",
|
||||||
"This link can only be accessed once, do not use back or refresh button in your browser.": "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.": "This link can only be accessed once, do not use back or refresh button in your browser.",
|
||||||
"Link:": "Link:",
|
"Link:": "Връзка:",
|
||||||
"Recipient may become aware of your timezone, convert time to UTC?": "Recipient may become aware of your timezone, convert time to UTC?",
|
"Recipient may become aware of your timezone, convert time to UTC?": "Recipient may become aware of your timezone, convert time to UTC?",
|
||||||
"Use Current Timezone": "Use Current Timezone",
|
"Use Current Timezone": "Use Current Timezone",
|
||||||
"Convert To UTC": "Convert To UTC",
|
"Convert To UTC": "Convert To UTC",
|
||||||
"Close": "Close",
|
"Close": "Затваряне",
|
||||||
"Encrypted note on PrivateBin": "Encrypted note on PrivateBin",
|
"Encrypted note on %s": "Encrypted note on %s",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
|
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
||||||
"Save paste": "Save paste"
|
"Save paste": "Save paste",
|
||||||
|
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".",
|
||||||
|
"Error parsing YOURLS response.": "Error parsing YOURLS response.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
|
||||||
|
"Yes, see it": "Yes, see it",
|
||||||
|
"Dark Mode": "Dark Mode",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||||
|
"Start over": "Start over"
|
||||||
}
|
}
|
||||||
|
195
i18n/ca.json
195
i18n/ca.json
@ -3,15 +3,16 @@
|
|||||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s és un pastebin en línia de codi obert i minimalista on el servidor no té coneixement de les dades enganxades. Les dades estan encriptades/desxifrades %sen el navegador%s utilitzant AES de 256 bits.",
|
"%s is a minimalist, open source online pastebin where the server has zero knowledge of 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>.",
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Més informació a la <a href=\"https://privatebin.info/\">pàgina del projecte</a>.",
|
||||||
"Because ignorance is bliss": "Perquè la ignorància és felicitat",
|
"Because ignorance is bliss": "Perquè la ignorància és felicitat",
|
||||||
"en": "ca",
|
|
||||||
"Paste does not exist, has expired or has been deleted.": "El paste no existeix, ha caducat o s'ha eliminat.",
|
"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 php %s or above to work. Sorry.": "%s requereix php %s o superior per funcionar. Ho sento.",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s requereix que la secció de configuració [%s] sigui present al fitxer de configuració.",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s requereix que la secció de configuració [%s] sigui present al fitxer de configuració.",
|
||||||
"Please wait %d seconds between each post.": [
|
"Please wait %d seconds between each post.": [
|
||||||
"Espereu %d segon entre cada entrada. (singular)",
|
"Espereu %d segon entre cada entrada.",
|
||||||
"Espereu %d segons entre cada entrada. (1r plural)",
|
"Espereu %d segons entre cada entrada.",
|
||||||
"Espereu %d segons entre cada entrada. (2n plural)",
|
"Espereu %d segons entre cada entrada.",
|
||||||
"Please wait %d seconds between each post. (3er plural)"
|
"Espereu %d segons entre cada entrada.",
|
||||||
|
"Espereu %d segons entre cada entrada.",
|
||||||
|
"Espereu %d segons entre cada entrada."
|
||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "L'enganxat està limitat a %s de dades encriptades.",
|
"Paste is limited to %s of encrypted data.": "L'enganxat està limitat a %s de dades encriptades.",
|
||||||
"Invalid data.": "Dades no vàlides.",
|
"Invalid data.": "Dades no vàlides.",
|
||||||
@ -19,13 +20,13 @@
|
|||||||
"Error saving comment. Sorry.": "S'ha produït un error en desar el comentari. Ho sento.",
|
"Error saving comment. Sorry.": "S'ha produït un error en desar el comentari. Ho sento.",
|
||||||
"Error saving paste. Sorry.": "S'ha produït un error en desar l'enganxat. Ho sento.",
|
"Error saving paste. Sorry.": "S'ha produït un error en desar l'enganxat. Ho sento.",
|
||||||
"Invalid paste ID.": "Identificador d'enganxament no vàlid.",
|
"Invalid paste ID.": "Identificador d'enganxament no vàlid.",
|
||||||
"Paste is not of burn-after-reading type.": "Paste is not of burn-after-reading type.",
|
"Paste is not of burn-after-reading type.": "La nota no és del tipus eliminar després de llegir.",
|
||||||
"Wrong deletion token. Paste was not deleted.": "Wrong deletion token. Paste was not deleted.",
|
"Wrong deletion token. Paste was not deleted.": "El token d'eliminació és incorrecte. El Paste no s'ha eliminat.",
|
||||||
"Paste was properly deleted.": "Paste was properly deleted.",
|
"Paste was properly deleted.": "El Paste s'ha esborrat correctament.",
|
||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Cal JavaScript perquè %s funcioni. Em sap greu les molèsties.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Cal JavaScript perquè %s funcioni. Em sap greu les molèsties.",
|
||||||
"%s requires a modern browser to work.": "%s requereix un navegador modern per funcionar.",
|
"%s requires a modern browser to work.": "%s requereix un navegador modern per funcionar.",
|
||||||
"New": "Nou",
|
"New": "Nou",
|
||||||
"Send": "Enviar",
|
"Create": "Crear",
|
||||||
"Clone": "Clona",
|
"Clone": "Clona",
|
||||||
"Raw text": "Text sense processar",
|
"Raw text": "Text sense processar",
|
||||||
"Expires": "Caducitat",
|
"Expires": "Caducitat",
|
||||||
@ -35,101 +36,125 @@
|
|||||||
"Discussion": "Discussió",
|
"Discussion": "Discussió",
|
||||||
"Toggle navigation": "Alternar navegació",
|
"Toggle navigation": "Alternar navegació",
|
||||||
"%d seconds": [
|
"%d seconds": [
|
||||||
"%d second (singular)",
|
"%d segon",
|
||||||
"%d seconds (1st plural)",
|
"%d segons",
|
||||||
"%d seconds (2nd plural)",
|
"%d segons",
|
||||||
"%d seconds (3rd plural)"
|
"%d segons",
|
||||||
|
"%d segons",
|
||||||
|
"%d segons"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"%d minute (singular)",
|
"%d minut",
|
||||||
"%d minutes (1st plural)",
|
"%d minuts",
|
||||||
"%d minutes (2nd plural)",
|
"%d minutes (2nd plural)",
|
||||||
"%d minutes (3rd plural)"
|
"%d minutes (3rd plural)",
|
||||||
|
"%d minuts",
|
||||||
|
"%d minuts"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d hour (singular)",
|
"%d hora",
|
||||||
"%d hours (1st plural)",
|
"%d hores",
|
||||||
"%d hours (2nd plural)",
|
"%d hours (2nd plural)",
|
||||||
"%d hours (3rd plural)"
|
"%d hours (3rd plural)",
|
||||||
|
"%d hores",
|
||||||
|
"%d hores"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d day (singular)",
|
"%d dia",
|
||||||
"%d days (1st plural)",
|
"%d dies",
|
||||||
"%d days (2nd plural)",
|
"%d dies",
|
||||||
"%d days (3rd plural)"
|
"%d dies",
|
||||||
|
"%d dies",
|
||||||
|
"%d dies"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d week (singular)",
|
"%d setmana",
|
||||||
"%d weeks (1st plural)",
|
"%d setmanes",
|
||||||
"%d weeks (2nd plural)",
|
"%d setmanes",
|
||||||
"%d weeks (3rd plural)"
|
"%d setmanes",
|
||||||
|
"%d setmanes",
|
||||||
|
"%d setmanes"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d month (singular)",
|
"%d mes",
|
||||||
"%d months (1st plural)",
|
"%d mesos",
|
||||||
"%d months (2nd plural)",
|
"%d mesos",
|
||||||
"%d months (3rd plural)"
|
"%d mesos",
|
||||||
|
"%d mesos",
|
||||||
|
"%d mesos"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
"%d year (singular)",
|
"%d any",
|
||||||
"%d years (1st plural)",
|
"%d anys",
|
||||||
"%d years (2nd plural)",
|
"%d anys",
|
||||||
"%d years (3rd plural)"
|
"%d anys",
|
||||||
|
"%d anys",
|
||||||
|
"%d anys"
|
||||||
],
|
],
|
||||||
"Never": "Never",
|
"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.",
|
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Nota: Aquest és un servei de prova. Les dades s'eliminaran. Molts gatets moriran si abuses d'aquest servei.",
|
||||||
"This document will expire in %d seconds.": [
|
"This document will expire in %d seconds.": [
|
||||||
"This document will expire in %d second. (singular)",
|
"Aquest document caducarà d'aquí %d segon.",
|
||||||
"This document will expire in %d seconds. (1st plural)",
|
"Aquest document caducarà d'aquí %d segons.",
|
||||||
"This document will expire in %d seconds. (2nd plural)",
|
"Aquest document caducarà d'aquí %d segons.",
|
||||||
"This document will expire in %d seconds. (3rd plural)"
|
"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.": [
|
"This document will expire in %d minutes.": [
|
||||||
"This document will expire in %d minute. (singular)",
|
"Aquest document caducarà d'aquí %d minut.",
|
||||||
"This document will expire in %d minutes. (1st plural)",
|
"Aquest document caducarà d'aquí %d minuts.",
|
||||||
"This document will expire in %d minutes. (2nd plural)",
|
"Aquest document caducarà d'aquí %d minuts.",
|
||||||
"This document will expire in %d minutes. (3rd plural)"
|
"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.": [
|
"This document will expire in %d hours.": [
|
||||||
"This document will expire in %d hour. (singular)",
|
"Aquest document caducarà d'aquí %d hora.",
|
||||||
"This document will expire in %d hours. (1st plural)",
|
"Aquest document caducarà d'aquí %d hores.",
|
||||||
"This document will expire in %d hours. (2nd plural)",
|
"Aquest document caducarà d'aquí %d hores.",
|
||||||
"This document will expire in %d hours. (3rd plural)"
|
"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.": [
|
"This document will expire in %d days.": [
|
||||||
"This document will expire in %d day. (singular)",
|
"Aquest document caducarà d'aquí %d dia.",
|
||||||
"This document will expire in %d days. (1st plural)",
|
"Aquest document caducarà d'aquí %d dies.",
|
||||||
"This document will expire in %d days. (2nd plural)",
|
"Aquest document caducarà d'aquí %d dies.",
|
||||||
"This document will expire in %d days. (3rd plural)"
|
"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.": [
|
"This document will expire in %d months.": [
|
||||||
"This document will expire in %d month. (singular)",
|
"Aquest document caducarà d'aquí %d mes.",
|
||||||
"This document will expire in %d months. (1st plural)",
|
"Aquest document caducarà d'aquí %d mesos.",
|
||||||
"This document will expire in %d months. (2nd plural)",
|
"Aquest document caducarà d'aquí %d mesos.",
|
||||||
"This document will expire in %d months. (3rd plural)"
|
"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:": "Please enter the password for this paste:",
|
"Please enter the password for this paste:": "Si us plau, introdueix la contrasenya per aquest paste:",
|
||||||
"Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)",
|
"Could not decrypt data (Wrong key?)": "No s'han pogut desxifrar les dades (Clau incorrecte?)",
|
||||||
"Could not delete the paste, it was not stored in burn after reading mode.": "Could not delete the paste, it was not stored in burn after reading mode.",
|
"Could not delete the 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.",
|
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.",
|
||||||
"Could not decrypt comment; Wrong key?": "Could not decrypt comment; Wrong key?",
|
"Could not decrypt comment; Wrong key?": "Could not decrypt comment; Wrong key?",
|
||||||
"Reply": "Reply",
|
"Reply": "Respondre",
|
||||||
"Anonymous": "Anonymous",
|
"Anonymous": "Anònim",
|
||||||
"Avatar generated from IP address": "Avatar generated from IP address",
|
"Avatar generated from IP address": "Avatar generat a partir de l'adreça IP",
|
||||||
"Add comment": "Add comment",
|
"Add comment": "Afegir comentari",
|
||||||
"Optional nickname…": "Optional nickname…",
|
"Optional nickname…": "Pseudònim opcional…",
|
||||||
"Post comment": "Post comment",
|
"Post comment": "Publicar comentari",
|
||||||
"Sending comment…": "Sending comment…",
|
"Sending comment…": "Enviant comentari…",
|
||||||
"Comment posted.": "Comment posted.",
|
"Comment posted.": "Comentari publicat.",
|
||||||
"Could not refresh display: %s": "Could not refresh display: %s",
|
"Could not refresh display: %s": "Could not refresh display: %s",
|
||||||
"unknown status": "unknown status",
|
"unknown status": "estat desconegut",
|
||||||
"server error or not responding": "server error or not responding",
|
"server error or not responding": "server error or not responding",
|
||||||
"Could not post comment: %s": "Could not post comment: %s",
|
"Could not post comment: %s": "No s'ha pogut publicar el comentari: %s",
|
||||||
"Sending paste…": "Sending paste…",
|
"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>",
|
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>",
|
||||||
"Delete data": "Delete data",
|
"Delete data": "Esborrar les dades",
|
||||||
"Could not create paste: %s": "Could not create paste: %s",
|
"Could not create paste: %s": "Could not create paste: %s",
|
||||||
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "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?)": "No es pot desxifrar la nota: falta la clau de desxifrat a l'URL (vau utilitzar un adreçament o un escurçador d'URL que elimina part de l'URL?)",
|
||||||
"B": "B",
|
"B": "B",
|
||||||
"KiB": "KiB",
|
"KiB": "KiB",
|
||||||
"MiB": "MiB",
|
"MiB": "MiB",
|
||||||
@ -140,15 +165,15 @@
|
|||||||
"ZiB": "ZiB",
|
"ZiB": "ZiB",
|
||||||
"YiB": "YiB",
|
"YiB": "YiB",
|
||||||
"Format": "Format",
|
"Format": "Format",
|
||||||
"Plain Text": "Plain Text",
|
"Plain Text": "Text sense format",
|
||||||
"Source Code": "Source Code",
|
"Source Code": "Codi font",
|
||||||
"Markdown": "Markdown",
|
"Markdown": "Markdown",
|
||||||
"Download attachment": "Download attachment",
|
"Download attachment": "Baixar els adjunts",
|
||||||
"Cloned: '%s'": "Cloned: '%s'",
|
"Cloned: '%s'": "Cloned: '%s'",
|
||||||
"The cloned file '%s' was attached to this paste.": "The cloned file '%s' was attached to this paste.",
|
"The cloned file '%s' was attached to this paste.": "The cloned file '%s' was attached to this paste.",
|
||||||
"Attach a file": "Attach a file",
|
"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",
|
"alternatively drag & drop a file or paste an image from the clipboard": "alternativament, pots arrossegar i deixar anar un fitxer o enganxar una imatge des del porta-retalls",
|
||||||
"File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.",
|
"File too large, to display a preview. Please download the attachment.": "El fitxer és massa gran per fer una vista prèvia. Si us plau, descarrega l'adjunt.",
|
||||||
"Remove attachment": "Remove attachment",
|
"Remove attachment": "Remove attachment",
|
||||||
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Your browser does not support uploading encrypted files. Please use a newer browser.",
|
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Your browser does not support uploading encrypted files. Please use a newer browser.",
|
||||||
"Invalid attachment.": "Invalid attachment.",
|
"Invalid attachment.": "Invalid attachment.",
|
||||||
@ -182,8 +207,18 @@
|
|||||||
"Use Current Timezone": "Use Current Timezone",
|
"Use Current Timezone": "Use Current Timezone",
|
||||||
"Convert To UTC": "Convert To UTC",
|
"Convert To UTC": "Convert To UTC",
|
||||||
"Close": "Close",
|
"Close": "Close",
|
||||||
"Encrypted note on PrivateBin": "Encrypted note on PrivateBin",
|
"Encrypted note on %s": "Encrypted note on %s",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
|
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
||||||
"Save paste": "Save paste"
|
"Save paste": "Save paste",
|
||||||
|
"Your IP is not authorized to create pastes.": "La teva IP no està autoritzada a crear notes.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "S'està intentant escurçar un URL que no apunta a la nostra instància.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error en la crida a YOURLS. Probablement és un problema de configuració, com ara \"apiurl\" o \"signature\" incorrectes o que falten.",
|
||||||
|
"Error parsing YOURLS response.": "Error parsing YOURLS response.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "Aquest missatge secret sols es pot veure una vegada. Vols obrir-ho ara?",
|
||||||
|
"Yes, see it": "Yes, see it",
|
||||||
|
"Dark Mode": "Dark Mode",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Error de compressió de la nota, no hi ha suport de WebAssembly.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||||
|
"Start over": "Start over"
|
||||||
}
|
}
|
||||||
|
224
i18n/co.json
Normal file
224
i18n/co.json
Normal file
@ -0,0 +1,224 @@
|
|||||||
|
{
|
||||||
|
"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 d’appiccicu 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ù d’infurmazione annant’à a <a href=\"https://privatebin.info/\">pagina di u prughjettu</a>.",
|
||||||
|
"Because ignorance is bliss": "Perchè l’ignurenza hè una campa",
|
||||||
|
"Paste does not exist, has expired or has been deleted.": "L’appiccicu ù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.",
|
||||||
|
"Aspettate %d seconde trà dui publicazioni.",
|
||||||
|
"Aspettate %d seconde trà dui publicazioni."
|
||||||
|
],
|
||||||
|
"Paste is limited to %s of encrypted data.": "L’appiccicu 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 à l’arregistramentu di u cummentu.",
|
||||||
|
"Error saving paste. Sorry.": "Per disgrazzia, ci hè un sbagliu à l’arregistramentu di l’appiccicu.",
|
||||||
|
"Invalid paste ID.": "N° di l’appiccicu inaccettevule.",
|
||||||
|
"Paste is not of burn-after-reading type.": "L’appiccicu ùn hè micca di tipu « Squassà dopu a lettura ».",
|
||||||
|
"Wrong deletion token. Paste was not deleted.": "Gettone di squassatura incurrettu. L’appiccicu ùn hè micca statu squassatu.",
|
||||||
|
"Paste was properly deleted.": "L’appiccicu 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",
|
||||||
|
"Create": "Creà",
|
||||||
|
"Clone": "Duppione",
|
||||||
|
"Raw text": "Testu grossu",
|
||||||
|
"Expires": "Scadenza",
|
||||||
|
"Burn after reading": "Squassà dopu a lettura",
|
||||||
|
"Open discussion": "Apre una chjachjerata",
|
||||||
|
"Password (recommended)": "Parolla d’intesa (ricumandata)",
|
||||||
|
"Discussion": "Chjachjerata",
|
||||||
|
"Toggle navigation": "Invertisce a navigazione",
|
||||||
|
"%d seconds": [
|
||||||
|
"%d seconda",
|
||||||
|
"%d seconde",
|
||||||
|
"%d seconde",
|
||||||
|
"%d seconde",
|
||||||
|
"%d seconde",
|
||||||
|
"%d seconde"
|
||||||
|
],
|
||||||
|
"%d minutes": [
|
||||||
|
"%d minutu",
|
||||||
|
"%d minuti",
|
||||||
|
"%d minuti",
|
||||||
|
"%d minuti",
|
||||||
|
"%d minuti",
|
||||||
|
"%d minuti"
|
||||||
|
],
|
||||||
|
"%d hours": [
|
||||||
|
"%d ora",
|
||||||
|
"%d ore",
|
||||||
|
"%d ore",
|
||||||
|
"%d ore",
|
||||||
|
"%d ore",
|
||||||
|
"%d ore"
|
||||||
|
],
|
||||||
|
"%d days": [
|
||||||
|
"%d ghjornu",
|
||||||
|
"%d ghjorni",
|
||||||
|
"%d ghjorni",
|
||||||
|
"%d ghjorni",
|
||||||
|
"%d ghjorni",
|
||||||
|
"%d ghjorni"
|
||||||
|
],
|
||||||
|
"%d weeks": [
|
||||||
|
"%d settimana",
|
||||||
|
"%d settimane",
|
||||||
|
"%d settimane",
|
||||||
|
"%d settimane",
|
||||||
|
"%d settimane",
|
||||||
|
"%d settimane"
|
||||||
|
],
|
||||||
|
"%d months": [
|
||||||
|
"%d mese",
|
||||||
|
"%d mesi",
|
||||||
|
"%d mesi",
|
||||||
|
"%d mesi",
|
||||||
|
"%d mesi",
|
||||||
|
"%d mesi"
|
||||||
|
],
|
||||||
|
"%d years": [
|
||||||
|
"%d annu",
|
||||||
|
"%d anni",
|
||||||
|
"%d anni",
|
||||||
|
"%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.",
|
||||||
|
"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.",
|
||||||
|
"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.",
|
||||||
|
"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.",
|
||||||
|
"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.",
|
||||||
|
"Stu ducumentu serà scadutu in %d mesi.",
|
||||||
|
"Stu ducumentu serà scadutu in %d mesi."
|
||||||
|
],
|
||||||
|
"Please enter the password for this paste:": "Stampittate a parolla d’intesa per st’appiccicu :",
|
||||||
|
"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à l’appiccicu, ù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Ù L’OCHJI. Ù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 l’indirizzu 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à l’affissera : %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 l’appiccicu…",
|
||||||
|
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "U vostru appiccicu si trova à l’indirizzu<a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Appughjate [Ctrl]+[c] per cupià u liame)</span>",
|
||||||
|
"Delete data": "Squassà i dati",
|
||||||
|
"Could not create paste: %s": "Ùn si pò micca creà l’appiccicu : %s",
|
||||||
|
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Ùn si pò micca dicifrà l’appiccicu : A chjave di dicifratura hè assente in l’indirizzu. Averiate impiegatu un orientadore d’indirizzu o un riduttore chì ammuzzeghja una parte di l’indirizzu ?",
|
||||||
|
"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 à st’appiccicu.",
|
||||||
|
"Attach a file": "Aghjunghje un schedariu",
|
||||||
|
"alternatively drag & drop a file or paste an image from the clipboard": "in alternanza, sguillà è depone un schedariu o incullà una fiura da u preme’papei",
|
||||||
|
"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 l’inviu di i schedarii cifrati. Impiegate un navigatore più recente.",
|
||||||
|
"Invalid attachment.": "A pezza aghjunta hè inaccettevule.",
|
||||||
|
"Options": "Ozzioni",
|
||||||
|
"Shorten URL": "Ammuzzà l’indirizzu",
|
||||||
|
"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 d’intesa",
|
||||||
|
"Loading…": "Caricamentu…",
|
||||||
|
"Decrypting paste…": "Dicifratura di l’appiccicu…",
|
||||||
|
"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 l’appiccicu : %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 l’usu di l’API 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 l’utilizatore per furnisce una parolla d’intesa",
|
||||||
|
"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 d’intesa 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 l’ora 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 l’indirizzu à qualunque li permette d’accede à a nota dinù.",
|
||||||
|
"URL shortener may expose your decrypt key in URL.": "Un ammuzzatore d’indirizzu pò palisà a vostra chjave di dicifratura in l’indirizzu.",
|
||||||
|
"Save paste": "Arregistrà l’appiccicu",
|
||||||
|
"Your IP is not authorized to create pastes.": "U vostru indirizzu IP ùn hè micca auturizatu à creà l’appiccichi.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "Pruvate d’ammuzzà 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 l’analisa di a risposta di YOURLS.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "Stu messaghju secretu pò esse affissatu solu una volta. Vulete fighjallu subitu ?",
|
||||||
|
"Yes, see it": "Iè, fighjallu",
|
||||||
|
"Dark Mode": "Modu scuru",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Sbagliu durante a cumpressione di l’appiccicu, perchè WebAssembly ùn hè micca accettatu.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Sbagliu durante a scumpressione di l’appiccicu, perchè u vostru navigatore ùn accetteghja micca WebAssembly. Ci vole à impiegà un altru navigatore per affissà st’appiccicu.",
|
||||||
|
"Start over": "Principià torna"
|
||||||
|
}
|
265
i18n/cs.json
265
i18n/cs.json
@ -1,135 +1,160 @@
|
|||||||
{
|
{
|
||||||
"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 %sin the browser%s using 256 bits AES.": "%s je minimalistický open source 'pastebin' server, který nemá přístup ke vloženým datům. Data jsou šifrována %sv prohlížeči%s pomocí 256bitového AES.",
|
||||||
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Více informací na <a href=\"https://privatebin.info/\">stránce projetu</a>.",
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Více informací na <a href=\"https://privatebin.info/\">stránce projektu</a>.",
|
||||||
"Because ignorance is bliss": "Protože nevědomost je sladká",
|
"Because ignorance is bliss": "Protože nevědomost je sladká",
|
||||||
"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.": "Vložený text neexistuje, expiroval nebo byl odstraněn.",
|
||||||
"%s requires php %s or above to work. Sorry.": "%s vyžaduje php %s nebo vyšší. Lituji.",
|
"%s requires php %s or above to work. Sorry.": "%s vyžaduje php %s nebo vyšší. Lituji.",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s vyžaduje, aby byla v konfiguračním souboru přítomna sekce [%s].",
|
||||||
"Please wait %d seconds between each post.": [
|
"Please wait %d seconds between each post.": [
|
||||||
"Počet sekund do dalšího příspěvku: %d.",
|
"Vyčkejte prosím %d sekundu mezi následujícími příspěvky.",
|
||||||
"Počet sekund do dalšího příspěvku: %d.",
|
"Vyčkejte prosím %d sekundy mezi následujícími příspěvky.",
|
||||||
"Počet sekund do dalšího příspěvku: %d.",
|
"Vyčkejte prosím %d sekund mezi následujícími příspěvky.",
|
||||||
"Počet sekund do dalšího příspěvku: %d."
|
"Vyčkejte prosím %d sekund mezi následujícími příspěvky.",
|
||||||
|
"Vyčkejte prosím %d sekund mezi následujícími příspěvky.",
|
||||||
|
"Vyčkejte prosím %d sekund mezi následujícími příspěvky."
|
||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "Příspěvek je limitován na %s šífrovaných dat",
|
"Paste is limited to %s of encrypted data.": "Příspěvek je limitován na %s šífrovaných dat",
|
||||||
"Invalid data.": "Chybná data.",
|
"Invalid data.": "Chybná data.",
|
||||||
"You are unlucky. Try again.": "Lituji, zkuste to znovu.",
|
"You are unlucky. Try again.": "Lituji, zkuste to znovu.",
|
||||||
"Error saving comment. Sorry.": "Chyba při ukládání komentáře.",
|
"Error saving comment. Sorry.": "Chyba při ukládání komentáře. Promiňte.",
|
||||||
"Error saving paste. Sorry.": "Chyba při ukládání příspěvku.",
|
"Error saving paste. Sorry.": "Chyba při ukládání příspěvku. Promiňte.",
|
||||||
"Invalid paste ID.": "Chybně vložené ID.",
|
"Invalid paste ID.": "Chybné ID příspěvku.",
|
||||||
"Paste is not of burn-after-reading type.": "Paste is not of burn-after-reading type.",
|
"Paste is not of burn-after-reading type.": "Příspěvek není nastaven na smazání po přečtení.",
|
||||||
"Wrong deletion token. Paste was not deleted.": "Wrong deletion token. Paste was not deleted.",
|
"Wrong deletion token. Paste was not deleted.": "Chybný token pro odstranění. Příspěvek nebyl smazán.",
|
||||||
"Paste was properly deleted.": "Paste was properly deleted.",
|
"Paste was properly deleted.": "Příspěvek byl řádně smazán.",
|
||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Pro fungování %s je vyžadován JavaScript. Omlouváme se za nepříjemnosti.",
|
||||||
"%s requires a modern browser to work.": "%%s requires a modern browser to work.",
|
"%s requires a modern browser to work.": "Pro fungování %s je vyžadován moderní prohlížeč.",
|
||||||
"New": "Nový",
|
"New": "Nový",
|
||||||
"Send": "Odeslat",
|
"Create": "Vytvořit",
|
||||||
"Clone": "Klonovat",
|
"Clone": "Klonovat",
|
||||||
"Raw text": "Pouze Text",
|
"Raw text": "Čistý text",
|
||||||
"Expires": "Expirace",
|
"Expires": "Expirace",
|
||||||
"Burn after reading": "Po přečtení smazat",
|
"Burn after reading": "Po přečtení smazat",
|
||||||
"Open discussion": "Povolit komentáře",
|
"Open discussion": "Povolit komentáře",
|
||||||
"Password (recommended)": "Heslo (doporučeno)",
|
"Password (recommended)": "Heslo (doporučeno)",
|
||||||
"Discussion": "Komentáře",
|
"Discussion": "Komentáře",
|
||||||
"Toggle navigation": "Toggle navigation",
|
"Toggle navigation": "Přepnout navigaci",
|
||||||
"%d seconds": [
|
"%d seconds": [
|
||||||
"%d sekuda",
|
"%d sekunda",
|
||||||
"%d sekundy",
|
"%d sekundy",
|
||||||
"%d sekund",
|
"%d sekund",
|
||||||
"%d seconds (3rd plural)"
|
"%d sekund",
|
||||||
|
"%d sekund",
|
||||||
|
"%d sekund"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"%d minuta",
|
"%d minuta",
|
||||||
"%d minuty",
|
"%d minuty",
|
||||||
"%d minut",
|
"%d minut",
|
||||||
"%d minutes (3rd plural)"
|
"%d minut",
|
||||||
|
"%d minut",
|
||||||
|
"%d minut"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d hodin",
|
"%d hodina",
|
||||||
"%d hodiny",
|
"%d hodiny",
|
||||||
"%d hodin",
|
"%d hodin",
|
||||||
"%d hours (3rd plural)"
|
"%d hodin",
|
||||||
|
"%d hodin",
|
||||||
|
"%d hodin"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d den",
|
"%d den",
|
||||||
"%d dny",
|
"%d dny",
|
||||||
"%d dní",
|
"%d dní",
|
||||||
"%d days (3rd plural)"
|
"%d dní",
|
||||||
|
"%d dní",
|
||||||
|
"%d dní"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d týden",
|
"%d týden",
|
||||||
"%d týdeny",
|
"%d týdny",
|
||||||
"%d týdnů",
|
"%d týdnů",
|
||||||
"%d weeks (3rd plural)"
|
"%d týdnů",
|
||||||
|
"%d týdnů",
|
||||||
|
"%d týdnů"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d měsíc",
|
"%d měsíc",
|
||||||
"%d měsíce",
|
"%d měsíce",
|
||||||
"%d měsíců",
|
"%d měsíců",
|
||||||
"%d months (3rd plural)"
|
"%d měsíců",
|
||||||
|
"%d měsíců",
|
||||||
|
"%d měsíců"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
"%d rok",
|
"%d rok",
|
||||||
"%d roky",
|
"%d roky",
|
||||||
"%d roků",
|
"%d let",
|
||||||
"%d years (3rd plural)"
|
"%d let",
|
||||||
|
"%d let",
|
||||||
|
"%d let"
|
||||||
],
|
],
|
||||||
"Never": "Nikdy",
|
"Never": "Nikdy",
|
||||||
"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.",
|
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Poznámka: Toto je testovací služba: Data mohou být kdykoliv smazána. Při zneužití této služby zemřou koťátka.",
|
||||||
"This document will expire in %d seconds.": [
|
"This document will expire in %d seconds.": [
|
||||||
"Tento dokument expiruje za %d sekundu.",
|
"Tento dokument expiruje za %d sekundu.",
|
||||||
"Tento dokument expiruje za %d sekundy.",
|
"Tento dokument expiruje za %d sekundy.",
|
||||||
"Tento dokument expiruje za %d sekund.",
|
"Tento dokument expiruje za %d sekund.",
|
||||||
"Tento dokument expiruje za %d sekund."
|
"Tento dokument expiruje za %d sekund.",
|
||||||
|
"Tento dokument expiruje za %d sekund.",
|
||||||
|
"Tento dokument expiruje za %d sekund."
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"Tento dokument expiruje za %d minutu.",
|
"Tento dokument expiruje za %d minutu.",
|
||||||
"Tento dokument expiruje za %d minuty.",
|
"Tento dokument expiruje za %d minuty.",
|
||||||
"Tento dokument expiruje za %d minut.",
|
"Tento dokument expiruje za %d minut.",
|
||||||
"Tento dokument expiruje za %d minut."
|
"Tento dokument expiruje za %d minut.",
|
||||||
|
"Tento dokument expiruje za %d minut.",
|
||||||
|
"Tento dokument expiruje za %d minut."
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"Tento dokument expiruje za %d hodinu.",
|
"Tento dokument expiruje za %d hodinu.",
|
||||||
"Tento dokument expiruje za %d hodiny.",
|
"Tento dokument expiruje za %d hodiny.",
|
||||||
"Tento dokument expiruje za %d hodin.",
|
"Tento dokument expiruje za %d hodin.",
|
||||||
"Tento dokument expiruje za %d hodin."
|
"Tento dokument expiruje za %d hodin.",
|
||||||
|
"Tento dokument expiruje za %d hodin.",
|
||||||
|
"Tento dokument expiruje za %d hodin."
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"Tento dokument expiruje za %d den.",
|
"Tento dokument expiruje za %d den.",
|
||||||
"Tento dokument expiruje za %d dny.",
|
"Tento dokument expiruje za %d dny.",
|
||||||
"Tento dokument expiruje za %d dny.",
|
"Tento dokument expiruje za %d dní.",
|
||||||
"Tento dokument expiruje za %d dny."
|
"Tento dokument expiruje za %d dní.",
|
||||||
|
"Tento dokument expiruje za %d dní.",
|
||||||
|
"Tento dokument expiruje za %d dní."
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
"Tento dokument expiruje za %d měsíc.",
|
"Tento dokument expiruje za %d měsíc.",
|
||||||
"Tento dokument expiruje za %d měsíce.",
|
"Tento dokument expiruje za %d měsíce.",
|
||||||
"Tento dokument expiruje za %d měsíců.",
|
"Tento dokument expiruje za %d měsíců.",
|
||||||
"Tento dokument expiruje za %d měsíců."
|
"Tento dokument expiruje za %d měsíců.",
|
||||||
|
"Tento dokument expiruje za %d měsíců.",
|
||||||
|
"Tento dokument expiruje za %d měsíců."
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "Zadejte prosím heslo:",
|
"Please enter the password for this paste:": "Zadejte prosím heslo k tomuto příspěvku:",
|
||||||
"Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)",
|
"Could not decrypt data (Wrong key?)": "Nepodařilo se dešifrovat data (Špatný klíč?)",
|
||||||
"Could not delete the paste, it was not stored in burn after reading mode.": "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.": "Nepodařilo se odstranit příspěvek, nebyl uložen v režimu smazání po přečtení.",
|
||||||
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "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.": "POUZE PRO VAŠE OČI. Nezavírejte toto okno, tuto zprávu nelze znovu zobrazit.",
|
||||||
"Could not decrypt comment; Wrong key?": "Could not decrypt comment; Wrong key?",
|
"Could not decrypt comment; Wrong key?": "Nepodařilo se dešifrovat komentář; Špatný klíč?",
|
||||||
"Reply": "Reply",
|
"Reply": "Odpovědět",
|
||||||
"Anonymous": "Anonym",
|
"Anonymous": "Anonym",
|
||||||
"Avatar generated from IP address": "Avatar generated from IP address",
|
"Avatar generated from IP address": "Avatar vygenerován podle IP adresy",
|
||||||
"Add comment": "Přidat komentář",
|
"Add comment": "Přidat komentář",
|
||||||
"Optional nickname…": "Volitelný nickname…",
|
"Optional nickname…": "Nepovinná přezdívka…",
|
||||||
"Post comment": "Odeslat komentář",
|
"Post comment": "Odeslat komentář",
|
||||||
"Sending comment…": "Odesílání komentáře…",
|
"Sending comment…": "Odesílání komentáře…",
|
||||||
"Comment posted.": "Komentář odeslán.",
|
"Comment posted.": "Komentář odeslán.",
|
||||||
"Could not refresh display: %s": "Could not refresh display: %s",
|
"Could not refresh display: %s": "Nepodařilo se obnovit zobrazení: %s",
|
||||||
"unknown status": "neznámý stav",
|
"unknown status": "neznámý stav",
|
||||||
"server error or not responding": "Chyba na serveru nebo server neodpovídá",
|
"server error or not responding": "Chyba na serveru nebo server neodpovídá",
|
||||||
"Could not post comment: %s": "Nelze odeslat komentář: %s",
|
"Could not post comment: %s": "Nelze odeslat komentář: %s",
|
||||||
"Sending paste…": "Odesílání příspěvku…",
|
"Sending 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>",
|
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Váš příspěvek je <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Stiskněte [Ctrl]+[c] pro zkopírování)</span>",
|
||||||
"Delete data": "Odstranit data",
|
"Delete data": "Odstranit data",
|
||||||
"Could not create paste: %s": "Nelze vytvořit příspěvek: %s",
|
"Could not create paste: %s": "Nepodařilo se vytvořit příspěvek: %s",
|
||||||
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Nepodařilo se dešifrovat příspěvek: V adrese chybí dešifrovací klíč (Možnou příčinou může být URL shortener?)",
|
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Nepodařilo se dešifrovat příspěvek: V adrese chybí dešifrovací klíč (Nepoužili jste přesměrovač nebo zkracovač URL, který maže části URL?)",
|
||||||
"B": "B",
|
"B": "B",
|
||||||
"KiB": "KiB",
|
"KiB": "KiB",
|
||||||
"MiB": "MiB",
|
"MiB": "MiB",
|
||||||
@ -140,50 +165,60 @@
|
|||||||
"ZiB": "ZiB",
|
"ZiB": "ZiB",
|
||||||
"YiB": "YiB",
|
"YiB": "YiB",
|
||||||
"Format": "Formát",
|
"Format": "Formát",
|
||||||
"Plain Text": "Prostý Text",
|
"Plain Text": "Prostý text",
|
||||||
"Source Code": "Zdrojový kód",
|
"Source Code": "Zdrojový kód",
|
||||||
"Markdown": "Markdown",
|
"Markdown": "Markdown",
|
||||||
"Download attachment": "Stáhnout přílohu",
|
"Download attachment": "Stáhnout přílohu",
|
||||||
"Cloned: '%s'": "Klonováno: '%s'",
|
"Cloned: '%s'": "Naklonováno: '%s'",
|
||||||
"The cloned file '%s' was attached to this paste.": "The cloned file '%s' was attached to this paste.",
|
"The cloned file '%s' was attached to this paste.": "Naklonovaný soubor „%s“ byl připojen k tomuto příspěvku.",
|
||||||
"Attach a file": "Připojit soubor",
|
"Attach a file": "Připojit soubor",
|
||||||
"alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard",
|
"alternatively drag & drop a file or paste an image from the clipboard": "případně přetáhněte soubor nebo vložte obrázek ze schránky",
|
||||||
"File too large, to display a preview. Please download the attachment.": "Soubor je příliš velký pro zobrazení náhledu. Stáhněte si přílohu.",
|
"File too large, to display a preview. Please download the attachment.": "Soubor je příliš velký pro zobrazení náhledu. Stáhněte si přílohu.",
|
||||||
"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": "Možnosti",
|
||||||
"Shorten URL": "Shorten URL",
|
"Shorten URL": "Zkrátit URL",
|
||||||
"Editor": "Editor",
|
"Editor": "Editor",
|
||||||
"Preview": "Náhled",
|
"Preview": "Náhled",
|
||||||
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s 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 vyžaduje, aby PATH končilo na „%s“. Aktualizujte PATH ve vašem souboru index.php.",
|
||||||
"Decrypt": "Decrypt",
|
"Decrypt": "Dešifrovat",
|
||||||
"Enter password": "Zadejte heslo",
|
"Enter password": "Zadejte heslo",
|
||||||
"Loading…": "Loading…",
|
"Loading…": "Načítání…",
|
||||||
"Decrypting paste…": "Decrypting paste…",
|
"Decrypting paste…": "Dešifruji příspěvek…",
|
||||||
"Preparing new paste…": "Preparing new paste…",
|
"Preparing new paste…": "Připravuji nový příspěvek…",
|
||||||
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "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>.": "Pokud tato zpráva nezmizí, podívejte se na <a href=\"%s\">tyto často kladené otázky pro řešení problémů</a>.",
|
||||||
"+++ no paste text +++": "+++ žádný vložený text +++",
|
"+++ no paste text +++": "+++ žádný text příspěvku +++",
|
||||||
"Could not get paste data: %s": "Could not get paste data: %s",
|
"Could not get paste data: %s": "Nepodařilo se získat data příspěvku: %s",
|
||||||
"QR code": "QR code",
|
"QR code": "QR kód",
|
||||||
"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.": "Tato stránka používá nezabezpečené HTTP připojení! Použijte ji prosím jen pro testování.",
|
||||||
"For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.",
|
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Více informací naleznete <a href=\"%s\">v této položce FAQ</a>.",
|
||||||
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "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>.": "Váš prohlížeč může vyžadovat připojení HTTPS pro podporu WebCrypto API. Zkuste <a href=\"%s\">přepnout na HTTPS</a>.",
|
||||||
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "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.": "Váš prohlížeč nepodporuje WebAssembly, které se používá pro zlib kompresi. Můžete vytvořit nekomprimované dokumenty, ale nebudete moct číst ty komprimované.",
|
||||||
"waiting on user to provide a password": "waiting on user to provide a password",
|
"waiting on user to provide a password": "čekám na zadání hesla",
|
||||||
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "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.": "Nepodařilo se dešifrovat data. Zadali jste špatné heslo? Zkuste to znovu pomocí tlačítka nahoře.",
|
||||||
"Retry": "Retry",
|
"Retry": "Opakovat",
|
||||||
"Showing raw text…": "Showing raw text…",
|
"Showing raw text…": "Zobrazuji čistý text…",
|
||||||
"Notice:": "Notice:",
|
"Notice:": "Upozornění:",
|
||||||
"This link will expire after %s.": "This link will expire after %s.",
|
"This link will expire after %s.": "Tento odkaz vyprší za %s.",
|
||||||
"This link can only be accessed once, do not use back or refresh button in your browser.": "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.": "Tento odkaz je přístupný pouze jednou, nepoužívejte tlačítko zpět ani neobnovujte tuto stránku v prohlížeči.",
|
||||||
"Link:": "Link:",
|
"Link:": "Odkaz:",
|
||||||
"Recipient may become aware of your timezone, convert time to UTC?": "Recipient may become aware of your timezone, convert time to UTC?",
|
"Recipient may become aware of your timezone, convert time to UTC?": "Příjemce může zjistit vaše časové pásmo, převést čas na UTC?",
|
||||||
"Use Current Timezone": "Use Current Timezone",
|
"Use Current Timezone": "Použít aktuální časové pásmo",
|
||||||
"Convert To UTC": "Convert To UTC",
|
"Convert To UTC": "Převést na UTC",
|
||||||
"Close": "Close",
|
"Close": "Zavřít",
|
||||||
"Encrypted note on PrivateBin": "Encrypted note on PrivateBin",
|
"Encrypted note on %s": "Šifrovaná poznámka ve službě %s",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "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.": "Pro zobrazení poznámky navštivte tento odkaz. Přeposláním URL umožníte přístup také jiným lidem.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
"URL shortener may expose your decrypt key in URL.": "Zkracovač URL může prozradit váš dešifrovací klíč v URL.",
|
||||||
"Save paste": "Save paste"
|
"Save paste": "Uložit příspěvek",
|
||||||
|
"Your IP is not authorized to create pastes.": "Vaše IP adresa nemá oprávnění k vytváření příspěvků.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "Pokus o zkrácení URL, které neodkazuje na naši instanci.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Chyba volání YOURLS. Pravděpodobně chyba konfigurace, např. nesprávné či chybějící „apiurl“ nebo „signature“.",
|
||||||
|
"Error parsing YOURLS response.": "Chyba čtení odpovědi YOURLS.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "Tuto tajnou zprávu lze zobrazit pouze jednou. Chcete si ji prohlédnout teď?",
|
||||||
|
"Yes, see it": "Ano, zobrazit",
|
||||||
|
"Dark Mode": "Tmavý režim",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Chyba při komprimování příspěvku kvůli chybějící podpoře WebAssembly.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Chyba při dekomprimování příspěvku, váš prohlížeč nepodporuje WebAssembly. Pro zobrazení tohoto příspěvku prosím použijte jiný prohlížeč.",
|
||||||
|
"Start over": "Start over"
|
||||||
}
|
}
|
||||||
|
85
i18n/de.json
85
i18n/de.json
@ -2,8 +2,7 @@
|
|||||||
"PrivateBin": "PrivateBin",
|
"PrivateBin": "PrivateBin",
|
||||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s 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 %sin the browser%s using 256 bits AES.": "%s ist ein minimalistischer, quelloffener \"Pastebin\"-artiger Dienst, bei dem der Server keinerlei Kenntnis der Inhalte hat. Die Daten werden %sim Browser%s mit 256 Bit AES ver- und entschlüsselt.",
|
||||||
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Weitere Informationen sind auf der <a href=\"https://privatebin.info/\">Projektseite</a> zu finden.",
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Weitere Informationen sind auf der <a href=\"https://privatebin.info/\">Projektseite</a> zu finden.",
|
||||||
"Because ignorance is bliss": "Unwissenheit ist ein Segen",
|
"Because ignorance is bliss": "Was ich nicht weiß, macht mich nicht heiß",
|
||||||
"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.": "Diesen Text gibt es nicht, er ist abgelaufen oder wurde gelöscht.",
|
||||||
"%s requires php %s or above to work. Sorry.": "%s benötigt PHP %s oder höher, um zu funktionieren. Sorry.",
|
"%s requires php %s or above to work. Sorry.": "%s benötigt PHP %s oder höher, um zu funktionieren. Sorry.",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s benötigt den Konfigurationsabschnitt [%s] in der Konfigurationsdatei um zu funktionieren.",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s benötigt den Konfigurationsabschnitt [%s] in der Konfigurationsdatei um zu funktionieren.",
|
||||||
@ -11,6 +10,8 @@
|
|||||||
"Bitte warte eine Sekunde zwischen dem Absenden zweier Beiträge.",
|
"Bitte warte eine Sekunde zwischen dem Absenden zweier Beiträge.",
|
||||||
"Bitte warte %d Sekunden zwischen dem Absenden zweier Beiträge.",
|
"Bitte warte %d Sekunden zwischen dem Absenden zweier Beiträge.",
|
||||||
"Bitte warte %d Sekunden zwischen dem Absenden zweier Beiträge.",
|
"Bitte warte %d Sekunden zwischen dem Absenden zweier Beiträge.",
|
||||||
|
"Bitte warte %d Sekunden zwischen dem Absenden zweier Beiträge.",
|
||||||
|
"Bitte warte %d Sekunden zwischen dem Absenden zweier Beiträge.",
|
||||||
"Bitte warte %d Sekunden zwischen dem Absenden zweier Beiträge."
|
"Bitte warte %d Sekunden zwischen dem Absenden zweier Beiträge."
|
||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "Texte sind auf %s verschlüsselte Datenmenge beschränkt.",
|
"Paste is limited to %s of encrypted data.": "Texte sind auf %s verschlüsselte Datenmenge beschränkt.",
|
||||||
@ -25,7 +26,7 @@
|
|||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript ist eine Voraussetzung, um %s zu nutzen. Bitte entschuldige die Unannehmlichkeiten.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript ist eine Voraussetzung, um %s zu nutzen. Bitte entschuldige die Unannehmlichkeiten.",
|
||||||
"%s requires a modern browser to work.": "%s setzt einen modernen Browser voraus, um funktionieren zu können.",
|
"%s requires a modern browser to work.": "%s setzt einen modernen Browser voraus, um funktionieren zu können.",
|
||||||
"New": "Neu",
|
"New": "Neu",
|
||||||
"Send": "Senden",
|
"Create": "Erstellen",
|
||||||
"Clone": "Klonen",
|
"Clone": "Klonen",
|
||||||
"Raw text": "Reiner Text",
|
"Raw text": "Reiner Text",
|
||||||
"Expires": "Ablaufzeit",
|
"Expires": "Ablaufzeit",
|
||||||
@ -37,44 +38,58 @@
|
|||||||
"%d seconds": [
|
"%d seconds": [
|
||||||
"%d Sekunde",
|
"%d Sekunde",
|
||||||
"%d Sekunden",
|
"%d Sekunden",
|
||||||
"%d seconds (2nd plural)",
|
"%d Sekunden",
|
||||||
"%d seconds (3rd plural)"
|
"%d Sekunden",
|
||||||
|
"%d Sekunden",
|
||||||
|
"%d Sekunden"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"%d Minute",
|
"%d Minute",
|
||||||
"%d Minuten",
|
"%d Minuten",
|
||||||
"%d minutes (2nd plural)",
|
"%d Minuten",
|
||||||
"%d minutes (3rd plural)"
|
"%d Minuten",
|
||||||
|
"%d Minuten",
|
||||||
|
"%d Minuten"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d Stunde",
|
"%d Stunde",
|
||||||
"%d Stunden",
|
"%d Stunden",
|
||||||
"%d hours (2nd plural)",
|
"%d Stunden",
|
||||||
"%d hours (3rd plural)"
|
"%d Stunden",
|
||||||
|
"%d Stunden",
|
||||||
|
"%d Stunden"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d Tag",
|
"%d Tag",
|
||||||
"%d Tage",
|
"%d Tage",
|
||||||
"%d days (2nd plural)",
|
"%d Tage",
|
||||||
"%d days (3rd plural)"
|
"%d Tage",
|
||||||
|
"%d Tage",
|
||||||
|
"%d Tage"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d Woche",
|
"%d Woche",
|
||||||
"%d Wochen",
|
"%d Wochen",
|
||||||
"%d weeks (2nd plural)",
|
"%d Wochen",
|
||||||
"%d weeks (3rd plural)"
|
"%d Wochen",
|
||||||
|
"%d Wochen",
|
||||||
|
"%d Wochen"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d Monat",
|
"%d Monat",
|
||||||
"%d Monate",
|
"%d Monate",
|
||||||
"%d months (2nd plural)",
|
"%d Monate",
|
||||||
"%d months (3rd plural)"
|
"%d Monate",
|
||||||
|
"%d Monate",
|
||||||
|
"%d Monate"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
"%d Jahr",
|
"%d Jahr",
|
||||||
"%d Jahre",
|
"%d Jahre",
|
||||||
"%d years (2nd plural)",
|
"%d Monate",
|
||||||
"%d years (3rd plural)"
|
"%d Monate",
|
||||||
|
"%d Monate",
|
||||||
|
"%d Monate"
|
||||||
],
|
],
|
||||||
"Never": "Nie",
|
"Never": "Nie",
|
||||||
"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.",
|
"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.",
|
||||||
@ -82,30 +97,40 @@
|
|||||||
"Dieses Dokument läuft in einer Sekunde ab.",
|
"Dieses Dokument läuft in einer Sekunde ab.",
|
||||||
"Dieses Dokument läuft in %d Sekunden ab.",
|
"Dieses Dokument läuft in %d Sekunden ab.",
|
||||||
"Dieses Dokument läuft in %d Sekunden ab.",
|
"Dieses Dokument läuft in %d Sekunden ab.",
|
||||||
|
"Dieses Dokument läuft in %d Sekunden ab.",
|
||||||
|
"Dieses Dokument läuft in %d Sekunden ab.",
|
||||||
"Dieses Dokument läuft in %d Sekunden ab."
|
"Dieses Dokument läuft in %d Sekunden ab."
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"Dieses Dokument läuft in einer Minute ab.",
|
"Dieses Dokument läuft in einer Minute ab.",
|
||||||
"Dieses Dokument läuft in %d Minuten ab.",
|
"Dieses Dokument läuft in %d Minuten ab.",
|
||||||
"Dieses Dokument läuft in %d Minuten ab.",
|
"Dieses Dokument läuft in %d Minuten ab.",
|
||||||
|
"Dieses Dokument läuft in %d Minuten ab.",
|
||||||
|
"Dieses Dokument läuft in %d Minuten ab.",
|
||||||
"Dieses Dokument läuft in %d Minuten ab."
|
"Dieses Dokument läuft in %d Minuten ab."
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"Dieses Dokument läuft in einer Stunde ab.",
|
"Dieses Dokument läuft in einer Stunde ab.",
|
||||||
"Dieses Dokument läuft in %d Stunden ab.",
|
"Dieses Dokument läuft in %d Stunden ab.",
|
||||||
"This document will expire in %d hours (2nd plural)",
|
"Dieses Dokument läuft in %d Stunden ab.",
|
||||||
"This document will expire in %d hours (3rd plural)"
|
"Dieses Dokument läuft in %d Stunden ab.",
|
||||||
|
"Dieses Dokument läuft in %d Stunden ab.",
|
||||||
|
"Dieses Dokument läuft in %d Stunden ab."
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"Dieses Dokument läuft in einem Tag ab.",
|
"Dieses Dokument läuft in einem Tag ab.",
|
||||||
"Dieses Dokument läuft in %d Tagen ab.",
|
"Dieses Dokument läuft in %d Tagen ab.",
|
||||||
"Dieses Dokument läuft in %d Tagen ab.",
|
"Dieses Dokument läuft in %d Tagen ab.",
|
||||||
|
"Dieses Dokument läuft in %d Tagen ab.",
|
||||||
|
"Dieses Dokument läuft in %d Tagen ab.",
|
||||||
"Dieses Dokument läuft in %d Tagen ab."
|
"Dieses Dokument läuft in %d Tagen ab."
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
"Dieses Dokument läuft in einem Monat ab.",
|
"Dieses Dokument läuft in einem Monat ab.",
|
||||||
"Dieses Dokument läuft in %d Monaten ab.",
|
"Dieses Dokument läuft in %d Monaten ab.",
|
||||||
"Dieses Dokument läuft in %d Monaten ab.",
|
"Dieses Dokument läuft in %d Monaten ab.",
|
||||||
|
"Dieses Dokument läuft in %d Monaten ab.",
|
||||||
|
"Dieses Dokument läuft in %d Monaten ab.",
|
||||||
"Dieses Dokument läuft in %d Monaten ab."
|
"Dieses Dokument läuft in %d Monaten ab."
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "Bitte gib das Passwort für diesen Text ein:",
|
"Please enter the password for this paste:": "Bitte gib das Passwort für diesen Text ein:",
|
||||||
@ -175,15 +200,25 @@
|
|||||||
"Retry": "Wiederholen",
|
"Retry": "Wiederholen",
|
||||||
"Showing raw text…": "Rohtext wird angezeigt…",
|
"Showing raw text…": "Rohtext wird angezeigt…",
|
||||||
"Notice:": "Hinweis:",
|
"Notice:": "Hinweis:",
|
||||||
"This link will expire after %s.": "Diese Verknüpfung wird in %s ablaufen.",
|
"This link will expire after %s.": "Dieser Link wird am %s ablaufen.",
|
||||||
"This link can only be accessed once, do not use back or refresh button in your browser.": "Diese Verknüpfung kann nur einmal geöffnet werden, verwende nicht den Zurück- oder Neu-laden-Knopf Deines Browsers.",
|
"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.",
|
||||||
"Link:": "Verknüpfung:",
|
"Link:": "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?",
|
"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",
|
"Use Current Timezone": "Aktuelle Zeitzone verwenden",
|
||||||
"Convert To UTC": "In UTC umwandeln",
|
"Convert To UTC": "In UTC umwandeln",
|
||||||
"Close": "Schliessen",
|
"Close": "Schliessen",
|
||||||
"Encrypted note on PrivateBin": "Verschlüsselte Notiz auf PrivateBin",
|
"Encrypted note on %s": "Verschlüsselte Notiz auf %s",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Besuche diese Verknüpfung um das Dokument zu sehen. Wird die URL an eine andere Person gegeben, so kann diese Person ebenfalls auf dieses Dokument zugreifen.",
|
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Besuche diesen Link um das Dokument zu sehen. Wird die URL an eine andere Person gegeben, so kann diese Person ebenfalls auf dieses Dokument zugreifen.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "Der URL-Verkürzer kann den Schlüssel in der URL enthüllen.",
|
"URL shortener may expose your decrypt key in URL.": "Der URL-Verkürzer kann den Schlüssel in der URL enthüllen.",
|
||||||
"Save paste": "Text speichern"
|
"Save paste": "Text speichern",
|
||||||
|
"Your IP is not authorized to create pastes.": "Deine IP ist nicht berechtigt, Texte zu erstellen.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "Versuch eine URL zu verkürzen, die nicht auf unsere Instanz zeigt.",
|
||||||
|
"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\".",
|
||||||
|
"Error parsing YOURLS response.": "Fehler beim Verarbeiten der YOURLS-Antwort.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "Texte des \"Einmal\"-Typs können nach dem Öffnen nur einmal angezeigt werden. Möchtest Du ihn jetzt einsehen?",
|
||||||
|
"Yes, see it": "Ja, jetzt einsehen",
|
||||||
|
"Dark Mode": "Nachtmodus",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Fehler beim Komprimieren des Textes, da WebAssembly-Unterstützung fehlt.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Fehler beim Dekomprimieren des Textes. Dein Browser unterstützt WebAssembly nicht. Bitte verwende einen anderen Browser, um diesen Text anzuzeigen.",
|
||||||
|
"Start over": "Neuen Text erstellen"
|
||||||
}
|
}
|
||||||
|
335
i18n/el.json
335
i18n/el.json
@ -1,135 +1,160 @@
|
|||||||
{
|
{
|
||||||
"PrivateBin": "PrivateBin",
|
"PrivateBin": "PrivateBin",
|
||||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.",
|
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "Το %s αποτελεί ένα εργαλείο επικόλλησης δεδομένων στο διαδίκτυο, που βασίζεται σε λογισμικό ανοιχτού κώδικα. Ο διακομιστής έχει πλήρη άγνοια αυτών των δεδομένων, τα οποία από/κρυπτογραφούνται %sστο πρόγραμμα περιήγησης%s, χρησιμοποιώντας τη μέθοδο 256-bits AES.",
|
||||||
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "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>.",
|
||||||
"Because ignorance is bliss": "Because ignorance is bliss",
|
"Because ignorance is bliss": "Επειδή η άγνοια είναι ευτυχία",
|
||||||
"en": "el",
|
"Paste does not exist, has expired or has been deleted.": "Η επικόλληση δεν υπάρχει, έληξε ή διαγράφηκε",
|
||||||
"Paste does not exist, has expired or has been deleted.": "Paste does not exist, has expired or has been deleted.",
|
"%s requires php %s or above to work. Sorry.": "%s απαιτεί php %s ή νεότερη για να λειτουργήσει. Συγγνώμη.",
|
||||||
"%s requires php %s or above to work. Sorry.": "%s requires php %s or above to work. Sorry.",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s απαιτεί οι ρυθμίσεις [%s] να υπάρχουν στο αρχείο ρυθμίσεων.",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.",
|
|
||||||
"Please wait %d seconds between each post.": [
|
"Please wait %d seconds between each post.": [
|
||||||
"Please wait %d second between each post. (singular)",
|
"Παρακαλώ περιμένετε %d δευτερόλεπτο μεταξύ κάθε επικόλλησης.",
|
||||||
"Please wait %d seconds between each post. (1st plural)",
|
"Παρακαλώ περιμένετε %d δευτερόλεπτα μεταξύ κάθε επικόλλησης.",
|
||||||
"Please wait %d seconds between each post. (2nd plural)",
|
"Παρακαλώ περιμένετε %d δευτερόλεπτα μεταξύ κάθε επικόλλησης.",
|
||||||
"Please wait %d seconds between each post. (3rd plural)"
|
"Παρακαλώ περιμένετε %d δευτερόλεπτα μεταξύ κάθε επικόλλησης.",
|
||||||
|
"Παρακαλώ περιμένετε %d δευτερόλεπτα μεταξύ κάθε επικόλλησης.",
|
||||||
|
"Παρακαλώ περιμένετε %d δευτερόλεπτα μεταξύ κάθε επικόλλησης."
|
||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.",
|
"Paste is limited to %s of encrypted data.": "Η επικόλληση είναι περιορισμένη σε %s κρυπτογραφημένων δεδομένων.",
|
||||||
"Invalid data.": "Invalid data.",
|
"Invalid data.": "Λάθος δεδομένα.",
|
||||||
"You are unlucky. Try again.": "You are unlucky. Try again.",
|
"You are unlucky. Try again.": "Ατυχήσατε. Προσπαθήστε πάλι.",
|
||||||
"Error saving comment. Sorry.": "Error saving comment. Sorry.",
|
"Error saving comment. Sorry.": "Λάθος στην αποθήκευση του σχόλιου. Συγγνώμη.",
|
||||||
"Error saving paste. Sorry.": "Error saving paste. Sorry.",
|
"Error saving paste. Sorry.": "Λάθος στην αποθήκευση της επικόλλησης. Συγγνώμη.",
|
||||||
"Invalid paste ID.": "Invalid paste ID.",
|
"Invalid paste ID.": "Λάθος αναγνωριστικό επικόλλησης.",
|
||||||
"Paste is not of burn-after-reading type.": "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.",
|
"Wrong deletion token. Paste was not deleted.": "Λάθος αναγνωριστικό διαγραφής. Η επικόλληση δεν διαγράφηκε.",
|
||||||
"Paste was properly 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.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Η JavaScript είναι απαραίτητη για να λειτουργήσει το %s. Συγγνώμη για την ταλαιπωρία.",
|
||||||
"%s requires a modern browser to work.": "%s requires a modern browser to work.",
|
"%s requires a modern browser to work.": "%s απαιτεί σύγχρονο φυλλομετρητή (browser) για να λειτουργήσει.",
|
||||||
"New": "New",
|
"New": "Νέο",
|
||||||
"Send": "Send",
|
"Create": "Δημιουργία",
|
||||||
"Clone": "Clone",
|
"Clone": "Κλωνοποίηση",
|
||||||
"Raw text": "Raw text",
|
"Raw text": "Κείμενο",
|
||||||
"Expires": "Expires",
|
"Expires": "Λήγει",
|
||||||
"Burn after reading": "Burn after reading",
|
"Burn after reading": "Διαγραφή μετά την ανάγνωση",
|
||||||
"Open discussion": "Open discussion",
|
"Open discussion": "Ανοικτή συζήτηση",
|
||||||
"Password (recommended)": "Password (recommended)",
|
"Password (recommended)": "Κωδικός (προτείνεται)",
|
||||||
"Discussion": "Discussion",
|
"Discussion": "Συζήτηση",
|
||||||
"Toggle navigation": "Toggle navigation",
|
"Toggle navigation": "Εναλλαγή πλοήγησης",
|
||||||
"%d seconds": [
|
"%d seconds": [
|
||||||
"%d second (singular)",
|
"%d δευτερόλεπτο",
|
||||||
"%d seconds (1st plural)",
|
"%d δευτερόλεπτα",
|
||||||
"%d seconds (2nd plural)",
|
"%d δευτερόλεπτα",
|
||||||
"%d seconds (3rd plural)"
|
"%d δευτερόλεπτα",
|
||||||
|
"%d δευτερόλεπτα",
|
||||||
|
"%d δευτερόλεπτα"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"%d minute (singular)",
|
"%d λεπτό",
|
||||||
"%d minutes (1st plural)",
|
"%d λεπτά",
|
||||||
"%d minutes (2nd plural)",
|
"%d λεπτά",
|
||||||
"%d minutes (3rd plural)"
|
"%d λεπτά",
|
||||||
|
"%d λεπτά",
|
||||||
|
"%d λεπτά"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d hour (singular)",
|
"%d ώρα",
|
||||||
"%d hours (1st plural)",
|
"%d ώρες",
|
||||||
"%d hours (2nd plural)",
|
"%d ώρες",
|
||||||
"%d hours (3rd plural)"
|
"%d ώρες",
|
||||||
|
"%d ώρες",
|
||||||
|
"%d ώρες"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d day (singular)",
|
"%d ημέρα",
|
||||||
"%d days (1st plural)",
|
"%d ημέρες",
|
||||||
"%d days (2nd plural)",
|
"%d ημέρες",
|
||||||
"%d days (3rd plural)"
|
"%d ημέρες",
|
||||||
|
"%d ημέρες",
|
||||||
|
"%d ημέρες"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d week (singular)",
|
"%d εβδομάδα",
|
||||||
"%d weeks (1st plural)",
|
"%d εβδομάδες",
|
||||||
"%d weeks (2nd plural)",
|
"%d εβδομάδες",
|
||||||
"%d weeks (3rd plural)"
|
"%d εβδομάδες",
|
||||||
|
"%d εβδομάδες",
|
||||||
|
"%d εβδομάδες"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d month (singular)",
|
"%d μήνας",
|
||||||
"%d months (1st plural)",
|
"%d μήνες",
|
||||||
"%d months (2nd plural)",
|
"%d μήνες",
|
||||||
"%d months (3rd plural)"
|
"%d μήνες",
|
||||||
|
"%d μήνες",
|
||||||
|
"%d μήνες"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
"%d year (singular)",
|
"%d χρόνο",
|
||||||
"%d years (1st plural)",
|
"%d χρόνια",
|
||||||
"%d years (2nd plural)",
|
"%d χρόνια",
|
||||||
"%d years (3rd plural)"
|
"%d χρόνια",
|
||||||
|
"%d χρόνια",
|
||||||
|
"%d χρόνια"
|
||||||
],
|
],
|
||||||
"Never": "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.",
|
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Σημείωση: αυτή είναι μία δοκιμαστική υπηρεσία. Τα δεδομένα μπορεί να σβηστούν ανά πάσα στιγμή.",
|
||||||
"This document will expire in %d seconds.": [
|
"This document will expire in %d seconds.": [
|
||||||
"This document will expire in %d second. (singular)",
|
"Αυτό το έγγραφο θα λήξει σε %d δευτερόλεπτο.",
|
||||||
"This document will expire in %d seconds. (1st plural)",
|
"Αυτό το έγγραφο θα λήξει σε %d δευτερόλεπτα.",
|
||||||
"This document will expire in %d seconds. (2nd plural)",
|
"Αυτό το έγγραφο θα λήξει σε %d δευτερόλεπτα.",
|
||||||
"This document will expire in %d seconds. (3rd plural)"
|
"Αυτό το έγγραφο θα λήξει σε %d δευτερόλεπτα.",
|
||||||
|
"Αυτό το έγγραφο θα λήξει σε %d δευτερόλεπτα.",
|
||||||
|
"Αυτό το έγγραφο θα λήξει σε %d δευτερόλεπτα."
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"This document will expire in %d minute. (singular)",
|
"Αυτό το έγγραφο θα λήξει σε %d λεπτό.",
|
||||||
"This document will expire in %d minutes. (1st plural)",
|
"Αυτό το έγγραφο θα λήξει σε %d λεπτά.",
|
||||||
"This document will expire in %d minutes. (2nd plural)",
|
"Αυτό το έγγραφο θα λήξει σε %d λεπτά.",
|
||||||
"This document will expire in %d minutes. (3rd plural)"
|
"Αυτό το έγγραφο θα λήξει σε %d λεπτά.",
|
||||||
|
"Αυτό το έγγραφο θα λήξει σε %d λεπτά.",
|
||||||
|
"Αυτό το έγγραφο θα λήξει σε %d λεπτά."
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"This document will expire in %d hour. (singular)",
|
"Αυτό το έγγραφο θα λήξει σε %d ώρα.",
|
||||||
"This document will expire in %d hours. (1st plural)",
|
"Αυτό το έγγραφο θα λήξει σε %d ώρες.",
|
||||||
"This document will expire in %d hours. (2nd plural)",
|
"Αυτό το έγγραφο θα λήξει σε %d ώρες.",
|
||||||
"This document will expire in %d hours. (3rd plural)"
|
"Αυτό το έγγραφο θα λήξει σε %d ώρες.",
|
||||||
|
"Αυτό το έγγραφο θα λήξει σε %d ώρες.",
|
||||||
|
"Αυτό το έγγραφο θα λήξει σε %d ώρες."
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"This document will expire in %d day. (singular)",
|
"Αυτό το έγγραφο θα λήξει σε %d ημέρα.",
|
||||||
"This document will expire in %d days. (1st plural)",
|
"Αυτό το έγγραφο θα λήξει σε %d ημέρες.",
|
||||||
"This document will expire in %d days. (2nd plural)",
|
"Αυτό το έγγραφο θα λήξει σε %d ημέρες.",
|
||||||
"This document will expire in %d days. (3rd plural)"
|
"Αυτό το έγγραφο θα λήξει σε %d ημέρες.",
|
||||||
|
"Αυτό το έγγραφο θα λήξει σε %d ημέρες.",
|
||||||
|
"Αυτό το έγγραφο θα λήξει σε %d ημέρες."
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
"This document will expire in %d month. (singular)",
|
"Αυτό το έγγραφο θα λήξει σε %d μήνα.",
|
||||||
"This document will expire in %d months. (1st plural)",
|
"Αυτό το έγγραφο θα λήξει σε %d μήνες.",
|
||||||
"This document will expire in %d months. (2nd plural)",
|
"Αυτό το έγγραφο θα λήξει σε %d μήνες.",
|
||||||
"This document will expire in %d months. (3rd plural)"
|
"Αυτό το έγγραφο θα λήξει σε %d μήνες.",
|
||||||
|
"Αυτό το έγγραφο θα λήξει σε %d μήνες.",
|
||||||
|
"Αυτό το έγγραφο θα λήξει σε %d μήνες."
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "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 decrypt data (Wrong key?)": "Δεν ήταν δυνατή η αποκρυπτογράφηση των δεδομένων (πιθανώς λανθασμένο κλειδί;)",
|
||||||
"Could not delete the paste, it was not stored in burn after reading mode.": "Could not delete the paste, it was not stored in burn after reading mode.",
|
"Could not delete the 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.",
|
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "ΜΟΝΟ ΓΙΑ ΕΣΑΣ. Μην κλείσετε το αυτό το παράθυρο, αυτό το μήνυμα δεν μπορεί να εμφανιστεί ξανά.",
|
||||||
"Could not decrypt comment; Wrong key?": "Could not decrypt comment; Wrong key?",
|
"Could not decrypt comment; Wrong key?": "Δεν ήταν δυνατή η αποκρυπτογράφηση του σχολίου. Λάθος κλειδί;",
|
||||||
"Reply": "Reply",
|
"Reply": "Απάντηση",
|
||||||
"Anonymous": "Anonymous",
|
"Anonymous": "Ανώνυμος",
|
||||||
"Avatar generated from IP address": "Avatar generated from IP address",
|
"Avatar generated from IP address": "το avatar δημιουργήθηκε από τη διεύθυνση IP",
|
||||||
"Add comment": "Add comment",
|
"Add comment": "Σχολιάστε",
|
||||||
"Optional nickname…": "Optional nickname…",
|
"Optional nickname…": "Προαιρετικό ψευδώνυμο…",
|
||||||
"Post comment": "Post comment",
|
"Post comment": "Αποστολή σχολίου",
|
||||||
"Sending comment…": "Sending comment…",
|
"Sending comment…": "Το σχόλιο αποστέλλεται…",
|
||||||
"Comment posted.": "Comment posted.",
|
"Comment posted.": "Το σχόλιο δημοσιεύτηκε.",
|
||||||
"Could not refresh display: %s": "Could not refresh display: %s",
|
"Could not refresh display: %s": "Δεν ήταν δυνατή η ανανέωση της σελίδας: %s",
|
||||||
"unknown status": "unknown status",
|
"unknown status": "άγνωστη κατάσταση",
|
||||||
"server error or not responding": "server error or not responding",
|
"server error or not responding": "Πρόβλημα του διακομιστή ή δεν υπάρχει απάντηση",
|
||||||
"Could not post comment: %s": "Could not post comment: %s",
|
"Could not post comment: %s": "Δεν ήταν δυνατή η δημοσίευση του σχολίου: %s",
|
||||||
"Sending paste…": "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>",
|
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Η επικόλλησή σας είναι <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Πληκτρολογήστε [Ctrl]+[c] για αντιγραφή)</span>",
|
||||||
"Delete data": "Delete data",
|
"Delete data": "Διαγραφή δεδομένων",
|
||||||
"Could not create paste: %s": "Could not create paste: %s",
|
"Could not create paste: %s": "Δεν ήταν δυνατή η δημιουργία επικόλλησης: %s",
|
||||||
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)",
|
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Δεν ήταν δυνατή η αποκρυπτογράφηση της επικόλλησης: Το κλειδί αποκρυπτογράφησης λείπει από τον σύνδεσμο (Μήπως χρησιμοποιήσατε ανακατεύθυνση συνδέσμου ή υπηρεσία συντόμευσης συνδέσμου;)",
|
||||||
"B": "B",
|
"B": "B",
|
||||||
"KiB": "KiB",
|
"KiB": "KiB",
|
||||||
"MiB": "MiB",
|
"MiB": "MiB",
|
||||||
@ -139,51 +164,61 @@
|
|||||||
"EiB": "EiB",
|
"EiB": "EiB",
|
||||||
"ZiB": "ZiB",
|
"ZiB": "ZiB",
|
||||||
"YiB": "YiB",
|
"YiB": "YiB",
|
||||||
"Format": "Format",
|
"Format": "Μορφοποίηση",
|
||||||
"Plain Text": "Plain Text",
|
"Plain Text": "Απλό κείμενο",
|
||||||
"Source Code": "Source Code",
|
"Source Code": "Πηγαίος Κώδικας",
|
||||||
"Markdown": "Markdown",
|
"Markdown": "Markdown",
|
||||||
"Download attachment": "Download attachment",
|
"Download attachment": "Λήψη επισυναπτόμενου",
|
||||||
"Cloned: '%s'": "Cloned: '%s'",
|
"Cloned: '%s'": "Κλώνος: '%s'",
|
||||||
"The cloned file '%s' was attached to this paste.": "The cloned file '%s' was attached to this paste.",
|
"The cloned file '%s' was attached to this paste.": "Το κλωνοποιημένο αρχείο '%s' επισυνάφθηκε στ αυτή την επικόλληση.",
|
||||||
"Attach a file": "Attach a file",
|
"Attach a file": "Επισύναψη αρχείου",
|
||||||
"alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard",
|
"alternatively drag & drop a file or paste an image from the clipboard": "εναλλακτικά σύρετε το αρχείο ή επικολλήστε μία εικόνα από το clipboard",
|
||||||
"File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.",
|
"File too large, to display a preview. Please download the attachment.": "Πολύ μεγάλο αρχείο για προεπισκόπηση. Παρακαλώ κατεβάστε το επισυναπτόμενο.",
|
||||||
"Remove attachment": "Remove attachment",
|
"Remove attachment": "Αφαίρεση επισυναπτόμενου",
|
||||||
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Your browser does not support uploading encrypted files. Please use a newer browser.",
|
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Ο φυλλομετρητής (browser) σας δεν υποστηρίζει κρυπτογραφημένα αρχεία. Παρακαλώ χρησιμοποιήστε νεότερο φιλομετρητή.",
|
||||||
"Invalid attachment.": "Invalid attachment.",
|
"Invalid attachment.": "Λάθος επισυναπτόμενο.",
|
||||||
"Options": "Options",
|
"Options": "Επιλογές",
|
||||||
"Shorten URL": "Shorten URL",
|
"Shorten URL": "Συντόμευση σύνδεσμου",
|
||||||
"Editor": "Editor",
|
"Editor": "Διορθωτής",
|
||||||
"Preview": "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.",
|
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s απαιτεί το PATH να τελειώνει σε \"%s\". Παρακαλώ ενημερώστε το PATH στο index.php σας.",
|
||||||
"Decrypt": "Decrypt",
|
"Decrypt": "Αποκρυπτογράφηση",
|
||||||
"Enter password": "Enter password",
|
"Enter password": "Εισαγωγή κωδικού",
|
||||||
"Loading…": "Loading…",
|
"Loading…": "Φόρτωση…",
|
||||||
"Decrypting paste…": "Decrypting paste…",
|
"Decrypting 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 case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Σε περίπτωση που αυτό το μήνυμα δεν εξαφανίζεται παρακαλώ κοιτάξτε στις <a href=\"%s\">Ερωταποκρίσεις για πληροφορίες στην αντιμετώπιση προβλημάτων</a>.",
|
||||||
"+++ no paste text +++": "+++ no paste text +++",
|
"+++ no paste text +++": "+++ Δεν υπάρχει επικόλληση +++",
|
||||||
"Could not get paste data: %s": "Could not get paste data: %s",
|
"Could not get paste data: %s": "Δεν ήταν δυνατή η λήψη της επικόλλησης: %s",
|
||||||
"QR code": "QR code",
|
"QR code": "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.": "Αυτός ο ιστότοπος χρησιμοποιεί μη ασφαλή HTTP σύνδεση! Παρακαλώ χρησιμοποιήστε το μόνο δοκιμαστικά.",
|
||||||
"For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.",
|
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Για περισσότερες πληροφορίες <a href=\"%s\">δείτε τις ερωταπαντήσεις</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 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.": "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.": "Ο φυλλομετρητής σας δεν υποστηρίζει WebAssembly, που χρησιμοποιήθηκε για zlib συμπίεση. Μπορείτε να δημιουργήσετε ασυμπίεστα αρχεία αλλά δεν μπορείτε να διαβάσετε συμπιεσμένα.",
|
||||||
"waiting on user to provide a password": "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.",
|
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Δεν ήταν δυνατή η αποκρυπτογράφηση των δεδομένων. Μήπως εισάγατε λάθος κωδικό; Προσπαθήστε με το κουμπί στο επάνω μέρος.",
|
||||||
"Retry": "Retry",
|
"Retry": "Επαναπροσπάθεια",
|
||||||
"Showing raw text…": "Showing raw text…",
|
"Showing raw text…": "Προβολή κειμένου…",
|
||||||
"Notice:": "Notice:",
|
"Notice:": "Επισήμανση:",
|
||||||
"This link will expire after %s.": "This link will expire after %s.",
|
"This link will expire after %s.": "Ο σύνδεσμος θα λήξει σε %s.",
|
||||||
"This link can only be accessed once, do not use back or refresh button in your browser.": "This link can only be accessed once, do not use back or refresh button in your browser.",
|
"This link can only be accessed once, do not use back or refresh button in your browser.": "Αυτός ο σύνδεσμος μπορεί να προσπελαστεί μόνο μία φορά, μην χρησιμοποιήσετε το κουμπί επιστροφή ή ανανέωση στον φυλλομετρητή σας.",
|
||||||
"Link:": "Link:",
|
"Link:": "Σύνδεσμος:",
|
||||||
"Recipient may become aware of your timezone, convert time to UTC?": "Recipient may become aware of your timezone, convert time to UTC?",
|
"Recipient may become aware of your timezone, convert time to UTC?": "Ο παραλήπτης μπορεί να αναγνωρίσει τη ζώνη ώρας σας, θέλετε μετατροπή της ώρας σε UTC;",
|
||||||
"Use Current Timezone": "Use Current Timezone",
|
"Use Current Timezone": "Χρήση τρέχουσας ζώνης ώρας",
|
||||||
"Convert To UTC": "Convert To UTC",
|
"Convert To UTC": "Μετατροπή σε UTC",
|
||||||
"Close": "Close",
|
"Close": "Κλείσιμο",
|
||||||
"Encrypted note on PrivateBin": "Encrypted note on PrivateBin",
|
"Encrypted note on %s": "Κρυπτογραφημένο μήνυμα από το %s",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
|
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Επισκεφτείτε αυτόν τον σύνδεσμο για να δείτε το μήνυμα. Δίνοντας τον σύνδεσμο σε οποιονδήποτε, του επιτρέπετε να επισκεφτεί το μήνυμα επίσης.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
"URL shortener may expose your decrypt key in URL.": "Συντομευτές συνδέσμων πιθανώς να δημοσιοποιήσουν το κλειδί αποκρυπτογράφισης στον σύνδεσμο.",
|
||||||
"Save paste": "Save paste"
|
"Save paste": "Αποθήκευση επικόλλησης",
|
||||||
|
"Your IP is not authorized to create pastes.": "Η IP σας δεν επιτρέπεται να δημιουργεί επικολλήσεις.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "Έγινε προσπάθεια συντόμευσης ενός URL που δε δείχνει προς τη δική μας υπηρεσία.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Σφάλμα κατά την κλήση YOURLS. Πιθανώς ένα ζήτημα διαμόρφωσης, όπως λάθος ή λείπει \"apiurl\" ή \"υπογραφή\".",
|
||||||
|
"Error parsing YOURLS response.": "Σφάλμα ανάλυσης της απόκρισης YOURLS.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "Αυτό το μυστικό μήνυμα μπορεί να εμφανιστεί μόνο μία φορά. Θα θέλατε να το δείτε τώρα;",
|
||||||
|
"Yes, see it": "Ναι, δείτε το",
|
||||||
|
"Dark Mode": "Σκοτεινό Θέμα",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Σφάλμα συμπίεσης επικόλλησης, λόγω έλλειψης υποστήριξης WebAssembly.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Σφάλμα αποσυμπίεσης της επικόλλησης, ο περιηγητής σας δεν υποστηρίζει WebAssembly. Παρακαλούμε χρησιμοποιήστε έναν άλλο περιηγητή για να δείτε αυτή την επικόλληση.",
|
||||||
|
"Start over": "Start over"
|
||||||
}
|
}
|
||||||
|
69
i18n/en.json
69
i18n/en.json
@ -3,7 +3,6 @@
|
|||||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.",
|
"%s is a minimalist, open source online pastebin where the server has zero knowledge of 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>.",
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "More information on the <a href=\"https://privatebin.info/\">project page</a>.",
|
||||||
"Because ignorance is bliss": "Because ignorance is bliss",
|
"Because ignorance is bliss": "Because ignorance is bliss",
|
||||||
"en": "en",
|
|
||||||
"Paste does not exist, has expired or has been deleted.": "Paste does not exist, has expired or has been deleted.",
|
"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 php %s or above to work. Sorry.": "%s requires php %s or above to work. Sorry.",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.",
|
||||||
@ -11,7 +10,9 @@
|
|||||||
"Please wait %d second between each post. (singular)",
|
"Please wait %d second between each post. (singular)",
|
||||||
"Please wait %d seconds between each post. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"Please wait %d seconds between each post. (3rd plural)"
|
"Please wait %d seconds between each post. (3rd plural)",
|
||||||
|
"Please wait %d seconds between each post. (4th plural)",
|
||||||
|
"Please wait %d seconds between each post. (5th plural)"
|
||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.",
|
"Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.",
|
||||||
"Invalid data.": "Invalid data.",
|
"Invalid data.": "Invalid data.",
|
||||||
@ -25,7 +26,7 @@
|
|||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.",
|
||||||
"%s requires a modern browser to work.": "%s requires a modern browser to work.",
|
"%s requires a modern browser to work.": "%s requires a modern browser to work.",
|
||||||
"New": "New",
|
"New": "New",
|
||||||
"Send": "Send",
|
"Create": "Create",
|
||||||
"Clone": "Clone",
|
"Clone": "Clone",
|
||||||
"Raw text": "Raw text",
|
"Raw text": "Raw text",
|
||||||
"Expires": "Expires",
|
"Expires": "Expires",
|
||||||
@ -38,43 +39,57 @@
|
|||||||
"%d second (singular)",
|
"%d second (singular)",
|
||||||
"%d seconds (1st plural)",
|
"%d seconds (1st plural)",
|
||||||
"%d seconds (2nd plural)",
|
"%d seconds (2nd plural)",
|
||||||
"%d seconds (3rd plural)"
|
"%d seconds (3rd plural)",
|
||||||
|
"%d seconds (4th plural)",
|
||||||
|
"%d seconds (5th plural)"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"%d minute (singular)",
|
"%d minute (singular)",
|
||||||
"%d minutes (1st plural)",
|
"%d minutes (1st plural)",
|
||||||
"%d minutes (2nd plural)",
|
"%d minutes (2nd plural)",
|
||||||
"%d minutes (3rd plural)"
|
"%d minutes (3rd plural)",
|
||||||
|
"%d minutes (4th plural)",
|
||||||
|
"%d minutes (5th plural)"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d hour (singular)",
|
"%d hour (singular)",
|
||||||
"%d hours (1st plural)",
|
"%d hours (1st plural)",
|
||||||
"%d hours (2nd plural)",
|
"%d hours (2nd plural)",
|
||||||
"%d hours (3rd plural)"
|
"%d hours (3rd plural)",
|
||||||
|
"%d hours (4th plural)",
|
||||||
|
"%d hours (5th plural)"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d day (singular)",
|
"%d day (singular)",
|
||||||
"%d days (1st plural)",
|
"%d days (1st plural)",
|
||||||
"%d days (2nd plural)",
|
"%d days (2nd plural)",
|
||||||
"%d days (3rd plural)"
|
"%d days (3rd plural)",
|
||||||
|
"%d days (4th plural)",
|
||||||
|
"%d days (5th plural)"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d week (singular)",
|
"%d week (singular)",
|
||||||
"%d weeks (1st plural)",
|
"%d weeks (1st plural)",
|
||||||
"%d weeks (2nd plural)",
|
"%d weeks (2nd plural)",
|
||||||
"%d weeks (3rd plural)"
|
"%d weeks (3rd plural)",
|
||||||
|
"%d weeks (4th plural)",
|
||||||
|
"%d weeks (5th plural)"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d month (singular)",
|
"%d month (singular)",
|
||||||
"%d months (1st plural)",
|
"%d months (1st plural)",
|
||||||
"%d months (2nd plural)",
|
"%d months (2nd plural)",
|
||||||
"%d months (3rd plural)"
|
"%d months (3rd plural)",
|
||||||
|
"%d months (4th plural)",
|
||||||
|
"%d months (5th plural)"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
"%d year (singular)",
|
"%d year (singular)",
|
||||||
"%d years (1st plural)",
|
"%d years (1st plural)",
|
||||||
"%d years (2nd plural)",
|
"%d years (2nd plural)",
|
||||||
"%d years (3rd plural)"
|
"%d years (3rd plural)",
|
||||||
|
"%d years (4th plural)",
|
||||||
|
"%d years (5th plural)"
|
||||||
],
|
],
|
||||||
"Never": "Never",
|
"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.",
|
"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.",
|
||||||
@ -82,31 +97,41 @@
|
|||||||
"This document will expire in %d second. (singular)",
|
"This document will expire in %d second. (singular)",
|
||||||
"This document will expire in %d seconds. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d seconds. (3rd plural)"
|
"This document will expire in %d seconds. (3rd plural)",
|
||||||
|
"This document will expire in %d seconds. (4th plural)",
|
||||||
|
"This document will expire in %d seconds. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"This document will expire in %d minute. (singular)",
|
"This document will expire in %d minute. (singular)",
|
||||||
"This document will expire in %d minutes. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d minutes. (3rd plural)"
|
"This document will expire in %d minutes. (3rd plural)",
|
||||||
|
"This document will expire in %d minutes. (4th plural)",
|
||||||
|
"This document will expire in %d minutes. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"This document will expire in %d hour. (singular)",
|
"This document will expire in %d hour. (singular)",
|
||||||
"This document will expire in %d hours. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d hours. (3rd plural)"
|
"This document will expire in %d hours. (3rd plural)",
|
||||||
|
"This document will expire in %d hours. (4th plural)",
|
||||||
|
"This document will expire in %d hours. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"This document will expire in %d day. (singular)",
|
"This document will expire in %d day. (singular)",
|
||||||
"This document will expire in %d days. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d days. (3rd plural)"
|
"This document will expire in %d days. (3rd plural)",
|
||||||
|
"This document will expire in %d days. (4th plural)",
|
||||||
|
"This document will expire in %d days. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
"This document will expire in %d month. (singular)",
|
"This document will expire in %d month. (singular)",
|
||||||
"This document will expire in %d months. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d months. (3rd plural)"
|
"This document will expire in %d months. (3rd plural)",
|
||||||
|
"This document will expire in %d months. (4th plural)",
|
||||||
|
"This document will expire in %d months. (5th plural)"
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "Please enter the password for this paste:",
|
"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 decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)",
|
||||||
@ -182,8 +207,18 @@
|
|||||||
"Use Current Timezone": "Use Current Timezone",
|
"Use Current Timezone": "Use Current Timezone",
|
||||||
"Convert To UTC": "Convert To UTC",
|
"Convert To UTC": "Convert To UTC",
|
||||||
"Close": "Close",
|
"Close": "Close",
|
||||||
"Encrypted note on PrivateBin": "Encrypted note on PrivateBin",
|
"Encrypted note on %s": "Encrypted note on %s",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
|
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
||||||
"Save paste": "Save paste"
|
"Save paste": "Save paste",
|
||||||
|
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".",
|
||||||
|
"Error parsing YOURLS response.": "Error parsing YOURLS response.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
|
||||||
|
"Yes, see it": "Yes, see it",
|
||||||
|
"Dark Mode": "Dark Mode",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||||
|
"Start over": "Start over"
|
||||||
}
|
}
|
||||||
|
47
i18n/es.json
47
i18n/es.json
@ -2,8 +2,7 @@
|
|||||||
"PrivateBin": "PrivateBin",
|
"PrivateBin": "PrivateBin",
|
||||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s 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 %sin the browser%s using 256 bits AES.": "%s es un \"pastebin\" en línea minimalista de código abierto, donde el servidor no tiene ningún conocimiento de los datos guardados. Los datos son cifrados/descifrados %sen el navegador%s usando 256 bits AES.",
|
||||||
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Más información en la <a href=\"https://privatebin.info/\">página del proyecto</a>.",
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Más información en la <a href=\"https://privatebin.info/\">página del proyecto</a>.",
|
||||||
"Because ignorance is bliss": "Porque la ignorancia es dicha",
|
"Because ignorance is bliss": "Porque la ignorancia es felicidad",
|
||||||
"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.": "El \"paste\" no existe, ha caducado o ha sido eliminado.",
|
||||||
"%s requires php %s or above to work. Sorry.": "%s requiere php %s o superior para funcionar. Lo siento.",
|
"%s requires php %s or above to work. Sorry.": "%s requiere php %s o superior para funcionar. Lo siento.",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s requiere que la sección de configuración [%s] esté presente en el archivo de configuración.",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s requiere que la sección de configuración [%s] esté presente en el archivo de configuración.",
|
||||||
@ -11,6 +10,8 @@
|
|||||||
"Por favor espere %d segundo entre cada publicación.",
|
"Por favor espere %d segundo entre cada publicación.",
|
||||||
"Por favor espere %d segundos entre cada publicación.",
|
"Por favor espere %d segundos entre cada publicación.",
|
||||||
"Por favor espere %d segundos entre cada publicación.",
|
"Por favor espere %d segundos entre cada publicación.",
|
||||||
|
"Por favor espere %d segundos entre cada publicación.",
|
||||||
|
"Por favor espere %d segundos entre cada publicación.",
|
||||||
"Por favor espere %d segundos entre cada publicación."
|
"Por favor espere %d segundos entre cada publicación."
|
||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "El \"paste\" está limitado a %s de datos cifrados.",
|
"Paste is limited to %s of encrypted data.": "El \"paste\" está limitado a %s de datos cifrados.",
|
||||||
@ -25,7 +26,7 @@
|
|||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript es necesario para que %s funcione. Sentimos los inconvenientes ocasionados.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript es necesario para que %s funcione. Sentimos los inconvenientes ocasionados.",
|
||||||
"%s requires a modern browser to work.": "%s requiere un navegador moderno para funcionar.",
|
"%s requires a modern browser to work.": "%s requiere un navegador moderno para funcionar.",
|
||||||
"New": "Nuevo",
|
"New": "Nuevo",
|
||||||
"Send": "Enviar",
|
"Create": "Crear",
|
||||||
"Clone": "Clonar",
|
"Clone": "Clonar",
|
||||||
"Raw text": "Texto sin formato",
|
"Raw text": "Texto sin formato",
|
||||||
"Expires": "Caducar en",
|
"Expires": "Caducar en",
|
||||||
@ -38,42 +39,56 @@
|
|||||||
"%d segundo",
|
"%d segundo",
|
||||||
"%d segundos",
|
"%d segundos",
|
||||||
"%d segundos",
|
"%d segundos",
|
||||||
|
"%d segundos",
|
||||||
|
"%d segundos",
|
||||||
"%d segundos"
|
"%d segundos"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"%d minuto",
|
"%d minuto",
|
||||||
"%d minutos",
|
"%d minutos",
|
||||||
"%d minutos",
|
"%d minutos",
|
||||||
|
"%d minutos",
|
||||||
|
"%d minutos",
|
||||||
"%d minutos"
|
"%d minutos"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d hora",
|
"%d hora",
|
||||||
"%d horas",
|
"%d horas",
|
||||||
"%d horas",
|
"%d horas",
|
||||||
|
"%d horas",
|
||||||
|
"%d horas",
|
||||||
"%d horas"
|
"%d horas"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d día",
|
"%d día",
|
||||||
"%d días",
|
"%d días",
|
||||||
"%d días",
|
"%d días",
|
||||||
|
"%d días",
|
||||||
|
"%d días",
|
||||||
"%d días"
|
"%d días"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d semana",
|
"%d semana",
|
||||||
"%d semanas",
|
"%d semanas",
|
||||||
"%d semanas",
|
"%d semanas",
|
||||||
|
"%d semanas",
|
||||||
|
"%d semanas",
|
||||||
"%d semanas"
|
"%d semanas"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d mes",
|
"%d mes",
|
||||||
"%d meses",
|
"%d meses",
|
||||||
"%d minutos",
|
"%d meses",
|
||||||
|
"%d meses",
|
||||||
|
"%d meses",
|
||||||
"%d meses"
|
"%d meses"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
"%d año",
|
"%d año",
|
||||||
"%d años",
|
"%d años",
|
||||||
"%d años",
|
"%d años",
|
||||||
|
"%d años",
|
||||||
|
"%d años",
|
||||||
"%d años"
|
"%d años"
|
||||||
],
|
],
|
||||||
"Never": "Nunca",
|
"Never": "Nunca",
|
||||||
@ -82,30 +97,40 @@
|
|||||||
"Este documento caducará en un segundo.",
|
"Este documento caducará en un segundo.",
|
||||||
"Este documento caducará en %d segundos.",
|
"Este documento caducará en %d segundos.",
|
||||||
"Este documento caducará en %d segundos",
|
"Este documento caducará en %d segundos",
|
||||||
|
"Este documento caducará en %d segundos",
|
||||||
|
"Este documento caducará en %d segundos",
|
||||||
"Este documento caducará en %d segundos"
|
"Este documento caducará en %d segundos"
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"Este documento caducará en un minuto.",
|
"Este documento caducará en un minuto.",
|
||||||
"Este documento caducará en %d minutos.",
|
"Este documento caducará en %d minutos.",
|
||||||
"Este documento caducará en %d minutos",
|
"Este documento caducará en %d minutos",
|
||||||
|
"Este documento caducará en %d minutos",
|
||||||
|
"Este documento caducará en %d minutos",
|
||||||
"Este documento caducará en %d minutos"
|
"Este documento caducará en %d minutos"
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"Este documento caducará en una hora.",
|
"Este documento caducará en una hora.",
|
||||||
"Este documento caducará en %d horas.",
|
"Este documento caducará en %d horas.",
|
||||||
"Este documento caducará en %d horas",
|
"Este documento caducará en %d horas",
|
||||||
|
"Este documento caducará en %d horas",
|
||||||
|
"Este documento caducará en %d horas",
|
||||||
"Este documento caducará en %d horas"
|
"Este documento caducará en %d horas"
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"Este documento caducará en un día.",
|
"Este documento caducará en un día.",
|
||||||
"Este documento caducará en %d días.",
|
"Este documento caducará en %d días.",
|
||||||
"Este documento caducará en %d días",
|
"Este documento caducará en %d días",
|
||||||
|
"Este documento caducará en %d días",
|
||||||
|
"Este documento caducará en %d días",
|
||||||
"Este documento caducará en %d días"
|
"Este documento caducará en %d días"
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
"Este documento caducará en un mes.",
|
"Este documento caducará en un mes.",
|
||||||
"Este documento caducará en %d meses.",
|
"Este documento caducará en %d meses.",
|
||||||
"Este documento caducará en %d meses",
|
"Este documento caducará en %d meses",
|
||||||
|
"Este documento caducará en %d meses",
|
||||||
|
"Este documento caducará en %d meses",
|
||||||
"Este documento caducará en %d meses"
|
"Este documento caducará en %d meses"
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "Por favor ingrese la contraseña para este \"paste\":",
|
"Please enter the password for this paste:": "Por favor ingrese la contraseña para este \"paste\":",
|
||||||
@ -182,8 +207,18 @@
|
|||||||
"Use Current Timezone": "Usar Zona Horaria Actual",
|
"Use Current Timezone": "Usar Zona Horaria Actual",
|
||||||
"Convert To UTC": "Convertir A UTC",
|
"Convert To UTC": "Convertir A UTC",
|
||||||
"Close": "Cerrar",
|
"Close": "Cerrar",
|
||||||
"Encrypted note on PrivateBin": "Nota cifrada en PrivateBin",
|
"Encrypted note on %s": "Nota cifrada en %s",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visite este enlace para ver la nota. Dar la URL a cualquier persona también les permite acceder a la nota.",
|
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visite este enlace para ver la nota. Dar la URL a cualquier persona también les permite acceder a la nota.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "El acortador de URL puede exponer su clave de descifrado en el URL.",
|
"URL shortener may expose your decrypt key in URL.": "El acortador de URL puede exponer su clave de descifrado en el URL.",
|
||||||
"Save paste": "Guardar \"paste\""
|
"Save paste": "Guardar \"paste\"",
|
||||||
|
"Your IP is not authorized to create pastes.": "Tu IP no está autorizada para crear contenido.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "Intentando acortar una URL que no apunta a nuestra instancia.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error llamando a YOURLS. Probablemente un problema de configuración, como error o falta \"apiurl\" o \"signature\".",
|
||||||
|
"Error parsing YOURLS response.": "Error al analizar la respuesta de YOURLS.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "Este mensaje secreto sólo se puede mostrar una vez. ¿Quieres verlo ahora?",
|
||||||
|
"Yes, see it": "Sí, verlo",
|
||||||
|
"Dark Mode": "Modo nocturno",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||||
|
"Start over": "Start over"
|
||||||
}
|
}
|
||||||
|
43
i18n/et.json
43
i18n/et.json
@ -3,7 +3,6 @@
|
|||||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s on minimalistlik, avatud lähtekoodiga online pastebin, kus serveril pole kleebitud andmete kohta teadmist. Andmed krüpteeritakse/dekrüpteeritakse %sbrauseris%s kasutades 256-bitist AES-i.",
|
"%s is a minimalist, open source online pastebin where the server has zero knowledge of 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>.",
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Lisateave <a href=\"https://privatebin.info/\">projekti lehel</a>.",
|
||||||
"Because ignorance is bliss": "Kuna teadmatus on õndsus",
|
"Because ignorance is bliss": "Kuna teadmatus on õndsus",
|
||||||
"en": "et",
|
|
||||||
"Paste does not exist, has expired or has been deleted.": "Kleebet ei eksisteeri, on aegunud või on kustutatud.",
|
"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 php %s or above to work. Sorry.": "%s vajab, et oleks php %s või kõrgem, et töötada. Vabandame.",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s vajab, et [%s] seadistamise jaotis oleks olemas konfiguratsioonifailis.",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s vajab, et [%s] seadistamise jaotis oleks olemas konfiguratsioonifailis.",
|
||||||
@ -11,6 +10,8 @@
|
|||||||
"Palun oota %d sekund iga postituse vahel.",
|
"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.",
|
"Palun oota %d sekundit iga postituse vahel.",
|
||||||
|
"Palun oota %d sekundit iga postituse vahel.",
|
||||||
|
"Palun oota %d sekundit iga postituse vahel.",
|
||||||
"Palun oota %d sekundit iga postituse vahel."
|
"Palun oota %d sekundit iga postituse vahel."
|
||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "Kleepe limiit on %s krüpteeritud andmeid.",
|
"Paste is limited to %s of encrypted data.": "Kleepe limiit on %s krüpteeritud andmeid.",
|
||||||
@ -25,7 +26,7 @@
|
|||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript on vajalik %s'i töötamiseks. Vabandame ebamugavuste pärast.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript on vajalik %s'i töötamiseks. Vabandame ebamugavuste pärast.",
|
||||||
"%s requires a modern browser to work.": "%s vajab töötamiseks kaasaegset brauserit.",
|
"%s requires a modern browser to work.": "%s vajab töötamiseks kaasaegset brauserit.",
|
||||||
"New": "Uus",
|
"New": "Uus",
|
||||||
"Send": "Saada",
|
"Create": "Loo",
|
||||||
"Clone": "Klooni",
|
"Clone": "Klooni",
|
||||||
"Raw text": "Lähtetekst",
|
"Raw text": "Lähtetekst",
|
||||||
"Expires": "Aegub",
|
"Expires": "Aegub",
|
||||||
@ -38,71 +39,95 @@
|
|||||||
"%d sekund",
|
"%d sekund",
|
||||||
"%d sekundit",
|
"%d sekundit",
|
||||||
"%d sekundit",
|
"%d sekundit",
|
||||||
|
"%d sekundit",
|
||||||
|
"%d sekundit",
|
||||||
"%d sekundit"
|
"%d sekundit"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"%d minut",
|
"%d minut",
|
||||||
"%d minutit",
|
"%d minutit",
|
||||||
"%d minutit",
|
"%d minutit",
|
||||||
|
"%d minutit",
|
||||||
|
"%d minutit",
|
||||||
"%d minutit"
|
"%d minutit"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d tund",
|
"%d tund",
|
||||||
"%d tundi",
|
"%d tundi",
|
||||||
"%d tundi",
|
"%d tundi",
|
||||||
|
"%d tundi",
|
||||||
|
"%d tundi",
|
||||||
"%d tundi"
|
"%d tundi"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d päev",
|
"%d päev",
|
||||||
"%d päeva",
|
"%d päeva",
|
||||||
"%d päeva",
|
"%d päeva",
|
||||||
|
"%d päeva",
|
||||||
|
"%d päeva",
|
||||||
"%d päeva"
|
"%d päeva"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d nädal",
|
"%d nädal",
|
||||||
"%d nädalat",
|
"%d nädalat",
|
||||||
"%d nädalat",
|
"%d nädalat",
|
||||||
|
"%d nädalat",
|
||||||
|
"%d nädalat",
|
||||||
"%d nädalat"
|
"%d nädalat"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d kuu",
|
"%d kuu",
|
||||||
"%d kuud",
|
"%d kuud",
|
||||||
"%d kuud",
|
"%d kuud",
|
||||||
|
"%d kuud",
|
||||||
|
"%d kuud",
|
||||||
"%d kuud"
|
"%d kuud"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
"%d aasta",
|
"%d aasta",
|
||||||
"%d aastat",
|
"%d aastat",
|
||||||
"%d aastat",
|
"%d aastat",
|
||||||
|
"%d aastat",
|
||||||
|
"%d aastat",
|
||||||
"%d aastat"
|
"%d aastat"
|
||||||
],
|
],
|
||||||
"Never": "Mitte kunagi",
|
"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.",
|
"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.": [
|
"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.",
|
||||||
"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.",
|
||||||
"See dokument aegub %d sekundi pärast."
|
"See dokument aegub %d sekundi pärast."
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"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.",
|
||||||
"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.",
|
||||||
"See dokument aegub %d minuti pärast."
|
"See dokument aegub %d minuti pärast."
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"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.",
|
||||||
"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.",
|
||||||
"See dokument aegub %d tunni pärast."
|
"See dokument aegub %d tunni pärast."
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"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.",
|
||||||
"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.",
|
||||||
"See dokument aegub %d päeva pärast."
|
"See dokument aegub %d päeva pärast."
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"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.",
|
||||||
"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.",
|
||||||
@ -182,8 +207,18 @@
|
|||||||
"Use Current Timezone": "Kasuta praegust ajavööndit",
|
"Use Current Timezone": "Kasuta praegust ajavööndit",
|
||||||
"Convert To UTC": "Teisenda UTC-ks",
|
"Convert To UTC": "Teisenda UTC-ks",
|
||||||
"Close": "Sulge",
|
"Close": "Sulge",
|
||||||
"Encrypted note on PrivateBin": "Krüpteeritud kiri PrivateBin-is",
|
"Encrypted note on %s": "Krüpteeritud kiri %s-is",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Kirja nägemiseks külasta seda linki. Teistele URL-i andmine lubab ka neil ligi pääseda kirjale.",
|
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Kirja nägemiseks külasta seda linki. Teistele URL-i andmine lubab ka neil ligi pääseda kirjale.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "URL-i lühendaja võib paljastada sinu dekrüpteerimisvõtme URL-is.",
|
"URL shortener may expose your decrypt key in URL.": "URL-i lühendaja võib paljastada sinu dekrüpteerimisvõtme URL-is.",
|
||||||
"Save paste": "Salvesta kleebe"
|
"Save paste": "Salvesta kleebe",
|
||||||
|
"Your IP is not authorized to create pastes.": "Su IP-l ei ole lubatud kleepeid luua.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "Püüame lühendada URL-i, mis ei viita meie instantsile.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Viga YOURLS-i kutsumisel. Tõenäoliselt konfiguratsiooniprobleem, näiteks vale või puuduv \"apiurl\" või \"signature\".",
|
||||||
|
"Error parsing YOURLS response.": "Viga YOURLS vastuse parsimisel.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
|
||||||
|
"Yes, see it": "Yes, see it",
|
||||||
|
"Dark Mode": "Tume režiim",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||||
|
"Start over": "Start over"
|
||||||
}
|
}
|
||||||
|
224
i18n/fi.json
Normal file
224
i18n/fi.json
Normal file
@ -0,0 +1,224 @@
|
|||||||
|
{
|
||||||
|
"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>.": "Lisää tietoa <a href=\"https://privatebin.info/\">projektisivulla</a>.",
|
||||||
|
"Because ignorance is bliss": "Koska tieto lisää tuskaa",
|
||||||
|
"Paste does not exist, has expired or has been deleted.": "Pastea ei ole olemassa, se on vanhentunut tai se on poistettu.",
|
||||||
|
"%s requires php %s or above to work. Sorry.": "%s vaatii php:n %s-version tai uudemman toimiakseen. Anteeksi.",
|
||||||
|
"%s requires configuration section [%s] to be present in configuration file.": "%s vaatii konfiguraatio-osion [%s] olevan läsnä konfiguraatiotiedostossa.",
|
||||||
|
"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ä.",
|
||||||
|
"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.": "%s vaatii JavaScriptiä toimiakseen. Anteeksi haitasta.",
|
||||||
|
"%s requires a modern browser to work.": "%s vaatii modernin selaimen toimiakseen.",
|
||||||
|
"New": "Uusi",
|
||||||
|
"Create": "Luo",
|
||||||
|
"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äälle/pois",
|
||||||
|
"%d seconds": [
|
||||||
|
"%d sekunti",
|
||||||
|
"%d sekuntia",
|
||||||
|
"%d sekuntia",
|
||||||
|
"%d sekuntia",
|
||||||
|
"%d sekuntia",
|
||||||
|
"%d sekuntia"
|
||||||
|
],
|
||||||
|
"%d minutes": [
|
||||||
|
"%d minuutti",
|
||||||
|
"%d minuuttia",
|
||||||
|
"%d minuuttia",
|
||||||
|
"%d minuuttia",
|
||||||
|
"%d minuuttia",
|
||||||
|
"%d minuuttia"
|
||||||
|
],
|
||||||
|
"%d hours": [
|
||||||
|
"%d tunti",
|
||||||
|
"%d tuntia",
|
||||||
|
"%d tuntia",
|
||||||
|
"%d tuntia",
|
||||||
|
"%d tuntia",
|
||||||
|
"%d tuntia"
|
||||||
|
],
|
||||||
|
"%d days": [
|
||||||
|
"%d päivä",
|
||||||
|
"%d päivää",
|
||||||
|
"%d päivää",
|
||||||
|
"%d päivää",
|
||||||
|
"%d päivää",
|
||||||
|
"%d päivää"
|
||||||
|
],
|
||||||
|
"%d weeks": [
|
||||||
|
"%d viikko",
|
||||||
|
"%d viikkoa",
|
||||||
|
"%d viikkoa",
|
||||||
|
"%d viikkoa",
|
||||||
|
"%d viikkoa",
|
||||||
|
"%d viikkoa"
|
||||||
|
],
|
||||||
|
"%d months": [
|
||||||
|
"%d kuukausi",
|
||||||
|
"%d kuukautta",
|
||||||
|
"%d kuukautta",
|
||||||
|
"%d kuukautta",
|
||||||
|
"%d kuukautta",
|
||||||
|
"%d kuukautta"
|
||||||
|
],
|
||||||
|
"%d years": [
|
||||||
|
"%d vuosi",
|
||||||
|
"%d vuotta",
|
||||||
|
"%d vuotta",
|
||||||
|
"%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.",
|
||||||
|
"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.",
|
||||||
|
"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.",
|
||||||
|
"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ä.",
|
||||||
|
"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.",
|
||||||
|
"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": "Muokkain",
|
||||||
|
"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.": "Vieraile tässä linkissä nähdäksesi viestin. URL:n antaminen kenellekään antaa heidänkin päästä katsomaan viestiä.",
|
||||||
|
"URL shortener may expose your decrypt key in URL.": "URL-lyhentäjä voi paljastaa purkuavaimesi URL:ssä.",
|
||||||
|
"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.": "Yritetään lyhentää URL-osoite, joka ei osoita meidän instanssiiin.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Virhe kutsuttaessa YOURLS. Luultavasti asetusongelma kuten väärä tai puuttuuva \"apiurl\" tai \"signature\".",
|
||||||
|
"Error parsing YOURLS response.": "Virhe jäsennettäessä YOURLS-vastausta.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "Tämä salainen viesti voidaan näyttää vain kerran. Haluatko nähdä sen nyt?",
|
||||||
|
"Yes, see it": "Kyllä, näet sen",
|
||||||
|
"Dark Mode": "Tumma tila",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||||
|
"Start over": "Start over"
|
||||||
|
}
|
77
i18n/fr.json
77
i18n/fr.json
@ -2,8 +2,7 @@
|
|||||||
"PrivateBin": "PrivateBin",
|
"PrivateBin": "PrivateBin",
|
||||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s 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 %sin the browser%s using 256 bits AES.": "%s est un 'pastebin' (ou gestionnaire d'extraits de texte et de code source) minimaliste et open source, dans lequel le serveur n'a aucune connaissance des données envoyées. Les données sont chiffrées/déchiffrées %sdans le navigateur%s par un chiffrement AES 256 bits.",
|
||||||
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Plus d'informations sur <a href=\"https://privatebin.info/\">la page du projet</a>.",
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Plus d'informations sur <a href=\"https://privatebin.info/\">la page du projet</a>.",
|
||||||
"Because ignorance is bliss": "Parce que l'ignorance c'est le bonheur",
|
"Because ignorance is bliss": "Vivons heureux, vivons cachés",
|
||||||
"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.": "Le paste n'existe pas, a expiré, ou a été supprimé.",
|
||||||
"%s requires php %s or above to work. Sorry.": "Désolé, %s nécessite php %s ou supérieur pour fonctionner.",
|
"%s requires php %s or above to work. Sorry.": "Désolé, %s nécessite php %s ou supérieur pour fonctionner.",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s a besoin de la section de configuration [%s] dans le fichier de configuration pour fonctionner.",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s a besoin de la section de configuration [%s] dans le fichier de configuration pour fonctionner.",
|
||||||
@ -11,6 +10,8 @@
|
|||||||
"Merci d'attendre %d seconde entre chaque publication.",
|
"Merci d'attendre %d seconde entre chaque publication.",
|
||||||
"Merci d'attendre %d secondes entre chaque publication.",
|
"Merci d'attendre %d secondes entre chaque publication.",
|
||||||
"Merci d'attendre %d secondes entre chaque publication.",
|
"Merci d'attendre %d secondes entre chaque publication.",
|
||||||
|
"Merci d'attendre %d secondes entre chaque publication.",
|
||||||
|
"Merci d'attendre %d secondes entre chaque publication.",
|
||||||
"Merci d'attendre %d secondes entre chaque publication."
|
"Merci d'attendre %d secondes entre chaque publication."
|
||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "Le paste est limité à %s de données chiffrées.",
|
"Paste is limited to %s of encrypted data.": "Le paste est limité à %s de données chiffrées.",
|
||||||
@ -25,7 +26,7 @@
|
|||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript est requis pour faire fonctionner %s. Désolé pour cet inconvénient.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript est requis pour faire fonctionner %s. Désolé pour cet inconvénient.",
|
||||||
"%s requires a modern browser to work.": "%s nécessite un navigateur moderne pour fonctionner.",
|
"%s requires a modern browser to work.": "%s nécessite un navigateur moderne pour fonctionner.",
|
||||||
"New": "Nouveau",
|
"New": "Nouveau",
|
||||||
"Send": "Envoyer",
|
"Create": "Créer",
|
||||||
"Clone": "Cloner",
|
"Clone": "Cloner",
|
||||||
"Raw text": "Texte brut",
|
"Raw text": "Texte brut",
|
||||||
"Expires": "Expire",
|
"Expires": "Expire",
|
||||||
@ -37,72 +38,96 @@
|
|||||||
"%d seconds": [
|
"%d seconds": [
|
||||||
"%d seconde",
|
"%d seconde",
|
||||||
"%d secondes",
|
"%d secondes",
|
||||||
"%d seconds (2nd plural)",
|
"%d secondes",
|
||||||
"%d seconds (3rd plural)"
|
"%d secondes",
|
||||||
|
"%d secondes",
|
||||||
|
"%d secondes"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"%d minute",
|
"%d minute",
|
||||||
"%d minutes",
|
"%d minutes",
|
||||||
"%d minutes (2nd plural)",
|
"%d minutes",
|
||||||
"%d minutes (3rd plural)"
|
"%d minutes",
|
||||||
|
"%d minutes",
|
||||||
|
"%d minutes"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d heure",
|
"%d heure",
|
||||||
"%d heures",
|
"%d heures",
|
||||||
"%d hours (2nd plural)",
|
"%d heures",
|
||||||
"%d hours (3rd plural)"
|
"%d heures",
|
||||||
|
"%d heures",
|
||||||
|
"%d heures"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d jour",
|
"%d jour",
|
||||||
"%d jours",
|
"%d jours",
|
||||||
"%d days (2nd plural)",
|
"%d jours",
|
||||||
"%d days (3rd plural)"
|
"%d jours",
|
||||||
|
"%d jours",
|
||||||
|
"%d jours"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d semaine",
|
"%d semaine",
|
||||||
"%d semaines",
|
"%d semaines",
|
||||||
"%d weeks (2nd plural)",
|
"%d semaines",
|
||||||
"%d weeks (3rd plural)"
|
"%d semaines",
|
||||||
|
"%d semaines",
|
||||||
|
"%d semaines"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d mois",
|
"%d mois",
|
||||||
"%d mois",
|
"%d mois",
|
||||||
"%d months (2nd plural)",
|
"%d mois",
|
||||||
"%d months (3rd plural)"
|
"%d mois",
|
||||||
|
"%d mois",
|
||||||
|
"%d mois"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
"%d an",
|
"%d an",
|
||||||
"%d ans",
|
"%d ans",
|
||||||
"%d years (2nd plural)",
|
"%d ans",
|
||||||
"%d years (3rd plural)"
|
"%d ans",
|
||||||
|
"%d ans",
|
||||||
|
"%d ans"
|
||||||
],
|
],
|
||||||
"Never": "Jamais",
|
"Never": "Jamais",
|
||||||
"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.",
|
"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.",
|
||||||
"This document will expire in %d seconds.": [
|
"This document will expire in %d seconds.": [
|
||||||
"Ce document expirera dans %d seconde.",
|
"Ce document expirera dans %d seconde.",
|
||||||
"Ce document expirera dans %d secondes.",
|
"Ce document expirera dans %d secondes.",
|
||||||
"This document will expire in %d seconds (2nd plural)",
|
"Ce document expirera dans %d secondes.",
|
||||||
"This document will expire in %d seconds (3rd plural)"
|
"Ce document expirera dans %d secondes.",
|
||||||
|
"Ce document expirera dans %d secondes.",
|
||||||
|
"Ce document expirera dans %d secondes."
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"Ce document expirera dans %d minute.",
|
"Ce document expirera dans %d minute.",
|
||||||
"Ce document expirera dans %d minutes.",
|
"Ce document expirera dans %d minutes.",
|
||||||
"Ce document expirera dans %d minutes.",
|
"Ce document expirera dans %d minutes.",
|
||||||
|
"Ce document expirera dans %d minutes.",
|
||||||
|
"Ce document expirera dans %d minutes.",
|
||||||
"Ce document expirera dans %d minutes."
|
"Ce document expirera dans %d minutes."
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"Ce document expirera dans %d heure.",
|
"Ce document expirera dans %d heure.",
|
||||||
"Ce document expirera dans %d heures.",
|
"Ce document expirera dans %d heures.",
|
||||||
"Ce document expirera dans %d heures.",
|
"Ce document expirera dans %d heures.",
|
||||||
|
"Ce document expirera dans %d heures.",
|
||||||
|
"Ce document expirera dans %d heures.",
|
||||||
"Ce document expirera dans %d heures."
|
"Ce document expirera dans %d heures."
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"Ce document expirera dans %d jour.",
|
"Ce document expirera dans %d jour.",
|
||||||
"Ce document expirera dans %d jours.",
|
"Ce document expirera dans %d jours.",
|
||||||
"Ce document expirera dans %d jours.",
|
"Ce document expirera dans %d jours.",
|
||||||
|
"Ce document expirera dans %d jours.",
|
||||||
|
"Ce document expirera dans %d jours.",
|
||||||
"Ce document expirera dans %d jours."
|
"Ce document expirera dans %d jours."
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
|
"Ce document expirera dans %d mois.",
|
||||||
|
"Ce document expirera dans %d mois.",
|
||||||
"Ce document expirera dans %d mois.",
|
"Ce document expirera dans %d mois.",
|
||||||
"Ce document expirera dans %d mois.",
|
"Ce document expirera dans %d mois.",
|
||||||
"Ce document expirera dans %d mois.",
|
"Ce document expirera dans %d mois.",
|
||||||
@ -182,8 +207,18 @@
|
|||||||
"Use Current Timezone": "Conserver l'actuel",
|
"Use Current Timezone": "Conserver l'actuel",
|
||||||
"Convert To UTC": "Convertir en UTC",
|
"Convert To UTC": "Convertir en UTC",
|
||||||
"Close": "Fermer",
|
"Close": "Fermer",
|
||||||
"Encrypted note on PrivateBin": "Message chiffré sur PrivateBin",
|
"Encrypted note on %s": "Message chiffré sur %s",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visiter ce lien pour voir la note. Donner l'URL à une autre personne lui permet également d'accéder à la note.",
|
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visiter ce lien pour voir la note. Donner l'URL à une autre personne lui permet également d'accéder à la note.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "Raccourcir l'URL peut exposer votre clé de déchiffrement dans l'URL.",
|
"URL shortener may expose your decrypt key in URL.": "Raccourcir l'URL peut exposer votre clé de déchiffrement dans l'URL.",
|
||||||
"Save paste": "Sauver le paste"
|
"Save paste": "Sauver le paste",
|
||||||
|
"Your IP is not authorized to create pastes.": "Votre adresse IP n'est pas autorisée à créer des pastes.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "Tentative de raccourcir une URL qui ne pointe pas vers notre instance.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Erreur lors de l'appel de YOURLS. Peut-être un problème de configuration, comme \"apiurl\" ou \"signature\" manquant.",
|
||||||
|
"Error parsing YOURLS response.": "Erreur d'analyse de la réponse YOURLS.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "Les pastes de type \"Effacer après la lecture\" ne peuvent être affichés qu'une seule fois. Voulez-vous le voir maintenant ?",
|
||||||
|
"Yes, see it": "Oui, le voir",
|
||||||
|
"Dark Mode": "Mode Sombre",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Erreur lors de la compression du paste, en raison du support de WebAssembly manquant.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Erreur lors de la décompression du paste, votre navigateur ne supporte pas WebAssembly. Veuillez utiliser un autre navigateur pour voir ce paste.",
|
||||||
|
"Start over": "Recommencer"
|
||||||
}
|
}
|
||||||
|
57
i18n/he.json
57
i18n/he.json
@ -3,7 +3,6 @@
|
|||||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.",
|
"%s is a minimalist, open source online pastebin where the server has zero knowledge of 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>.",
|
"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": "he",
|
|
||||||
"Paste does not exist, has expired or has been deleted.": "ההדבקה לא קיימת, פגה או נמחקה.",
|
"Paste does not exist, has expired or has been deleted.": "ההדבקה לא קיימת, פגה או נמחקה.",
|
||||||
"%s requires php %s or above to work. Sorry.": "%s דורש PHP %s כדי לפעול.",
|
"%s requires php %s or above to work. Sorry.": "%s דורש PHP %s כדי לפעול.",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s דורש שסעיף ההגדרות [%s] יהיה קיים בקובץ ההגדרות.",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s דורש שסעיף ההגדרות [%s] יהיה קיים בקובץ ההגדרות.",
|
||||||
@ -11,6 +10,8 @@
|
|||||||
"נא להמתין שנייה אחת בין פרסום לפרסום.",
|
"נא להמתין שנייה אחת בין פרסום לפרסום.",
|
||||||
"נא להמתין %d שניות בין פרסום לפרסום.",
|
"נא להמתין %d שניות בין פרסום לפרסום.",
|
||||||
"נא להמתין %d שניות בין פרסום לפרסום.",
|
"נא להמתין %d שניות בין פרסום לפרסום.",
|
||||||
|
"נא להמתין %d שניות בין פרסום לפרסום.",
|
||||||
|
"נא להמתין %d שניות בין פרסום לפרסום.",
|
||||||
"נא להמתין %d שניות בין פרסום לפרסום."
|
"נא להמתין %d שניות בין פרסום לפרסום."
|
||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "ההדבקה מוגבלת ל־%s של נתונים מוצפנים.",
|
"Paste is limited to %s of encrypted data.": "ההדבקה מוגבלת ל־%s של נתונים מוצפנים.",
|
||||||
@ -25,7 +26,7 @@
|
|||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "צריך JavaScript כדי לאפשר ל־%s לפעול. סליחה על חוסר הנוחות.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "צריך JavaScript כדי לאפשר ל־%s לפעול. סליחה על חוסר הנוחות.",
|
||||||
"%s requires a modern browser to work.": "%s דורש דפדפן מודרני כדי לפעול.",
|
"%s requires a modern browser to work.": "%s דורש דפדפן מודרני כדי לפעול.",
|
||||||
"New": "חדש",
|
"New": "חדש",
|
||||||
"Send": "שליחה",
|
"Create": "צור",
|
||||||
"Clone": "שכפול",
|
"Clone": "שכפול",
|
||||||
"Raw text": "טקסט גולמי",
|
"Raw text": "טקסט גולמי",
|
||||||
"Expires": "Expires",
|
"Expires": "Expires",
|
||||||
@ -37,43 +38,57 @@
|
|||||||
"%d seconds": [
|
"%d seconds": [
|
||||||
"שנייה אחת",
|
"שנייה אחת",
|
||||||
"%d שניות",
|
"%d שניות",
|
||||||
"%d שניות (צורת ריבוי 2)",
|
"%d שניות",
|
||||||
|
"%d שניות",
|
||||||
|
"%d שניות",
|
||||||
"%d שניות"
|
"%d שניות"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"דקה אחת",
|
"דקה אחת",
|
||||||
"%d דקות",
|
"%d דקות",
|
||||||
"%d דקות",
|
"%d דקות",
|
||||||
|
"%d דקות",
|
||||||
|
"%d דקות",
|
||||||
"%d דקות"
|
"%d דקות"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"שעה אחת",
|
"שעה אחת",
|
||||||
"%d hours (1st plural)",
|
"%d hours (1st plural)",
|
||||||
"%d hours (2nd plural)",
|
"%d hours (2nd plural)",
|
||||||
"%d hours (3rd plural)"
|
"%d hours (3rd plural)",
|
||||||
|
"%d hours (4th plural)",
|
||||||
|
"%d hours (5th plural)"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"יום אחד",
|
"יום אחד",
|
||||||
"%d ימים",
|
"%d ימים",
|
||||||
"%d ימים",
|
"%d ימים",
|
||||||
|
"%d ימים",
|
||||||
|
"%d ימים",
|
||||||
"%d ימים"
|
"%d ימים"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"שבוע אחד",
|
"שבוע אחד",
|
||||||
"%d שבועות",
|
"%d שבועות",
|
||||||
"%d שבועות",
|
"%d שבועות",
|
||||||
|
"%d שבועות",
|
||||||
|
"%d שבועות",
|
||||||
"%d שבועות"
|
"%d שבועות"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"חודש אחד",
|
"חודש אחד",
|
||||||
"%d חודשים",
|
"%d חודשים",
|
||||||
"%d חודשים",
|
"%d חודשים",
|
||||||
|
"%d חודשים",
|
||||||
|
"%d חודשים",
|
||||||
"%d חודשים"
|
"%d חודשים"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
"שנה אחת",
|
"שנה אחת",
|
||||||
"%d שנים",
|
"%d שנים",
|
||||||
"%d שנים",
|
"%d שנים",
|
||||||
|
"%d שנים",
|
||||||
|
"%d שנים",
|
||||||
"%d שנים"
|
"%d שנים"
|
||||||
],
|
],
|
||||||
"Never": "לעולם לא",
|
"Never": "לעולם לא",
|
||||||
@ -82,31 +97,41 @@
|
|||||||
"This document will expire in %d second. (singular)",
|
"This document will expire in %d second. (singular)",
|
||||||
"This document will expire in %d seconds. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d seconds. (3rd plural)"
|
"This document will expire in %d seconds. (3rd plural)",
|
||||||
|
"This document will expire in %d seconds. (4th plural)",
|
||||||
|
"This document will expire in %d seconds. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"This document will expire in %d minute. (singular)",
|
"This document will expire in %d minute. (singular)",
|
||||||
"This document will expire in %d minutes. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d minutes. (3rd plural)"
|
"This document will expire in %d minutes. (3rd plural)",
|
||||||
|
"This document will expire in %d minutes. (4th plural)",
|
||||||
|
"This document will expire in %d minutes. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"This document will expire in %d hour. (singular)",
|
"This document will expire in %d hour. (singular)",
|
||||||
"This document will expire in %d hours. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d hours. (3rd plural)"
|
"This document will expire in %d hours. (3rd plural)",
|
||||||
|
"This document will expire in %d hours. (4th plural)",
|
||||||
|
"This document will expire in %d hours. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"This document will expire in %d day. (singular)",
|
"This document will expire in %d day. (singular)",
|
||||||
"This document will expire in %d days. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d days. (3rd plural)"
|
"This document will expire in %d days. (3rd plural)",
|
||||||
|
"This document will expire in %d days. (4th plural)",
|
||||||
|
"This document will expire in %d days. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
"This document will expire in %d month. (singular)",
|
"This document will expire in %d month. (singular)",
|
||||||
"This document will expire in %d months. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d months. (3rd plural)"
|
"This document will expire in %d months. (3rd plural)",
|
||||||
|
"This document will expire in %d months. (4th plural)",
|
||||||
|
"This document will expire in %d months. (5th plural)"
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "נא למלא את הססמה להדבקה הזו:",
|
"Please enter the password for this paste:": "נא למלא את הססמה להדבקה הזו:",
|
||||||
"Could not decrypt data (Wrong key?)": "לא ניתן לפענח את הנתונים (מפתח שגוי?)",
|
"Could not decrypt data (Wrong key?)": "לא ניתן לפענח את הנתונים (מפתח שגוי?)",
|
||||||
@ -182,8 +207,18 @@
|
|||||||
"Use Current Timezone": "להשתמש באזור הזמן הנוכחי",
|
"Use Current Timezone": "להשתמש באזור הזמן הנוכחי",
|
||||||
"Convert To UTC": "המרה ל־UTC",
|
"Convert To UTC": "המרה ל־UTC",
|
||||||
"Close": "סגירה",
|
"Close": "סגירה",
|
||||||
"Encrypted note on PrivateBin": "הערה מוצפנת ב־PrivateBin",
|
"Encrypted note on %s": "%sהערה מוצפנת ב־",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "נא לבקר בקישור כדי לצפות בהערה. מסירת הקישור לאנשים כלשהם תאפשר גם להם לגשת להערה.",
|
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "נא לבקר בקישור כדי לצפות בהערה. מסירת הקישור לאנשים כלשהם תאפשר גם להם לגשת להערה.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
||||||
"Save paste": "Save paste"
|
"Save paste": "Save paste",
|
||||||
|
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".",
|
||||||
|
"Error parsing YOURLS response.": "Error parsing YOURLS response.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
|
||||||
|
"Yes, see it": "Yes, see it",
|
||||||
|
"Dark Mode": "Dark Mode",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||||
|
"Start over": "Start over"
|
||||||
}
|
}
|
||||||
|
69
i18n/hi.json
69
i18n/hi.json
@ -3,7 +3,6 @@
|
|||||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.",
|
"%s is a minimalist, open source online pastebin where the server has zero knowledge of 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>.",
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "More information on the <a href=\"https://privatebin.info/\">project page</a>.",
|
||||||
"Because ignorance is bliss": "Because ignorance is bliss",
|
"Because ignorance is bliss": "Because ignorance is bliss",
|
||||||
"en": "hi",
|
|
||||||
"Paste does not exist, has expired or has been deleted.": "Paste does not exist, has expired or has been deleted.",
|
"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 php %s or above to work. Sorry.": "%s requires php %s or above to work. Sorry.",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.",
|
||||||
@ -11,7 +10,9 @@
|
|||||||
"Please wait %d second between each post. (singular)",
|
"Please wait %d second between each post. (singular)",
|
||||||
"Please wait %d seconds between each post. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"Please wait %d seconds between each post. (3rd plural)"
|
"Please wait %d seconds between each post. (3rd plural)",
|
||||||
|
"Please wait %d seconds between each post. (4th plural)",
|
||||||
|
"Please wait %d seconds between each post. (5th plural)"
|
||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.",
|
"Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.",
|
||||||
"Invalid data.": "Invalid data.",
|
"Invalid data.": "Invalid data.",
|
||||||
@ -25,7 +26,7 @@
|
|||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.",
|
||||||
"%s requires a modern browser to work.": "%s requires a modern browser to work.",
|
"%s requires a modern browser to work.": "%s requires a modern browser to work.",
|
||||||
"New": "New",
|
"New": "New",
|
||||||
"Send": "Send",
|
"Create": "Create",
|
||||||
"Clone": "Clone",
|
"Clone": "Clone",
|
||||||
"Raw text": "Raw text",
|
"Raw text": "Raw text",
|
||||||
"Expires": "Expires",
|
"Expires": "Expires",
|
||||||
@ -38,43 +39,57 @@
|
|||||||
"%d second (singular)",
|
"%d second (singular)",
|
||||||
"%d seconds (1st plural)",
|
"%d seconds (1st plural)",
|
||||||
"%d seconds (2nd plural)",
|
"%d seconds (2nd plural)",
|
||||||
"%d seconds (3rd plural)"
|
"%d seconds (3rd plural)",
|
||||||
|
"%d seconds (4th plural)",
|
||||||
|
"%d seconds (5th plural)"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"%d minute (singular)",
|
"%d minute (singular)",
|
||||||
"%d minutes (1st plural)",
|
"%d minutes (1st plural)",
|
||||||
"%d minutes (2nd plural)",
|
"%d minutes (2nd plural)",
|
||||||
"%d minutes (3rd plural)"
|
"%d minutes (3rd plural)",
|
||||||
|
"%d minutes (4th plural)",
|
||||||
|
"%d minutes (5th plural)"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d hour (singular)",
|
"%d hour (singular)",
|
||||||
"%d hours (1st plural)",
|
"%d hours (1st plural)",
|
||||||
"%d hours (2nd plural)",
|
"%d hours (2nd plural)",
|
||||||
"%d hours (3rd plural)"
|
"%d hours (3rd plural)",
|
||||||
|
"%d hours (4th plural)",
|
||||||
|
"%d hours (5th plural)"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d day (singular)",
|
"%d day (singular)",
|
||||||
"%d days (1st plural)",
|
"%d days (1st plural)",
|
||||||
"%d days (2nd plural)",
|
"%d days (2nd plural)",
|
||||||
"%d days (3rd plural)"
|
"%d days (3rd plural)",
|
||||||
|
"%d days (4th plural)",
|
||||||
|
"%d days (5th plural)"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d week (singular)",
|
"%d week (singular)",
|
||||||
"%d weeks (1st plural)",
|
"%d weeks (1st plural)",
|
||||||
"%d weeks (2nd plural)",
|
"%d weeks (2nd plural)",
|
||||||
"%d weeks (3rd plural)"
|
"%d weeks (3rd plural)",
|
||||||
|
"%d weeks (4th plural)",
|
||||||
|
"%d weeks (5th plural)"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d month (singular)",
|
"%d month (singular)",
|
||||||
"%d months (1st plural)",
|
"%d months (1st plural)",
|
||||||
"%d months (2nd plural)",
|
"%d months (2nd plural)",
|
||||||
"%d months (3rd plural)"
|
"%d months (3rd plural)",
|
||||||
|
"%d months (4th plural)",
|
||||||
|
"%d months (5th plural)"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
"%d year (singular)",
|
"%d year (singular)",
|
||||||
"%d years (1st plural)",
|
"%d years (1st plural)",
|
||||||
"%d years (2nd plural)",
|
"%d years (2nd plural)",
|
||||||
"%d years (3rd plural)"
|
"%d years (3rd plural)",
|
||||||
|
"%d years (4th plural)",
|
||||||
|
"%d years (5th plural)"
|
||||||
],
|
],
|
||||||
"Never": "Never",
|
"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.",
|
"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.",
|
||||||
@ -82,31 +97,41 @@
|
|||||||
"This document will expire in %d second. (singular)",
|
"This document will expire in %d second. (singular)",
|
||||||
"This document will expire in %d seconds. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d seconds. (3rd plural)"
|
"This document will expire in %d seconds. (3rd plural)",
|
||||||
|
"This document will expire in %d seconds. (4th plural)",
|
||||||
|
"This document will expire in %d seconds. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"This document will expire in %d minute. (singular)",
|
"This document will expire in %d minute. (singular)",
|
||||||
"This document will expire in %d minutes. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d minutes. (3rd plural)"
|
"This document will expire in %d minutes. (3rd plural)",
|
||||||
|
"This document will expire in %d minutes. (4th plural)",
|
||||||
|
"This document will expire in %d minutes. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"This document will expire in %d hour. (singular)",
|
"This document will expire in %d hour. (singular)",
|
||||||
"This document will expire in %d hours. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d hours. (3rd plural)"
|
"This document will expire in %d hours. (3rd plural)",
|
||||||
|
"This document will expire in %d hours. (4th plural)",
|
||||||
|
"This document will expire in %d hours. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"This document will expire in %d day. (singular)",
|
"This document will expire in %d day. (singular)",
|
||||||
"This document will expire in %d days. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d days. (3rd plural)"
|
"This document will expire in %d days. (3rd plural)",
|
||||||
|
"This document will expire in %d days. (4th plural)",
|
||||||
|
"This document will expire in %d days. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
"This document will expire in %d month. (singular)",
|
"This document will expire in %d month. (singular)",
|
||||||
"This document will expire in %d months. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d months. (3rd plural)"
|
"This document will expire in %d months. (3rd plural)",
|
||||||
|
"This document will expire in %d months. (4th plural)",
|
||||||
|
"This document will expire in %d months. (5th plural)"
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "Please enter the password for this paste:",
|
"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 decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)",
|
||||||
@ -182,8 +207,18 @@
|
|||||||
"Use Current Timezone": "Use Current Timezone",
|
"Use Current Timezone": "Use Current Timezone",
|
||||||
"Convert To UTC": "Convert To UTC",
|
"Convert To UTC": "Convert To UTC",
|
||||||
"Close": "Close",
|
"Close": "Close",
|
||||||
"Encrypted note on PrivateBin": "Encrypted note on PrivateBin",
|
"Encrypted note on %s": "Encrypted note on %s",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
|
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
||||||
"Save paste": "Save paste"
|
"Save paste": "Save paste",
|
||||||
|
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".",
|
||||||
|
"Error parsing YOURLS response.": "Error parsing YOURLS response.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
|
||||||
|
"Yes, see it": "Yes, see it",
|
||||||
|
"Dark Mode": "Dark Mode",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||||
|
"Start over": "Start over"
|
||||||
}
|
}
|
||||||
|
71
i18n/hu.json
71
i18n/hu.json
@ -3,11 +3,12 @@
|
|||||||
"%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 %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.",
|
||||||
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "További információt a <a href=\"https://privatebin.info/\">projekt oldalán</a> találsz.",
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "További információt a <a href=\"https://privatebin.info/\">projekt oldalán</a> találsz.",
|
||||||
"Because ignorance is bliss": "A titok egyfajta hatalom.",
|
"Because ignorance is bliss": "A titok egyfajta hatalom.",
|
||||||
"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.": "A bejegyzés nem létezik, lejárt vagy törölve lett.",
|
||||||
"%s requires php %s or above to work. Sorry.": "Bocs, de a %s működéséhez %s vagy ezt meghaladó verziójú php-s környezet szükséges.",
|
"%s requires php %s or above to work. Sorry.": "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.",
|
"%s requires configuration section [%s] to be present in configuration file.": "A %s megfelelő működéséhez a konfigurációs fájlban a [%s] résznek léteznie kell.",
|
||||||
"Please wait %d seconds between each post.": [
|
"Please wait %d seconds between each post.": [
|
||||||
|
"Kérlek várj %d másodpercet két beküldés között.",
|
||||||
|
"Kérlek várj %d másodpercet két beküldés között.",
|
||||||
"Kérlek várj %d másodpercet két beküldés között.",
|
"Kérlek várj %d másodpercet két beküldés között.",
|
||||||
"Kérlek várj %d másodpercet két beküldés között.",
|
"Kérlek várj %d másodpercet két beküldés között.",
|
||||||
"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.",
|
||||||
@ -25,7 +26,7 @@
|
|||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript szükséges a %s működéséhez. Elnézést a fennakadásért.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript szükséges a %s működéséhez. Elnézést a fennakadásért.",
|
||||||
"%s requires a modern browser to work.": "A %s működéséhez a jelenleginél újabb böngészőre van szükség.",
|
"%s requires a modern browser to work.": "A %s működéséhez a jelenleginél újabb böngészőre van szükség.",
|
||||||
"New": "Új",
|
"New": "Új",
|
||||||
"Send": "Beküldöm!",
|
"Create": "Létrehozás",
|
||||||
"Clone": "Másol",
|
"Clone": "Másol",
|
||||||
"Raw text": "A nyers szöveg",
|
"Raw text": "A nyers szöveg",
|
||||||
"Expires": "Lejárati idő",
|
"Expires": "Lejárati idő",
|
||||||
@ -37,72 +38,96 @@
|
|||||||
"%d seconds": [
|
"%d seconds": [
|
||||||
"%d másodperc",
|
"%d másodperc",
|
||||||
"%d másodperc",
|
"%d másodperc",
|
||||||
"%d seconds (2nd plural)",
|
"%d másodperc",
|
||||||
"%d seconds (3rd plural)"
|
"%d másodperc",
|
||||||
|
"%d másodperc",
|
||||||
|
"%d másodperc"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"%d perc",
|
"%d perc",
|
||||||
"%d perc",
|
"%d perc",
|
||||||
"%d minutes (2nd plural)",
|
"%d perc",
|
||||||
"%d minutes (3rd plural)"
|
"%d perc",
|
||||||
|
"%d perc",
|
||||||
|
"%d perc"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d óra",
|
"%d óra",
|
||||||
"%d óra",
|
"%d óra",
|
||||||
"%d hours (2nd plural)",
|
"%d óra",
|
||||||
"%d hours (3rd plural)"
|
"%d óra",
|
||||||
|
"%d óra",
|
||||||
|
"%d óra"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d nap",
|
"%d nap",
|
||||||
"%d nap",
|
"%d nap",
|
||||||
"%d days (2nd plural)",
|
"%d nap",
|
||||||
"%d days (3rd plural)"
|
"%d nap",
|
||||||
|
"%d nap",
|
||||||
|
"%d nap"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d hét",
|
"%d hét",
|
||||||
"%d hét",
|
"%d hét",
|
||||||
"%d weeks (2nd plural)",
|
"%d hét",
|
||||||
"%d weeks (3rd plural)"
|
"%d hét",
|
||||||
|
"%d hét",
|
||||||
|
"%d hét"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d hónap",
|
"%d hónap",
|
||||||
"%d hónap",
|
"%d hónap",
|
||||||
"%d months (2nd plural)",
|
"%d hónap",
|
||||||
"%d months (3rd plural)"
|
"%d hónap",
|
||||||
|
"%d hónap",
|
||||||
|
"%d hónap"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
"%d év",
|
"%d év",
|
||||||
"%d év",
|
"%d év",
|
||||||
"%d years (2nd plural)",
|
"%d év",
|
||||||
"%d years (3rd plural)"
|
"%d év",
|
||||||
|
"%d év",
|
||||||
|
"%d év"
|
||||||
],
|
],
|
||||||
"Never": "Soha",
|
"Never": "Soha",
|
||||||
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Megjegyzés: ez egy teszt szolgáltatás, az adatok bármikor törlődhetnek. Ha visszaélsz vele, kiscicák bánhatják! :)",
|
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Megjegyzés: ez egy teszt szolgáltatás, az adatok bármikor törlődhetnek. Ha visszaélsz vele, kiscicák bánhatják! :)",
|
||||||
"This document will expire in %d seconds.": [
|
"This document will expire in %d seconds.": [
|
||||||
|
"Ez a bejegyzés %d másodperc múlva megsemmisül.",
|
||||||
|
"Ez a bejegyzés %d másodperc múlva megsemmisül.",
|
||||||
"Ez a bejegyzés %d másodperc múlva megsemmisül.",
|
"Ez a bejegyzés %d másodperc múlva megsemmisül.",
|
||||||
"Ez a bejegyzés %d másodperc múlva megsemmisül.",
|
"Ez a bejegyzés %d másodperc múlva megsemmisül.",
|
||||||
"Ez a bejegyzés %d másodperc múlva megsemmisül.",
|
"Ez a bejegyzés %d másodperc múlva megsemmisül.",
|
||||||
"Ez a bejegyzés %d másodperc múlva megsemmisül."
|
"Ez a bejegyzés %d másodperc múlva megsemmisül."
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
|
"Ez a bejegyzés %d perc múlva megsemmisül.",
|
||||||
|
"Ez a bejegyzés %d perc múlva megsemmisül.",
|
||||||
"Ez a bejegyzés %d perc múlva megsemmisül.",
|
"Ez a bejegyzés %d perc múlva megsemmisül.",
|
||||||
"Ez a bejegyzés %d perc múlva megsemmisül.",
|
"Ez a bejegyzés %d perc múlva megsemmisül.",
|
||||||
"Ez a bejegyzés %d perc múlva megsemmisül.",
|
"Ez a bejegyzés %d perc múlva megsemmisül.",
|
||||||
"Ez a bejegyzés %d perc múlva megsemmisül."
|
"Ez a bejegyzés %d perc múlva megsemmisül."
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
|
"Ez a bejegyzés %d óra múlva megsemmisül.",
|
||||||
|
"Ez a bejegyzés %d óra múlva megsemmisül.",
|
||||||
"Ez a bejegyzés %d óra múlva megsemmisül.",
|
"Ez a bejegyzés %d óra múlva megsemmisül.",
|
||||||
"Ez a bejegyzés %d óra múlva megsemmisül.",
|
"Ez a bejegyzés %d óra múlva megsemmisül.",
|
||||||
"Ez a bejegyzés %d óra múlva megsemmisül.",
|
"Ez a bejegyzés %d óra múlva megsemmisül.",
|
||||||
"Ez a bejegyzés %d óra múlva megsemmisül."
|
"Ez a bejegyzés %d óra múlva megsemmisül."
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
|
"Ez a bejegyzés %d nap múlva megsemmisül.",
|
||||||
|
"Ez a bejegyzés %d nap múlva megsemmisül.",
|
||||||
"Ez a bejegyzés %d nap múlva megsemmisül.",
|
"Ez a bejegyzés %d nap múlva megsemmisül.",
|
||||||
"Ez a bejegyzés %d nap múlva megsemmisül.",
|
"Ez a bejegyzés %d nap múlva megsemmisül.",
|
||||||
"Ez a bejegyzés %d nap múlva megsemmisül.",
|
"Ez a bejegyzés %d nap múlva megsemmisül.",
|
||||||
"Ez a bejegyzés %d nap múlva megsemmisül."
|
"Ez a bejegyzés %d nap múlva megsemmisül."
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
|
"Ez a bejegyzés %d hónap múlva megsemmisül.",
|
||||||
|
"Ez a bejegyzés %d hónap múlva megsemmisül.",
|
||||||
"Ez a bejegyzés %d hónap múlva megsemmisül.",
|
"Ez a bejegyzés %d hónap múlva megsemmisül.",
|
||||||
"Ez a bejegyzés %d hónap múlva megsemmisül.",
|
"Ez a bejegyzés %d hónap múlva megsemmisül.",
|
||||||
"Ez a bejegyzés %d hónap múlva megsemmisül.",
|
"Ez a bejegyzés %d hónap múlva megsemmisül.",
|
||||||
@ -182,8 +207,18 @@
|
|||||||
"Use Current Timezone": "Az aktuális időzóna használata",
|
"Use Current Timezone": "Az aktuális időzóna használata",
|
||||||
"Convert To UTC": "Átalakítás UTC időzónára",
|
"Convert To UTC": "Átalakítás UTC időzónára",
|
||||||
"Close": "Bezárás",
|
"Close": "Bezárás",
|
||||||
"Encrypted note on PrivateBin": "Titkosított jegyzet a PrivateBinen",
|
"Encrypted note on %s": "Titkosított jegyzet a %s",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Látogasd meg ezt a hivatkozást a bejegyzés megtekintéséhez. Ha mások számára is megadod ezt a linket, azzal hozzáférnek ők is.",
|
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Látogasd meg ezt a hivatkozást a bejegyzés megtekintéséhez. Ha mások számára is megadod ezt a linket, azzal hozzáférnek ők is.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
||||||
"Save paste": "Save paste"
|
"Save paste": "Save paste",
|
||||||
|
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".",
|
||||||
|
"Error parsing YOURLS response.": "Error parsing YOURLS response.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
|
||||||
|
"Yes, see it": "Yes, see it",
|
||||||
|
"Dark Mode": "Sötét mód",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||||
|
"Start over": "Start over"
|
||||||
}
|
}
|
||||||
|
43
i18n/id.json
43
i18n/id.json
@ -3,11 +3,12 @@
|
|||||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s adalah sebuah pastebin online sumber terbuka dan minimalis, dimana servernya tersebut tidak punya pengetahuan tentang data yang ditempelkan. Data tersebut di enkrip/dekrip %sdi dalam browser%s menggunakan metode enkrip AES 256 bit.",
|
"%s is a minimalist, open source online pastebin where the server has zero knowledge of 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>.",
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Infomasi lebih lanjut pada <a href=\"https://privatebin.info/\">halaman proyek</a>.",
|
||||||
"Because ignorance is bliss": "Karena ketidaktahuan adalah kebahagiaan, gitu loh",
|
"Because ignorance is bliss": "Karena ketidaktahuan adalah kebahagiaan, gitu loh",
|
||||||
"en": "id",
|
|
||||||
"Paste does not exist, has expired or has been deleted.": "Paste tidak ada, telah kedaluwarsa atau telah dihapus.",
|
"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 php %s or above to work. Sorry.": "%s memerlukan php %s atau versi diatasnya untuk dapat dijalankan. Maaf.",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s membutuhkan bagian konfigurasi [%s] untuk ada di file konfigurasi.",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s membutuhkan bagian konfigurasi [%s] untuk ada di file konfigurasi.",
|
||||||
"Please wait %d seconds between each post.": [
|
"Please wait %d seconds between each post.": [
|
||||||
|
"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.",
|
||||||
"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.",
|
||||||
@ -25,7 +26,7 @@
|
|||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript diperlukan agar %s bekerja. Maaf untuk ketidaknyamanannya.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript diperlukan agar %s bekerja. Maaf untuk ketidaknyamanannya.",
|
||||||
"%s requires a modern browser to work.": "%s memerlukan sebuah browser modern untuk bekerja.",
|
"%s requires a modern browser to work.": "%s memerlukan sebuah browser modern untuk bekerja.",
|
||||||
"New": "Baru",
|
"New": "Baru",
|
||||||
"Send": "Kirim",
|
"Create": "Buat baru",
|
||||||
"Clone": "Klon",
|
"Clone": "Klon",
|
||||||
"Raw text": "Teks mentah",
|
"Raw text": "Teks mentah",
|
||||||
"Expires": "Kadaluarsa",
|
"Expires": "Kadaluarsa",
|
||||||
@ -35,42 +36,56 @@
|
|||||||
"Discussion": "Diskusi",
|
"Discussion": "Diskusi",
|
||||||
"Toggle navigation": "Alihkan navigasi",
|
"Toggle navigation": "Alihkan navigasi",
|
||||||
"%d seconds": [
|
"%d seconds": [
|
||||||
|
"%d detik",
|
||||||
|
"%d detik",
|
||||||
"%d detik",
|
"%d detik",
|
||||||
"%d detik",
|
"%d detik",
|
||||||
"%d detik",
|
"%d detik",
|
||||||
"%d detik"
|
"%d detik"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
|
"%d menit",
|
||||||
|
"%d menit",
|
||||||
"%d menit",
|
"%d menit",
|
||||||
"%d menit",
|
"%d menit",
|
||||||
"%d menit",
|
"%d menit",
|
||||||
"%d menit"
|
"%d menit"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
|
"%d jam",
|
||||||
|
"%d jam",
|
||||||
"%d jam",
|
"%d jam",
|
||||||
"%d jam",
|
"%d jam",
|
||||||
"%d jam",
|
"%d jam",
|
||||||
"%d jam"
|
"%d jam"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
|
"%d hari",
|
||||||
|
"%d hari",
|
||||||
"%d hari",
|
"%d hari",
|
||||||
"%d hari",
|
"%d hari",
|
||||||
"%d hari",
|
"%d hari",
|
||||||
"%d hari"
|
"%d hari"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
|
"%d minggu",
|
||||||
|
"%d minggu",
|
||||||
"%d minggu",
|
"%d minggu",
|
||||||
"%d minggu",
|
"%d minggu",
|
||||||
"%d minggu",
|
"%d minggu",
|
||||||
"%d minggu"
|
"%d minggu"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
|
"%d bulan",
|
||||||
|
"%d bulan",
|
||||||
"%d bulan",
|
"%d bulan",
|
||||||
"%d bulan",
|
"%d bulan",
|
||||||
"%d bulan",
|
"%d bulan",
|
||||||
"%d bulan"
|
"%d bulan"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
|
"%d tahun",
|
||||||
|
"%d tahun",
|
||||||
"%d tahun",
|
"%d tahun",
|
||||||
"%d tahun",
|
"%d tahun",
|
||||||
"%d tahun",
|
"%d tahun",
|
||||||
@ -79,30 +94,40 @@
|
|||||||
"Never": "Jangan pernah",
|
"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.",
|
"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.": [
|
"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.",
|
||||||
"Dokumen ini kadaluarsa dalam %d detik.",
|
"Dokumen ini kadaluarsa dalam %d detik.",
|
||||||
"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.": [
|
"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.",
|
||||||
"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.",
|
||||||
"Dokumen ini akan kadaluarsa dalam %d menit."
|
"Dokumen ini akan kadaluarsa dalam %d menit."
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"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.",
|
||||||
"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.",
|
||||||
"Dokumen ini akan kadaluarsa dalam %d jam."
|
"Dokumen ini akan kadaluarsa dalam %d jam."
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"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.",
|
||||||
"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.",
|
||||||
"Dokumen ini akan kadaluarsa dalam %d hari."
|
"Dokumen ini akan kadaluarsa dalam %d hari."
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"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.",
|
||||||
"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.",
|
||||||
@ -182,8 +207,18 @@
|
|||||||
"Use Current Timezone": "Gunakan Zonawaktu Saat Ini",
|
"Use Current Timezone": "Gunakan Zonawaktu Saat Ini",
|
||||||
"Convert To UTC": "Konversi Ke UTC",
|
"Convert To UTC": "Konversi Ke UTC",
|
||||||
"Close": "Tutup",
|
"Close": "Tutup",
|
||||||
"Encrypted note on PrivateBin": "Catatan ter-ekrip di PrivateBin",
|
"Encrypted note on %s": "Catatan ter-ekrip di %s",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Kunjungi tautan ini untuk melihat catatan. Memberikan alamat URL pada siapapun juga, akan mengizinkan mereka untuk mengakses catatan, so pasti gitu loh Kaka.",
|
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Kunjungi tautan ini untuk melihat catatan. Memberikan alamat URL pada siapapun juga, akan mengizinkan mereka untuk mengakses catatan, so pasti gitu loh Kaka.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "Pemendek URL mungkin akan menampakkan kunci dekrip Anda dalam URL.",
|
"URL shortener may expose your decrypt key in URL.": "Pemendek URL mungkin akan menampakkan kunci dekrip Anda dalam URL.",
|
||||||
"Save paste": "Simpan paste"
|
"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.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
|
||||||
|
"Yes, see it": "Yes, see it",
|
||||||
|
"Dark Mode": "Mode Gelap",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||||
|
"Start over": "Start over"
|
||||||
}
|
}
|
||||||
|
71
i18n/it.json
71
i18n/it.json
@ -3,7 +3,6 @@
|
|||||||
"%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 %sin the browser%s using 256 bits AES.": "%s è un sistema di tipo \"Pastebin\" online, open source, minimalista. Il server non possiede alcuna conoscenza (\"Zero Knowledge\") del contenuto dei dati inviati. I dati sono cifrati/decifrati %snel Browser%s con algoritmo AES a 256 Bit.",
|
||||||
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Per ulteriori informazioni, vedi <a href=\"https://privatebin.info/\">Sito del progetto</a>.",
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Per ulteriori informazioni, vedi <a href=\"https://privatebin.info/\">Sito del progetto</a>.",
|
||||||
"Because ignorance is bliss": "Perché l'ignoranza è una benedizione (Because ignorance is bliss)",
|
"Because ignorance is bliss": "Perché l'ignoranza è una benedizione (Because ignorance is bliss)",
|
||||||
"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.": "Questo messaggio non esiste, è scaduto o è stato cancellato.",
|
||||||
"%s requires php %s or above to work. Sorry.": "%s richiede php %s o superiore per funzionare. Ci spiace.",
|
"%s requires php %s or above to work. Sorry.": "%s richiede php %s o superiore per funzionare. Ci spiace.",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s richiede la presenza della sezione [%s] nei file di configurazione.",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s richiede la presenza della sezione [%s] nei file di configurazione.",
|
||||||
@ -11,6 +10,8 @@
|
|||||||
"Attendi per favore un secondo prima di ciascun invio.",
|
"Attendi per favore un secondo prima di ciascun invio.",
|
||||||
"Attendi per favore %d secondi prima di ciascun invio.",
|
"Attendi per favore %d secondi prima di ciascun invio.",
|
||||||
"Attendi per favore %d secondi prima di ciascun invio.",
|
"Attendi per favore %d secondi prima di ciascun invio.",
|
||||||
|
"Attendi per favore %d secondi prima di ciascun invio.",
|
||||||
|
"Attendi per favore %d secondi prima di ciascun invio.",
|
||||||
"Attendi per favore %d secondi prima di ciascun invio."
|
"Attendi per favore %d secondi prima di ciascun invio."
|
||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "La dimensione del messaggio è limitata a %s di dati cifrati.",
|
"Paste is limited to %s of encrypted data.": "La dimensione del messaggio è limitata a %s di dati cifrati.",
|
||||||
@ -25,7 +26,7 @@
|
|||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "%s funziona solo con JavaScript attivo. Ci dispiace per l'inconveniente.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "%s funziona solo con JavaScript attivo. Ci dispiace per l'inconveniente.",
|
||||||
"%s requires a modern browser to work.": "%s richiede un browser moderno e aggiornato per funzionare.",
|
"%s requires a modern browser to work.": "%s richiede un browser moderno e aggiornato per funzionare.",
|
||||||
"New": "Nuovo",
|
"New": "Nuovo",
|
||||||
"Send": "Invia",
|
"Create": "Crea",
|
||||||
"Clone": "Clona",
|
"Clone": "Clona",
|
||||||
"Raw text": "Testo Raw",
|
"Raw text": "Testo Raw",
|
||||||
"Expires": "Scade",
|
"Expires": "Scade",
|
||||||
@ -37,44 +38,58 @@
|
|||||||
"%d seconds": [
|
"%d seconds": [
|
||||||
"%d secondo",
|
"%d secondo",
|
||||||
"%d secondi",
|
"%d secondi",
|
||||||
"%d seconds (2nd plural)",
|
"%d secondi",
|
||||||
"%d seconds (3rd plural)"
|
"%d secondi",
|
||||||
|
"%d secondi",
|
||||||
|
"%d secondi"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"%d minuto",
|
"%d minuto",
|
||||||
"%d minuti",
|
"%d minuti",
|
||||||
"%d minutes (2nd plural)",
|
"%d minuti",
|
||||||
"%d minutes (3rd plural)"
|
"%d minuti",
|
||||||
|
"%d minuti",
|
||||||
|
"%d minuti"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d ora",
|
"%d ora",
|
||||||
"%d ore",
|
"%d ore",
|
||||||
"%d hours (2nd plural)",
|
"%d ore",
|
||||||
"%d hours (3rd plural)"
|
"%d ore",
|
||||||
|
"%d ore",
|
||||||
|
"%d ore"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d giorno",
|
"%d giorno",
|
||||||
"%d giorni",
|
"%d giorni",
|
||||||
"%d days (2nd plural)",
|
"%d giorni",
|
||||||
"%d days (3rd plural)"
|
"%d giorni",
|
||||||
|
"%d giorni",
|
||||||
|
"%d giorni"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d settimana",
|
"%d settimana",
|
||||||
"%d settimane",
|
"%d settimane",
|
||||||
"%d weeks (2nd plural)",
|
"%d settimane",
|
||||||
"%d weeks (3rd plural)"
|
"%d settimane",
|
||||||
|
"%d settimane",
|
||||||
|
"%d settimane"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d mese",
|
"%d mese",
|
||||||
"%d mesi",
|
"%d mesi",
|
||||||
"%d months (2nd plural)",
|
"%d mesi",
|
||||||
"%d months (3rd plural)"
|
"%d mesi",
|
||||||
|
"%d mesi",
|
||||||
|
"%d mesi"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
"%d anno",
|
"%d anno",
|
||||||
"%d anni",
|
"%d anni",
|
||||||
"%d years (2nd plural)",
|
"%d anni",
|
||||||
"%d years (3rd plural)"
|
"%d anni",
|
||||||
|
"%d anni",
|
||||||
|
"%d anni"
|
||||||
],
|
],
|
||||||
"Never": "Mai",
|
"Never": "Mai",
|
||||||
"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.",
|
"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.",
|
||||||
@ -82,30 +97,40 @@
|
|||||||
"Questo documento scadrà tra un secondo.",
|
"Questo documento scadrà tra un secondo.",
|
||||||
"Questo documento scadrà in %d secondi.",
|
"Questo documento scadrà in %d secondi.",
|
||||||
"Questo documento scadrà in %d secondi.",
|
"Questo documento scadrà in %d secondi.",
|
||||||
|
"Questo documento scadrà in %d secondi.",
|
||||||
|
"Questo documento scadrà in %d secondi.",
|
||||||
"Questo documento scadrà in %d secondi."
|
"Questo documento scadrà in %d secondi."
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"Questo documento scadrà tra un minuto.",
|
"Questo documento scadrà tra un minuto.",
|
||||||
"Questo documento scadrà in %d minuti.",
|
"Questo documento scadrà in %d minuti.",
|
||||||
"Questo documento scadrà in %d minuti.",
|
"Questo documento scadrà in %d minuti.",
|
||||||
|
"Questo documento scadrà in %d minuti.",
|
||||||
|
"Questo documento scadrà in %d minuti.",
|
||||||
"Questo documento scadrà in %d minuti."
|
"Questo documento scadrà in %d minuti."
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"Questo documento scadrà tra un'ora.",
|
"Questo documento scadrà tra un'ora.",
|
||||||
"Questo documento scadrà in %d ore.",
|
"Questo documento scadrà in %d ore.",
|
||||||
"Questo documento scadrà in %d ore.",
|
"Questo documento scadrà in %d ore.",
|
||||||
|
"Questo documento scadrà in %d ore.",
|
||||||
|
"Questo documento scadrà in %d ore.",
|
||||||
"Questo documento scadrà in %d ore."
|
"Questo documento scadrà in %d ore."
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"Questo documento scadrà tra un giorno.",
|
"Questo documento scadrà tra un giorno.",
|
||||||
"Questo documento scadrà in %d giorni.",
|
"Questo documento scadrà in %d giorni.",
|
||||||
"Questo documento scadrà in %d giorni.",
|
"Questo documento scadrà in %d giorni.",
|
||||||
|
"Questo documento scadrà in %d giorni.",
|
||||||
|
"Questo documento scadrà in %d giorni.",
|
||||||
"Questo documento scadrà in %d giorni."
|
"Questo documento scadrà in %d giorni."
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
"Questo documento scadrà tra un mese.",
|
"Questo documento scadrà tra un mese.",
|
||||||
"Questo documento scadrà in %d mesi.",
|
"Questo documento scadrà in %d mesi.",
|
||||||
"Questo documento scadrà in %d mesi.",
|
"Questo documento scadrà in %d mesi.",
|
||||||
|
"Questo documento scadrà in %d mesi.",
|
||||||
|
"Questo documento scadrà in %d mesi.",
|
||||||
"Questo documento scadrà in %d mesi."
|
"Questo documento scadrà in %d mesi."
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "Inserisci la password per questo messaggio:",
|
"Please enter the password for this paste:": "Inserisci la password per questo messaggio:",
|
||||||
@ -182,8 +207,18 @@
|
|||||||
"Use Current Timezone": "Usa Fuso Orario Corrente",
|
"Use Current Timezone": "Usa Fuso Orario Corrente",
|
||||||
"Convert To UTC": "Converti a UTC",
|
"Convert To UTC": "Converti a UTC",
|
||||||
"Close": "Chiudi",
|
"Close": "Chiudi",
|
||||||
"Encrypted note on PrivateBin": "Nota crittografata su PrivateBin",
|
"Encrypted note on %s": "Nota crittografata su %s",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visita questo collegamento per vedere la nota. Dare l'URL a chiunque consente anche a loro di accedere alla nota.",
|
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visita questo collegamento per vedere la nota. Dare l'URL a chiunque consente anche a loro di accedere alla nota.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "URL shortener può esporre la tua chiave decrittografata nell'URL.",
|
"URL shortener may expose your decrypt key in URL.": "URL shortener può esporre la tua chiave decrittografata nell'URL.",
|
||||||
"Save paste": "Salva il messagio"
|
"Save paste": "Salva il messagio",
|
||||||
|
"Your IP is not authorized to create pastes.": "Il tuo IP non è autorizzato a creare dei messaggi.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "Tantativo in corso di accorciare un URL che non punta alla nostra istanza.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Errore nella chiamata a YOURLS. Probabilmente un problema di configurazione, come un \"apiurl\" o una \"signature\" sbagliati o mancanti.",
|
||||||
|
"Error parsing YOURLS response.": "Errore nell'analizzare la risposta YOURLS.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "Questo messaggio di tipo Distruggi-dopo-lettura può essere visualizzato solo una volta. Vuoi vederlo ora?",
|
||||||
|
"Yes, see it": "Sì, visualizzalo",
|
||||||
|
"Dark Mode": "Tema Scuro",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Errore nella compressione dell messaggio, a causa del supporto WebAssembly mancante.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Errore nella decompressione dell messaggio, il tuo browser non supporta WebAssembly. Utilizza un altro browser per visualizzare questo messaggio.",
|
||||||
|
"Start over": "Ricominciare"
|
||||||
}
|
}
|
||||||
|
335
i18n/ja.json
335
i18n/ja.json
@ -1,135 +1,160 @@
|
|||||||
{
|
{
|
||||||
"PrivateBin": "PrivateBin",
|
"PrivateBin": "PrivateBin",
|
||||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.",
|
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s はミニマリストで、オープンソースのオンラインデータ貼り付けサービスです。サーバーに、貼り付けられたデータの中身を読み取ることはできません。データは、256ビットのAESを用いて%sブラウザー上で%s暗号化、または復号化されます。",
|
||||||
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "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>をご覧ください。",
|
||||||
"Because ignorance is bliss": "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.": "Paste does not exist, has expired or has been deleted.",
|
"%s requires php %s or above to work. Sorry.": "%s の動作には php %s 以上が必要です。申し訳ありません。",
|
||||||
"%s requires php %s or above to work. Sorry.": "%s requires php %s or above to work. Sorry.",
|
"%s requires configuration section [%s] to be present in configuration file.": "%sには設定ファイルに[%s]の設定セクションが必要です。",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.",
|
|
||||||
"Please wait %d seconds between each post.": [
|
"Please wait %d seconds between each post.": [
|
||||||
"Please wait %d second between each post. (singular)",
|
"投稿ごとに%d秒間お待ちください。",
|
||||||
"Please wait %d seconds between each post. (1st plural)",
|
"投稿ごとに%d秒間お待ちください。",
|
||||||
"Please wait %d seconds between each post. (2nd plural)",
|
"投稿ごとに%d秒間お待ちください。",
|
||||||
"Please wait %d seconds between each post. (3rd plural)"
|
"投稿ごとに%d秒間お待ちください。",
|
||||||
|
"投稿ごとに%d秒間お待ちください。",
|
||||||
|
"投稿ごとに%d秒間お待ちください。"
|
||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.",
|
"Paste is limited to %s of encrypted data.": "ペーストは暗号化されたデータの%sに制限されています。",
|
||||||
"Invalid data.": "Invalid data.",
|
"Invalid data.": "無効なデータです。",
|
||||||
"You are unlucky. Try again.": "You are unlucky. Try again.",
|
"You are unlucky. Try again.": "何か問題が発生しました。もう一度やり直してください。",
|
||||||
"Error saving comment. Sorry.": "Error saving comment. Sorry.",
|
"Error saving comment. Sorry.": "コメントの保存中にエラーが発生しました。申し訳ありません。",
|
||||||
"Error saving paste. Sorry.": "Error saving paste. Sorry.",
|
"Error saving paste. Sorry.": "ペーストの保存中にエラーが発生しました。申し訳ありません。",
|
||||||
"Invalid paste ID.": "Invalid paste ID.",
|
"Invalid paste ID.": "無効なペーストIDです。",
|
||||||
"Paste is not of burn-after-reading type.": "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.",
|
"Wrong deletion token. Paste was not deleted.": "不正な削除トークンです。ペーストは削除されませんでした。",
|
||||||
"Paste was properly 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.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "%s の動作にはJavaScriptが必要です。ご迷惑をおかけして申し訳ありません。",
|
||||||
"%s requires a modern browser to work.": "%s requires a modern browser to work.",
|
"%s requires a modern browser to work.": "%s の動作には最近のブラウザが必要です。",
|
||||||
"New": "New",
|
"New": "新規",
|
||||||
"Send": "Send",
|
"Create": "作成",
|
||||||
"Clone": "Clone",
|
"Clone": "複製",
|
||||||
"Raw text": "Raw text",
|
"Raw text": "未加工テキスト",
|
||||||
"Expires": "Expires",
|
"Expires": "有効期限",
|
||||||
"Burn after reading": "Burn after reading",
|
"Burn after reading": "読み込んだ後に消去",
|
||||||
"Open discussion": "Open discussion",
|
"Open discussion": "ディスカッションを開く",
|
||||||
"Password (recommended)": "Password (recommended)",
|
"Password (recommended)": "パスワード(推奨)",
|
||||||
"Discussion": "Discussion",
|
"Discussion": "ディスカッション",
|
||||||
"Toggle navigation": "Toggle navigation",
|
"Toggle navigation": "ナビゲーションを切り替え",
|
||||||
"%d seconds": [
|
"%d seconds": [
|
||||||
"%d second (singular)",
|
"%d秒",
|
||||||
"%d seconds (1st plural)",
|
"%d秒",
|
||||||
"%d seconds (2nd plural)",
|
"%d秒",
|
||||||
"%d seconds (3rd plural)"
|
"%d秒",
|
||||||
|
"%d秒",
|
||||||
|
"%d秒"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"%d minute (singular)",
|
"%d分",
|
||||||
"%d minutes (1st plural)",
|
"%d分",
|
||||||
"%d minutes (2nd plural)",
|
"%d分",
|
||||||
"%d minutes (3rd plural)"
|
"%d分",
|
||||||
|
"%d分",
|
||||||
|
"%d分"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d hour (singular)",
|
"%d時間",
|
||||||
"%d hours (1st plural)",
|
"%d時間",
|
||||||
"%d hours (2nd plural)",
|
"%d時間",
|
||||||
"%d hours (3rd plural)"
|
"%d時間",
|
||||||
|
"%d時間",
|
||||||
|
"%d 時間"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d day (singular)",
|
"%d 日",
|
||||||
"%d days (1st plural)",
|
"%d 日",
|
||||||
"%d days (2nd plural)",
|
"%d 日",
|
||||||
"%d days (3rd plural)"
|
"%d 日",
|
||||||
|
"%d 日",
|
||||||
|
"%d 日"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d week (singular)",
|
"%d週間",
|
||||||
"%d weeks (1st plural)",
|
"%d週間",
|
||||||
"%d weeks (2nd plural)",
|
"%d週間",
|
||||||
"%d weeks (3rd plural)"
|
"%d週間",
|
||||||
|
"%d週間",
|
||||||
|
"%d週間"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d month (singular)",
|
"%dか月",
|
||||||
"%d months (1st plural)",
|
"%dか月",
|
||||||
"%d months (2nd plural)",
|
"%dか月",
|
||||||
"%d months (3rd plural)"
|
"%dか月",
|
||||||
|
"%dか月",
|
||||||
|
"%dか月"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
"%d year (singular)",
|
"%d年",
|
||||||
"%d years (1st plural)",
|
"%d年",
|
||||||
"%d years (2nd plural)",
|
"%d年",
|
||||||
"%d years (3rd plural)"
|
"%d年",
|
||||||
|
"%d年",
|
||||||
|
"%d年"
|
||||||
],
|
],
|
||||||
"Never": "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.",
|
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "注意:これはテストサービスです。データはいつでも削除される可能性があります。このサービスを悪用するとKittensの動作は停止します。",
|
||||||
"This document will expire in %d seconds.": [
|
"This document will expire in %d seconds.": [
|
||||||
"This document will expire in %d second. (singular)",
|
"このドキュメントは%d秒後に失効します。",
|
||||||
"This document will expire in %d seconds. (1st plural)",
|
"このドキュメントは%d秒後に失効します。",
|
||||||
"This document will expire in %d seconds. (2nd plural)",
|
"このドキュメントは%d秒後に失効します。",
|
||||||
"This document will expire in %d seconds. (3rd plural)"
|
"このドキュメントは%d秒後に失効します。",
|
||||||
|
"このドキュメントは%d秒後に失効します。",
|
||||||
|
"このドキュメントは%d秒後に失効します。"
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"This document will expire in %d minute. (singular)",
|
"このドキュメントは%d分後に失効します。",
|
||||||
"This document will expire in %d minutes. (1st plural)",
|
"このドキュメントは%d分後に失効します。",
|
||||||
"This document will expire in %d minutes. (2nd plural)",
|
"このドキュメントは%d分後に失効します。",
|
||||||
"This document will expire in %d minutes. (3rd plural)"
|
"このドキュメントは%d分後に失効します。",
|
||||||
|
"このドキュメントは%d分後に失効します。",
|
||||||
|
"このドキュメントは%d分後に失効します。"
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"This document will expire in %d hour. (singular)",
|
"このドキュメントは%d時間後に失効します。",
|
||||||
"This document will expire in %d hours. (1st plural)",
|
"このドキュメントは%d時間後に失効します。",
|
||||||
"This document will expire in %d hours. (2nd plural)",
|
"このドキュメントは%d時間後に失効します。",
|
||||||
"This document will expire in %d hours. (3rd plural)"
|
"このドキュメントは%d時間後に失効します。",
|
||||||
|
"このドキュメントは%d時間後に失効します。",
|
||||||
|
"このドキュメントは%d時間後に失効します。"
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"This document will expire in %d day. (singular)",
|
"このドキュメントは%d日後に失効します。",
|
||||||
"This document will expire in %d days. (1st plural)",
|
"このドキュメントは%d日後に失効します。",
|
||||||
"This document will expire in %d days. (2nd plural)",
|
"このドキュメントは%d日後に失効します。",
|
||||||
"This document will expire in %d days. (3rd plural)"
|
"このドキュメントは%d日後に失効します。",
|
||||||
|
"このドキュメントは%d日後に失効します。",
|
||||||
|
"このドキュメントは%d日後に失効します。"
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
"This document will expire in %d month. (singular)",
|
"このドキュメントは%dか月後に失効します。",
|
||||||
"This document will expire in %d months. (1st plural)",
|
"このドキュメントは%dか月後に失効します。",
|
||||||
"This document will expire in %d months. (2nd plural)",
|
"このドキュメントは%dか月後に失効します。",
|
||||||
"This document will expire in %d months. (3rd plural)"
|
"このドキュメントは%dか月後に失効します。",
|
||||||
|
"このドキュメントは%dか月後に失効します。",
|
||||||
|
"このドキュメントは%dか月後に失効します。"
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "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 decrypt data (Wrong key?)": "データを復号することができませんでした(間違った鍵ですか?)",
|
||||||
"Could not delete the paste, it was not stored in burn after reading mode.": "Could not delete the paste, it was not stored in burn after reading mode.",
|
"Could not delete the 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.",
|
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "このウィンドウを閉じないでください。このメッセージはもう表示できません。",
|
||||||
"Could not decrypt comment; Wrong key?": "Could not decrypt comment; Wrong key?",
|
"Could not decrypt comment; Wrong key?": "コメントを復号することができませんでした。間違った鍵ですか?",
|
||||||
"Reply": "Reply",
|
"Reply": "返信",
|
||||||
"Anonymous": "Anonymous",
|
"Anonymous": "匿名",
|
||||||
"Avatar generated from IP address": "Avatar generated from IP address",
|
"Avatar generated from IP address": "IPアドレスから生成したアバター",
|
||||||
"Add comment": "Add comment",
|
"Add comment": "コメントを追加",
|
||||||
"Optional nickname…": "Optional nickname…",
|
"Optional nickname…": "任意のニックネーム…",
|
||||||
"Post comment": "Post comment",
|
"Post comment": "コメントを投稿",
|
||||||
"Sending comment…": "Sending comment…",
|
"Sending comment…": "コメントを送信しています…",
|
||||||
"Comment posted.": "Comment posted.",
|
"Comment posted.": "コメントを投稿しました。",
|
||||||
"Could not refresh display: %s": "Could not refresh display: %s",
|
"Could not refresh display: %s": "表示を更新できませんでした:%s",
|
||||||
"unknown status": "unknown status",
|
"unknown status": "不明な状態",
|
||||||
"server error or not responding": "server error or not responding",
|
"server error or not responding": "サーバーエラーまたは応答しません",
|
||||||
"Could not post comment: %s": "Could not post comment: %s",
|
"Could not post comment: %s": "コメントを投稿できませんでした:%s",
|
||||||
"Sending paste…": "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>",
|
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "ペーストは<a id=\"pasteurl\" href=\"%s\">%s</a>です<span id=\"copyhint\">(コピーするには[Ctrl]+[c]を押してください)</span>",
|
||||||
"Delete data": "Delete data",
|
"Delete data": "データを削除",
|
||||||
"Could not create paste: %s": "Could not create paste: %s",
|
"Could not create paste: %s": "ペーストを作成できませんでした:%s",
|
||||||
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)",
|
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "ペーストを復号化できません:復号化キーがURLにありません(URLの一部を削除するリダイレクト機能またはURLの短縮アプリケーションを使いましたか?)",
|
||||||
"B": "B",
|
"B": "B",
|
||||||
"KiB": "KiB",
|
"KiB": "KiB",
|
||||||
"MiB": "MiB",
|
"MiB": "MiB",
|
||||||
@ -139,51 +164,61 @@
|
|||||||
"EiB": "EiB",
|
"EiB": "EiB",
|
||||||
"ZiB": "ZiB",
|
"ZiB": "ZiB",
|
||||||
"YiB": "YiB",
|
"YiB": "YiB",
|
||||||
"Format": "Format",
|
"Format": "形式",
|
||||||
"Plain Text": "Plain Text",
|
"Plain Text": "プレーンテキスト",
|
||||||
"Source Code": "Source Code",
|
"Source Code": "ソースコード",
|
||||||
"Markdown": "Markdown",
|
"Markdown": "Markdown",
|
||||||
"Download attachment": "Download attachment",
|
"Download attachment": "添付ファイルをダウンロード",
|
||||||
"Cloned: '%s'": "Cloned: '%s'",
|
"Cloned: '%s'": "複製済:'%s'",
|
||||||
"The cloned file '%s' was attached to this paste.": "The cloned file '%s' was attached to this paste.",
|
"The cloned file '%s' was attached to this paste.": "複製されたファイル '%s' がこのペーストに添付されました。",
|
||||||
"Attach a file": "Attach a file",
|
"Attach a file": "ファイルを添付",
|
||||||
"alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard",
|
"alternatively drag & drop a file or paste an image from the clipboard": "代わりに、ファイルをドラッグ&ドロップまたはクリップボードから画像を貼り付け",
|
||||||
"File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.",
|
"File too large, to display a preview. Please download the attachment.": "ファイルが大きすぎるため、プレビューを表示できません。ダウンロードしてください。",
|
||||||
"Remove attachment": "Remove attachment",
|
"Remove attachment": "添付ファイルを削除",
|
||||||
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Your browser does not support uploading encrypted files. Please use a newer browser.",
|
"Your browser does not support uploading encrypted files. Please use a newer browser.": "お使いのブラウザーは暗号化されたファイルのアップロードをサポートしていません。新しいブラウザーを使用してください。",
|
||||||
"Invalid attachment.": "Invalid attachment.",
|
"Invalid attachment.": "不正な添付ファイルです。",
|
||||||
"Options": "Options",
|
"Options": "設定",
|
||||||
"Shorten URL": "Shorten URL",
|
"Shorten URL": "URLを短縮",
|
||||||
"Editor": "Editor",
|
"Editor": "エディター",
|
||||||
"Preview": "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.",
|
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s は「%s」で終わるPATHが必要です。index.phpのPATHを更新してください。",
|
||||||
"Decrypt": "Decrypt",
|
"Decrypt": "復号化",
|
||||||
"Enter password": "Enter password",
|
"Enter password": "パスワードを入力",
|
||||||
"Loading…": "Loading…",
|
"Loading…": "読み込んでいます…",
|
||||||
"Decrypting paste…": "Decrypting paste…",
|
"Decrypting 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 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 +++",
|
"+++ no paste text +++": "+++ ペーストのテキストはありません +++",
|
||||||
"Could not get paste data: %s": "Could not get paste data: %s",
|
"Could not get paste data: %s": "ペーストのデータを取得できませんでした:%s",
|
||||||
"QR code": "QR code",
|
"QR code": "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.": "このウェブサイトは安全でない HTTP 接続を使用しています!テストにのみ使用してください。",
|
||||||
"For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.",
|
"For more information <a href=\"%s\">see this FAQ entry</a>.": "詳細については、<a href=\"%s\">こちらのFAQエントリー</a>をご覧ください。",
|
||||||
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "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>.": "お使いのブラウザーはWebCrypto APIのサポートにHTTPS接続を必要とするかもしれません。<a href=\"%s\">HTTPS接続に切り替えてみてください</a>。",
|
||||||
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "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.": "お使いのブラウザーはzlib圧縮に必要なWebAssemblyをサポートしていません。圧縮されていないドキュメントを作成することはできますが、圧縮されたドキュメントを読み込むことはできません。",
|
||||||
"waiting on user to provide a password": "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.",
|
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "データを復号できませんでした。パスワードが間違っていましたか? 上部のボタンで再試行してください。",
|
||||||
"Retry": "Retry",
|
"Retry": "再試行",
|
||||||
"Showing raw text…": "Showing raw text…",
|
"Showing raw text…": "未加工テキストを表示しています…",
|
||||||
"Notice:": "Notice:",
|
"Notice:": "注意:",
|
||||||
"This link will expire after %s.": "This link will expire after %s.",
|
"This link will expire after %s.": "このリンクは%s後に期限切れになります。",
|
||||||
"This link can only be accessed once, do not use back or refresh button in your browser.": "This link can only be accessed once, do not use back or refresh button in your browser.",
|
"This link can only be accessed once, do not use back or refresh button in your browser.": "このリンクは一度だけアクセスできます。ブラウザで戻ったり更新したりしないでください。",
|
||||||
"Link:": "Link:",
|
"Link:": "リンク:",
|
||||||
"Recipient may become aware of your timezone, convert time to UTC?": "Recipient may become aware of your timezone, convert time to UTC?",
|
"Recipient may become aware of your timezone, convert time to UTC?": "受信する人はあなたのタイムゾーンに気づくかもしれません。時間をUTCに変換しますか?",
|
||||||
"Use Current Timezone": "Use Current Timezone",
|
"Use Current Timezone": "現在のタイムゾーンを使用",
|
||||||
"Convert To UTC": "Convert To UTC",
|
"Convert To UTC": "UTCに変換",
|
||||||
"Close": "Close",
|
"Close": "閉じる",
|
||||||
"Encrypted note on PrivateBin": "Encrypted note on PrivateBin",
|
"Encrypted note on %s": "%sの暗号化されたメモ",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
|
"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 shortener may expose your decrypt key in URL.",
|
"URL shortener may expose your decrypt key in URL.": "URLの短縮アプリケーションを使うと、復号用のキーが漏洩するおそれがあります。",
|
||||||
"Save paste": "Save paste"
|
"Save paste": "ペーストを保存",
|
||||||
|
"Your IP is not authorized to create pastes.": "あなたのIPアドレスにはペーストを作成する権限がありません。",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "このインスタンスを指していないURLを短縮しようとしています。",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "YOURLSの呼び出し中にエラーが発生しました。\"apiurl\"または\"signature\"等の設定に問題がある可能性があります。",
|
||||||
|
"Error parsing YOURLS response.": "YOURLSレスポンスの解析中にエラーが発生しました。",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
|
||||||
|
"Yes, see it": "はい、使用します",
|
||||||
|
"Dark Mode": "ダークモード",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||||
|
"Start over": "Start over"
|
||||||
}
|
}
|
||||||
|
224
i18n/jbo.json
Normal file
224
i18n/jbo.json
Normal file
@ -0,0 +1,224 @@
|
|||||||
|
{
|
||||||
|
"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",
|
||||||
|
"Paste does not exist, has expired or has been deleted.": "Paste does not exist, has expired or has been deleted.",
|
||||||
|
"%s requires php %s or above to work. Sorry.": "%s requires php %s or above to work. Sorry.",
|
||||||
|
"%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.",
|
||||||
|
"Please wait %d seconds between each post.": [
|
||||||
|
"Please wait %d second between each post. (singular)",
|
||||||
|
"Please wait %d seconds between each post. (1st plural)",
|
||||||
|
"Please wait %d seconds between each post. (2nd plural)",
|
||||||
|
"Please wait %d seconds between each post. (3rd plural)",
|
||||||
|
"Please wait %d seconds between each post. (4th plural)",
|
||||||
|
"Please wait %d seconds between each post. (5th plural)"
|
||||||
|
],
|
||||||
|
"Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.",
|
||||||
|
"Invalid data.": ".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",
|
||||||
|
"Create": "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 seconds (4th plural)",
|
||||||
|
"%d seconds (5th plural)"
|
||||||
|
],
|
||||||
|
"%d minutes": [
|
||||||
|
"%d minute (singular)",
|
||||||
|
"%d minutes (1st plural)",
|
||||||
|
"%d minutes (2nd plural)",
|
||||||
|
"%d minutes (3rd plural)",
|
||||||
|
"%d minutes (4th plural)",
|
||||||
|
"%d minutes (5th plural)"
|
||||||
|
],
|
||||||
|
"%d hours": [
|
||||||
|
"%d hour (singular)",
|
||||||
|
"%d hours (1st plural)",
|
||||||
|
"%d hours (2nd plural)",
|
||||||
|
"%d hours (3rd plural)",
|
||||||
|
"%d hours (4th plural)",
|
||||||
|
"%d hours (5th plural)"
|
||||||
|
],
|
||||||
|
"%d days": [
|
||||||
|
"%d day (singular)",
|
||||||
|
"%d days (1st plural)",
|
||||||
|
"%d days (2nd plural)",
|
||||||
|
"%d days (3rd plural)",
|
||||||
|
"%d days (4th plural)",
|
||||||
|
"%d days (5th plural)"
|
||||||
|
],
|
||||||
|
"%d weeks": [
|
||||||
|
"%d week (singular)",
|
||||||
|
"%d weeks (1st plural)",
|
||||||
|
"%d weeks (2nd plural)",
|
||||||
|
"%d weeks (3rd plural)",
|
||||||
|
"%d weeks (4th plural)",
|
||||||
|
"%d weeks (5th plural)"
|
||||||
|
],
|
||||||
|
"%d months": [
|
||||||
|
"%d month (singular)",
|
||||||
|
"%d months (1st plural)",
|
||||||
|
"%d months (2nd plural)",
|
||||||
|
"%d months (3rd plural)",
|
||||||
|
"%d months (4th plural)",
|
||||||
|
"%d months (5th plural)"
|
||||||
|
],
|
||||||
|
"%d years": [
|
||||||
|
"%d year (singular)",
|
||||||
|
"%d years (1st plural)",
|
||||||
|
"%d years (2nd plural)",
|
||||||
|
"%d years (3rd plural)",
|
||||||
|
"%d years (4th plural)",
|
||||||
|
"%d years (5th plural)"
|
||||||
|
],
|
||||||
|
"Never": "Never",
|
||||||
|
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.",
|
||||||
|
"This document will expire in %d seconds.": [
|
||||||
|
"This document will expire in %d second. (singular)",
|
||||||
|
"This document will expire in %d seconds. (1st plural)",
|
||||||
|
"This document will expire in %d seconds. (2nd plural)",
|
||||||
|
"This document will expire in %d seconds. (3rd plural)",
|
||||||
|
"This document will expire in %d seconds. (4th plural)",
|
||||||
|
"This document will expire in %d seconds. (5th plural)"
|
||||||
|
],
|
||||||
|
"This document will expire in %d minutes.": [
|
||||||
|
"This document will expire in %d minute. (singular)",
|
||||||
|
"This document will expire in %d minutes. (1st plural)",
|
||||||
|
"This document will expire in %d minutes. (2nd plural)",
|
||||||
|
"This document will expire in %d minutes. (3rd plural)",
|
||||||
|
"This document will expire in %d minutes. (4th plural)",
|
||||||
|
"This document will expire in %d minutes. (5th plural)"
|
||||||
|
],
|
||||||
|
"This document will expire in %d hours.": [
|
||||||
|
"This document will expire in %d hour. (singular)",
|
||||||
|
"This document will expire in %d hours. (1st plural)",
|
||||||
|
"This document will expire in %d hours. (2nd plural)",
|
||||||
|
"This document will expire in %d hours. (3rd plural)",
|
||||||
|
"This document will expire in %d hours. (4th plural)",
|
||||||
|
"This document will expire in %d hours. (5th plural)"
|
||||||
|
],
|
||||||
|
"This document will expire in %d days.": [
|
||||||
|
"This document will expire in %d day. (singular)",
|
||||||
|
"This document will expire in %d days. (1st plural)",
|
||||||
|
"This document will expire in %d days. (2nd plural)",
|
||||||
|
"This document will expire in %d days. (3rd plural)",
|
||||||
|
"This document will expire in %d days. (4th plural)",
|
||||||
|
"This document will expire in %d days. (5th plural)"
|
||||||
|
],
|
||||||
|
"This document will expire in %d months.": [
|
||||||
|
"This document will expire in %d month. (singular)",
|
||||||
|
"This document will expire in %d months. (1st plural)",
|
||||||
|
"This document will expire in %d months. (2nd plural)",
|
||||||
|
"This document will expire in %d months. (3rd plural)",
|
||||||
|
"This document will expire in %d months. (4th plural)",
|
||||||
|
"This document will expire in %d months. (5th plural)"
|
||||||
|
],
|
||||||
|
"Please enter the password for this paste:": "Please enter the password for this paste:",
|
||||||
|
"Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)",
|
||||||
|
"Could not delete the paste, it was not stored in burn after reading mode.": "Could not delete the paste, it was not stored in burn after reading mode.",
|
||||||
|
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.",
|
||||||
|
"Could not decrypt comment; Wrong key?": "Could not decrypt comment; Wrong key?",
|
||||||
|
"Reply": "Reply",
|
||||||
|
"Anonymous": "Anonymous",
|
||||||
|
"Avatar generated from IP address": "Avatar generated from IP address",
|
||||||
|
"Add comment": "Add comment",
|
||||||
|
"Optional nickname…": "Optional nickname…",
|
||||||
|
"Post comment": "Post comment",
|
||||||
|
"Sending comment…": "Sending comment…",
|
||||||
|
"Comment posted.": "Comment posted.",
|
||||||
|
"Could not refresh display: %s": "Could not refresh display: %s",
|
||||||
|
"unknown status": "unknown status",
|
||||||
|
"server error or not responding": "server error or not responding",
|
||||||
|
"Could not post comment: %s": "Could not post comment: %s",
|
||||||
|
"Sending paste…": "Sending paste…",
|
||||||
|
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [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.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
|
||||||
|
"Yes, see it": "Yes, see it",
|
||||||
|
"Dark Mode": "Dark Mode",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||||
|
"Start over": "Start over"
|
||||||
|
}
|
224
i18n/ko.json
Normal file
224
i18n/ko.json
Normal file
@ -0,0 +1,224 @@
|
|||||||
|
{
|
||||||
|
"PrivateBin": "PrivateBin",
|
||||||
|
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.",
|
||||||
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "More information on the <a href=\"https://privatebin.info/\">project page</a>.",
|
||||||
|
"Because ignorance is bliss": "Because ignorance is bliss",
|
||||||
|
"Paste does not exist, has expired or has been deleted.": "Paste does not exist, has expired or has been deleted.",
|
||||||
|
"%s requires php %s or above to work. Sorry.": "%s requires php %s or above to work. Sorry.",
|
||||||
|
"%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.",
|
||||||
|
"Please wait %d seconds between each post.": [
|
||||||
|
"Please wait %d second between each post. (singular)",
|
||||||
|
"Please wait %d seconds between each post. (1st plural)",
|
||||||
|
"Please wait %d seconds between each post. (2nd plural)",
|
||||||
|
"Please wait %d seconds between each post. (3rd plural)",
|
||||||
|
"Please wait %d seconds between each post. (4th plural)",
|
||||||
|
"Please wait %d seconds between each post. (5th plural)"
|
||||||
|
],
|
||||||
|
"Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.",
|
||||||
|
"Invalid data.": "Invalid data.",
|
||||||
|
"You are unlucky. Try again.": "You are unlucky. Try again.",
|
||||||
|
"Error saving comment. Sorry.": "Error saving comment. Sorry.",
|
||||||
|
"Error saving paste. Sorry.": "Error saving paste. Sorry.",
|
||||||
|
"Invalid paste ID.": "Invalid paste ID.",
|
||||||
|
"Paste is not of burn-after-reading type.": "Paste is not of burn-after-reading type.",
|
||||||
|
"Wrong deletion token. Paste was not deleted.": "Wrong deletion token. Paste was not deleted.",
|
||||||
|
"Paste was properly deleted.": "Paste was properly deleted.",
|
||||||
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.",
|
||||||
|
"%s requires a modern browser to work.": "%s requires a modern browser to work.",
|
||||||
|
"New": "New",
|
||||||
|
"Create": "Create",
|
||||||
|
"Clone": "Clone",
|
||||||
|
"Raw text": "Raw text",
|
||||||
|
"Expires": "Expires",
|
||||||
|
"Burn after reading": "Burn after reading",
|
||||||
|
"Open discussion": "Open discussion",
|
||||||
|
"Password (recommended)": "Password (recommended)",
|
||||||
|
"Discussion": "Discussion",
|
||||||
|
"Toggle navigation": "Toggle navigation",
|
||||||
|
"%d seconds": [
|
||||||
|
"%d second (singular)",
|
||||||
|
"%d seconds (1st plural)",
|
||||||
|
"%d seconds (2nd plural)",
|
||||||
|
"%d seconds (3rd plural)",
|
||||||
|
"%d seconds (4th plural)",
|
||||||
|
"%d seconds (5th plural)"
|
||||||
|
],
|
||||||
|
"%d minutes": [
|
||||||
|
"%d minute (singular)",
|
||||||
|
"%d minutes (1st plural)",
|
||||||
|
"%d minutes (2nd plural)",
|
||||||
|
"%d minutes (3rd plural)",
|
||||||
|
"%d minutes (4th plural)",
|
||||||
|
"%d minutes (5th plural)"
|
||||||
|
],
|
||||||
|
"%d hours": [
|
||||||
|
"%d hour (singular)",
|
||||||
|
"%d hours (1st plural)",
|
||||||
|
"%d hours (2nd plural)",
|
||||||
|
"%d hours (3rd plural)",
|
||||||
|
"%d hours (4th plural)",
|
||||||
|
"%d hours (5th plural)"
|
||||||
|
],
|
||||||
|
"%d days": [
|
||||||
|
"%d day (singular)",
|
||||||
|
"%d days (1st plural)",
|
||||||
|
"%d days (2nd plural)",
|
||||||
|
"%d days (3rd plural)",
|
||||||
|
"%d days (4th plural)",
|
||||||
|
"%d days (5th plural)"
|
||||||
|
],
|
||||||
|
"%d weeks": [
|
||||||
|
"%d week (singular)",
|
||||||
|
"%d weeks (1st plural)",
|
||||||
|
"%d weeks (2nd plural)",
|
||||||
|
"%d weeks (3rd plural)",
|
||||||
|
"%d weeks (4th plural)",
|
||||||
|
"%d weeks (5th plural)"
|
||||||
|
],
|
||||||
|
"%d months": [
|
||||||
|
"%d month (singular)",
|
||||||
|
"%d months (1st plural)",
|
||||||
|
"%d months (2nd plural)",
|
||||||
|
"%d months (3rd plural)",
|
||||||
|
"%d months (4th plural)",
|
||||||
|
"%d months (5th plural)"
|
||||||
|
],
|
||||||
|
"%d years": [
|
||||||
|
"%d year (singular)",
|
||||||
|
"%d years (1st plural)",
|
||||||
|
"%d years (2nd plural)",
|
||||||
|
"%d years (3rd plural)",
|
||||||
|
"%d years (4th plural)",
|
||||||
|
"%d years (5th plural)"
|
||||||
|
],
|
||||||
|
"Never": "Never",
|
||||||
|
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.",
|
||||||
|
"This document will expire in %d seconds.": [
|
||||||
|
"This document will expire in %d second. (singular)",
|
||||||
|
"This document will expire in %d seconds. (1st plural)",
|
||||||
|
"This document will expire in %d seconds. (2nd plural)",
|
||||||
|
"This document will expire in %d seconds. (3rd plural)",
|
||||||
|
"This document will expire in %d seconds. (4th plural)",
|
||||||
|
"This document will expire in %d seconds. (5th plural)"
|
||||||
|
],
|
||||||
|
"This document will expire in %d minutes.": [
|
||||||
|
"This document will expire in %d minute. (singular)",
|
||||||
|
"This document will expire in %d minutes. (1st plural)",
|
||||||
|
"This document will expire in %d minutes. (2nd plural)",
|
||||||
|
"This document will expire in %d minutes. (3rd plural)",
|
||||||
|
"This document will expire in %d minutes. (4th plural)",
|
||||||
|
"This document will expire in %d minutes. (5th plural)"
|
||||||
|
],
|
||||||
|
"This document will expire in %d hours.": [
|
||||||
|
"This document will expire in %d hour. (singular)",
|
||||||
|
"This document will expire in %d hours. (1st plural)",
|
||||||
|
"This document will expire in %d hours. (2nd plural)",
|
||||||
|
"This document will expire in %d hours. (3rd plural)",
|
||||||
|
"This document will expire in %d hours. (4th plural)",
|
||||||
|
"This document will expire in %d hours. (5th plural)"
|
||||||
|
],
|
||||||
|
"This document will expire in %d days.": [
|
||||||
|
"This document will expire in %d day. (singular)",
|
||||||
|
"This document will expire in %d days. (1st plural)",
|
||||||
|
"This document will expire in %d days. (2nd plural)",
|
||||||
|
"This document will expire in %d days. (3rd plural)",
|
||||||
|
"This document will expire in %d days. (4th plural)",
|
||||||
|
"This document will expire in %d days. (5th plural)"
|
||||||
|
],
|
||||||
|
"This document will expire in %d months.": [
|
||||||
|
"This document will expire in %d month. (singular)",
|
||||||
|
"This document will expire in %d months. (1st plural)",
|
||||||
|
"This document will expire in %d months. (2nd plural)",
|
||||||
|
"This document will expire in %d months. (3rd plural)",
|
||||||
|
"This document will expire in %d months. (4th plural)",
|
||||||
|
"This document will expire in %d months. (5th plural)"
|
||||||
|
],
|
||||||
|
"Please enter the password for this paste:": "Please enter the password for this paste:",
|
||||||
|
"Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)",
|
||||||
|
"Could not delete the paste, it was not stored in burn after reading mode.": "Could not delete the paste, it was not stored in burn after reading mode.",
|
||||||
|
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.",
|
||||||
|
"Could not decrypt comment; Wrong key?": "Could not decrypt comment; Wrong key?",
|
||||||
|
"Reply": "Reply",
|
||||||
|
"Anonymous": "Anonymous",
|
||||||
|
"Avatar generated from IP address": "Avatar generated from IP address",
|
||||||
|
"Add comment": "Add comment",
|
||||||
|
"Optional nickname…": "Optional nickname…",
|
||||||
|
"Post comment": "Post comment",
|
||||||
|
"Sending comment…": "Sending comment…",
|
||||||
|
"Comment posted.": "Comment posted.",
|
||||||
|
"Could not refresh display: %s": "Could not refresh display: %s",
|
||||||
|
"unknown status": "unknown status",
|
||||||
|
"server error or not responding": "server error or not responding",
|
||||||
|
"Could not post comment: %s": "Could not post comment: %s",
|
||||||
|
"Sending paste…": "Sending paste…",
|
||||||
|
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [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.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
|
||||||
|
"Yes, see it": "Yes, see it",
|
||||||
|
"Dark Mode": "Dark Mode",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||||
|
"Start over": "Start over"
|
||||||
|
}
|
69
i18n/ku.json
69
i18n/ku.json
@ -3,7 +3,6 @@
|
|||||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.",
|
"%s is a minimalist, open source online pastebin where the server has zero knowledge of 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>.",
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "More information on the <a href=\"https://privatebin.info/\">project page</a>.",
|
||||||
"Because ignorance is bliss": "Because ignorance is bliss",
|
"Because ignorance is bliss": "Because ignorance is bliss",
|
||||||
"en": "ku",
|
|
||||||
"Paste does not exist, has expired or has been deleted.": "Paste does not exist, has expired or has been deleted.",
|
"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 php %s or above to work. Sorry.": "%s requires php %s or above to work. Sorry.",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.",
|
||||||
@ -11,7 +10,9 @@
|
|||||||
"Please wait %d second between each post. (singular)",
|
"Please wait %d second between each post. (singular)",
|
||||||
"Please wait %d seconds between each post. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"Please wait %d seconds between each post. (3rd plural)"
|
"Please wait %d seconds between each post. (3rd plural)",
|
||||||
|
"Please wait %d seconds between each post. (4th plural)",
|
||||||
|
"Please wait %d seconds between each post. (5th plural)"
|
||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.",
|
"Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.",
|
||||||
"Invalid data.": "Invalid data.",
|
"Invalid data.": "Invalid data.",
|
||||||
@ -25,7 +26,7 @@
|
|||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.",
|
||||||
"%s requires a modern browser to work.": "%s requires a modern browser to work.",
|
"%s requires a modern browser to work.": "%s requires a modern browser to work.",
|
||||||
"New": "New",
|
"New": "New",
|
||||||
"Send": "Send",
|
"Create": "Create",
|
||||||
"Clone": "Clone",
|
"Clone": "Clone",
|
||||||
"Raw text": "Raw text",
|
"Raw text": "Raw text",
|
||||||
"Expires": "Expires",
|
"Expires": "Expires",
|
||||||
@ -38,43 +39,57 @@
|
|||||||
"%d second (singular)",
|
"%d second (singular)",
|
||||||
"%d seconds (1st plural)",
|
"%d seconds (1st plural)",
|
||||||
"%d seconds (2nd plural)",
|
"%d seconds (2nd plural)",
|
||||||
"%d seconds (3rd plural)"
|
"%d seconds (3rd plural)",
|
||||||
|
"%d seconds (4th plural)",
|
||||||
|
"%d seconds (5th plural)"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"%d minute (singular)",
|
"%d minute (singular)",
|
||||||
"%d minutes (1st plural)",
|
"%d minutes (1st plural)",
|
||||||
"%d minutes (2nd plural)",
|
"%d minutes (2nd plural)",
|
||||||
"%d minutes (3rd plural)"
|
"%d minutes (3rd plural)",
|
||||||
|
"%d minutes (4th plural)",
|
||||||
|
"%d minutes (5th plural)"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d hour (singular)",
|
"%d hour (singular)",
|
||||||
"%d hours (1st plural)",
|
"%d hours (1st plural)",
|
||||||
"%d hours (2nd plural)",
|
"%d hours (2nd plural)",
|
||||||
"%d hours (3rd plural)"
|
"%d hours (3rd plural)",
|
||||||
|
"%d hours (4th plural)",
|
||||||
|
"%d hours (5th plural)"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d day (singular)",
|
"%d day (singular)",
|
||||||
"%d days (1st plural)",
|
"%d days (1st plural)",
|
||||||
"%d days (2nd plural)",
|
"%d days (2nd plural)",
|
||||||
"%d days (3rd plural)"
|
"%d days (3rd plural)",
|
||||||
|
"%d days (4th plural)",
|
||||||
|
"%d days (5th plural)"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d week (singular)",
|
"%d week (singular)",
|
||||||
"%d weeks (1st plural)",
|
"%d weeks (1st plural)",
|
||||||
"%d weeks (2nd plural)",
|
"%d weeks (2nd plural)",
|
||||||
"%d weeks (3rd plural)"
|
"%d weeks (3rd plural)",
|
||||||
|
"%d weeks (4th plural)",
|
||||||
|
"%d weeks (5th plural)"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d month (singular)",
|
"%d month (singular)",
|
||||||
"%d months (1st plural)",
|
"%d months (1st plural)",
|
||||||
"%d months (2nd plural)",
|
"%d months (2nd plural)",
|
||||||
"%d months (3rd plural)"
|
"%d months (3rd plural)",
|
||||||
|
"%d months (4th plural)",
|
||||||
|
"%d months (5th plural)"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
"%d year (singular)",
|
"%d year (singular)",
|
||||||
"%d years (1st plural)",
|
"%d years (1st plural)",
|
||||||
"%d years (2nd plural)",
|
"%d years (2nd plural)",
|
||||||
"%d years (3rd plural)"
|
"%d years (3rd plural)",
|
||||||
|
"%d years (4th plural)",
|
||||||
|
"%d years (5th plural)"
|
||||||
],
|
],
|
||||||
"Never": "Never",
|
"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.",
|
"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.",
|
||||||
@ -82,31 +97,41 @@
|
|||||||
"This document will expire in %d second. (singular)",
|
"This document will expire in %d second. (singular)",
|
||||||
"This document will expire in %d seconds. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d seconds. (3rd plural)"
|
"This document will expire in %d seconds. (3rd plural)",
|
||||||
|
"This document will expire in %d seconds. (4th plural)",
|
||||||
|
"This document will expire in %d seconds. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"This document will expire in %d minute. (singular)",
|
"This document will expire in %d minute. (singular)",
|
||||||
"This document will expire in %d minutes. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d minutes. (3rd plural)"
|
"This document will expire in %d minutes. (3rd plural)",
|
||||||
|
"This document will expire in %d minutes. (4th plural)",
|
||||||
|
"This document will expire in %d minutes. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"This document will expire in %d hour. (singular)",
|
"This document will expire in %d hour. (singular)",
|
||||||
"This document will expire in %d hours. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d hours. (3rd plural)"
|
"This document will expire in %d hours. (3rd plural)",
|
||||||
|
"This document will expire in %d hours. (4th plural)",
|
||||||
|
"This document will expire in %d hours. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"This document will expire in %d day. (singular)",
|
"This document will expire in %d day. (singular)",
|
||||||
"This document will expire in %d days. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d days. (3rd plural)"
|
"This document will expire in %d days. (3rd plural)",
|
||||||
|
"This document will expire in %d days. (4th plural)",
|
||||||
|
"This document will expire in %d days. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
"This document will expire in %d month. (singular)",
|
"This document will expire in %d month. (singular)",
|
||||||
"This document will expire in %d months. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d months. (3rd plural)"
|
"This document will expire in %d months. (3rd plural)",
|
||||||
|
"This document will expire in %d months. (4th plural)",
|
||||||
|
"This document will expire in %d months. (5th plural)"
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "Please enter the password for this paste:",
|
"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 decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)",
|
||||||
@ -182,8 +207,18 @@
|
|||||||
"Use Current Timezone": "Use Current Timezone",
|
"Use Current Timezone": "Use Current Timezone",
|
||||||
"Convert To UTC": "Convert To UTC",
|
"Convert To UTC": "Convert To UTC",
|
||||||
"Close": "Close",
|
"Close": "Close",
|
||||||
"Encrypted note on PrivateBin": "Encrypted note on PrivateBin",
|
"Encrypted note on %s": "Encrypted note on %s",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
|
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
||||||
"Save paste": "Save paste"
|
"Save paste": "Save paste",
|
||||||
|
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".",
|
||||||
|
"Error parsing YOURLS response.": "Error parsing YOURLS response.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
|
||||||
|
"Yes, see it": "Yes, see it",
|
||||||
|
"Dark Mode": "جۆری ڕەش",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||||
|
"Start over": "Start over"
|
||||||
}
|
}
|
||||||
|
69
i18n/la.json
69
i18n/la.json
@ -3,7 +3,6 @@
|
|||||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.",
|
"%s is a minimalist, open source online pastebin where the server has zero knowledge of 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>.",
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "More information on the <a href=\"https://privatebin.info/\">project page</a>.",
|
||||||
"Because ignorance is bliss": "Because ignorance is bliss",
|
"Because ignorance is bliss": "Because ignorance is bliss",
|
||||||
"en": "la",
|
|
||||||
"Paste does not exist, has expired or has been deleted.": "Paste does not exist, has expired or has been deleted.",
|
"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 php %s or above to work. Sorry.": "%s requires php %s or above to work. Sorry.",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.",
|
||||||
@ -11,7 +10,9 @@
|
|||||||
"Please wait %d second between each post. (singular)",
|
"Please wait %d second between each post. (singular)",
|
||||||
"Please wait %d seconds between each post. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"Please wait %d seconds between each post. (3rd plural)"
|
"Please wait %d seconds between each post. (3rd plural)",
|
||||||
|
"Please wait %d seconds between each post. (4th plural)",
|
||||||
|
"Please wait %d seconds between each post. (5th plural)"
|
||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.",
|
"Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.",
|
||||||
"Invalid data.": "Invalid data.",
|
"Invalid data.": "Invalid data.",
|
||||||
@ -25,7 +26,7 @@
|
|||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.",
|
||||||
"%s requires a modern browser to work.": "%s requires a modern browser to work.",
|
"%s requires a modern browser to work.": "%s requires a modern browser to work.",
|
||||||
"New": "New",
|
"New": "New",
|
||||||
"Send": "Send",
|
"Create": "Create",
|
||||||
"Clone": "Clone",
|
"Clone": "Clone",
|
||||||
"Raw text": "Raw text",
|
"Raw text": "Raw text",
|
||||||
"Expires": "Expires",
|
"Expires": "Expires",
|
||||||
@ -38,43 +39,57 @@
|
|||||||
"%d second (singular)",
|
"%d second (singular)",
|
||||||
"%d seconds (1st plural)",
|
"%d seconds (1st plural)",
|
||||||
"%d seconds (2nd plural)",
|
"%d seconds (2nd plural)",
|
||||||
"%d seconds (3rd plural)"
|
"%d seconds (3rd plural)",
|
||||||
|
"%d seconds (4th plural)",
|
||||||
|
"%d seconds (5th plural)"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"%d minute (singular)",
|
"%d minute (singular)",
|
||||||
"%d minutes (1st plural)",
|
"%d minutes (1st plural)",
|
||||||
"%d minutes (2nd plural)",
|
"%d minutes (2nd plural)",
|
||||||
"%d minutes (3rd plural)"
|
"%d minutes (3rd plural)",
|
||||||
|
"%d minutes (4th plural)",
|
||||||
|
"%d minutes (5th plural)"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d hour (singular)",
|
"%d hour (singular)",
|
||||||
"%d hours (1st plural)",
|
"%d hours (1st plural)",
|
||||||
"%d hours (2nd plural)",
|
"%d hours (2nd plural)",
|
||||||
"%d hours (3rd plural)"
|
"%d hours (3rd plural)",
|
||||||
|
"%d hours (4th plural)",
|
||||||
|
"%d hours (5th plural)"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d day (singular)",
|
"%d day (singular)",
|
||||||
"%d days (1st plural)",
|
"%d days (1st plural)",
|
||||||
"%d days (2nd plural)",
|
"%d days (2nd plural)",
|
||||||
"%d days (3rd plural)"
|
"%d days (3rd plural)",
|
||||||
|
"%d days (4th plural)",
|
||||||
|
"%d days (5th plural)"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d week (singular)",
|
"%d week (singular)",
|
||||||
"%d weeks (1st plural)",
|
"%d weeks (1st plural)",
|
||||||
"%d weeks (2nd plural)",
|
"%d weeks (2nd plural)",
|
||||||
"%d weeks (3rd plural)"
|
"%d weeks (3rd plural)",
|
||||||
|
"%d weeks (4th plural)",
|
||||||
|
"%d weeks (5th plural)"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d month (singular)",
|
"%d month (singular)",
|
||||||
"%d months (1st plural)",
|
"%d months (1st plural)",
|
||||||
"%d months (2nd plural)",
|
"%d months (2nd plural)",
|
||||||
"%d months (3rd plural)"
|
"%d months (3rd plural)",
|
||||||
|
"%d months (4th plural)",
|
||||||
|
"%d months (5th plural)"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
"%d year (singular)",
|
"%d year (singular)",
|
||||||
"%d years (1st plural)",
|
"%d years (1st plural)",
|
||||||
"%d years (2nd plural)",
|
"%d years (2nd plural)",
|
||||||
"%d years (3rd plural)"
|
"%d years (3rd plural)",
|
||||||
|
"%d years (4th plural)",
|
||||||
|
"%d years (5th plural)"
|
||||||
],
|
],
|
||||||
"Never": "Never",
|
"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.",
|
"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.",
|
||||||
@ -82,31 +97,41 @@
|
|||||||
"This document will expire in %d second. (singular)",
|
"This document will expire in %d second. (singular)",
|
||||||
"This document will expire in %d seconds. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d seconds. (3rd plural)"
|
"This document will expire in %d seconds. (3rd plural)",
|
||||||
|
"This document will expire in %d seconds. (4th plural)",
|
||||||
|
"This document will expire in %d seconds. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"This document will expire in %d minute. (singular)",
|
"This document will expire in %d minute. (singular)",
|
||||||
"This document will expire in %d minutes. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d minutes. (3rd plural)"
|
"This document will expire in %d minutes. (3rd plural)",
|
||||||
|
"This document will expire in %d minutes. (4th plural)",
|
||||||
|
"This document will expire in %d minutes. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"This document will expire in %d hour. (singular)",
|
"This document will expire in %d hour. (singular)",
|
||||||
"This document will expire in %d hours. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d hours. (3rd plural)"
|
"This document will expire in %d hours. (3rd plural)",
|
||||||
|
"This document will expire in %d hours. (4th plural)",
|
||||||
|
"This document will expire in %d hours. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"This document will expire in %d day. (singular)",
|
"This document will expire in %d day. (singular)",
|
||||||
"This document will expire in %d days. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d days. (3rd plural)"
|
"This document will expire in %d days. (3rd plural)",
|
||||||
|
"This document will expire in %d days. (4th plural)",
|
||||||
|
"This document will expire in %d days. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
"This document will expire in %d month. (singular)",
|
"This document will expire in %d month. (singular)",
|
||||||
"This document will expire in %d months. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d months. (3rd plural)"
|
"This document will expire in %d months. (3rd plural)",
|
||||||
|
"This document will expire in %d months. (4th plural)",
|
||||||
|
"This document will expire in %d months. (5th plural)"
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "Please enter the password for this paste:",
|
"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 decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)",
|
||||||
@ -182,8 +207,18 @@
|
|||||||
"Use Current Timezone": "Use Current Timezone",
|
"Use Current Timezone": "Use Current Timezone",
|
||||||
"Convert To UTC": "Convert To UTC",
|
"Convert To UTC": "Convert To UTC",
|
||||||
"Close": "Close",
|
"Close": "Close",
|
||||||
"Encrypted note on PrivateBin": "Encrypted note on PrivateBin",
|
"Encrypted note on %s": "Encrypted note on %s",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
|
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
||||||
"Save paste": "Save paste"
|
"Save paste": "Save paste",
|
||||||
|
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".",
|
||||||
|
"Error parsing YOURLS response.": "Error parsing YOURLS response.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
|
||||||
|
"Yes, see it": "Yes, see it",
|
||||||
|
"Dark Mode": "Dark Mode",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||||
|
"Start over": "Start over"
|
||||||
}
|
}
|
||||||
|
@ -89,6 +89,7 @@
|
|||||||
"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"],
|
||||||
|
69
i18n/lt.json
69
i18n/lt.json
@ -3,15 +3,16 @@
|
|||||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s yra minimalistinis, atvirojo kodo internetinis įdėjimų dėklas, kurį naudojant, serveris nieko nenutuokia apie įdėtus duomenis. Duomenys yra šifruojami/iššifruojami %snaršyklėje%s naudojant 256 bitų AES.",
|
"%s is a minimalist, open source online pastebin where the server has zero knowledge of 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>.",
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Daugiau informacijos rasite <a href=\"https://privatebin.info/\">projekto puslapyje</a>.",
|
||||||
"Because ignorance is bliss": "Nes nežinojimas yra palaima",
|
"Because ignorance is bliss": "Nes nežinojimas yra palaima",
|
||||||
"en": "lt",
|
|
||||||
"Paste does not exist, has expired or has been deleted.": "Įdėjimo nėra, jis nebegalioja arba buvo ištrintas.",
|
"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 php %s or above to work. Sorry.": "%s savo darbui reikalauja php %s arba naujesnės versijos. Apgailestaujame.",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s reikalauja, kad konfigūracijos faile būtų [%s] konfigūracijos sekcija.",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s reikalauja, kad konfigūracijos faile būtų [%s] konfigūracijos sekcija.",
|
||||||
"Please wait %d seconds between each post.": [
|
"Please wait %d seconds between each post.": [
|
||||||
"Tarp kiekvieno įrašo palaukite %d sekundę.",
|
"Tarp kiekvieno įrašo palaukite %d sekundę.",
|
||||||
"Tarp kiekvieno įrašo palaukite %d sekundes.",
|
"Tarp kiekvieno įrašo palaukite %d sekundės.",
|
||||||
"Tarp kiekvieno įrašo palaukite %d sekundžių.",
|
"Tarp kiekvieno įrašo palaukite %d sekundžių.",
|
||||||
"Tarp kiekvieno įrašo palaukite %d sekundę."
|
"Tarp kiekvieno įrašo palaukite %d sekundžių.",
|
||||||
|
"Tarp kiekvieno įrašo palaukite %d sekundžių.",
|
||||||
|
"Tarp kiekvieno įrašo palaukite %d sekundžių."
|
||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "Įdėjimas yra apribotas iki %s šifruotų duomenų.",
|
"Paste is limited to %s of encrypted data.": "Įdėjimas yra apribotas iki %s šifruotų duomenų.",
|
||||||
"Invalid data.": "Neteisingi duomenys.",
|
"Invalid data.": "Neteisingi duomenys.",
|
||||||
@ -25,7 +26,7 @@
|
|||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "%s darbui reikalinga JavaScript. Atsiprašome už nepatogumus.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "%s darbui reikalinga JavaScript. Atsiprašome už nepatogumus.",
|
||||||
"%s requires a modern browser to work.": "%s savo darbui reikalauja šiuolaikinės naršyklės.",
|
"%s requires a modern browser to work.": "%s savo darbui reikalauja šiuolaikinės naršyklės.",
|
||||||
"New": "Naujas",
|
"New": "Naujas",
|
||||||
"Send": "Siųsti",
|
"Create": "Sukurti",
|
||||||
"Clone": "Dubliuoti",
|
"Clone": "Dubliuoti",
|
||||||
"Raw text": "Neapdorotas tekstas",
|
"Raw text": "Neapdorotas tekstas",
|
||||||
"Expires": "Baigs galioti po",
|
"Expires": "Baigs galioti po",
|
||||||
@ -35,42 +36,56 @@
|
|||||||
"Discussion": "Diskusija",
|
"Discussion": "Diskusija",
|
||||||
"Toggle navigation": "Perjungti naršymą",
|
"Toggle navigation": "Perjungti naršymą",
|
||||||
"%d seconds": [
|
"%d seconds": [
|
||||||
|
"%d sekundę",
|
||||||
"%d sekundės",
|
"%d sekundės",
|
||||||
"%d sekundžių",
|
"%d sekundžių",
|
||||||
"%d sekundžių",
|
"%d sekundžių",
|
||||||
"%d sekundės"
|
"%d sekundžių",
|
||||||
|
"%d sekundžių"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"%d minutės",
|
"%d minutės",
|
||||||
"%d minučių",
|
"%d minučių",
|
||||||
"%d minučių",
|
"%d minučių",
|
||||||
"%d minutės"
|
"%d minučių",
|
||||||
|
"%d minučių",
|
||||||
|
"%d minučių"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d valandos",
|
"%d valandos",
|
||||||
"%d valandų",
|
"%d valandų",
|
||||||
"%d valandų",
|
"%d valandų",
|
||||||
"%d valandos"
|
"%d valandų",
|
||||||
|
"%d valandų",
|
||||||
|
"%d valandų"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d dienos",
|
"%d dienos",
|
||||||
"%d dienų",
|
"%d dienų",
|
||||||
"%d dienų",
|
"%d dienų",
|
||||||
"%d dienos"
|
"%d dienų",
|
||||||
|
"%d dienų",
|
||||||
|
"%d dienų"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d savaitės",
|
"%d savaitės",
|
||||||
"%d savaičių",
|
"%d savaičių",
|
||||||
"%d savaičių",
|
"%d savaičių",
|
||||||
"%d savaitės"
|
"%d savaičių",
|
||||||
|
"%d savaičių",
|
||||||
|
"%d savaičių"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d mėnesio",
|
"%d mėnesio",
|
||||||
"%d mėnesių",
|
"%d mėnesių",
|
||||||
"%d mėnesių",
|
"%d mėnesių",
|
||||||
"%d mėnesio"
|
"%d mėnesių",
|
||||||
|
"%d mėnesių",
|
||||||
|
"%d mėnesių"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
|
"%d metų",
|
||||||
|
"%d metų",
|
||||||
"%d metų",
|
"%d metų",
|
||||||
"%d metų",
|
"%d metų",
|
||||||
"%d metų",
|
"%d metų",
|
||||||
@ -82,31 +97,41 @@
|
|||||||
"Šis dokumentas nustos galioti po %d sekundės.",
|
"Š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žių.",
|
"Šis dokumentas nustos galioti po %d sekundžių.",
|
||||||
"Š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žių."
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"Šis dokumentas nustos galioti po %d minutės.",
|
"Š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 minučių.",
|
"Šis dokumentas nustos galioti po %d minučių.",
|
||||||
"Š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 minučių."
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"Šis dokumentas nustos galioti po %d valandos.",
|
"Š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 valandų.",
|
"Šis dokumentas nustos galioti po %d valandų.",
|
||||||
"Š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 valandų."
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"Šis dokumentas nustos galioti po %d dienos.",
|
"Š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 dienų.",
|
"Šis dokumentas nustos galioti po %d dienų.",
|
||||||
"Š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 dienų."
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
"Šis dokumentas nustos galioti po %d mėnesio.",
|
"Š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ėnesių.",
|
"Šis dokumentas nustos galioti po %d mėnesių.",
|
||||||
"Š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ėnesių."
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "Įveskite šio įdėjimo slaptažodį:",
|
"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 decrypt data (Wrong key?)": "Nepavyko iššifruoti duomenų (Neteisingas raktas?)",
|
||||||
@ -182,8 +207,18 @@
|
|||||||
"Use Current Timezone": "Naudoti esamą laiko juostą",
|
"Use Current Timezone": "Naudoti esamą laiko juostą",
|
||||||
"Convert To UTC": "Konvertuoti į UTC",
|
"Convert To UTC": "Konvertuoti į UTC",
|
||||||
"Close": "Užverti",
|
"Close": "Užverti",
|
||||||
"Encrypted note on PrivateBin": "Šifruoti užrašai ties PrivateBin",
|
"Encrypted note on %s": "Šifruoti užrašai ties %s",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Norėdami matyti užrašus, aplankykite šį tinklalapį. Pasidalinus šiuo URL adresu su kitais žmonėmis, jiems taip pat bus leidžiama prieiga prie šių užrašų.",
|
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Norėdami matyti užrašus, aplankykite šį tinklalapį. Pasidalinus šiuo URL adresu su kitais žmonėmis, jiems taip pat bus leidžiama prieiga prie šių užrašų.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "URL trumpinimo įrankis gali atskleisti URL adrese jūsų iššifravimo raktą.",
|
"URL shortener may expose your decrypt key in URL.": "URL trumpinimo įrankis gali atskleisti URL adrese jūsų iššifravimo raktą.",
|
||||||
"Save paste": "Save paste"
|
"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.": "Bandoma sutrumpinti URL adresą, kuris nenurodo į mūsų egzempliorių.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Klaida iškviečiant YOURLS. Tikriausiai, konfigūracijos klaida, pavyzdžiui, neteisingi „apiurl“ ar „signature“, arba jų nėra.",
|
||||||
|
"Error parsing YOURLS response.": "Klaida nagrinėjant YOURLS atsaką.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "Ši slapta žinutė gali būti parodyta tik vieną kartą. Ar norėtumėte ją dabar pamatyti?",
|
||||||
|
"Yes, see it": "Taip, pamatyti",
|
||||||
|
"Dark Mode": "Tamsi veiksena",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Klaida glaudinant įdėjimą, nes trūksta WebAssembly palaikymo.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Klaida išglaudinant įdėjimą, jūsų naršyklė nepalaiko WebAssembly. Norėdami peržiūrėti šį įdėjimą, naudokite kitą naršyklę.",
|
||||||
|
"Start over": "Start over"
|
||||||
}
|
}
|
||||||
|
179
i18n/nl.json
179
i18n/nl.json
@ -1,32 +1,33 @@
|
|||||||
{
|
{
|
||||||
"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 %sin the browser%s using 256 bits AES.": "%s is een minimalistische, open source online pastebin waarbij de server geen kennis heeft van de paste data zelf. Gegevens worden gecodeerd/gedecodeerd %s in de browser %s met behulp van 256-bits AES.",
|
||||||
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Meer informatie is te vinden op de <a href=\"https://privatebin.info/\">projectpagina</a>.",
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Meer informatie is te vinden op de <a href=\"https://privatebin.info/\">projectpagina</a>.",
|
||||||
"Because ignorance is bliss": "Onwetendheid is een zegen",
|
"Because ignorance is bliss": "Onwetendheid is een zegen",
|
||||||
"en": "nl",
|
"Paste does not exist, has expired or has been deleted.": "Paste bestaat niet, is verlopen of verwijderd.",
|
||||||
"Paste does not exist, has expired or has been deleted.": "Geplakte tekst bestaat niet, is verlopen of verwijderd.",
|
|
||||||
"%s requires php %s or above to work. Sorry.": "%s vereist PHP %s of hoger om te kunnen werken. Sorry",
|
"%s requires php %s or above to work. Sorry.": "%s vereist PHP %s of hoger om te kunnen werken. Sorry",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s vereist dat de configuratiesectie [%s] aanwezig is in het configuratiebestand",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s vereist dat de configuratiesectie [%s] aanwezig is in het configuratiebestand",
|
||||||
"Please wait %d seconds between each post.": [
|
"Please wait %d seconds between each post.": [
|
||||||
"Alstublieft %d second wachten tussen elk bericht.",
|
"Alstublieft %d second wachten tussen elk bericht.",
|
||||||
"Alstublieft %d seconden wachten tussen elk bericht.",
|
"Alstublieft %d seconden wachten tussen elk bericht.",
|
||||||
"Alstublieft %d seconden wachten tussen elk bericht.",
|
"Alstublieft %d seconden wachten tussen elk bericht.",
|
||||||
|
"Alstublieft %d seconden wachten tussen elk bericht.",
|
||||||
|
"Alstublieft %d seconden wachten tussen elk bericht.",
|
||||||
"Alstublieft %d seconden wachten tussen elk bericht."
|
"Alstublieft %d seconden wachten tussen elk bericht."
|
||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "Geplakte tekst is beperkt tot %s aan versleutelde gegevens",
|
"Paste is limited to %s of encrypted data.": "Paste is beperkt tot %s aan versleutelde gegevens.",
|
||||||
"Invalid data.": "Ongeldige gegevens",
|
"Invalid data.": "Ongeldige gegevens.",
|
||||||
"You are unlucky. Try again.": "Helaas. Probeer het nog eens",
|
"You are unlucky. Try again.": "Helaas. Probeer het nog eens.",
|
||||||
"Error saving comment. Sorry.": "Fout bij het opslaan van het commentaar. Sorry",
|
"Error saving comment. Sorry.": "Fout bij het opslaan van het commentaar. Sorry.",
|
||||||
"Error saving paste. Sorry.": "Fout bij het opslaan van de geplakte tekst. Sorry.",
|
"Error saving paste. Sorry.": "Fout bij het opslaan van de paste. Sorry.",
|
||||||
"Invalid paste ID.": "Ongeldige ID.",
|
"Invalid paste ID.": "Ongeldige ID.",
|
||||||
"Paste is not of burn-after-reading type.": "Geplakte tekst is geen 'vernietig na lezen' type",
|
"Paste is not of burn-after-reading type.": "Paste is geen 'vernietig na lezen' type.",
|
||||||
"Wrong deletion token. Paste was not deleted.": "Foutieve verwijdercode. Geplakte tekst is niet verwijderd.",
|
"Wrong deletion token. Paste was not deleted.": "Foutieve verwijdercode. Paste is niet verwijderd.",
|
||||||
"Paste was properly deleted.": "Geplakte tekst is correct verwijderd.",
|
"Paste was properly deleted.": "Paste is correct verwijderd.",
|
||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript vereist om %s te laten werken. Sorry voor het ongemak.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript vereist om %s te laten werken. Sorry voor het ongemak.",
|
||||||
"%s requires a modern browser to work.": "%s vereist een moderne browser om te kunnen werken ",
|
"%s requires a modern browser to work.": "%s vereist een moderne browser om te kunnen werken.",
|
||||||
"New": "Nieuw",
|
"New": "Nieuw",
|
||||||
"Send": "Verzenden",
|
"Create": "Aanmaken",
|
||||||
"Clone": "Clonen",
|
"Clone": "Klonen",
|
||||||
"Raw text": "Onbewerkte tekst",
|
"Raw text": "Onbewerkte tekst",
|
||||||
"Expires": "Verloopt",
|
"Expires": "Verloopt",
|
||||||
"Burn after reading": "Vernietig na lezen",
|
"Burn after reading": "Vernietig na lezen",
|
||||||
@ -35,51 +36,67 @@
|
|||||||
"Discussion": "Discussie",
|
"Discussion": "Discussie",
|
||||||
"Toggle navigation": "Navigatie openen/sluiten",
|
"Toggle navigation": "Navigatie openen/sluiten",
|
||||||
"%d seconds": [
|
"%d seconds": [
|
||||||
"%d second",
|
"%d seconde",
|
||||||
"%d seconden",
|
"%d seconden",
|
||||||
"%d seconds (2nd plural)",
|
"%d seconden",
|
||||||
"%d seconds (3rd plural)"
|
"%d seconden",
|
||||||
|
"%d seconden",
|
||||||
|
"%d seconden"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"%d minuut",
|
"%d minuut",
|
||||||
"%d minuten",
|
"%d minuten",
|
||||||
"%d minutes (2nd plural)",
|
"%d minuten",
|
||||||
"%d minutes (3rd plural)"
|
"%d minuten",
|
||||||
|
"%d minuten",
|
||||||
|
"%d minuten"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d uur",
|
"%d uur",
|
||||||
"%d uren",
|
"%d uren",
|
||||||
"%d hours (2nd plural)",
|
"%d uren",
|
||||||
"%d hours (3rd plural)"
|
"%d uren",
|
||||||
|
"%d uren",
|
||||||
|
"%d uren"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d dag",
|
"%d dag",
|
||||||
"%d dagen",
|
"%d dagen",
|
||||||
"%d days (2nd plural)",
|
"%d dagen",
|
||||||
"%d days (3rd plural)"
|
"%d dagen",
|
||||||
|
"%d dagen",
|
||||||
|
"%d dagen"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d week",
|
"%d week",
|
||||||
"%d weken",
|
"%d weken",
|
||||||
"%d weeks (2nd plural)",
|
"%d weken",
|
||||||
"%d weeks (3rd plural)"
|
"%d weken",
|
||||||
|
"%d weken",
|
||||||
|
"%d weken"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d maand",
|
"%d maand",
|
||||||
"%d maanden",
|
"%d maanden",
|
||||||
"%d months (2nd plural)",
|
"%d maanden",
|
||||||
"%d months (3rd plural)"
|
"%d maanden",
|
||||||
|
"%d maanden",
|
||||||
|
"%d maanden"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
"%d jaar",
|
"%d jaar",
|
||||||
"%d jaaren",
|
"%d jaren",
|
||||||
"%d years (2nd plural)",
|
"%d jaren",
|
||||||
"%d years (3rd plural)"
|
"%d jaren",
|
||||||
|
"%d jaren",
|
||||||
|
"%d jaren"
|
||||||
],
|
],
|
||||||
"Never": "Nooit",
|
"Never": "Nooit",
|
||||||
"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.",
|
"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. Katten zullen doodgaan als je misbruikt maakt van deze service.",
|
||||||
"This document will expire in %d seconds.": [
|
"This document will expire in %d seconds.": [
|
||||||
"Dit document verloopt over %d second.",
|
"Dit document verloopt over %d seconde.",
|
||||||
|
"Dit document verloopt over %d seconden.",
|
||||||
|
"Dit document verloopt over %d seconden.",
|
||||||
"Dit document verloopt over %d seconden.",
|
"Dit document verloopt over %d seconden.",
|
||||||
"Dit document verloopt over %d seconden.",
|
"Dit document verloopt over %d seconden.",
|
||||||
"Dit document verloopt over %d seconden."
|
"Dit document verloopt over %d seconden."
|
||||||
@ -88,34 +105,42 @@
|
|||||||
"Dit document verloopt over %d minuut.",
|
"Dit document verloopt over %d minuut.",
|
||||||
"Dit document verloopt over %d minuten.",
|
"Dit document verloopt over %d minuten.",
|
||||||
"Dit document verloopt over %d minuten.",
|
"Dit document verloopt over %d minuten.",
|
||||||
|
"Dit document verloopt over %d minuten.",
|
||||||
|
"Dit document verloopt over %d minuten.",
|
||||||
"Dit document verloopt over %d minuten."
|
"Dit document verloopt over %d minuten."
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"Dit document verloopt over %d uur.",
|
"Dit document verloopt over %d uur.",
|
||||||
"Dit document verloopt over %d uren.",
|
"Dit document verloopt over %d uren.",
|
||||||
"Dit document verloopt over %d uren.",
|
"Dit document verloopt over %d uren.",
|
||||||
|
"Dit document verloopt over %d uren.",
|
||||||
|
"Dit document verloopt over %d uren.",
|
||||||
"Dit document verloopt over %d uren."
|
"Dit document verloopt over %d uren."
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"Dit document verloopt over %d dag.",
|
"Dit document verloopt over %d dag.",
|
||||||
"Dit document verloopt over %d dagen.",
|
"Dit document verloopt over %d dagen.",
|
||||||
"Dit document verloopt over %d dagen.",
|
"Dit document verloopt over %d dagen.",
|
||||||
|
"Dit document verloopt over %d dagen.",
|
||||||
|
"Dit document verloopt over %d dagen.",
|
||||||
"Dit document verloopt over %d dagen."
|
"Dit document verloopt over %d dagen."
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
"Dit document verloopt over %d maand.",
|
"Dit document verloopt over %d maand.",
|
||||||
"Dit document verloopt over %d maanden.",
|
"Dit document verloopt over %d maanden.",
|
||||||
"Dit document verloopt over %d maanden.",
|
"Dit document verloopt over %d maanden.",
|
||||||
|
"Dit document verloopt over %d maanden.",
|
||||||
|
"Dit document verloopt over %d maanden.",
|
||||||
"Dit document verloopt over %d maanden."
|
"Dit document verloopt over %d maanden."
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "Voer het wachtwoord in voor deze geplakte tekst:",
|
"Please enter the password for this paste:": "Voer het wachtwoord in voor deze paste:",
|
||||||
"Could not decrypt data (Wrong key?)": "Kon de gegevens niet decoderen (verkeerde sleutel?)",
|
"Could not decrypt data (Wrong key?)": "Kon de gegevens niet decoderen (verkeerde sleutel?)",
|
||||||
"Could not delete the paste, it was not stored in burn after reading mode.": "Verwijderen van de geplakte tekst niet mogelijk, deze werd niet opgeslagen in 'vernietig na lezen' modus.",
|
"Could not delete the paste, it was not stored in burn after reading mode.": "Verwijderen van de paste niet mogelijk, deze werd niet opgeslagen in 'vernietig na lezen' modus.",
|
||||||
"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.",
|
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "ALLEEN VOOR JOUW OGEN BESTEMD. Sluit dit venster niet, dit bericht kan niet opnieuw worden weergegeven.",
|
||||||
"Could not decrypt comment; Wrong key?": "Kon het commentaar niet decoderen; Verkeerde sleutel?",
|
"Could not decrypt comment; Wrong key?": "Kon het commentaar niet decoderen; Verkeerde sleutel?",
|
||||||
"Reply": "Beantwoorden",
|
"Reply": "Beantwoorden",
|
||||||
"Anonymous": "Anoniem",
|
"Anonymous": "Anoniem",
|
||||||
"Avatar generated from IP address": "Anonieme avatar (van het IP adres)",
|
"Avatar generated from IP address": "Anonieme avatar (van het IP-adres)",
|
||||||
"Add comment": "Commentaar toevoegen",
|
"Add comment": "Commentaar toevoegen",
|
||||||
"Optional nickname…": "Optionele bijnaam…",
|
"Optional nickname…": "Optionele bijnaam…",
|
||||||
"Post comment": "Plaats een commentaar",
|
"Post comment": "Plaats een commentaar",
|
||||||
@ -125,11 +150,11 @@
|
|||||||
"unknown status": "Onbekende status",
|
"unknown status": "Onbekende status",
|
||||||
"server error or not responding": "Serverfout of server reageert niet",
|
"server error or not responding": "Serverfout of server reageert niet",
|
||||||
"Could not post comment: %s": "Kon het commentaar niet plaatsen: %s",
|
"Could not post comment: %s": "Kon het commentaar niet plaatsen: %s",
|
||||||
"Sending paste…": "Geplakte tekst verzenden…",
|
"Sending paste…": "Paste 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>",
|
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Je paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Druk [Ctrl]+[c] om te kopiëren)</span>",
|
||||||
"Delete data": "Gegevens wissen",
|
"Delete data": "Gegevens wissen",
|
||||||
"Could not create paste: %s": "Kon de geplakte tekst niet aanmaken: %s",
|
"Could not create paste: %s": "Kon de paste niet aanmaken: %s",
|
||||||
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Kon de geplakte tekst niet decoderen: Decoderingssleutel ontbreekt in URL (Hebt u een redirector of een URL-verkorter gebruikt die een deel van de URL verwijdert?)",
|
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Kon de paste niet decoderen: Decoderingssleutel ontbreekt in URL (Heb je een doorverwijzer of een URL-verkorter gebruikt die een deel van de URL verwijdert?)",
|
||||||
"B": "B",
|
"B": "B",
|
||||||
"KiB": "KiB",
|
"KiB": "KiB",
|
||||||
"MiB": "MiB",
|
"MiB": "MiB",
|
||||||
@ -145,45 +170,55 @@
|
|||||||
"Markdown": "Markdown",
|
"Markdown": "Markdown",
|
||||||
"Download attachment": "Bijlage downloaden",
|
"Download attachment": "Bijlage downloaden",
|
||||||
"Cloned: '%s'": "Gekloond: '%s'",
|
"Cloned: '%s'": "Gekloond: '%s'",
|
||||||
"The cloned file '%s' was attached to this paste.": "Het gekloonde bestand '%s' is bijgevoegd aan de geplakte tekst.",
|
"The cloned file '%s' was attached to this paste.": "Het gekloonde bestand '%s' is bijgevoegd aan de paste.",
|
||||||
"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": "Je kunt ook een bestand slepen en neerzetten of een afbeelding plakken van het klembord",
|
||||||
"File too large, to display a preview. Please download the attachment.": "Het bestand is te groot om voorbeeld weer te geven. Aub de bijlage downloaden",
|
"File too large, to display a preview. Please download the attachment.": "Het bestand is te groot om voorbeeld weer te geven. Aub de bijlage downloaden.",
|
||||||
"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.": "Je 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": "Voorbeeld",
|
||||||
"%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.": "%s vereist dat PATH eindigt in een '%s'. a.u.b. PATH updaten in je index.php.",
|
||||||
"Decrypt": "Decoderen",
|
"Decrypt": "Decoderen",
|
||||||
"Enter password": "Voer het wachtwoord in",
|
"Enter password": "Voer het wachtwoord in",
|
||||||
"Loading…": "Laden…",
|
"Loading…": "Laden…",
|
||||||
"Decrypting paste…": "Geplakte tekst decoderen…",
|
"Decrypting paste…": "Paste decoderen…",
|
||||||
"Preparing new paste…": "Nieuwe geplakte tekst voorbereiden…",
|
"Preparing new paste…": "Nieuwe paste 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 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 paste tekst +++",
|
||||||
"Could not get paste data: %s": "Could not get paste data: %s",
|
"Could not get paste data: %s": "Kon geen paste data verkrijgen: %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.": "Deze website gebruikt een onveilige HTTP-verbinding! Gelieve deze enkel te gebruiken om te testen.",
|
||||||
"For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.",
|
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Voor meer informatie <a href=\"%s\">zie dit FAQ-artikel</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 may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Je browser kan een HTTPS-verbinding nodig hebben om de WebCrypto API te ondersteunen. Probeer <a href=\"%s\">het met 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.",
|
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Je browser ondersteunt WebAssembly niet, wat wordt gebruikt voor zlib compressie. Je kunt niet-gecomprimeerde documenten maken, maar geen gecomprimeerde documenten lezen.",
|
||||||
"waiting on user to provide a password": "waiting on user to provide a password",
|
"waiting on user to provide a password": "wachtend op gebruiker om een wachtwoord te geven",
|
||||||
"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.",
|
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Kon de gegevens niet decoderen. Heb je een verkeerd wachtwoord ingevoerd? Probeer het opnieuw met de knop bovenaan.",
|
||||||
"Retry": "Retry",
|
"Retry": "Opnieuw proberen",
|
||||||
"Showing raw text…": "Showing raw text…",
|
"Showing raw text…": "Platte tekst tonen…",
|
||||||
"Notice:": "Notice:",
|
"Notice:": "Let op:",
|
||||||
"This link will expire after %s.": "This link will expire after %s.",
|
"This link will expire after %s.": "Deze link vervalt na %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.",
|
"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 je browser.",
|
||||||
"Link:": "Link:",
|
"Link:": "Link:",
|
||||||
"Recipient may become aware of your timezone, convert time to UTC?": "Recipient may become aware of your timezone, convert time to UTC?",
|
"Recipient may become aware of your timezone, convert time to UTC?": "Ontvanger kan zich bewust worden van je tijdzone, tijd omzetten naar UTC?",
|
||||||
"Use Current Timezone": "Use Current Timezone",
|
"Use Current Timezone": "Gebruik huidige tijdzone",
|
||||||
"Convert To UTC": "Convert To UTC",
|
"Convert To UTC": "Omzetten naar UTC",
|
||||||
"Close": "Close",
|
"Close": "Sluiten",
|
||||||
"Encrypted note on PrivateBin": "Encrypted note on PrivateBin",
|
"Encrypted note on %s": "Versleutelde notitie op %s",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
|
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Bezoek deze link om de notitie te bekijken. Als je de URL aan iemand geeft, kan die de notitie ook bekijken.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
"URL shortener may expose your decrypt key in URL.": "URL-verkorter kan je ontcijferingssleutel in URL blootleggen.",
|
||||||
"Save paste": "Save paste"
|
"Save paste": "Notitie opslaan",
|
||||||
|
"Your IP is not authorized to create pastes.": "Je IP-adres is niet gemachtigd om pastes te maken.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "Proberen om een URL te verkorten dat niet naar ons systeem wijst.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Foutmelding ophalen YOURLS. Waarschijnlijk een configuratiefout, zoals een verkeerde of missende \"apiurl\" of \"signature\".",
|
||||||
|
"Error parsing YOURLS response.": "Foutmelding bij parsen van YOURLS respons.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "Dit geheime bericht kan maar één keer worden weergegeven. Wil je het nu zien?",
|
||||||
|
"Yes, see it": "Ja, tonen",
|
||||||
|
"Dark Mode": "Donkere modus",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Fout bij het comprimeren van notitie door ontbrekende ondersteuning voor WebAssembly.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Fout bij het decomprimeren van de notitie, uw browser ondersteunt WebAssembly niet. Gebruik een andere browser om deze notitie te bekijken.",
|
||||||
|
"Start over": "Start over"
|
||||||
}
|
}
|
||||||
|
45
i18n/no.json
45
i18n/no.json
@ -3,7 +3,6 @@
|
|||||||
"%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 %sin the browser%s using 256 bits AES.": "%s er en minimalistisk, åpen kildekode, elektronisk tilgjengelig pastebin hvor serveren ikke har kunnskap om dataene som limes inn. Dataene krypteres/dekrypteres %si nettleseren%s ved hjelp av 256 bits AES.",
|
||||||
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Mer informasjon om prosjektet på <a href=\"https://privatebin.info/\">prosjektsiden</a>.",
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Mer informasjon om prosjektet på <a href=\"https://privatebin.info/\">prosjektsiden</a>.",
|
||||||
"Because ignorance is bliss": "Fordi uvitenhet er lykke",
|
"Because ignorance is bliss": "Fordi uvitenhet er lykke",
|
||||||
"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.": "Innlegget eksisterer ikke, er utløpt eller har blitt slettet.",
|
||||||
"%s requires php %s or above to work. Sorry.": "Beklager, %s krever php %s eller nyere for å kjøre.",
|
"%s requires php %s or above to work. Sorry.": "Beklager, %s krever php %s eller nyere for å kjøre.",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s krever konfigurasjonsdel [%s] å være til stede i konfigurasjonsfilen .",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s krever konfigurasjonsdel [%s] å være til stede i konfigurasjonsfilen .",
|
||||||
@ -11,6 +10,8 @@
|
|||||||
"Vennligst vent %d sekund mellom hvert innlegg.",
|
"Vennligst vent %d sekund mellom hvert innlegg.",
|
||||||
"Vennligst vent %d sekunder mellom hvert innlegg.",
|
"Vennligst vent %d sekunder mellom hvert innlegg.",
|
||||||
"Vennligst vent %d sekunder mellom hvert innlegg.",
|
"Vennligst vent %d sekunder mellom hvert innlegg.",
|
||||||
|
"Vennligst vent %d sekunder mellom hvert innlegg.",
|
||||||
|
"Vennligst vent %d sekunder mellom hvert innlegg.",
|
||||||
"Vennligst vent %d sekunder mellom hvert innlegg."
|
"Vennligst vent %d sekunder mellom hvert innlegg."
|
||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "Innlegg er begrenset til %s av kryptert data.",
|
"Paste is limited to %s of encrypted data.": "Innlegg er begrenset til %s av kryptert data.",
|
||||||
@ -25,7 +26,7 @@
|
|||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Javascript kreves for at %s skal fungere. Beklager.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Javascript kreves for at %s skal fungere. Beklager.",
|
||||||
"%s requires a modern browser to work.": "%s krever en moderne nettleser for å fungere.",
|
"%s requires a modern browser to work.": "%s krever en moderne nettleser for å fungere.",
|
||||||
"New": "Ny",
|
"New": "Ny",
|
||||||
"Send": "Send",
|
"Create": "Opprette",
|
||||||
"Clone": "Kopier",
|
"Clone": "Kopier",
|
||||||
"Raw text": "Ren tekst",
|
"Raw text": "Ren tekst",
|
||||||
"Expires": "Utgår",
|
"Expires": "Utgår",
|
||||||
@ -38,39 +39,53 @@
|
|||||||
"%d sekund",
|
"%d sekund",
|
||||||
"%d sekunder",
|
"%d sekunder",
|
||||||
"%d sekunder",
|
"%d sekunder",
|
||||||
|
"%d sekunder",
|
||||||
|
"%d sekunder",
|
||||||
"%d sekunder"
|
"%d sekunder"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"%d minutt",
|
"%d minutt",
|
||||||
"%d minutter",
|
"%d minutter",
|
||||||
"%d minutter",
|
"%d minutter",
|
||||||
|
"%d minutter",
|
||||||
|
"%d minutter",
|
||||||
"%d minutter"
|
"%d minutter"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d time",
|
"%d time",
|
||||||
"%d timer",
|
"%d timer",
|
||||||
"%d timer",
|
"%d timer",
|
||||||
|
"%d timer",
|
||||||
|
"%d timer",
|
||||||
"%d timer"
|
"%d timer"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d dag",
|
"%d dag",
|
||||||
"%d dager",
|
"%d dager",
|
||||||
"%d dager",
|
"%d dager",
|
||||||
|
"%d dager",
|
||||||
|
"%d dager",
|
||||||
"%d dager"
|
"%d dager"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d uke",
|
"%d uke",
|
||||||
"%d uker",
|
"%d uker",
|
||||||
"%d uker",
|
"%d uker",
|
||||||
|
"%d uker",
|
||||||
|
"%d uker",
|
||||||
"%d uker"
|
"%d uker"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d måned",
|
"%d måned",
|
||||||
"%d måneder",
|
"%d måneder",
|
||||||
"%d måneder",
|
"%d måneder",
|
||||||
|
"%d måneder",
|
||||||
|
"%d måneder",
|
||||||
"%d måneder"
|
"%d måneder"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
|
"%d år",
|
||||||
|
"%d år",
|
||||||
"%d år",
|
"%d år",
|
||||||
"%d år",
|
"%d år",
|
||||||
"%d år",
|
"%d år",
|
||||||
@ -82,30 +97,40 @@
|
|||||||
"Dette dokumentet vil utløpe om %d sekund.",
|
"Dette dokumentet vil utløpe om %d sekund.",
|
||||||
"Dette dokumentet vil utløpe om %d sekunder.",
|
"Dette dokumentet vil utløpe om %d sekunder.",
|
||||||
"Dette dokumentet vil utløpe om %d sekunder.",
|
"Dette dokumentet vil utløpe om %d sekunder.",
|
||||||
|
"Dette dokumentet vil utløpe om %d sekunder.",
|
||||||
|
"Dette dokumentet vil utløpe om %d sekunder.",
|
||||||
"Dette dokumentet vil utløpe om %d sekunder."
|
"Dette dokumentet vil utløpe om %d sekunder."
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"Dette dokumentet vil utløpe om %d minutt.",
|
"Dette dokumentet vil utløpe om %d minutt.",
|
||||||
"Dette dokumentet vil utløpe om %d minutter.",
|
"Dette dokumentet vil utløpe om %d minutter.",
|
||||||
"Dette dokumentet vil utløpe om %d minutter.",
|
"Dette dokumentet vil utløpe om %d minutter.",
|
||||||
|
"Dette dokumentet vil utløpe om %d minutter.",
|
||||||
|
"Dette dokumentet vil utløpe om %d minutter.",
|
||||||
"Dette dokumentet vil utløpe om %d minutter."
|
"Dette dokumentet vil utløpe om %d minutter."
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"Dette dokumentet vil utløpe om %d time.",
|
"Dette dokumentet vil utløpe om %d time.",
|
||||||
"Dette dokumentet vil utløpe om %d timer.",
|
"Dette dokumentet vil utløpe om %d timer.",
|
||||||
"Dette dokumentet vil utløpe om %d timer.",
|
"Dette dokumentet vil utløpe om %d timer.",
|
||||||
|
"Dette dokumentet vil utløpe om %d timer.",
|
||||||
|
"Dette dokumentet vil utløpe om %d timer.",
|
||||||
"Dette dokumentet vil utløpe om %d timer."
|
"Dette dokumentet vil utløpe om %d timer."
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"Dette dokumentet vil utløpe om %d dag.",
|
"Dette dokumentet vil utløpe om %d dag.",
|
||||||
"Dette dokumentet vil utløpe om %d dager.",
|
"Dette dokumentet vil utløpe om %d dager.",
|
||||||
"Dette dokumentet vil utløpe om %d dager.",
|
"Dette dokumentet vil utløpe om %d dager.",
|
||||||
|
"Dette dokumentet vil utløpe om %d dager.",
|
||||||
|
"Dette dokumentet vil utløpe om %d dager.",
|
||||||
"Dette dokumentet vil utløpe om %d dager."
|
"Dette dokumentet vil utløpe om %d dager."
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
"Dette dokumentet vil utløpe om %d måned.",
|
"Dette dokumentet vil utløpe om %d måned.",
|
||||||
"Dette dokumentet vil utløpe om %d måneder.",
|
"Dette dokumentet vil utløpe om %d måneder.",
|
||||||
"Dette dokumentet vil utløpe om %d måneder.",
|
"Dette dokumentet vil utløpe om %d måneder.",
|
||||||
|
"Dette dokumentet vil utløpe om %d måneder.",
|
||||||
|
"Dette dokumentet vil utløpe om %d måneder.",
|
||||||
"Dette dokumentet vil utløpe om %d måneder."
|
"Dette dokumentet vil utløpe om %d måneder."
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "Vennligst skriv inn passordet for dette innlegget:",
|
"Please enter the password for this paste:": "Vennligst skriv inn passordet for dette innlegget:",
|
||||||
@ -142,7 +167,7 @@
|
|||||||
"Format": "Format",
|
"Format": "Format",
|
||||||
"Plain Text": "Ren Tekst",
|
"Plain Text": "Ren Tekst",
|
||||||
"Source Code": "Kildekode",
|
"Source Code": "Kildekode",
|
||||||
"Markdown": "Oppmerket",
|
"Markdown": "Markdown",
|
||||||
"Download attachment": "Last ned vedlegg",
|
"Download attachment": "Last ned vedlegg",
|
||||||
"Cloned: '%s'": "Kopiert: '%s'",
|
"Cloned: '%s'": "Kopiert: '%s'",
|
||||||
"The cloned file '%s' was attached to this paste.": "Den klonede filen '%s' var koblet til denne innlimingen.",
|
"The cloned file '%s' was attached to this paste.": "Den klonede filen '%s' var koblet til denne innlimingen.",
|
||||||
@ -182,8 +207,18 @@
|
|||||||
"Use Current Timezone": "Bruk gjeldende tidssone",
|
"Use Current Timezone": "Bruk gjeldende tidssone",
|
||||||
"Convert To UTC": "Konverter til UTC",
|
"Convert To UTC": "Konverter til UTC",
|
||||||
"Close": "Steng",
|
"Close": "Steng",
|
||||||
"Encrypted note on PrivateBin": "Kryptert notat på PrivateBin",
|
"Encrypted note on %s": "Kryptert notat på %s",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Besøk denne lenken for å se notatet. Hvis lenken deles med andre, vil de også kunne se notatet.",
|
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Besøk denne lenken for å se notatet. Hvis lenken deles med andre, vil de også kunne se notatet.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "URL forkorter kan avsløre dekrypteringsnøkkelen.",
|
"URL shortener may expose your decrypt key in URL.": "URL forkorter kan avsløre dekrypteringsnøkkelen.",
|
||||||
"Save paste": "Lagre utklipp"
|
"Save paste": "Lagre utklipp",
|
||||||
|
"Your IP is not authorized to create pastes.": "Din IP er ikke autorisert til å opprette dokumenter.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "Prøver å forkorte en URL som ikke peker i vår instans.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Feil ved å besøke YOURLS. Sannsynligvis et konfigurasjonsproblem, eksempelvis feil eller mangler, med \"apiurl\" eller \"signatur\".",
|
||||||
|
"Error parsing YOURLS response.": "Feil ved analyse av YOURLS svar.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "Denne hemmelige meldingen kan bare vises én gang. Vil du se den nå?",
|
||||||
|
"Yes, see it": "Ja, se det",
|
||||||
|
"Dark Mode": "Mørk modus",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||||
|
"Start over": "Start over"
|
||||||
}
|
}
|
||||||
|
119
i18n/oc.json
119
i18n/oc.json
@ -3,7 +3,6 @@
|
|||||||
"%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 d’extrachs 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 %sin the browser%s using 256 bits AES.": "%s es un 'pastebin' (o gestionari d’extrachs de tèxte e còdi font) minimalista e open source, dins lo qual lo servidor a pas cap de coneissença de las donadas mandadas. Las donadas son chifradas/deschifradas %sdins lo navigator%s per un chiframent AES 256 bits.",
|
||||||
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Mai informacions sus <a href=\"https://privatebin.info/\">la pagina del projècte</a>.",
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Mai informacions sus <a href=\"https://privatebin.info/\">la pagina del projècte</a>.",
|
||||||
"Because ignorance is bliss": "Perque lo bonaür es l’ignorància",
|
"Because ignorance is bliss": "Perque lo bonaür es l’ignorància",
|
||||||
"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.": "Lo tèxte existís pas, a expirat, o es estat suprimit.",
|
||||||
"%s requires php %s or above to work. Sorry.": "O planhèm, %s necessita php %s o superior per foncionar.",
|
"%s requires php %s or above to work. Sorry.": "O planhèm, %s necessita php %s o superior per foncionar.",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s fa besonh de la seccion de configuracion [%s] dins lo fichièr de configuracion per foncionar.",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s fa besonh de la seccion de configuracion [%s] dins lo fichièr de configuracion per foncionar.",
|
||||||
@ -11,6 +10,8 @@
|
|||||||
"Mercés d'esperar %d segonda entre cada publicacion.",
|
"Mercés d'esperar %d segonda entre cada publicacion.",
|
||||||
"Mercés d'esperar %d segondas entre cada publicacion.",
|
"Mercés d'esperar %d segondas entre cada publicacion.",
|
||||||
"Mercés d'esperar %d segondas entre cada publicacion.",
|
"Mercés d'esperar %d segondas entre cada publicacion.",
|
||||||
|
"Mercés d'esperar %d segondas entre cada publicacion.",
|
||||||
|
"Mercés d'esperar %d segondas entre cada publicacion.",
|
||||||
"Mercés d'esperar %d segondas entre cada publicacion."
|
"Mercés d'esperar %d segondas entre cada publicacion."
|
||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "Lo tèxte es limitat a %s de donadas chifradas.",
|
"Paste is limited to %s of encrypted data.": "Lo tèxte es limitat a %s de donadas chifradas.",
|
||||||
@ -25,7 +26,7 @@
|
|||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript es requesit per far foncionar %s. O planhèm per l’inconvenient.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript es requesit per far foncionar %s. O planhèm per l’inconvenient.",
|
||||||
"%s requires a modern browser to work.": "%s requerís un navigator modèrn per foncionar.",
|
"%s requires a modern browser to work.": "%s requerís un navigator modèrn per foncionar.",
|
||||||
"New": "Nòu",
|
"New": "Nòu",
|
||||||
"Send": "Mandar",
|
"Create": "Mandar",
|
||||||
"Clone": "Clonar",
|
"Clone": "Clonar",
|
||||||
"Raw text": "Tèxte brut",
|
"Raw text": "Tèxte brut",
|
||||||
"Expires": "Expira",
|
"Expires": "Expira",
|
||||||
@ -37,76 +38,100 @@
|
|||||||
"%d seconds": [
|
"%d seconds": [
|
||||||
"%d segonda",
|
"%d segonda",
|
||||||
"%d segondas",
|
"%d segondas",
|
||||||
"%d seconds (2nd plural)",
|
"%d segondas",
|
||||||
"%d seconds (3rd plural)"
|
"%d segondas",
|
||||||
|
"%d segondas",
|
||||||
|
"%d segondas"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"%d minuta",
|
"%d minuta",
|
||||||
"%d minutas",
|
"%d minutas",
|
||||||
"%d minutes (2nd plural)",
|
"%d minutas",
|
||||||
"%d minutes (3rd plural)"
|
"%d minutas",
|
||||||
|
"%d minutas",
|
||||||
|
"%d minutas"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d ora",
|
"%d ora",
|
||||||
"%d oras",
|
"%d oras",
|
||||||
"%d hours (2nd plural)",
|
"%d oras",
|
||||||
"%d hours (3rd plural)"
|
"%d oras",
|
||||||
|
"%d oras",
|
||||||
|
"%d oras"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d jorn",
|
"%d jorn",
|
||||||
"%d jorns",
|
"%d jorns",
|
||||||
"%d days (2nd plural)",
|
"%d jorns",
|
||||||
"%d days (3rd plural)"
|
"%d jorns",
|
||||||
|
"%d jorns",
|
||||||
|
"%d jorns"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d setmana",
|
"%d setmana",
|
||||||
"%d setmanas",
|
"%d setmanas",
|
||||||
"%d weeks (2nd plural)",
|
"%d setmanas",
|
||||||
"%d weeks (3rd plural)"
|
"%d setmanas",
|
||||||
|
"%d setmanas",
|
||||||
|
"%d setmanas"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d mes",
|
"%d mes",
|
||||||
"%d meses",
|
"%d meses",
|
||||||
"%d months (2nd plural)",
|
"%d meses",
|
||||||
"%d months (3rd plural)"
|
"%d meses",
|
||||||
|
"%d meses",
|
||||||
|
"%d meses"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
"%d an",
|
"%d an",
|
||||||
"%d ans",
|
"%d ans",
|
||||||
"%d years (2nd plural)",
|
"%d ans",
|
||||||
"%d years (3rd plural)"
|
"%d ans",
|
||||||
|
"%d ans",
|
||||||
|
"%d ans"
|
||||||
],
|
],
|
||||||
"Never": "Jamai",
|
"Never": "Jamai",
|
||||||
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Nota : Aquò es un servici d’espròva : las donadas pòdon èsser suprimidas a cada moment. De catons moriràn s’abusatz d’aqueste servici.",
|
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Nota : Aquò es un servici d’espròva : las donadas pòdon èsser suprimidas a cada moment. De catons moriràn s’abusatz d’aqueste servici.",
|
||||||
"This document will expire in %d seconds.": [
|
"This document will expire in %d seconds.": [
|
||||||
"Ce document expirera dans %d seconde.",
|
"Aqueste document expirarà d’aquí %d segonda.",
|
||||||
"Aqueste document expirarà dins %d segondas.",
|
"Aqueste document expirarà d’aquí %d segondas.",
|
||||||
"Aqueste document expirarà dins %d segondas.",
|
"Aqueste document expirarà d’aquí %d segondas.",
|
||||||
"Aqueste document expirarà dins %d segondas."
|
"Aqueste document expirarà d’aquí %d segondas.",
|
||||||
|
"Aqueste document expirarà d’aquí %d segondas.",
|
||||||
|
"Aqueste document expirarà d’aquí %d segondas."
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"Ce document expirera dans %d minute.",
|
"Aqueste document expirarà d’aquí %d minuta.",
|
||||||
"Aqueste document expirarà dins %d minutas.",
|
"Aqueste document expirarà d’aquí %d minutas.",
|
||||||
"Aqueste document expirarà dins %d minutas.",
|
"Aqueste document expirarà d’aquí %d minutas.",
|
||||||
"Aqueste document expirarà dins %d minutas."
|
"Aqueste document expirarà d’aquí %d minutas.",
|
||||||
|
"Aqueste document expirarà d’aquí %d minutas.",
|
||||||
|
"Aqueste document expirarà d’aquí %d minutas."
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"Ce document expirera dans %d heure.",
|
"Aqueste document expirarà d’aquí %d ora.",
|
||||||
"Aqueste document expirarà dins %d oras.",
|
"Aqueste document expirarà d’aquí %d oras.",
|
||||||
"Aqueste document expirarà dins %d oras.",
|
"Aqueste document expirarà d’aquí %d oras.",
|
||||||
"Aqueste document expirarà dins %d oras."
|
"Aqueste document expirarà d’aquí %d oras.",
|
||||||
|
"Aqueste document expirarà d’aquí %d oras.",
|
||||||
|
"Aqueste document expirarà d’aquí %d oras."
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"Ce document expirera dans %d jour.",
|
"Aqueste document expirarà d’aquí %d jorn.",
|
||||||
"Aqueste document expirarà dins %d jorns.",
|
"Aqueste document expirarà d’aquí %d jorns.",
|
||||||
"Aqueste document expirarà dins %d jorns.",
|
"Aqueste document expirarà d’aquí %d jorns.",
|
||||||
"Aqueste document expirarà dins %d jorns."
|
"Aqueste document expirarà d’aquí %d jorns.",
|
||||||
|
"Aqueste document expirarà d’aquí %d jorns.",
|
||||||
|
"Aqueste document expirarà d’aquí %d jorns."
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
"Ce document expirera dans %d mois.",
|
"Aqueste document expirarà d’aquí %d mes.",
|
||||||
"Aqueste document expirarà dins %d meses.",
|
"Aqueste document expirarà d’aquí %d meses.",
|
||||||
"Aqueste document expirarà dins %d meses.",
|
"Aqueste document expirarà d’aquí %d meses.",
|
||||||
"Aqueste document expirarà dins %d meses."
|
"Aqueste document expirarà d’aquí %d meses.",
|
||||||
|
"Aqueste document expirarà d’aquí %d meses.",
|
||||||
|
"Aqueste document expirarà d’aquí %d meses."
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "Picatz lo senhal per aqueste tèxte :",
|
"Please enter the password for this paste:": "Picatz lo senhal per aqueste tèxte :",
|
||||||
"Could not decrypt data (Wrong key?)": "Impossible de deschifrar las donadas (marrida clau ?)",
|
"Could not decrypt data (Wrong key?)": "Impossible de deschifrar las donadas (marrida clau ?)",
|
||||||
@ -122,8 +147,8 @@
|
|||||||
"Sending comment…": "Mandadís del comentari…",
|
"Sending comment…": "Mandadís del comentari…",
|
||||||
"Comment posted.": "Comentari mandat.",
|
"Comment posted.": "Comentari mandat.",
|
||||||
"Could not refresh display: %s": "Impossible d’actualizar l’afichatge : %s",
|
"Could not refresh display: %s": "Impossible d’actualizar l’afichatge : %s",
|
||||||
"unknown status": "Estatut desconegut",
|
"unknown status": "estatut desconegut",
|
||||||
"server error or not responding": "Lo servidor respond pas o a rescontrat una error",
|
"server error or not responding": "lo servidor respond pas o a rescontrat una error",
|
||||||
"Could not post comment: %s": "Impossible de mandar lo comentari : %s",
|
"Could not post comment: %s": "Impossible de mandar lo comentari : %s",
|
||||||
"Sending paste…": "Mandadís del tèxte…",
|
"Sending 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 l’adreça <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Picatz sus [Ctrl]+[c] per copiar)</span>",
|
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Vòstre tèxte es disponible a l’adreça <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Picatz sus [Ctrl]+[c] per copiar)</span>",
|
||||||
@ -156,7 +181,7 @@
|
|||||||
"Shorten URL": "Acorchir l’URL",
|
"Shorten URL": "Acorchir l’URL",
|
||||||
"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.": "%s demanda que lo PATH termine en « %s ». Mercés de metre a jorn lo PATH dins vòstre index.php.",
|
||||||
"Decrypt": "Deschifrar",
|
"Decrypt": "Deschifrar",
|
||||||
"Enter password": "Picatz lo senhal",
|
"Enter password": "Picatz lo senhal",
|
||||||
"Loading…": "Cargament…",
|
"Loading…": "Cargament…",
|
||||||
@ -182,8 +207,18 @@
|
|||||||
"Use Current Timezone": "Utilizar l’actual",
|
"Use Current Timezone": "Utilizar l’actual",
|
||||||
"Convert To UTC": "Convertir en UTC",
|
"Convert To UTC": "Convertir en UTC",
|
||||||
"Close": "Tampar",
|
"Close": "Tampar",
|
||||||
"Encrypted note on PrivateBin": "Nòtas chifradas sus PrivateBin",
|
"Encrypted note on %s": "Nòtas chifradas sus %s",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visitatz aqueste ligam per veire la nòta. Fornir lo ligam a qualqu’un mai li permet tanben d’accedir a la nòta.",
|
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visitatz aqueste ligam per veire la nòta. Fornir lo ligam a qualqu’un mai li permet tanben d’accedir a la nòta.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
"URL shortener may expose your decrypt key in URL.": "Los espleches d’acorchiment d’URL pòdon expausar la clau de deschiframent dins l’URL.",
|
||||||
"Save paste": "Save paste"
|
"Save paste": "Enregistrar lo tèxt",
|
||||||
|
"Your IP is not authorized to create pastes.": "Vòstra adreça IP a pas l’autorizacion de crear de tèxtes.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "Ensag d’abracar una URL que mena pas a nòstra instància.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error en cridant YOURLS. Es probablament un problèma de configuracion, quicòm coma « apirul » o « signature » marrit o absent.",
|
||||||
|
"Error parsing YOURLS response.": "Error d'analisi de la responsa YOURLS.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "Aqueste messatge secrèt se pòt pas qu'afichar un còp. Lo volètz veire ara ?",
|
||||||
|
"Yes, see it": "Òc, afichatz-lo",
|
||||||
|
"Dark Mode": "Mòde escur",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Error al moment de la compression de l'empegatge, a causa de la manca de presa en carga de WebAssembly.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error al moment de descompresar l'empegatge, vòstre navegador pren pas en carga WebAssembly. Mercés d'utilizar un autre navigador per visualizar aquesta pega.",
|
||||||
|
"Start over": "Start over"
|
||||||
}
|
}
|
||||||
|
83
i18n/pl.json
83
i18n/pl.json
@ -3,7 +3,6 @@
|
|||||||
"%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 %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.",
|
||||||
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Więcej informacji na <a href=\"https://privatebin.info/\">stronie projektu</a>.",
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Więcej informacji 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",
|
|
||||||
"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.": "Wklejka nie istnieje, wygasła albo została usunięta.",
|
||||||
"%s requires php %s or above to work. Sorry.": "%s wymaga PHP w wersji %s lub nowszej. Przykro mi.",
|
"%s requires php %s or above to work. Sorry.": "%s wymaga PHP w wersji %s lub nowszej. Przykro mi.",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s wymaga obecności sekcji [%s] w pliku konfiguracyjnym.",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s wymaga obecności sekcji [%s] w pliku konfiguracyjnym.",
|
||||||
@ -11,6 +10,8 @@
|
|||||||
"Poczekaj %d sekundę pomiędzy każdą wklejką.",
|
"Poczekaj %d sekundę pomiędzy każdą wklejką.",
|
||||||
"Poczekaj %d sekund pomiędzy każdą wklejką.",
|
"Poczekaj %d sekund pomiędzy każdą wklejką.",
|
||||||
"Poczekaj %d sekund pomiędzy każdą wklejką.",
|
"Poczekaj %d sekund pomiędzy każdą wklejką.",
|
||||||
|
"Poczekaj %d sekund pomiędzy każdą wklejką.",
|
||||||
|
"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.": "Wklejka jest limitowana do %s zaszyfrowanych danych.",
|
"Paste is limited to %s of encrypted data.": "Wklejka jest limitowana do %s zaszyfrowanych danych.",
|
||||||
@ -25,7 +26,7 @@
|
|||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Do działania %sa jest wymagany JavaScript. Przepraszamy za tę niedogodność.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Do działania %sa jest wymagany JavaScript. Przepraszamy za tę niedogodność.",
|
||||||
"%s requires a modern browser to work.": "%s wymaga do działania nowoczesnej przeglądarki.",
|
"%s requires a modern browser to work.": "%s wymaga do działania nowoczesnej przeglądarki.",
|
||||||
"New": "Nowa",
|
"New": "Nowa",
|
||||||
"Send": "Wyślij",
|
"Create": "Stwórz",
|
||||||
"Clone": "Sklonuj",
|
"Clone": "Sklonuj",
|
||||||
"Raw text": "Czysty tekst",
|
"Raw text": "Czysty tekst",
|
||||||
"Expires": "Wygasa za",
|
"Expires": "Wygasa za",
|
||||||
@ -35,12 +36,16 @@
|
|||||||
"Discussion": "Dyskusja",
|
"Discussion": "Dyskusja",
|
||||||
"Toggle navigation": "Przełącz nawigację",
|
"Toggle navigation": "Przełącz nawigację",
|
||||||
"%d seconds": [
|
"%d seconds": [
|
||||||
|
"%d second",
|
||||||
|
"%d second",
|
||||||
"%d second",
|
"%d second",
|
||||||
"%d second",
|
"%d second",
|
||||||
"%d second",
|
"%d second",
|
||||||
"%d second"
|
"%d second"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
|
"%d minut",
|
||||||
|
"%d minut",
|
||||||
"%d minut",
|
"%d minut",
|
||||||
"%d minut",
|
"%d minut",
|
||||||
"%d minut",
|
"%d minut",
|
||||||
@ -50,27 +55,37 @@
|
|||||||
"%d godzina",
|
"%d godzina",
|
||||||
"%d godzina",
|
"%d godzina",
|
||||||
"%d godzinę",
|
"%d godzinę",
|
||||||
|
"%d godzinę",
|
||||||
|
"%d godzinę",
|
||||||
"%d godzinę"
|
"%d godzinę"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
|
"%d dzień",
|
||||||
|
"%d dzień",
|
||||||
"%d dzień",
|
"%d dzień",
|
||||||
"%d dzień",
|
"%d dzień",
|
||||||
"%d dzień",
|
"%d dzień",
|
||||||
"%d dzień"
|
"%d dzień"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
|
"%d tydzień",
|
||||||
|
"%d tydzień",
|
||||||
"%d tydzień",
|
"%d tydzień",
|
||||||
"%d tydzień",
|
"%d tydzień",
|
||||||
"%d tydzień",
|
"%d tydzień",
|
||||||
"%d tydzień"
|
"%d tydzień"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
|
"%d miesiąc",
|
||||||
|
"%d miesiąc",
|
||||||
"%d miesiąc",
|
"%d miesiąc",
|
||||||
"%d miesiąc",
|
"%d miesiąc",
|
||||||
"%d miesiąc",
|
"%d miesiąc",
|
||||||
"%d miesiąc"
|
"%d miesiąc"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
|
"%d rok",
|
||||||
|
"%d rok",
|
||||||
"%d rok",
|
"%d rok",
|
||||||
"%d rok",
|
"%d rok",
|
||||||
"%d rok",
|
"%d rok",
|
||||||
@ -82,30 +97,40 @@
|
|||||||
"Ten dokument wygaśnie za %d sekundę.",
|
"Ten dokument wygaśnie za %d sekundę.",
|
||||||
"Ten dokument wygaśnie za %d sekund.",
|
"Ten dokument wygaśnie za %d sekund.",
|
||||||
"Ten dokument wygaśnie za %d sekund.",
|
"Ten dokument wygaśnie za %d sekund.",
|
||||||
|
"Ten dokument wygaśnie za %d sekund.",
|
||||||
|
"Ten dokument wygaśnie za %d sekund.",
|
||||||
"Ten dokument wygaśnie za %d sekund."
|
"Ten dokument wygaśnie za %d sekund."
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"Ten dokument wygaśnie za %d minutę.",
|
"Ten dokument wygaśnie za %d minutę.",
|
||||||
"Ten dokument wygaśnie za %d minut.",
|
"Ten dokument wygaśnie za %d minut.",
|
||||||
"Ten dokument wygaśnie za %d minut.",
|
"Ten dokument wygaśnie za %d minut.",
|
||||||
|
"Ten dokument wygaśnie za %d minut.",
|
||||||
|
"Ten dokument wygaśnie za %d minut.",
|
||||||
"Ten dokument wygaśnie za %d minut."
|
"Ten dokument wygaśnie za %d minut."
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"Ten dokument wygaśnie za godzinę.",
|
"Ten dokument wygaśnie za godzinę.",
|
||||||
"Ten dokument wygaśnie za %d godzin.",
|
"Ten dokument wygaśnie za %d godzin.",
|
||||||
"Ten dokument wygaśnie za %d godzin.",
|
"Ten dokument wygaśnie za %d godzin.",
|
||||||
|
"Ten dokument wygaśnie za %d godzin.",
|
||||||
|
"Ten dokument wygaśnie za %d godzin.",
|
||||||
"Ten dokument wygaśnie za %d godzin."
|
"Ten dokument wygaśnie za %d godzin."
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"Ten dokument wygaśnie za %d dzień.",
|
"Ten dokument wygaśnie za %d dzień.",
|
||||||
"Ten dokument wygaśnie za %d dni.",
|
"Ten dokument wygaśnie za %d dni.",
|
||||||
"Ten dokument wygaśnie za %d dni.",
|
"Ten dokument wygaśnie za %d dni.",
|
||||||
|
"Ten dokument wygaśnie za %d dni.",
|
||||||
|
"Ten dokument wygaśnie za %d dni.",
|
||||||
"Ten dokument wygaśnie za %d dni."
|
"Ten dokument wygaśnie za %d dni."
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
"Ten dokument wygaśnie za miesiąc.",
|
"Ten dokument wygaśnie za miesiąc.",
|
||||||
"Ten dokument wygaśnie za %d miesięcy.",
|
"Ten dokument wygaśnie za %d miesięcy.",
|
||||||
"Ten dokument wygaśnie za %d miesięcy.",
|
"Ten dokument wygaśnie za %d miesięcy.",
|
||||||
|
"Ten dokument wygaśnie za %d miesięcy.",
|
||||||
|
"Ten dokument wygaśnie za %d miesięcy.",
|
||||||
"Ten dokument wygaśnie za %d miesięcy."
|
"Ten dokument wygaśnie za %d miesięcy."
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "Wpisz hasło dla tej wklejki:",
|
"Please enter the password for this paste:": "Wpisz hasło dla tej wklejki:",
|
||||||
@ -142,7 +167,7 @@
|
|||||||
"Format": "Format",
|
"Format": "Format",
|
||||||
"Plain Text": "Czysty tekst",
|
"Plain Text": "Czysty tekst",
|
||||||
"Source Code": "Kod źródłowy",
|
"Source Code": "Kod źródłowy",
|
||||||
"Markdown": "Markdown",
|
"Markdown": "Znakowanie",
|
||||||
"Download attachment": "Pobierz załącznik",
|
"Download attachment": "Pobierz załącznik",
|
||||||
"Cloned: '%s'": "Sklonowano: '%s'",
|
"Cloned: '%s'": "Sklonowano: '%s'",
|
||||||
"The cloned file '%s' was attached to this paste.": "Sklonowany plik '%s' był dołączony do tej wklejki.",
|
"The cloned file '%s' was attached to this paste.": "Sklonowany plik '%s' był dołączony do tej wklejki.",
|
||||||
@ -156,7 +181,7 @@
|
|||||||
"Shorten URL": "Skróć adres URL",
|
"Shorten URL": "Skróć adres URL",
|
||||||
"Editor": "Edytować",
|
"Editor": "Edytować",
|
||||||
"Preview": "Podgląd",
|
"Preview": "Podgląd",
|
||||||
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s 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 wymaga zmiennej PATH zakończonej w \"%s\". Zaktualizuj zmienną PATH w index.php.",
|
||||||
"Decrypt": "Odszyfruj",
|
"Decrypt": "Odszyfruj",
|
||||||
"Enter password": "Wpisz hasło",
|
"Enter password": "Wpisz hasło",
|
||||||
"Loading…": "Wczytywanie…",
|
"Loading…": "Wczytywanie…",
|
||||||
@ -166,24 +191,34 @@
|
|||||||
"+++ 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.": "Ta witryna używa niezabezpieczonego połączenia HTTP! Używaj jej wyłącznie do testowania.",
|
||||||
"For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.",
|
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Aby uzyskać więcej informacji, <a href=\"%s\">sprawdź to często zadawane pytanie</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 may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Twoja przeglądarka może wymagać połączenia HTTPS do obsługi API WebCrypto. Wypróbuj <a href=\"%s\">przełączenie na HTTPS</a>.",
|
||||||
"Your browser 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.",
|
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Twoja przeglądarka nie obsługuje WebAssembly używanego do kompresji zlib. Możesz utworzyć nieskompresowane dokumenty, ale nie możesz odczytać skompresowanych.",
|
||||||
"waiting on user to provide a password": "waiting on user to provide a password",
|
"waiting on user to provide a password": "oczekiwanie na podanie hasła przez użytkownika",
|
||||||
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "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.": "Błąd odszyfrowywania danych. Czy wprowadzono niepoprawne hasło? Spróbuj ponownie, używając przycisku na górze.",
|
||||||
"Retry": "Retry",
|
"Retry": "Ponów",
|
||||||
"Showing raw text…": "Showing raw text…",
|
"Showing raw text…": "Pokazywanie nieprzetworzonego tekstu…",
|
||||||
"Notice:": "Notice:",
|
"Notice:": "Uwaga:",
|
||||||
"This link will expire after %s.": "This link will expire after %s.",
|
"This link will expire after %s.": "Ten odnośnik wygaśnie po %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.",
|
"This link can only be accessed once, do not use back or refresh button in your browser.": "Tego odnośnika można użyć tylko jeden raz. Nie cofaj ani nie odświeżaj strony w przeglądarce.",
|
||||||
"Link:": "Link:",
|
"Link:": "Odnośnik:",
|
||||||
"Recipient may become aware of your timezone, convert time to UTC?": "Recipient may become aware of your timezone, convert time to UTC?",
|
"Recipient may become aware of your timezone, convert time to UTC?": "Odbiorca może uzyskać informację o twojej strefie czasowej. Zamienić czas na UTC?",
|
||||||
"Use Current Timezone": "Use Current Timezone",
|
"Use Current Timezone": "Użyj bieżącej strefy czasowej",
|
||||||
"Convert To UTC": "Convert To UTC",
|
"Convert To UTC": "Zamień na UTC",
|
||||||
"Close": "Close",
|
"Close": "Zamknij",
|
||||||
"Encrypted note on PrivateBin": "Encrypted note on PrivateBin",
|
"Encrypted note on %s": "Zaszyfrowana notatka na %s",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "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.": "Naciśnij tej odnośnik, aby zobaczyć notatkę. Każda osoba z dostępem do tego adresu URL również może zobaczyć tę notatkę.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
"URL shortener may expose your decrypt key in URL.": "Skrócenie adresu URL może ujawnić Twój klucz odszyfrowujący w adresie URL.",
|
||||||
"Save paste": "Save paste"
|
"Save paste": "Zapisz wklejenie",
|
||||||
|
"Your IP is not authorized to create pastes.": "Twój adres IP nie jest upoważniony do tworzenia wklejeń.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "Próba skrócenia adresu URL wskazującego na inną instancję.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Błąd wywoływania YOURLS. Możliwy błąd konfiguracji, taki jak błędne lub brakujące \"apiurl\" lub \"signature\".",
|
||||||
|
"Error parsing YOURLS response.": "Błąd przetwarzania odpowiedzi YOURLS.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "Tę tajną wiadomość możesz zobaczyć tylko jeden raz. Czy chcesz to zrobić teraz?",
|
||||||
|
"Yes, see it": "Tak, pokaż",
|
||||||
|
"Dark Mode": "Ciemny motyw",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Błąd kompresowania wklejenia przez brak obsługi WebAssembly.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Błąd dekompresowania wklejenia przez brak obsługi WebAssembly przez przeglądarkę. Użyj innej przeglądarki, aby zobaczyć to wklejenie.",
|
||||||
|
"Start over": "Start over"
|
||||||
}
|
}
|
||||||
|
47
i18n/pt.json
47
i18n/pt.json
@ -3,7 +3,6 @@
|
|||||||
"%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 %sin the browser%s using 256 bits AES.": "%s é um serviço minimalista e de código aberto do tipo \"pastebin\", em que o servidor tem zero conhecimento dos dados copiados. Os dados são cifrados e decifrados %sno navegador%s usando 256 bits AES.",
|
||||||
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Mais informações na <a href=\"https://privatebin.info/\">página do projeto</a>.",
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Mais informações na <a href=\"https://privatebin.info/\">página do projeto</a>.",
|
||||||
"Because ignorance is bliss": "Porque a ignorância é uma benção",
|
"Because ignorance is bliss": "Porque a ignorância é uma benção",
|
||||||
"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.": "A cópia não existe, expirou ou já foi excluída.",
|
||||||
"%s requires php %s or above to work. Sorry.": "%s requer php %s ou superior para funcionar. Desculpa.",
|
"%s requires php %s or above to work. Sorry.": "%s requer php %s ou superior para funcionar. Desculpa.",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s requer que a seção de configuração [% s] esteja no arquivo de configuração.",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s requer que a seção de configuração [% s] esteja no arquivo de configuração.",
|
||||||
@ -11,6 +10,8 @@
|
|||||||
"Por favor espere %d segundo entre cada publicação.",
|
"Por favor espere %d segundo entre cada publicação.",
|
||||||
"Por favor espere %d segundos entre cada publicação.",
|
"Por favor espere %d segundos entre cada publicação.",
|
||||||
"Por favor espere %d segundos entre cada publicação.",
|
"Por favor espere %d segundos entre cada publicação.",
|
||||||
|
"Por favor espere %d segundos entre cada publicação.",
|
||||||
|
"Por favor espere %d segundos entre cada publicação.",
|
||||||
"Por favor espere %d segundos entre cada publicação."
|
"Por favor espere %d segundos entre cada publicação."
|
||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "A cópia está limitada a %s de dados cifrados.",
|
"Paste is limited to %s of encrypted data.": "A cópia está limitada a %s de dados cifrados.",
|
||||||
@ -25,7 +26,7 @@
|
|||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript é necessário para que %s funcione. Pedimos desculpas pela inconveniência.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript é necessário para que %s funcione. Pedimos desculpas pela inconveniência.",
|
||||||
"%s requires a modern browser to work.": "%s requer um navegador moderno para funcionar.",
|
"%s requires a modern browser to work.": "%s requer um navegador moderno para funcionar.",
|
||||||
"New": "Novo",
|
"New": "Novo",
|
||||||
"Send": "Enviar",
|
"Create": "Criar",
|
||||||
"Clone": "Clonar",
|
"Clone": "Clonar",
|
||||||
"Raw text": "Texto sem formato",
|
"Raw text": "Texto sem formato",
|
||||||
"Expires": "Expirar em",
|
"Expires": "Expirar em",
|
||||||
@ -38,42 +39,56 @@
|
|||||||
"%d segundo",
|
"%d segundo",
|
||||||
"%d segundos",
|
"%d segundos",
|
||||||
"%d segundos",
|
"%d segundos",
|
||||||
|
"%d segundos",
|
||||||
|
"%d segundos",
|
||||||
"%d segundos"
|
"%d segundos"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"%d minuto",
|
"%d minuto",
|
||||||
"%d minutos",
|
"%d minutos",
|
||||||
"%d minutos",
|
"%d minutos",
|
||||||
|
"%d minutos",
|
||||||
|
"%d minutos",
|
||||||
"%d minutos"
|
"%d minutos"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d hora",
|
"%d hora",
|
||||||
"%d horas",
|
"%d horas",
|
||||||
"%d horas (2° plural)",
|
"%d horas",
|
||||||
|
"%d horas",
|
||||||
|
"%d horas",
|
||||||
"%d horas"
|
"%d horas"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d dia",
|
"%d dia",
|
||||||
"%d dias",
|
"%d dias",
|
||||||
"%d dias",
|
"%d dias",
|
||||||
|
"%d dias",
|
||||||
|
"%d dias",
|
||||||
"%d dias"
|
"%d dias"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d semana",
|
"%d semana",
|
||||||
"%d semanas",
|
"%d semanas",
|
||||||
"%d semanas",
|
"%d semanas",
|
||||||
|
"%d semanas",
|
||||||
|
"%d semanas",
|
||||||
"%d semanas"
|
"%d semanas"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d mês",
|
"%d mês",
|
||||||
"%d meses",
|
"%d meses",
|
||||||
"%d meses",
|
"%d meses",
|
||||||
|
"%d meses",
|
||||||
|
"%d meses",
|
||||||
"%d meses"
|
"%d meses"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
"%d ano",
|
"%d ano",
|
||||||
"%d anos",
|
"%d anos",
|
||||||
"%d anos",
|
"%d anos",
|
||||||
|
"%d anos",
|
||||||
|
"%d anos",
|
||||||
"%d anos"
|
"%d anos"
|
||||||
],
|
],
|
||||||
"Never": "Nunca",
|
"Never": "Nunca",
|
||||||
@ -82,30 +97,40 @@
|
|||||||
"Este documento irá expirar em um segundo.",
|
"Este documento irá expirar em um segundo.",
|
||||||
"Este documento irá expirar em %d segundos.",
|
"Este documento irá expirar em %d segundos.",
|
||||||
"Este documento irá expirar em %d segundos.",
|
"Este documento irá expirar em %d segundos.",
|
||||||
|
"Este documento irá expirar em %d segundos.",
|
||||||
|
"Este documento irá expirar em %d segundos.",
|
||||||
"Este documento irá expirar em %d segundos."
|
"Este documento irá expirar em %d segundos."
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"Este documento irá expirar em um minuto.",
|
"Este documento irá expirar em um minuto.",
|
||||||
"Este documento irá expirar em %d minutos.",
|
"Este documento irá expirar em %d minutos.",
|
||||||
"Este documento irá expirar em %d minutos.",
|
"Este documento irá expirar em %d minutos.",
|
||||||
|
"Este documento irá expirar em %d minutos.",
|
||||||
|
"Este documento irá expirar em %d minutos.",
|
||||||
"Este documento irá expirar em %d minutos."
|
"Este documento irá expirar em %d minutos."
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"Este documento irá expirar em uma hora.",
|
"Este documento irá expirar em uma hora.",
|
||||||
"Este documento irá expirar em %d horas.",
|
"Este documento irá expirar em %d horas.",
|
||||||
"Este documento irá expirar em %d horas.",
|
"Este documento irá expirar em %d horas.",
|
||||||
|
"Este documento irá expirar em %d horas.",
|
||||||
|
"Este documento irá expirar em %d horas.",
|
||||||
"Este documento irá expirar em %d horas."
|
"Este documento irá expirar em %d horas."
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"Este documento irá expirar em um dia.",
|
"Este documento irá expirar em um dia.",
|
||||||
"Este documento irá expirar em %d dias.",
|
"Este documento irá expirar em %d dias.",
|
||||||
"Este documento irá expirar em %d dias.",
|
"Este documento irá expirar em %d dias.",
|
||||||
|
"Este documento irá expirar em %d dias.",
|
||||||
|
"Este documento irá expirar em %d dias.",
|
||||||
"Este documento irá expirar em %d dias."
|
"Este documento irá expirar em %d dias."
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
"Este documento irá expirar em um mês.",
|
"Este documento irá expirar em um mês.",
|
||||||
"Este documento irá expirar em %d meses.",
|
"Este documento irá expirar em %d meses.",
|
||||||
"Este documento irá expirar em %d meses.",
|
"Este documento irá expirar em %d meses.",
|
||||||
|
"Este documento irá expirar em %d meses.",
|
||||||
|
"Este documento irá expirar em %d meses.",
|
||||||
"Este documento irá expirar em %d meses."
|
"Este documento irá expirar em %d meses."
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "Por favor, digite a senha para essa cópia:",
|
"Please enter the password for this paste:": "Por favor, digite a senha para essa cópia:",
|
||||||
@ -182,8 +207,18 @@
|
|||||||
"Use Current Timezone": "Usar Fuso Horário Atual",
|
"Use Current Timezone": "Usar Fuso Horário Atual",
|
||||||
"Convert To UTC": "Converter para UTC",
|
"Convert To UTC": "Converter para UTC",
|
||||||
"Close": "Fechar",
|
"Close": "Fechar",
|
||||||
"Encrypted note on PrivateBin": "Nota criptografada no PrivateBin",
|
"Encrypted note on %s": "Nota criptografada no %s",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visite esse link para ver a nota. Dar a URL para qualquer um permite que eles também acessem a nota.",
|
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visite esse link para ver a nota. Dar a URL para qualquer um permite que eles também acessem a nota.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
"URL shortener may expose your decrypt key in URL.": "Encurtador de URL pode expor sua chave de descriptografia em URL.",
|
||||||
"Save paste": "Save paste"
|
"Save paste": "Salvar cópia",
|
||||||
|
"Your IP is not authorized to create pastes.": "Seu IP não está autorizado a criar cópias.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "Tentando encurtar uma URL que não aponta para a nossa instância.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Erro ao chamar YOURLS. Provavelmente um problema de configuração, como errado ou faltando \"apiurl\" ou \"signature\".",
|
||||||
|
"Error parsing YOURLS response.": "Erro ao analisar a resposta do YOURLS.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "Esta mensagem secreta só pode ser exibida uma vez. Gostaria de vê-la agora?",
|
||||||
|
"Yes, see it": "Sim, veja",
|
||||||
|
"Dark Mode": "Modo Noturno",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||||
|
"Start over": "Start over"
|
||||||
}
|
}
|
||||||
|
224
i18n/ro.json
Normal file
224
i18n/ro.json
Normal file
@ -0,0 +1,224 @@
|
|||||||
|
{
|
||||||
|
"PrivateBin": "PrivateBin",
|
||||||
|
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s este un pastebin online, minimalist și cu sursă deschisă unde serverul are zero acces la datele introduse. Datele sunt criptate/decriptate %sîn browser%s folosind AES cu 256 de biți.",
|
||||||
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Mai multe informații pe <a href=\"https://privatebin.info/\">pagina proiectului</a>.",
|
||||||
|
"Because ignorance is bliss": "Ignoranța este o binecuvântare",
|
||||||
|
"Paste does not exist, has expired or has been deleted.": "Paste-ul nu există, a expirat sau a fost șters.",
|
||||||
|
"%s requires php %s or above to work. Sorry.": "%s necesită php %s sau mai nou pentru a funcționa. Scuze.",
|
||||||
|
"%s requires configuration section [%s] to be present in configuration file.": "%s necesită ca secțiunea de configurare [%s] să fie prezentă în fișierul de configurare.",
|
||||||
|
"Please wait %d seconds between each post.": [
|
||||||
|
"Vă rugăm să așteptați %d secundă între fiecare postare",
|
||||||
|
"Vă rugăm să așteptați %d secunde între fiecare postare",
|
||||||
|
"Vă rugăm să așteptați %d de secunde între fiecare postare",
|
||||||
|
"Vă rugăm să așteptați %d de secunde între fiecare postare",
|
||||||
|
"Vă rugăm să așteptați %d de secunde între fiecare postare",
|
||||||
|
"Vă rugăm să așteptați %d de secunde între fiecare postare"
|
||||||
|
],
|
||||||
|
"Paste is limited to %s of encrypted data.": "Paste-ul este limitat la %s de date criptate.",
|
||||||
|
"Invalid data.": "Date invalide.",
|
||||||
|
"You are unlucky. Try again.": "Ați avut ghinion. Încercați din nou.",
|
||||||
|
"Error saving comment. Sorry.": "Eroare la salvarea comentariului. Ne pare rău.",
|
||||||
|
"Error saving paste. Sorry.": "Eroare la salvarea paste-ului. Ne pare rău.",
|
||||||
|
"Invalid paste ID.": "ID paste invalid.",
|
||||||
|
"Paste is not of burn-after-reading type.": "Paste-ul nu se șterge după citire.",
|
||||||
|
"Wrong deletion token. Paste was not deleted.": "Token de ștergere incorect. Paste-ul nu a fost șters.",
|
||||||
|
"Paste was properly deleted.": "Paste-ul a fost șters cu succes.",
|
||||||
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript este necesar pentru ca %s să funcționeze. Ne cerem scuze pentru neplăceri.",
|
||||||
|
"%s requires a modern browser to work.": "%s necesită un browser modern pentru a funcționa.",
|
||||||
|
"New": "Nou",
|
||||||
|
"Create": "Creați",
|
||||||
|
"Clone": "Clonați",
|
||||||
|
"Raw text": "Text brut",
|
||||||
|
"Expires": "Expiră",
|
||||||
|
"Burn after reading": "Ștergere după citire",
|
||||||
|
"Open discussion": "Deschideți discuția",
|
||||||
|
"Password (recommended)": "Parolă (recomandată)",
|
||||||
|
"Discussion": "Discuție",
|
||||||
|
"Toggle navigation": "Comutați navigarea",
|
||||||
|
"%d seconds": [
|
||||||
|
"%d secundă",
|
||||||
|
"%d secunde",
|
||||||
|
"%d de secunde",
|
||||||
|
"%d de secunde",
|
||||||
|
"%d de secunde",
|
||||||
|
"%d de secunde"
|
||||||
|
],
|
||||||
|
"%d minutes": [
|
||||||
|
"%d minut",
|
||||||
|
"%d minute",
|
||||||
|
"%d de minute",
|
||||||
|
"%d de secunde",
|
||||||
|
"%d de secunde",
|
||||||
|
"%d de secunde"
|
||||||
|
],
|
||||||
|
"%d hours": [
|
||||||
|
"%d oră",
|
||||||
|
"%d ore",
|
||||||
|
"%d de ore",
|
||||||
|
"%d de ore",
|
||||||
|
"%d de ore",
|
||||||
|
"%d de ore"
|
||||||
|
],
|
||||||
|
"%d days": [
|
||||||
|
"%d zi",
|
||||||
|
"%d zile",
|
||||||
|
"%d de zile",
|
||||||
|
"%d de zile",
|
||||||
|
"%d de zile",
|
||||||
|
"%d de zile"
|
||||||
|
],
|
||||||
|
"%d weeks": [
|
||||||
|
"%d săptămână",
|
||||||
|
"%d săptămână",
|
||||||
|
"%d săptămâni",
|
||||||
|
"%d de săptămâni",
|
||||||
|
"%d de săptămâni",
|
||||||
|
"%d de săptămâni"
|
||||||
|
],
|
||||||
|
"%d months": [
|
||||||
|
"%d lună",
|
||||||
|
"%d luni",
|
||||||
|
"%d de luni",
|
||||||
|
"%d de luni",
|
||||||
|
"%d de luni",
|
||||||
|
"%d de luni"
|
||||||
|
],
|
||||||
|
"%d years": [
|
||||||
|
"%d an",
|
||||||
|
"%d ani",
|
||||||
|
"%d de ani",
|
||||||
|
"%d de ani",
|
||||||
|
"%d de ani",
|
||||||
|
"%d de ani"
|
||||||
|
],
|
||||||
|
"Never": "Niciodată",
|
||||||
|
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Notă: Acesta este un serviciu de test: Datele ar putea fi șterse oricând. Vor muri niște pisicuțe dacă abuzați acest serviciu.",
|
||||||
|
"This document will expire in %d seconds.": [
|
||||||
|
"Acest document va expira în %d secundă.",
|
||||||
|
"Acest document va expira în %d secunde.",
|
||||||
|
"Acest document va expira în %d de secunde.",
|
||||||
|
"Acest document va expira în %d de secunde.",
|
||||||
|
"Acest document va expira în %d de secunde.",
|
||||||
|
"Acest document va expira în %d de secunde."
|
||||||
|
],
|
||||||
|
"This document will expire in %d minutes.": [
|
||||||
|
"Acest document va expira în %d minut.",
|
||||||
|
"Acest document va expira în %d minute.",
|
||||||
|
"Acest document va expira în %d de minute.",
|
||||||
|
"Acest document va expira în %d de minute.",
|
||||||
|
"Acest document va expira în %d de minute.",
|
||||||
|
"Acest document va expira în %d de minute."
|
||||||
|
],
|
||||||
|
"This document will expire in %d hours.": [
|
||||||
|
"Acest document va expira în %d oră.",
|
||||||
|
"Acest document va expira în %d ore.",
|
||||||
|
"Acest document va expira în %d de ore.",
|
||||||
|
"Acest document va expira în %d de ore.",
|
||||||
|
"Acest document va expira în %d de ore.",
|
||||||
|
"Acest document va expira în %d de ore."
|
||||||
|
],
|
||||||
|
"This document will expire in %d days.": [
|
||||||
|
"Acest document va expira în %d zi.",
|
||||||
|
"Acest document va expira în %d zile.",
|
||||||
|
"Acest document va expira în %d de zile.",
|
||||||
|
"Acest document va expira în %d de zile.",
|
||||||
|
"Acest document va expira în %d de zile.",
|
||||||
|
"Acest document va expira în %d de zile."
|
||||||
|
],
|
||||||
|
"This document will expire in %d months.": [
|
||||||
|
"Acest document va expira în %d lună.",
|
||||||
|
"Acest document va expira în %d luni.",
|
||||||
|
"Acest document va expira în %d de luni.",
|
||||||
|
"Acest document va expira în %d de luni.",
|
||||||
|
"Acest document va expira în %d de luni.",
|
||||||
|
"Acest document va expira în %d de luni."
|
||||||
|
],
|
||||||
|
"Please enter the password for this paste:": "Va rugăm să introduceți parola pentru acest paste:",
|
||||||
|
"Could not decrypt data (Wrong key?)": "Nu s-au putut decripta datele (Cheie gresită?)",
|
||||||
|
"Could not delete the paste, it was not stored in burn after reading mode.": "Nu s-a putut șterge paste-ul, nu a fost stocat în modul de ștergere după citire.",
|
||||||
|
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "NUMAI PENTRU OCHII DVS. Nu închideți această fereastră, acest mesaj nu poate fi afișat din nou.",
|
||||||
|
"Could not decrypt comment; Wrong key?": "Nu s-a putut decripta comentariul; Cheie greșită?",
|
||||||
|
"Reply": "Răspundeți",
|
||||||
|
"Anonymous": "Anonim",
|
||||||
|
"Avatar generated from IP address": "Avatar generat din adresa IP",
|
||||||
|
"Add comment": "Adăugați un comentariu",
|
||||||
|
"Optional nickname…": "Poreclă opțională…",
|
||||||
|
"Post comment": "Postați comentariul",
|
||||||
|
"Sending comment…": "Se trimite comentariul…",
|
||||||
|
"Comment posted.": "Comentariul a fost postat.",
|
||||||
|
"Could not refresh display: %s": "Nu s-a putut actualiza afișarea: %s",
|
||||||
|
"unknown status": "stare necunoscută",
|
||||||
|
"server error or not responding": "eroare de server sau nu răspunde",
|
||||||
|
"Could not post comment: %s": "Nu s-a putut posta comentariul: %s",
|
||||||
|
"Sending paste…": "Se trimite paste-ul…",
|
||||||
|
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Paste-ul dvs. este <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Apăsați [Ctrl]+[c] pentru a copia)</span>",
|
||||||
|
"Delete data": "Ștergeți datele",
|
||||||
|
"Could not create paste: %s": "Nu s-a putut crea paste-ul: %s",
|
||||||
|
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Nu s-a putut decripta paste-ul: Cheia de decriptare lipsește din URL (Ați folosit un redirector sau un scurtător de URL care a tăiat o parte din URL?)",
|
||||||
|
"B": "B",
|
||||||
|
"KiB": "KiB",
|
||||||
|
"MiB": "MiB",
|
||||||
|
"GiB": "GiB",
|
||||||
|
"TiB": "TiB",
|
||||||
|
"PiB": "PiB",
|
||||||
|
"EiB": "EiB",
|
||||||
|
"ZiB": "ZiB",
|
||||||
|
"YiB": "YiB",
|
||||||
|
"Format": "Formatare",
|
||||||
|
"Plain Text": "Text neformatat",
|
||||||
|
"Source Code": "Cod sursă",
|
||||||
|
"Markdown": "Markdown",
|
||||||
|
"Download attachment": "Descărcați fișierul atașat",
|
||||||
|
"Cloned: '%s'": "S-a clonat: '%s'",
|
||||||
|
"The cloned file '%s' was attached to this paste.": "Fișierul clonat '%s' a fost atașat la acest paste.",
|
||||||
|
"Attach a file": "Atașați un fișier",
|
||||||
|
"alternatively drag & drop a file or paste an image from the clipboard": "alternativ, trageți și plasați un fișier sau lipiți o imagine din clipboard",
|
||||||
|
"File too large, to display a preview. Please download the attachment.": "Fișierul este prea mare pentru a afișa o previzualizare. Vă rugăm să descărcaţi fișierul.",
|
||||||
|
"Remove attachment": "Eliminați fișierul atașat",
|
||||||
|
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Browserul dvs. nu acceptă încărcarea fișierelor criptate. Vă rugăm să folosiți un browser mai nou.",
|
||||||
|
"Invalid attachment.": "Fișier invalid.",
|
||||||
|
"Options": "Opţiuni",
|
||||||
|
"Shorten URL": "Scurtați URL-ul",
|
||||||
|
"Editor": "Editor",
|
||||||
|
"Preview": "Previzualizare",
|
||||||
|
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s necesită ca PATH să se termine cu \"%s\". Vă rugăm să actualizați PATH în index.php.",
|
||||||
|
"Decrypt": "Decriptare",
|
||||||
|
"Enter password": "Introduceţi parola",
|
||||||
|
"Loading…": "Se încarcă…",
|
||||||
|
"Decrypting paste…": "Se decriptează paste-ul…",
|
||||||
|
"Preparing new paste…": "Se pregătește un paste nou…",
|
||||||
|
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "În cazul în care acest mesaj nu dispare niciodată, vă rugăm să aruncaţi o privire la <a href=\"%s\">acest FAQ pentru informații de depanare</a>.",
|
||||||
|
"+++ no paste text +++": "+++ fără text +++",
|
||||||
|
"Could not get paste data: %s": "Nu s-a putut obține datele paste-ului: %s",
|
||||||
|
"QR code": "Cod QR",
|
||||||
|
"This website is using an insecure HTTP connection! Please use it only for testing.": "Acest website folosește o conexiune HTTP nesigură! Vă rugăm să îl folosiți doar pentru teste.",
|
||||||
|
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Pentru mai multe informații <a href=\"%s\">a se vedea secțiunea FAQ</a>.",
|
||||||
|
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Este posibil ca browserul dvs. să necesite o conexiune HTTPS pentru a suporta API-ul WebCrypto. Încercați să <a href=\"%s\">comutați la HTTPS</a>.",
|
||||||
|
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Browserul dvs. nu acceptă WebAssembly folosit pentru compresia zlib. Puteți crea documente necompresate, dar nu le puteți citi pe cele compresate.",
|
||||||
|
"waiting on user to provide a password": "se așteaptă ca utilizatorul să furnizeze o parolă",
|
||||||
|
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Nu s-au putut decripta datele. Ați introdus parola greșită? Reîncercați folosind butonul de sus.",
|
||||||
|
"Retry": "Reîncercați",
|
||||||
|
"Showing raw text…": "Se afișează textul brut…",
|
||||||
|
"Notice:": "Observaţie:",
|
||||||
|
"This link will expire after %s.": "Acest link va expira după %s.",
|
||||||
|
"This link can only be accessed once, do not use back or refresh button in your browser.": "Acest link poate fi accesat o singură dată, nu folosiți butonul înapoi sau reîmprospătare din browserul dvs.",
|
||||||
|
"Link:": "Link:",
|
||||||
|
"Recipient may become aware of your timezone, convert time to UTC?": "Destinatarul vă poate afla fusul dvs. orar, convertiți timpul în UTC?",
|
||||||
|
"Use Current Timezone": "Se folosește fusul orar actual",
|
||||||
|
"Convert To UTC": "Convertire la UTC",
|
||||||
|
"Close": "Închideți",
|
||||||
|
"Encrypted note on %s": "Notă criptată pe %s",
|
||||||
|
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Accesați acest link pentru a vedea nota. Nota poate fi accesată de către oricine care are acest URL.",
|
||||||
|
"URL shortener may expose your decrypt key in URL.": "Scurtătorul de URL ar putea să vă expună cheia de decriptare din URL.",
|
||||||
|
"Save paste": "Salvați paste-ul",
|
||||||
|
"Your IP is not authorized to create pastes.": "Adresa dvs. IP nu este autorizată să creeze paste-uri.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "Încercarea de a scurta un URL care nu direcționează spre instanța noastră.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Eroare la apelarea YOURLS. Probabil o problemă de configurare, cum ar fi \"apiurl\" sau \"signature\" greșite sau lipsă.",
|
||||||
|
"Error parsing YOURLS response.": "Eroare la analizarea răspunsului YOURLS.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "Acest mesaj secret poate fi afișat o singură dată. Doriți să îl vedeți acum?",
|
||||||
|
"Yes, see it": "Da, vezi",
|
||||||
|
"Dark Mode": "Mod întunecat",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Eroare la compresia paste-ului din cauza incompatibilității cu WebAssembly.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Eroare la deschiderea paste-ului, browserul dvs. nu acceptă WebAssembly. Vă rugăm să utilizați un alt browser pentru a vedea acest paste.",
|
||||||
|
"Start over": "Start over"
|
||||||
|
}
|
43
i18n/ru.json
43
i18n/ru.json
@ -3,7 +3,6 @@
|
|||||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s это минималистичный Open Source проект для создания заметок, где сервер не знает ничего о сохраняемых данных. Данные шифруются/расшифровываются %sв браузере%s с использованием 256 битного шифрования AES.",
|
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s это минималистичный Open Source проект для создания заметок, где сервер не знает ничего о сохраняемых данных. Данные шифруются/расшифровываются %sв браузере%s с использованием 256 битного шифрования AES.",
|
||||||
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Подробнее можно узнать на <a href=\"https://privatebin.info/\">сайте проекта</a>.",
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Подробнее можно узнать на <a href=\"https://privatebin.info/\">сайте проекта</a>.",
|
||||||
"Because ignorance is bliss": "Потому что неведение - благо",
|
"Because ignorance is bliss": "Потому что неведение - благо",
|
||||||
"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 php %s or above to work. Sorry.": "Для работы %s требуется php %s или выше. Извините.",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s необходимо наличие секции [%s] в конфигурационном файле.",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s необходимо наличие секции [%s] в конфигурационном файле.",
|
||||||
@ -11,6 +10,8 @@
|
|||||||
"Пожалуйста, ожидайте %d секунду между каждыми записями.",
|
"Пожалуйста, ожидайте %d секунду между каждыми записями.",
|
||||||
"Пожалуйста, ожидайте %d секунды между каждыми записями.",
|
"Пожалуйста, ожидайте %d секунды между каждыми записями.",
|
||||||
"Пожалуйста, ожидайте %d секунд между каждыми записями.",
|
"Пожалуйста, ожидайте %d секунд между каждыми записями.",
|
||||||
|
"Пожалуйста, ожидайте %d секунд между каждыми записями.",
|
||||||
|
"Пожалуйста, ожидайте %d секунд между каждыми записями.",
|
||||||
"Пожалуйста, ожидайте %d секунд между каждыми записями."
|
"Пожалуйста, ожидайте %d секунд между каждыми записями."
|
||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "Размер записи ограничен %s зашифрованных данных.",
|
"Paste is limited to %s of encrypted data.": "Размер записи ограничен %s зашифрованных данных.",
|
||||||
@ -25,7 +26,7 @@
|
|||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Для работы %s требуется включенный JavaScript. Приносим извинения за неудобства.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Для работы %s требуется включенный JavaScript. Приносим извинения за неудобства.",
|
||||||
"%s requires a modern browser to work.": "Для работы %s требуется более современный браузер.",
|
"%s requires a modern browser to work.": "Для работы %s требуется более современный браузер.",
|
||||||
"New": "Новая запись",
|
"New": "Новая запись",
|
||||||
"Send": "Отправить",
|
"Create": "Создать",
|
||||||
"Clone": "Дублировать",
|
"Clone": "Дублировать",
|
||||||
"Raw text": "Исходный текст",
|
"Raw text": "Исходный текст",
|
||||||
"Expires": "Удалить через",
|
"Expires": "Удалить через",
|
||||||
@ -38,42 +39,56 @@
|
|||||||
"%d секунду",
|
"%d секунду",
|
||||||
"%d секунды",
|
"%d секунды",
|
||||||
"%d секунд",
|
"%d секунд",
|
||||||
|
"%d секунд",
|
||||||
|
"%d секунд",
|
||||||
"%d секунд"
|
"%d секунд"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"%d минуту",
|
"%d минуту",
|
||||||
"%d минуты",
|
"%d минуты",
|
||||||
"%d минут",
|
"%d минут",
|
||||||
|
"%d минут",
|
||||||
|
"%d минут",
|
||||||
"%d минут"
|
"%d минут"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d час",
|
"%d час",
|
||||||
"%d часа",
|
"%d часа",
|
||||||
"%d часов",
|
"%d часов",
|
||||||
|
"%d часов",
|
||||||
|
"%d часов",
|
||||||
"%d часов"
|
"%d часов"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d день",
|
"%d день",
|
||||||
"%d дня",
|
"%d дня",
|
||||||
"%d дней",
|
"%d дней",
|
||||||
|
"%d дней",
|
||||||
|
"%d дней",
|
||||||
"%d дней"
|
"%d дней"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d неделю",
|
"%d неделю",
|
||||||
"%d недели",
|
"%d недели",
|
||||||
"%d недель",
|
"%d недель",
|
||||||
|
"%d недель",
|
||||||
|
"%d недель",
|
||||||
"%d недель"
|
"%d недель"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d месяц",
|
"%d месяц",
|
||||||
"%d месяца",
|
"%d месяца",
|
||||||
"%d месяцев",
|
"%d месяцев",
|
||||||
|
"%d месяцев",
|
||||||
|
"%d месяцев",
|
||||||
"%d месяцев"
|
"%d месяцев"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
"%d год",
|
"%d год",
|
||||||
"%d года",
|
"%d года",
|
||||||
"%d лет",
|
"%d лет",
|
||||||
|
"%d лет",
|
||||||
|
"%d лет",
|
||||||
"%d лет"
|
"%d лет"
|
||||||
],
|
],
|
||||||
"Never": "Никогда",
|
"Never": "Никогда",
|
||||||
@ -82,30 +97,40 @@
|
|||||||
"Документ будет удален через %d секунду.",
|
"Документ будет удален через %d секунду.",
|
||||||
"Документ будет удален через %d секунды.",
|
"Документ будет удален через %d секунды.",
|
||||||
"Документ будет удален через %d секунд.",
|
"Документ будет удален через %d секунд.",
|
||||||
|
"Документ будет удален через %d секунд.",
|
||||||
|
"Документ будет удален через %d секунд.",
|
||||||
"Документ будет удален через %d секунд."
|
"Документ будет удален через %d секунд."
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"Документ будет удален через %d минуту.",
|
"Документ будет удален через %d минуту.",
|
||||||
"Документ будет удален через %d минуты.",
|
"Документ будет удален через %d минуты.",
|
||||||
"Документ будет удален через %d минут.",
|
"Документ будет удален через %d минут.",
|
||||||
|
"Документ будет удален через %d минут.",
|
||||||
|
"Документ будет удален через %d минут.",
|
||||||
"Документ будет удален через %d минут."
|
"Документ будет удален через %d минут."
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"Документ будет удален через %d час.",
|
"Документ будет удален через %d час.",
|
||||||
"Документ будет удален через %d часа.",
|
"Документ будет удален через %d часа.",
|
||||||
"Документ будет удален через %d часов.",
|
"Документ будет удален через %d часов.",
|
||||||
|
"Документ будет удален через %d часов.",
|
||||||
|
"Документ будет удален через %d часов.",
|
||||||
"Документ будет удален через %d часов."
|
"Документ будет удален через %d часов."
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"Документ будет удален через %d день.",
|
"Документ будет удален через %d день.",
|
||||||
"Документ будет удален через %d дня.",
|
"Документ будет удален через %d дня.",
|
||||||
"Документ будет удален через %d дней.",
|
"Документ будет удален через %d дней.",
|
||||||
|
"Документ будет удален через %d дней.",
|
||||||
|
"Документ будет удален через %d дней.",
|
||||||
"Документ будет удален через %d дней."
|
"Документ будет удален через %d дней."
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
"Документ будет удален через %d месяц.",
|
"Документ будет удален через %d месяц.",
|
||||||
"Документ будет удален через %d месяца.",
|
"Документ будет удален через %d месяца.",
|
||||||
"Документ будет удален через %d месяцев.",
|
"Документ будет удален через %d месяцев.",
|
||||||
|
"Документ будет удален через %d месяцев.",
|
||||||
|
"Документ будет удален через %d месяцев.",
|
||||||
"Документ будет удален через %d месяцев."
|
"Документ будет удален через %d месяцев."
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "Пожалуйста, введите пароль от записи:",
|
"Please enter the password for this paste:": "Пожалуйста, введите пароль от записи:",
|
||||||
@ -182,8 +207,18 @@
|
|||||||
"Use Current Timezone": "Использовать текущий часовой пояс",
|
"Use Current Timezone": "Использовать текущий часовой пояс",
|
||||||
"Convert To UTC": "Конвертировать в UTC",
|
"Convert To UTC": "Конвертировать в UTC",
|
||||||
"Close": "Закрыть",
|
"Close": "Закрыть",
|
||||||
"Encrypted note on PrivateBin": "Зашифрованная запись на PrivateBin",
|
"Encrypted note on %s": "Зашифрованная запись на %s",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Посетите эту ссылку чтобы просмотреть запись. Передача ссылки кому либо позволит им получить доступ к записи тоже.",
|
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Посетите эту ссылку чтобы просмотреть запись. Передача ссылки кому либо позволит им получить доступ к записи тоже.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "Сервис сокращения ссылок может получить ваш ключ расшифровки из ссылки.",
|
"URL shortener may expose your decrypt key in URL.": "Сервис сокращения ссылок может получить ваш ключ расшифровки из ссылки.",
|
||||||
"Save paste": "Сохранить запись"
|
"Save paste": "Сохранить запись",
|
||||||
|
"Your IP is not authorized to create pastes.": "Вашему IP адресу не разрешено создавать записи.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "Попытка сократить URL, который указывает не на наш сервер.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Ошибка обращения к YOURLS. Возможно в конфигурации допущена ошибка, например неверный или отсутствующий параметр \"apiurl\" или \"signature\".",
|
||||||
|
"Error parsing YOURLS response.": "Ошибка разбора ответа от YOURLS.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "Записи, удаляемые после прочтения, могут быть отображены после загрузки только один раз. Вы хотите открыть её сейчас?",
|
||||||
|
"Yes, see it": "Да, загрузить",
|
||||||
|
"Dark Mode": "Тёмная",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||||
|
"Start over": "Start over"
|
||||||
}
|
}
|
||||||
|
224
i18n/sk.json
Normal file
224
i18n/sk.json
Normal file
@ -0,0 +1,224 @@
|
|||||||
|
{
|
||||||
|
"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á",
|
||||||
|
"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",
|
||||||
|
"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ý",
|
||||||
|
"Create": "Vytvoriť",
|
||||||
|
"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 sekúnd",
|
||||||
|
"%d sekúnd"
|
||||||
|
],
|
||||||
|
"%d minutes": [
|
||||||
|
"%d minúta",
|
||||||
|
"%d minúty",
|
||||||
|
"%d minút",
|
||||||
|
"%d minút",
|
||||||
|
"%d minút",
|
||||||
|
"%d minút"
|
||||||
|
],
|
||||||
|
"%d hours": [
|
||||||
|
"%d hodina",
|
||||||
|
"%d hodiny",
|
||||||
|
"%d hodín",
|
||||||
|
"%d hodín",
|
||||||
|
"%d hodín",
|
||||||
|
"%d hodín"
|
||||||
|
],
|
||||||
|
"%d days": [
|
||||||
|
"%d deň",
|
||||||
|
"%d dni",
|
||||||
|
"%d dní",
|
||||||
|
"%d dní",
|
||||||
|
"%d dní",
|
||||||
|
"%d dní"
|
||||||
|
],
|
||||||
|
"%d weeks": [
|
||||||
|
"%d týždeň",
|
||||||
|
"%d týždne",
|
||||||
|
"%d týždňov",
|
||||||
|
"%d týždňov",
|
||||||
|
"%d týždňov",
|
||||||
|
"%d týždňov"
|
||||||
|
],
|
||||||
|
"%d months": [
|
||||||
|
"%d mesiac",
|
||||||
|
"%d mesiace",
|
||||||
|
"%d mesiacov",
|
||||||
|
"%d mesiacov",
|
||||||
|
"%d mesiacov",
|
||||||
|
"%d mesiacov"
|
||||||
|
],
|
||||||
|
"%d years": [
|
||||||
|
"%d rok",
|
||||||
|
"%d roky",
|
||||||
|
"%d rokov",
|
||||||
|
"%d rokov",
|
||||||
|
"%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.",
|
||||||
|
"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.",
|
||||||
|
"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.",
|
||||||
|
"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í.",
|
||||||
|
"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.",
|
||||||
|
"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.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
|
||||||
|
"Yes, see it": "Yes, see it",
|
||||||
|
"Dark Mode": "Tmavý Režim",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||||
|
"Start over": "Start over"
|
||||||
|
}
|
43
i18n/sl.json
43
i18n/sl.json
@ -3,7 +3,6 @@
|
|||||||
"%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 %sin the browser%s using 256 bits AES.": "%s je minimalističen, odprtokodni spletni 'pastebin', kjer server ne ve ničesar o prilepljenih podatkih. Podatki so zakodirani/odkodirani %sv brskalniku%s z uporabo 256 bitnega AES.",
|
||||||
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Več informacij na <a href=\"https://privatebin.info/\">spletni strani projekta.</a>.",
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Več informacij na <a href=\"https://privatebin.info/\">spletni strani projekta.</a>.",
|
||||||
"Because ignorance is bliss": "Ker kar ne veš ne boli.",
|
"Because ignorance is bliss": "Ker kar ne veš ne boli.",
|
||||||
"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.": "Prilepek ne obstaja, mu je potekla življenjska doba, ali pa je izbrisan.",
|
||||||
"%s requires php %s or above to work. Sorry.": "Oprosti, %s za delovanje potrebuje vsaj php %s.",
|
"%s requires php %s or above to work. Sorry.": "Oprosti, %s za delovanje potrebuje vsaj php %s.",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s potrebuje sekcijo konfiguracij [%s] v konfiguracijski datoteki.",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s potrebuje sekcijo konfiguracij [%s] v konfiguracijski datoteki.",
|
||||||
@ -11,6 +10,8 @@
|
|||||||
"Prosim počakaj vsaj %d sekundo pred vsako naslednjo objavo.",
|
"Prosim počakaj vsaj %d sekundo pred vsako naslednjo objavo.",
|
||||||
"Prosim počakaj vsaj %d sekundi pred vsako naslednjo objavo.",
|
"Prosim počakaj vsaj %d sekundi pred vsako naslednjo objavo.",
|
||||||
"Prosim počakaj vsaj %d sekunde pred vsako naslednjo objavo.",
|
"Prosim počakaj vsaj %d sekunde pred vsako naslednjo objavo.",
|
||||||
|
"Prosim počakaj vsaj %d sekund pred vsako naslednjo objavo.",
|
||||||
|
"Prosim počakaj vsaj %d sekund pred vsako naslednjo objavo.",
|
||||||
"Prosim počakaj vsaj %d sekund pred vsako naslednjo objavo."
|
"Prosim počakaj vsaj %d sekund pred vsako naslednjo objavo."
|
||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "Velikost prilepka je omejena na %s zakodiranih podatkov.",
|
"Paste is limited to %s of encrypted data.": "Velikost prilepka je omejena na %s zakodiranih podatkov.",
|
||||||
@ -25,7 +26,7 @@
|
|||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Da %s deluje, moraš vklopiti JavaScript. Oprosti za povročene nevšečnosti.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Da %s deluje, moraš vklopiti JavaScript. Oprosti za povročene nevšečnosti.",
|
||||||
"%s requires a modern browser to work.": "%s za svoje delovanje potrebuje moderen brskalnik.",
|
"%s requires a modern browser to work.": "%s za svoje delovanje potrebuje moderen brskalnik.",
|
||||||
"New": "Nov prilepek",
|
"New": "Nov prilepek",
|
||||||
"Send": "Pošlji",
|
"Create": "Ustvari",
|
||||||
"Clone": "Kloniraj",
|
"Clone": "Kloniraj",
|
||||||
"Raw text": "Surov tekst",
|
"Raw text": "Surov tekst",
|
||||||
"Expires": "Poteče",
|
"Expires": "Poteče",
|
||||||
@ -38,42 +39,56 @@
|
|||||||
"%d sekunda",
|
"%d sekunda",
|
||||||
"%d sekundi",
|
"%d sekundi",
|
||||||
"%d sekunde",
|
"%d sekunde",
|
||||||
|
"%d sekund",
|
||||||
|
"%d sekund",
|
||||||
"%d sekund"
|
"%d sekund"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"%d minuta",
|
"%d minuta",
|
||||||
"%d minuti",
|
"%d minuti",
|
||||||
"%d minute",
|
"%d minute",
|
||||||
|
"%d minut",
|
||||||
|
"%d minut",
|
||||||
"%d minut"
|
"%d minut"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d ura",
|
"%d ura",
|
||||||
"%d uri",
|
"%d uri",
|
||||||
"%d ure",
|
"%d ure",
|
||||||
|
"%d ur",
|
||||||
|
"%d ur",
|
||||||
"%d ur"
|
"%d ur"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d dan",
|
"%d dan",
|
||||||
"%d dneva",
|
"%d dneva",
|
||||||
"%d dnevi",
|
"%d dnevi",
|
||||||
|
"%d dni",
|
||||||
|
"%d dni",
|
||||||
"%d dni"
|
"%d dni"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d teden",
|
"%d teden",
|
||||||
"%d tedna",
|
"%d tedna",
|
||||||
"%d tedni",
|
"%d tedni",
|
||||||
|
"%d tednov",
|
||||||
|
"%d tednov",
|
||||||
"%d tednov"
|
"%d tednov"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d mesec",
|
"%d mesec",
|
||||||
"%d meseca",
|
"%d meseca",
|
||||||
"%d meseci",
|
"%d meseci",
|
||||||
|
"%d mesecev",
|
||||||
|
"%d mesecev",
|
||||||
"%d mesecev"
|
"%d mesecev"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
"%d leto",
|
"%d leto",
|
||||||
"%d leti",
|
"%d leti",
|
||||||
"%d leta",
|
"%d leta",
|
||||||
|
"%d let",
|
||||||
|
"%d let",
|
||||||
"%d let"
|
"%d let"
|
||||||
],
|
],
|
||||||
"Never": "Nikoli",
|
"Never": "Nikoli",
|
||||||
@ -82,30 +97,40 @@
|
|||||||
"Ta dokument bo potekel čez %d sekundo.",
|
"Ta dokument bo potekel čez %d sekundo.",
|
||||||
"Ta dokument bo potekel čez %d sekundi.",
|
"Ta dokument bo potekel čez %d sekundi.",
|
||||||
"Ta dokument bo potekel čez %d sekunde.",
|
"Ta dokument bo potekel čez %d sekunde.",
|
||||||
|
"Ta dokument bo potekel čez %d sekund.",
|
||||||
|
"Ta dokument bo potekel čez %d sekund.",
|
||||||
"Ta dokument bo potekel čez %d sekund."
|
"Ta dokument bo potekel čez %d sekund."
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"Ta dokument bo potekel čez %d minuto.",
|
"Ta dokument bo potekel čez %d minuto.",
|
||||||
"Ta dokument bo potekel čez %d minuti.",
|
"Ta dokument bo potekel čez %d minuti.",
|
||||||
"Ta dokument bo potekel čez %d minute.",
|
"Ta dokument bo potekel čez %d minute.",
|
||||||
|
"Ta dokument bo potekel čez %d minut.",
|
||||||
|
"Ta dokument bo potekel čez %d minut.",
|
||||||
"Ta dokument bo potekel čez %d minut."
|
"Ta dokument bo potekel čez %d minut."
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"Ta dokument bo potekel čez %d uro.",
|
"Ta dokument bo potekel čez %d uro.",
|
||||||
"Ta dokument bo potekel čez %d uri.",
|
"Ta dokument bo potekel čez %d uri.",
|
||||||
"Ta dokument bo potekel čez %d ure.",
|
"Ta dokument bo potekel čez %d ure.",
|
||||||
|
"Ta dokument bo potekel čez %d ur.",
|
||||||
|
"Ta dokument bo potekel čez %d ur.",
|
||||||
"Ta dokument bo potekel čez %d ur."
|
"Ta dokument bo potekel čez %d ur."
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"Ta dokument bo potekel čez %d dan.",
|
"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.",
|
"Ta dokument bo potekel čez %d dni.",
|
||||||
|
"Ta dokument bo potekel čez %d dni.",
|
||||||
|
"Ta dokument bo potekel čez %d dni.",
|
||||||
"Ta dokument bo potekel čez %d dni."
|
"Ta dokument bo potekel čez %d dni."
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
"Ta dokument bo potekel čez %d mesec.",
|
"Ta dokument bo potekel čez %d mesec.",
|
||||||
"Ta dokument bo potekel čez %d meseca.",
|
"Ta dokument bo potekel čez %d meseca.",
|
||||||
"Ta dokument bo potekel čez %d mesece.",
|
"Ta dokument bo potekel čez %d mesece.",
|
||||||
|
"Ta dokument bo potekel čez %d mesecev.",
|
||||||
|
"Ta dokument bo potekel čez %d mesecev.",
|
||||||
"Ta dokument bo potekel čez %d mesecev."
|
"Ta dokument bo potekel čez %d mesecev."
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "Prosim vnesi geslo tega prilepka:",
|
"Please enter the password for this paste:": "Prosim vnesi geslo tega prilepka:",
|
||||||
@ -182,8 +207,18 @@
|
|||||||
"Use Current Timezone": "Use Current Timezone",
|
"Use Current Timezone": "Use Current Timezone",
|
||||||
"Convert To UTC": "Convert To UTC",
|
"Convert To UTC": "Convert To UTC",
|
||||||
"Close": "Close",
|
"Close": "Close",
|
||||||
"Encrypted note on PrivateBin": "Encrypted note on PrivateBin",
|
"Encrypted note on %s": "Encrypted note on %s",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
|
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
||||||
"Save paste": "Save paste"
|
"Save paste": "Save paste",
|
||||||
|
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".",
|
||||||
|
"Error parsing YOURLS response.": "Error parsing YOURLS response.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
|
||||||
|
"Yes, see it": "Yes, see it",
|
||||||
|
"Dark Mode": "Temni način",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||||
|
"Start over": "Start over"
|
||||||
}
|
}
|
||||||
|
69
i18n/sv.json
69
i18n/sv.json
@ -3,7 +3,6 @@
|
|||||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.",
|
"%s is a minimalist, open source online pastebin where the server has zero knowledge of 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>.",
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "More information on the <a href=\"https://privatebin.info/\">project page</a>.",
|
||||||
"Because ignorance is bliss": "Because ignorance is bliss",
|
"Because ignorance is bliss": "Because ignorance is bliss",
|
||||||
"en": "sv",
|
|
||||||
"Paste does not exist, has expired or has been deleted.": "Paste does not exist, has expired or has been deleted.",
|
"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 php %s or above to work. Sorry.": "%s requires php %s or above to work. Sorry.",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.",
|
||||||
@ -11,7 +10,9 @@
|
|||||||
"Please wait %d second between each post. (singular)",
|
"Please wait %d second between each post. (singular)",
|
||||||
"Please wait %d seconds between each post. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"Please wait %d seconds between each post. (3rd plural)"
|
"Please wait %d seconds between each post. (3rd plural)",
|
||||||
|
"Please wait %d seconds between each post. (4th plural)",
|
||||||
|
"Please wait %d seconds between each post. (5th plural)"
|
||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.",
|
"Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.",
|
||||||
"Invalid data.": "Invalid data.",
|
"Invalid data.": "Invalid data.",
|
||||||
@ -25,7 +26,7 @@
|
|||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.",
|
||||||
"%s requires a modern browser to work.": "%s requires a modern browser to work.",
|
"%s requires a modern browser to work.": "%s requires a modern browser to work.",
|
||||||
"New": "New",
|
"New": "New",
|
||||||
"Send": "Send",
|
"Create": "Skapa",
|
||||||
"Clone": "Clone",
|
"Clone": "Clone",
|
||||||
"Raw text": "Raw text",
|
"Raw text": "Raw text",
|
||||||
"Expires": "Expires",
|
"Expires": "Expires",
|
||||||
@ -38,43 +39,57 @@
|
|||||||
"%d second (singular)",
|
"%d second (singular)",
|
||||||
"%d seconds (1st plural)",
|
"%d seconds (1st plural)",
|
||||||
"%d seconds (2nd plural)",
|
"%d seconds (2nd plural)",
|
||||||
"%d seconds (3rd plural)"
|
"%d seconds (3rd plural)",
|
||||||
|
"%d seconds (4th plural)",
|
||||||
|
"%d seconds (5th plural)"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"%d minute (singular)",
|
"%d minute (singular)",
|
||||||
"%d minutes (1st plural)",
|
"%d minutes (1st plural)",
|
||||||
"%d minutes (2nd plural)",
|
"%d minutes (2nd plural)",
|
||||||
"%d minutes (3rd plural)"
|
"%d minutes (3rd plural)",
|
||||||
|
"%d minutes (4th plural)",
|
||||||
|
"%d minutes (5th plural)"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d hour (singular)",
|
"%d hour (singular)",
|
||||||
"%d hours (1st plural)",
|
"%d hours (1st plural)",
|
||||||
"%d hours (2nd plural)",
|
"%d hours (2nd plural)",
|
||||||
"%d hours (3rd plural)"
|
"%d hours (3rd plural)",
|
||||||
|
"%d hours (4th plural)",
|
||||||
|
"%d hours (5th plural)"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d day (singular)",
|
"%d day (singular)",
|
||||||
"%d days (1st plural)",
|
"%d days (1st plural)",
|
||||||
"%d days (2nd plural)",
|
"%d days (2nd plural)",
|
||||||
"%d days (3rd plural)"
|
"%d days (3rd plural)",
|
||||||
|
"%d days (4th plural)",
|
||||||
|
"%d days (5th plural)"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d week (singular)",
|
"%d week (singular)",
|
||||||
"%d weeks (1st plural)",
|
"%d weeks (1st plural)",
|
||||||
"%d weeks (2nd plural)",
|
"%d weeks (2nd plural)",
|
||||||
"%d weeks (3rd plural)"
|
"%d weeks (3rd plural)",
|
||||||
|
"%d weeks (4th plural)",
|
||||||
|
"%d weeks (5th plural)"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d month (singular)",
|
"%d month (singular)",
|
||||||
"%d months (1st plural)",
|
"%d months (1st plural)",
|
||||||
"%d months (2nd plural)",
|
"%d months (2nd plural)",
|
||||||
"%d months (3rd plural)"
|
"%d months (3rd plural)",
|
||||||
|
"%d months (4th plural)",
|
||||||
|
"%d months (5th plural)"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
"%d year (singular)",
|
"%d year (singular)",
|
||||||
"%d years (1st plural)",
|
"%d years (1st plural)",
|
||||||
"%d years (2nd plural)",
|
"%d years (2nd plural)",
|
||||||
"%d years (3rd plural)"
|
"%d years (3rd plural)",
|
||||||
|
"%d years (4th plural)",
|
||||||
|
"%d years (5th plural)"
|
||||||
],
|
],
|
||||||
"Never": "Never",
|
"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.",
|
"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.",
|
||||||
@ -82,31 +97,41 @@
|
|||||||
"This document will expire in %d second. (singular)",
|
"This document will expire in %d second. (singular)",
|
||||||
"This document will expire in %d seconds. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d seconds. (3rd plural)"
|
"This document will expire in %d seconds. (3rd plural)",
|
||||||
|
"This document will expire in %d seconds. (4th plural)",
|
||||||
|
"This document will expire in %d seconds. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"This document will expire in %d minute. (singular)",
|
"This document will expire in %d minute. (singular)",
|
||||||
"This document will expire in %d minutes. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d minutes. (3rd plural)"
|
"This document will expire in %d minutes. (3rd plural)",
|
||||||
|
"This document will expire in %d minutes. (4th plural)",
|
||||||
|
"This document will expire in %d minutes. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"This document will expire in %d hour. (singular)",
|
"This document will expire in %d hour. (singular)",
|
||||||
"This document will expire in %d hours. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d hours. (3rd plural)"
|
"This document will expire in %d hours. (3rd plural)",
|
||||||
|
"This document will expire in %d hours. (4th plural)",
|
||||||
|
"This document will expire in %d hours. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"This document will expire in %d day. (singular)",
|
"This document will expire in %d day. (singular)",
|
||||||
"This document will expire in %d days. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d days. (3rd plural)"
|
"This document will expire in %d days. (3rd plural)",
|
||||||
|
"This document will expire in %d days. (4th plural)",
|
||||||
|
"This document will expire in %d days. (5th plural)"
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
"This document will expire in %d month. (singular)",
|
"This document will expire in %d month. (singular)",
|
||||||
"This document will expire in %d months. (1st plural)",
|
"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. (2nd plural)",
|
||||||
"This document will expire in %d months. (3rd plural)"
|
"This document will expire in %d months. (3rd plural)",
|
||||||
|
"This document will expire in %d months. (4th plural)",
|
||||||
|
"This document will expire in %d months. (5th plural)"
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "Please enter the password for this paste:",
|
"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 decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)",
|
||||||
@ -182,8 +207,18 @@
|
|||||||
"Use Current Timezone": "Use Current Timezone",
|
"Use Current Timezone": "Use Current Timezone",
|
||||||
"Convert To UTC": "Convert To UTC",
|
"Convert To UTC": "Convert To UTC",
|
||||||
"Close": "Close",
|
"Close": "Close",
|
||||||
"Encrypted note on PrivateBin": "Encrypted note on PrivateBin",
|
"Encrypted note on %s": "Encrypted note on %s",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
|
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
||||||
"Save paste": "Save paste"
|
"Save paste": "Save paste",
|
||||||
|
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".",
|
||||||
|
"Error parsing YOURLS response.": "Error parsing YOURLS response.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
|
||||||
|
"Yes, see it": "Yes, see it",
|
||||||
|
"Dark Mode": "Mörkt Läge",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||||
|
"Start over": "Start over"
|
||||||
}
|
}
|
||||||
|
224
i18n/th.json
Normal file
224
i18n/th.json
Normal file
@ -0,0 +1,224 @@
|
|||||||
|
{
|
||||||
|
"PrivateBin": "PrivateBin",
|
||||||
|
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s เป็น pastebin ออนไลน์แบบโอเพ่นซอร์สที่มีรูปแบบการใช้งานที่เรียบง่าย เซิร์ฟเวอร์ไม่สามารถรู้ได้ว่าข้อมูลโค้ดที่มาฝากนั้นเป็นข้อมูลอะไร โดยจะถูกเข้ารหัส/ถอดรหัสด้วยกระบวนการ AES จำนวน 256 บิต%sผ่านเบราว์เซอร์%s",
|
||||||
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "ข้อมูลเพิ่มเติม ดูได้ที่<a href=\"https://privatebin.info/\">หน้าโครงการ</a>",
|
||||||
|
"Because ignorance is bliss": "ไม่รู้ไม่ชี้ดีที่สุด",
|
||||||
|
"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 วินาที",
|
||||||
|
"กรุณาเว้นระยะเวลาการส่งข้อมูลอย่างน้อย %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.": "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": "ใหม่",
|
||||||
|
"Create": "สร้าง",
|
||||||
|
"Clone": "โคลน",
|
||||||
|
"Raw text": "ข้อความล้วน",
|
||||||
|
"Expires": "หมดอายุ",
|
||||||
|
"Burn after reading": "ลบทันทีเมื่อเปิดอ่าน",
|
||||||
|
"Open discussion": "แสดงความคิดเห็นได้",
|
||||||
|
"Password (recommended)": "รหัสผ่าน (แนะนำให้ใส่)",
|
||||||
|
"Discussion": "ความคิดเห็น",
|
||||||
|
"Toggle navigation": "สลับเปิดปิดการนำทาง",
|
||||||
|
"%d seconds": [
|
||||||
|
"%d วินาที",
|
||||||
|
"%d วินาที",
|
||||||
|
"%d วินาที",
|
||||||
|
"%d วินาที",
|
||||||
|
"%d วินาที",
|
||||||
|
"%d วินาที"
|
||||||
|
],
|
||||||
|
"%d minutes": [
|
||||||
|
"%d นาที",
|
||||||
|
"%d นาที",
|
||||||
|
"%d นาที",
|
||||||
|
"%d นาที",
|
||||||
|
"%d นาที",
|
||||||
|
"%d นาที"
|
||||||
|
],
|
||||||
|
"%d hours": [
|
||||||
|
"%d ชั่วโมง",
|
||||||
|
"%d ชั่วโมง",
|
||||||
|
"%d ชั่วโมง",
|
||||||
|
"%d ชั่วโมง",
|
||||||
|
"%d ชั่วโมง",
|
||||||
|
"%d ชั่วโมง"
|
||||||
|
],
|
||||||
|
"%d days": [
|
||||||
|
"%d วัน",
|
||||||
|
"%d วัน",
|
||||||
|
"%d วัน",
|
||||||
|
"%d วัน",
|
||||||
|
"%d วัน",
|
||||||
|
"%d วัน"
|
||||||
|
],
|
||||||
|
"%d weeks": [
|
||||||
|
"%d สัปดาห์",
|
||||||
|
"%d สัปดาห์",
|
||||||
|
"%d สัปดาห์",
|
||||||
|
"%d สัปดาห์",
|
||||||
|
"%d สัปดาห์",
|
||||||
|
"%d สัปดาห์"
|
||||||
|
],
|
||||||
|
"%d months": [
|
||||||
|
"%d เดือน",
|
||||||
|
"%d เดือน",
|
||||||
|
"%d เดือน",
|
||||||
|
"%d เดือน",
|
||||||
|
"%d เดือน",
|
||||||
|
"%d เดือน"
|
||||||
|
],
|
||||||
|
"%d years": [
|
||||||
|
"%d ปี",
|
||||||
|
"%d ปี",
|
||||||
|
"%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 วินาที",
|
||||||
|
"เอกสารนี้จะหมดอายุใน %d วินาที",
|
||||||
|
"เอกสารนี้จะหมดอายุใน %d วินาที"
|
||||||
|
],
|
||||||
|
"This document will expire in %d minutes.": [
|
||||||
|
"เอกสารนี้จะหมดอายุใน %d นาที",
|
||||||
|
"เอกสารนี้จะหมดอายุใน %d นาที",
|
||||||
|
"เอกสารนี้จะหมดอายุใน %d นาที",
|
||||||
|
"เอกสารนี้จะหมดอายุใน %d นาที",
|
||||||
|
"เอกสารนี้จะหมดอายุใน %d นาที",
|
||||||
|
"เอกสารนี้จะหมดอายุใน %d นาที"
|
||||||
|
],
|
||||||
|
"This document will expire in %d hours.": [
|
||||||
|
"เอกสารนี้จะหมดอายุใน %d ชั่วโมง",
|
||||||
|
"เอกสารนี้จะหมดอายุใน %d ชั่วโมง",
|
||||||
|
"เอกสารนี้จะหมดอายุใน %d ชั่วโมง",
|
||||||
|
"เอกสารนี้จะหมดอายุใน %d ชั่วโมง",
|
||||||
|
"เอกสารนี้จะหมดอายุใน %d ชั่วโมง",
|
||||||
|
"เอกสารนี้จะหมดอายุใน %d ชั่วโมง"
|
||||||
|
],
|
||||||
|
"This document will expire in %d days.": [
|
||||||
|
"เอกสารนี้จะหมดอายุใน %d วัน",
|
||||||
|
"เอกสารนี้จะหมดอายุใน %d วัน",
|
||||||
|
"เอกสารนี้จะหมดอายุใน %d วัน",
|
||||||
|
"เอกสารนี้จะหมดอายุใน %d วัน",
|
||||||
|
"เอกสารนี้จะหมดอายุใน %d วัน",
|
||||||
|
"เอกสารนี้จะหมดอายุใน %d วัน"
|
||||||
|
],
|
||||||
|
"This document will expire in %d months.": [
|
||||||
|
"เอกสารนี้จะหมดอายุใน %d เดือน",
|
||||||
|
"เอกสารนี้จะหมดอายุใน %d เดือน",
|
||||||
|
"เอกสารนี้จะหมดอายุใน %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": "อวาตารสร้างมาจากไอพี",
|
||||||
|
"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 หายไป (คุณได้ใช้ตัวเปลี่ยนเส้นทางหรือตัวย่อ URL ที่มีการตัดส่วนของ 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": "หรือสามารถลากและวางไฟล์หรือวางรูปภาพจากคลิปบอร์ดได้",
|
||||||
|
"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.": "เบราว์เซอร์ของคุณไม่สนับสนุนการอัปโหลดไฟล์แบบเข้ารหัสได้ กรุณาใช้เบราว์เซอร์ที่ใหม่กว่า",
|
||||||
|
"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": "คิวอาร์โค้ด",
|
||||||
|
"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 นี้ให้ใครก็ได้เพื่อให้สามารถเข้าถึงบันทึกย่อได้",
|
||||||
|
"URL shortener may expose your decrypt key in URL.": "เครื่องมือสร้างลิงก์ย่ออาจเปิดเผยคีย์ถอดรหัสของคุณใน URL ได้",
|
||||||
|
"Save paste": "ดาวน์โหลดข้อมูลการฝากโค้ด",
|
||||||
|
"Your IP is not authorized to create pastes.": "IP ของคุณไม่ได้รับอนุญาตให้สร้างการฝากโค้ด",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "กำลังพยายามใช้เครื่องมือสร้างลิงก์ย่อ ที่ไม่ได้ชี้ไปที่อินสแตนซ์ของเรา",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "เกิดข้อผิดพลาดในการเรียก YOURLS อาจเป็นปัญหามาจากการกำหนดค่า เช่น \"apiurl\" หรือ \"signature\" ไม่ถูกต้องหรือขาดหายไป",
|
||||||
|
"Error parsing YOURLS response.": "เกิดข้อผิดพลาดในการแยกวิเคราะห์การตอบสนองของ YOURLS",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
|
||||||
|
"Yes, see it": "Yes, see it",
|
||||||
|
"Dark Mode": "โหมดมืด",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||||
|
"Start over": "Start over"
|
||||||
|
}
|
323
i18n/tr.json
323
i18n/tr.json
@ -1,135 +1,160 @@
|
|||||||
{
|
{
|
||||||
"PrivateBin": "PrivateBin",
|
"PrivateBin": "PrivateBin",
|
||||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.",
|
"%s is a minimalist, open source online pastebin where the server has zero knowledge of 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.",
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Daha fazla bilgi için <a href=\"https://privatebin.info/\">proje sayfası</a>'na göz atabilirsiniz.",
|
||||||
"Because ignorance is bliss": "Çünkü, cehalet mutluluktur",
|
"Because ignorance is bliss": "Çünkü, cehalet mutluluktur",
|
||||||
"en": "tr",
|
"Paste does not exist, has expired or has been deleted.": "Bu mevcut değil, süresi dolmuş veya silinmiş.",
|
||||||
"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 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 konfigürasyon bölümünün [%s] bulunmasını gerektir.",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.",
|
|
||||||
"Please wait %d seconds between each post.": [
|
"Please wait %d seconds between each post.": [
|
||||||
"Please wait %d second between each post. (singular)",
|
"Lütfen paylaşımlar arasında %d saniye bekleyiniz.",
|
||||||
"Please wait %d seconds between each post. (1st plural)",
|
"Lütfen paylaşımlar arasında %d saniye bekleyiniz.",
|
||||||
"Please wait %d seconds between each post. (2nd plural)",
|
"Lütfen paylaşımlar arasında %d saniye bekleyiniz.",
|
||||||
"Please wait %d seconds between each post. (3rd plural)"
|
"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.": "Paste is limited to %s of encrypted data.",
|
"Paste is limited to %s of encrypted data.": "Yazılar %s şifreli veriyle sınırlıdır.",
|
||||||
"Invalid data.": "Geçersiz veri.",
|
"Invalid data.": "Geçersiz veri.",
|
||||||
"You are unlucky. Try again.": "Lütfen tekrar deneyiniz.",
|
"You are unlucky. Try again.": "Lütfen tekrar deneyiniz.",
|
||||||
"Error saving comment. Sorry.": "Error saving comment. Sorry.",
|
"Error saving comment. Sorry.": "Yorum kaydedilemedi.",
|
||||||
"Error saving paste. Sorry.": "Error saving paste. Sorry.",
|
"Error saving paste. Sorry.": "Yazı kaydedilemedi. Üzgünüz.",
|
||||||
"Invalid paste ID.": "Invalid paste ID.",
|
"Invalid paste ID.": "Geçersiz yazı ID'si.",
|
||||||
"Paste is not of burn-after-reading type.": "Paste is not of burn-after-reading type.",
|
"Paste is not of burn-after-reading type.": "Yazı okunduğunda silinmeyecek şekilde ayarlanmış.",
|
||||||
"Wrong deletion token. Paste was not deleted.": "Wrong deletion token. Paste was not deleted.",
|
"Wrong deletion token. Paste was not deleted.": "Yanlış silme anahtarı. Yazı silinemedi.",
|
||||||
"Paste was properly deleted.": "Paste was properly deleted.",
|
"Paste was properly deleted.": "Yazı başarıyla silindi.",
|
||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript %s 'in çalışması için gereklidir. Rahatsızlıktan dolayı özür dileriz.",
|
||||||
"%s requires a modern browser to work.": "%s requires a modern browser to work.",
|
"%s requires a modern browser to work.": "%s çalışmak için çağdaş bir tarayıcı gerektirir.",
|
||||||
"New": "Yeni",
|
"New": "Yeni",
|
||||||
"Send": "Gönder",
|
"Create": "Oluştur",
|
||||||
"Clone": "Clone",
|
"Clone": "Kopyala",
|
||||||
"Raw text": "Raw text",
|
"Raw text": "Açık yazı",
|
||||||
"Expires": "Expires",
|
"Expires": "Süre Sonu",
|
||||||
"Burn after reading": "Burn after reading",
|
"Burn after reading": "Okuduktan sonra sil",
|
||||||
"Open discussion": "Open discussion",
|
"Open discussion": "Açık Tartışmalar",
|
||||||
"Password (recommended)": "Password (recommended)",
|
"Password (recommended)": "Şifre (önerilir)",
|
||||||
"Discussion": "Discussion",
|
"Discussion": "Tartışma",
|
||||||
"Toggle navigation": "Toggle navigation",
|
"Toggle navigation": "Gezinmeyi değiştir",
|
||||||
"%d seconds": [
|
"%d seconds": [
|
||||||
"%d second (singular)",
|
"%d saniye",
|
||||||
"%d seconds (1st plural)",
|
"%d saniye",
|
||||||
"%d seconds (2nd plural)",
|
"%d saniye",
|
||||||
"%d seconds (3rd plural)"
|
"%d saniye",
|
||||||
|
"%d saniye",
|
||||||
|
"%d saniye"
|
||||||
],
|
],
|
||||||
"%d minutes": [
|
"%d minutes": [
|
||||||
"%d minute (singular)",
|
"%d dakika",
|
||||||
"%d minutes (1st plural)",
|
"%d dakika",
|
||||||
"%d minutes (2nd plural)",
|
"%d dakika",
|
||||||
"%d minutes (3rd plural)"
|
"%d dakika",
|
||||||
|
"%d dakika",
|
||||||
|
"%d dakika"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d hour (singular)",
|
"%d saat",
|
||||||
"%d hours (1st plural)",
|
"%d saat",
|
||||||
"%d hours (2nd plural)",
|
"%d saat",
|
||||||
"%d hours (3rd plural)"
|
"%d saat",
|
||||||
|
"%d saat",
|
||||||
|
"%d saat"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d day (singular)",
|
"%d gün",
|
||||||
"%d days (1st plural)",
|
"%d gün",
|
||||||
"%d days (2nd plural)",
|
"%d gün",
|
||||||
"%d days (3rd plural)"
|
"%d gün",
|
||||||
|
"%d gün",
|
||||||
|
"%d gün"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d hafta (tekil)",
|
"%d hafta",
|
||||||
"%d haftalar (çoğul)",
|
"%d hafta",
|
||||||
"%d weeks (2nd plural)",
|
"%d hafta",
|
||||||
"%d weeks (3rd plural)"
|
"%d hafta",
|
||||||
|
"%d hafta",
|
||||||
|
"%d hafta"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d month (singular)",
|
"%d ay",
|
||||||
"%d months (1st plural)",
|
"%d ay",
|
||||||
"%d months (2nd plural)",
|
"%d ay",
|
||||||
"%d months (3rd plural)"
|
"%d ay",
|
||||||
|
"%d ay",
|
||||||
|
"%d ay"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
"%d year (singular)",
|
"%d yıl",
|
||||||
"%d years (1st plural)",
|
"%d yıl",
|
||||||
"%d years (2nd plural)",
|
"%d yıl",
|
||||||
"%d years (3rd plural)"
|
"%d yıl",
|
||||||
|
"%d yıl",
|
||||||
|
"%d yıl"
|
||||||
],
|
],
|
||||||
"Never": "Never",
|
"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.",
|
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Not: Bu bir test hizmetidir: Veriler herhangi bir zamanda silinebilir. Bu hizmeti kötüye kullanırsanız, kedicikler ölebilir.",
|
||||||
"This document will expire in %d seconds.": [
|
"This document will expire in %d seconds.": [
|
||||||
"This document will expire in %d second. (singular)",
|
"Bu belge %d saniyede silinecektir.",
|
||||||
"This document will expire in %d seconds. (1st plural)",
|
"Bu belge %d saniyede silinecektir.",
|
||||||
"This document will expire in %d seconds. (2nd plural)",
|
"Bu belge %d saniyede silinecektir.",
|
||||||
"This document will expire in %d seconds. (3rd plural)"
|
"Bu belge %d saniyede silinecektir.",
|
||||||
|
"Bu belge %d saniyede silinecektir.",
|
||||||
|
"Bu belge %d saniyede silinecektir."
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"This document will expire in %d minute. (singular)",
|
"Bu belge %d dakikada silinecektir.",
|
||||||
"This document will expire in %d minutes. (1st plural)",
|
"Bu belge %d dakikada silinecektir.",
|
||||||
"This document will expire in %d minutes. (2nd plural)",
|
"Bu belge %d dakikada silinecektir.",
|
||||||
"This document will expire in %d minutes. (3rd plural)"
|
"Bu belge %d dakikada silinecektir.",
|
||||||
|
"Bu belge %d dakikada silinecektir.",
|
||||||
|
"Bu belge %d dakikada silinecektir."
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"This document will expire in %d hour. (singular)",
|
"Bu belge %d saatte silinecektir.",
|
||||||
"This document will expire in %d hours. (1st plural)",
|
"Bu belge %d saatte silinecektir.",
|
||||||
"This document will expire in %d hours. (2nd plural)",
|
"Bu belge %d saatte silinecektir.",
|
||||||
"This document will expire in %d hours. (3rd plural)"
|
"Bu belge %d saatte silinecektir.",
|
||||||
|
"Bu belge %d saatte silinecektir.",
|
||||||
|
"Bu belge %d saatte silinecektir."
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"This document will expire in %d day. (singular)",
|
"Bu belge %d günde silinecektir.",
|
||||||
"This document will expire in %d days. (1st plural)",
|
"Bu belge %d günde silinecektir.",
|
||||||
"This document will expire in %d days. (2nd plural)",
|
"Bu belge %d günde silinecektir.",
|
||||||
"This document will expire in %d days. (3rd plural)"
|
"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.": [
|
"This document will expire in %d months.": [
|
||||||
"This document will expire in %d month. (singular)",
|
"Bu belge %d ayda silinecektir.",
|
||||||
"This document will expire in %d months. (1st plural)",
|
"Bu belge %d ayda silinecektir.",
|
||||||
"This document will expire in %d months. (2nd plural)",
|
"Bu belge %d ayda silinecektir.",
|
||||||
"This document will expire in %d months. (3rd plural)"
|
"Bu belge %d ayda silinecektir.",
|
||||||
|
"Bu belge %d ayda silinecektir.",
|
||||||
|
"Bu belge %d ayda silinecektir."
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "Please enter the password for this paste:",
|
"Please enter the password for this paste:": "Lütfen bu yazı için şifrenizi girin:",
|
||||||
"Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)",
|
"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.": "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.": "Yazı silinemedi, okunduktan sonra silinmek için ayarlanmadı.",
|
||||||
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.",
|
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "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?": "Could not decrypt comment; Wrong key?",
|
"Could not decrypt comment; Wrong key?": "Dosya şifresi çözülemedi, doğru anahtarı girdiğinizden emin misiniz?",
|
||||||
"Reply": "Reply",
|
"Reply": "Cevapla",
|
||||||
"Anonymous": "Anonymous",
|
"Anonymous": "Anonim",
|
||||||
"Avatar generated from IP address": "Avatar generated from IP address",
|
"Avatar generated from IP address": "IP adresinden oluşturulmuş avatar",
|
||||||
"Add comment": "Add comment",
|
"Add comment": "Yorum ekle",
|
||||||
"Optional nickname…": "Optional nickname…",
|
"Optional nickname…": "İsteğe bağlı takma isim…",
|
||||||
"Post comment": "Post comment",
|
"Post comment": "Yorumu gönder",
|
||||||
"Sending comment…": "Sending comment…",
|
"Sending comment…": "Yorum gönderiliyor…",
|
||||||
"Comment posted.": "Comment posted.",
|
"Comment posted.": "Yorum gönderildi.",
|
||||||
"Could not refresh display: %s": "Could not refresh display: %s",
|
"Could not refresh display: %s": "Görüntü yenilenemedi: %s",
|
||||||
"unknown status": "unknown status",
|
"unknown status": "bilinmeyen durum",
|
||||||
"server error or not responding": "server error or not responding",
|
"server error or not responding": "sunucu hatası veya yanıt vermiyor",
|
||||||
"Could not post comment: %s": "Could not post comment: %s",
|
"Could not post comment: %s": "Yorum paylaşılamadı: %s",
|
||||||
"Sending paste…": "Sending paste…",
|
"Sending paste…": "Yazı gönderiliyor…",
|
||||||
"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>",
|
"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": "Delete data",
|
"Delete data": "Veriyi sil",
|
||||||
"Could not create paste: %s": "Could not create paste: %s",
|
"Could not create paste: %s": "Yazı oluşturulamadı: %s",
|
||||||
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "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?)": "Yazı şifresi çözülemedi, çözme anahtarı URL'de bulunamadı. (Buraya bir yönlendirici veya URL kısaltıcı kullanarak gelmiş olabilirsiniz.)",
|
||||||
"B": "B",
|
"B": "B",
|
||||||
"KiB": "KiB",
|
"KiB": "KiB",
|
||||||
"MiB": "MiB",
|
"MiB": "MiB",
|
||||||
@ -140,50 +165,60 @@
|
|||||||
"ZiB": "ZiB",
|
"ZiB": "ZiB",
|
||||||
"YiB": "YiB",
|
"YiB": "YiB",
|
||||||
"Format": "Format",
|
"Format": "Format",
|
||||||
"Plain Text": "Plain Text",
|
"Plain Text": "Düz Yazı",
|
||||||
"Source Code": "Source Code",
|
"Source Code": "Kaynak Kodu",
|
||||||
"Markdown": "Markdown",
|
"Markdown": "Markdown",
|
||||||
"Download attachment": "Download attachment",
|
"Download attachment": "Eki indir",
|
||||||
"Cloned: '%s'": "Cloned: '%s'",
|
"Cloned: '%s'": "Klonlandı: '%s'",
|
||||||
"The cloned file '%s' was attached to this paste.": "The cloned file '%s' was attached to this paste.",
|
"The cloned file '%s' was attached to this paste.": "Klonlanmış dosya '%s' bu yazıya eklendi.",
|
||||||
"Attach a file": "Attach a file",
|
"Attach a file": "Dosya ekle",
|
||||||
"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": "alternatif olarak dosyayı yapıştırabilir veya sürükleyip bırakabilirsiniz",
|
||||||
"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.": "Dosya önizleme için çok büyük. Lütfen eki indirin.",
|
||||||
"Remove attachment": "Remove attachment",
|
"Remove attachment": "Eki sil",
|
||||||
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Your browser does not support uploading encrypted files. Please use a newer browser.",
|
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Tarayıcınız şifreli dosyaları yüklemeyi desteklemiyor. Lütfen daha yeni bir tarayıcı kullanın.",
|
||||||
"Invalid attachment.": "Invalid attachment.",
|
"Invalid attachment.": "Geçersiz ek.",
|
||||||
"Options": "Options",
|
"Options": "Seçenekler",
|
||||||
"Shorten URL": "Shorten URL",
|
"Shorten URL": "URL kısaltma",
|
||||||
"Editor": "Editor",
|
"Editor": "Düzenleyici",
|
||||||
"Preview": "Preview",
|
"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.",
|
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s, PATH'in \"%s\" ile bitmesini gerektirir. Lütfen index.php dosyanızdaki PATH'i güncelleyin.",
|
||||||
"Decrypt": "Decrypt",
|
"Decrypt": "Şifreyi çöz",
|
||||||
"Enter password": "Enter password",
|
"Enter password": "Şifreyi girin",
|
||||||
"Loading…": "Loading…",
|
"Loading…": "Yükleniyor…",
|
||||||
"Decrypting paste…": "Decrypting paste…",
|
"Decrypting paste…": "Yazı şifresi çözülüyor…",
|
||||||
"Preparing new paste…": "Preparing new paste…",
|
"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>.",
|
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Bu mesaj hiç kaybolmazsa, sorun giderme bilgileri için <a href=\"%s\">bu SSS'ye göz atın</a>.",
|
||||||
"+++ no paste text +++": "+++ no paste text +++",
|
"+++ no paste text +++": "+++ yazı içeriği yok +++",
|
||||||
"Could not get paste data: %s": "Could not get paste data: %s",
|
"Could not get paste data: %s": "Yazı verisi alınamıyor: %s",
|
||||||
"QR code": "QR code",
|
"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.",
|
"This website is using an insecure HTTP connection! Please use it only for testing.": "Bu web sitesi güvensiz bir HTTP bağlantısı kullanıyor! Lütfen bunu yalnızca test için kullanın.",
|
||||||
"For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.",
|
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Daha fazla bilgi için <a href=\"%s\">bu SSS girişine bakın</a>.",
|
||||||
"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 may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Tarayıcınızın WebCrypto API'sini desteklemesi için HTTPS bağlantısına ihtiyacı olabilir. <a href=\"%s\">HTTPS'ye geçmeyi deneyin</a>.",
|
||||||
"Your browser 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.",
|
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Tarayıcınız zlib sıkıştırma için kullanılan WebAssembly'i desteklemiyor. Sıkıştırılmamış belgeler oluşturabilirsiniz, ancak sıkıştırılmış olanları okuyamazsınız.",
|
||||||
"waiting on user to provide a password": "waiting on user to provide a password",
|
"waiting on user to provide a password": "kullanıcının şifre girmesi bekleniyor",
|
||||||
"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.",
|
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Şifre çözülemedi, yanlış şifre mi girdiniz? Üstteki butonla tekrar deneyin.",
|
||||||
"Retry": "Retry",
|
"Retry": "Yeniden Dene",
|
||||||
"Showing raw text…": "Showing raw text…",
|
"Showing raw text…": "Açık yazı gösteriliyor…",
|
||||||
"Notice:": "Notice:",
|
"Notice:": "Bildirim:",
|
||||||
"This link will expire after %s.": "This link will expire after %s.",
|
"This link will expire after %s.": "Bu bağlantı %s sonra geçersiz hale gelecektir.",
|
||||||
"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.",
|
"This link can only be accessed once, do not use back or refresh button in your browser.": "Bu bağlantıya yalnızca bir kez erişilebilir, tarayıcınızda geri veya yenile butonunu kullanmayın.",
|
||||||
"Link:": "Link:",
|
"Link:": "Bağlantı:",
|
||||||
"Recipient may become aware of your timezone, convert time to UTC?": "Recipient may become aware of your timezone, convert time to UTC?",
|
"Recipient may become aware of your timezone, convert time to UTC?": "Alıcı zaman diliminizi öğrenebilir, zamanı UTC'ye çevirmek ister misiniz?",
|
||||||
"Use Current Timezone": "Use Current Timezone",
|
"Use Current Timezone": "Mevcut Zaman Dilimini Kullan",
|
||||||
"Convert To UTC": "Convert To UTC",
|
"Convert To UTC": "UTC'ye Dönüştür",
|
||||||
"Close": "Close",
|
"Close": "Kapat",
|
||||||
"Encrypted note on PrivateBin": "Encrypted note on PrivateBin",
|
"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.": "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.": "Notu görmek için bu bağlantıyı ziyaret edin. URL'yi birine vermek, onların da nota erişmesini sağlar.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
"URL shortener may expose your decrypt key in URL.": "URL kısaltıcı, şifre çözme anahtarınızı URL içinde gösterebilir.",
|
||||||
"Save paste": "Save paste"
|
"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.": "URL'yi kısaltmaya çalışırken, bizim sunucumuza işaret etmeyen bir URL kullanıyorsunuz.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "YOURLS çağrısı başarısız oldu. Muhtemelen \"apiurl\" veya \"signature\" gibi yanlış veya eksik yapılandırma hatası.",
|
||||||
|
"Error parsing YOURLS response.": "YOURLS yanıtı ayrıştırılamadı.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "Bu gizli mesaj yalnızca bir kez görüntülenebilir. Şimdi görmek ister misiniz?",
|
||||||
|
"Yes, see it": "Evet, gör",
|
||||||
|
"Dark Mode": "Koyu Mod",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "WebAssembly desteği eksik olduğundan yazı sıkıştırılamadı.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Yazı açılırken hata oluştu, tarayıcınız WebAssembly'i desteklemiyor. Lütfen bu yazıyı görüntülemek için başka bir tarayıcı kullanın.",
|
||||||
|
"Start over": "Baştan başla"
|
||||||
}
|
}
|
||||||
|
95
i18n/uk.json
95
i18n/uk.json
@ -1,31 +1,32 @@
|
|||||||
{
|
{
|
||||||
"PrivateBin": "PrivateBin",
|
"PrivateBin": "PrivateBin",
|
||||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s це мінімалістичний Open Source проєкт для створення нотаток, де сервер не знає нічого про дані, що зберігаються. Дані шифруються/розшифровуються %sу переглядачі%s з використанням 256-бітного шифрувания AES.",
|
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s це мінімалістичний Open Source проєкт для створення нотаток, де сервер не знає нічого про дані, що зберігаються. Дані шифруються/розшифровуються %sу браузері%s з використанням 256-бітного шифрування AES.",
|
||||||
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Подробиці можна дізнатися на <a href=\"https://privatebin.info/\">сайті проєкту</a>.",
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Подробиці можна дізнатися на <a href=\"https://privatebin.info/\">сайті проєкту</a>.",
|
||||||
"Because ignorance is bliss": "Бо незнання - благо",
|
"Because ignorance is bliss": "Бо незнання - благо",
|
||||||
"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 php %s or above to work. Sorry.": "Для роботи %s потрібен php %s и вище. Вибачте.",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s потрібна секція [%s] в конфігураційному файлі.",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s потрібна секція [%s] в конфігураційному файлі.",
|
||||||
"Please wait %d seconds between each post.": [
|
"Please wait %d seconds between each post.": [
|
||||||
"Please wait %d second between each post. (singular)",
|
"Будь ласка, зачекайте %d секунду між створеннями.",
|
||||||
"Please wait %d seconds between each post. (1st plural)",
|
"Будь ласка, зачекайте %d секунди між створеннями.",
|
||||||
"Please wait %d seconds between each post. (2nd plural)",
|
"Будь ласка, зачекайте %d секунд між створеннями.",
|
||||||
"Please wait %d seconds between each post. (3rd plural)"
|
"Будь ласка, зачекайте %d секунд між створеннями.",
|
||||||
|
"Будь ласка, зачекайте %d секунд між створеннями.",
|
||||||
|
"Будь ласка, зачекайте %d секунд між створеннями."
|
||||||
],
|
],
|
||||||
"Paste is limited to %s of encrypted data.": "Розмір допису обмежений %s зашифрованих даних.",
|
"Paste is limited to %s of encrypted data.": "Розмір допису обмежений %s зашифрованих даних.",
|
||||||
"Invalid data.": "Неправильні дані.",
|
"Invalid data.": "Неправильні дані.",
|
||||||
"You are unlucky. Try again.": "Вам не пощастило. Спробуйте ще раз.",
|
"You are unlucky. Try again.": "Якась халепа! Спробуйте ще раз.",
|
||||||
"Error saving comment. Sorry.": "Помилка при збереженні коментаря. Вибачте.",
|
"Error saving comment. Sorry.": "Помилка при збереженні коментаря. Вибачте.",
|
||||||
"Error saving paste. Sorry.": "Помилка при збереженні допису. Вибачте.",
|
"Error saving paste. Sorry.": "Помилка при збереженні допису. Вибачте.",
|
||||||
"Invalid paste ID.": "Неправильний ID допису.",
|
"Invalid paste ID.": "Неправильний ID допису.",
|
||||||
"Paste is not of burn-after-reading type.": "Тип допису не \"Знищити після прочитання\".",
|
"Paste is not of burn-after-reading type.": "Тип допису не \"Знищити після прочитання\".",
|
||||||
"Wrong deletion token. Paste was not deleted.": "Неправильний ключ вилучення допису. Допис не вилучено.",
|
"Wrong deletion token. Paste was not deleted.": "Неправильний жетон вилучення допису. Допис не вилучено.",
|
||||||
"Paste was properly deleted.": "Допис був вилучений повністю.",
|
"Paste was properly deleted.": "Допис був вилучений повністю.",
|
||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Для роботи %s потрібен увімкнутий JavaScript. Вибачте.",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Для роботи %s потрібен увімкнутий JavaScript. Вибачте.",
|
||||||
"%s requires a modern browser to work.": "Для роботи %s потрібен більш сучасний переглядач.",
|
"%s requires a modern browser to work.": "Для роботи %s потрібен більш сучасний браузер.",
|
||||||
"New": "Новий допис",
|
"New": "Новий допис",
|
||||||
"Send": "Відправити",
|
"Create": "Створити",
|
||||||
"Clone": "Дублювати",
|
"Clone": "Дублювати",
|
||||||
"Raw text": "Початковий текст",
|
"Raw text": "Початковий текст",
|
||||||
"Expires": "Вилучити через",
|
"Expires": "Вилучити через",
|
||||||
@ -35,8 +36,10 @@
|
|||||||
"Discussion": "Обговорення",
|
"Discussion": "Обговорення",
|
||||||
"Toggle navigation": "Перемкнути навігацію",
|
"Toggle navigation": "Перемкнути навігацію",
|
||||||
"%d seconds": [
|
"%d seconds": [
|
||||||
"%d секунду",
|
"%d секунд",
|
||||||
"%d секунди",
|
"%d секунд",
|
||||||
|
"%d секунд",
|
||||||
|
"%d секунд",
|
||||||
"%d секунд",
|
"%d секунд",
|
||||||
"%d секунд"
|
"%d секунд"
|
||||||
],
|
],
|
||||||
@ -44,36 +47,48 @@
|
|||||||
"%d хвилину",
|
"%d хвилину",
|
||||||
"%d хвилини",
|
"%d хвилини",
|
||||||
"%d хвилин",
|
"%d хвилин",
|
||||||
|
"%d хвилин",
|
||||||
|
"%d хвилин",
|
||||||
"%d хвилин"
|
"%d хвилин"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
"%d годину",
|
"%d годину",
|
||||||
"%d години",
|
"%d години",
|
||||||
"%d годин",
|
"%d годин",
|
||||||
|
"%d годин",
|
||||||
|
"%d годин",
|
||||||
"%d годин"
|
"%d годин"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
"%d день",
|
"%d день",
|
||||||
"%d дні",
|
"%d дні",
|
||||||
"%d днів",
|
"%d днів",
|
||||||
|
"%d днів",
|
||||||
|
"%d днів",
|
||||||
"%d днів"
|
"%d днів"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
"%d тиждень",
|
"%d тиждень",
|
||||||
"%d тижні",
|
"%d тижні",
|
||||||
"%d тижнів",
|
"%d тижнів",
|
||||||
|
"%d тижнів",
|
||||||
|
"%d тижнів",
|
||||||
"%d тижнів"
|
"%d тижнів"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
"%d місяць",
|
"%d місяць",
|
||||||
"%d місяці",
|
"%d місяці",
|
||||||
"%d місяців",
|
"%d місяців",
|
||||||
|
"%d місяців",
|
||||||
|
"%d місяців",
|
||||||
"%d місяців"
|
"%d місяців"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
"%d рік",
|
"%d рік",
|
||||||
"%d роки",
|
"%d роки",
|
||||||
"%d років",
|
"%d років",
|
||||||
|
"%d років",
|
||||||
|
"%d років",
|
||||||
"%d років"
|
"%d років"
|
||||||
],
|
],
|
||||||
"Never": "Ніколи",
|
"Never": "Ніколи",
|
||||||
@ -82,34 +97,44 @@
|
|||||||
"Документ буде вилучений через %d секунду.",
|
"Документ буде вилучений через %d секунду.",
|
||||||
"Документ буде вилучений через %d секунди.",
|
"Документ буде вилучений через %d секунди.",
|
||||||
"Документ буде вилучений через %d секунд.",
|
"Документ буде вилучений через %d секунд.",
|
||||||
|
"Документ буде вилучений через %d секунд.",
|
||||||
|
"Документ буде вилучений через %d секунд.",
|
||||||
"Документ буде вилучений через %d секунд."
|
"Документ буде вилучений через %d секунд."
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"Документ буде вилучений через %d хвилину.",
|
"Документ буде вилучений через %d хвилину.",
|
||||||
"Документ буде вилучений через %d хвилини.",
|
"Документ буде вилучений через %d хвилини.",
|
||||||
"Документ буде вилучений через %d хвилин.",
|
"Документ буде вилучений через %d хвилин.",
|
||||||
|
"Документ буде вилучений через %d хвилин.",
|
||||||
|
"Документ буде вилучений через %d хвилин.",
|
||||||
"Документ буде вилучений через %d хвилин."
|
"Документ буде вилучений через %d хвилин."
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"Документ буде вилучений через %d годину.",
|
"Документ буде вилучений через %d годину.",
|
||||||
"Документ буде вилучений через %d години.",
|
"Документ буде вилучений через %d години.",
|
||||||
"Документ буде вилучений через %d годин.",
|
"Документ буде вилучений через %d годин.",
|
||||||
|
"Документ буде вилучений через %d годин.",
|
||||||
|
"Документ буде вилучений через %d годин.",
|
||||||
"Документ буде вилучений через %d годин."
|
"Документ буде вилучений через %d годин."
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"Документ буде вилучений через %d день.",
|
"Документ буде вилучений через %d день.",
|
||||||
"Документ буде вилучений через %d дні.",
|
"Документ буде вилучений через %d дні.",
|
||||||
"Документ буде вилучений через %d днів.",
|
"Документ буде вилучений через %d днів.",
|
||||||
|
"Документ буде вилучений через %d днів.",
|
||||||
|
"Документ буде вилучений через %d днів.",
|
||||||
"Документ буде вилучений через %d днів."
|
"Документ буде вилучений через %d днів."
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
"Документ буде вилучений через %d місяць.",
|
"Документ буде вилучений через %d місяць.",
|
||||||
"Документ буде вилучений через %d місяці.",
|
"Документ буде вилучений через %d місяці.",
|
||||||
"Документ буде вилучений через %d місяців.",
|
"Документ буде вилучений через %d місяців.",
|
||||||
|
"Документ буде вилучений через %d місяців.",
|
||||||
|
"Документ буде вилучений через %d місяців.",
|
||||||
"Документ буде вилучений через %d місяців."
|
"Документ буде вилучений через %d місяців."
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "Будь ласка, введіть пароль від допису:",
|
"Please enter the password for this paste:": "Будь ласка, введіть пароль від допису:",
|
||||||
"Could not decrypt data (Wrong key?)": "Неможливо розшифрувати дані (Неправильний ключ?)",
|
"Could not decrypt data (Wrong key?)": "Неможливо розшифрувати дані (можливо, невірний ключ?)",
|
||||||
"Could not delete the paste, it was not stored in burn after reading mode.": "Неможливо вилучити допис, він не був збережений в режимі знищити після прочитання.",
|
"Could not delete the paste, it was not stored in burn after reading mode.": "Неможливо вилучити допис, він не був збережений в режимі знищити після прочитання.",
|
||||||
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "ЛИШЕ ДЛЯ ВАШИХ ОЧЕЙ. Не закривайте це вікно, це повідомлення не може бути показано знову.",
|
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "ЛИШЕ ДЛЯ ВАШИХ ОЧЕЙ. Не закривайте це вікно, це повідомлення не може бути показано знову.",
|
||||||
"Could not decrypt comment; Wrong key?": "Неможливо розшифрувати коментар; Неправильний ключ?",
|
"Could not decrypt comment; Wrong key?": "Неможливо розшифрувати коментар; Неправильний ключ?",
|
||||||
@ -141,7 +166,7 @@
|
|||||||
"YiB": "Йбайт",
|
"YiB": "Йбайт",
|
||||||
"Format": "Формат",
|
"Format": "Формат",
|
||||||
"Plain Text": "Звичайний текст",
|
"Plain Text": "Звичайний текст",
|
||||||
"Source Code": "Джерельний код",
|
"Source Code": "Вихідний код",
|
||||||
"Markdown": "Мова розмітки",
|
"Markdown": "Мова розмітки",
|
||||||
"Download attachment": "Звантажити прикріплений файл",
|
"Download attachment": "Звантажити прикріплений файл",
|
||||||
"Cloned: '%s'": "Дубльовано: '%s'",
|
"Cloned: '%s'": "Дубльовано: '%s'",
|
||||||
@ -170,20 +195,30 @@
|
|||||||
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Для подробиць <a href=\"%s\">дивіться інформацію в FAQ</a>.",
|
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Для подробиць <a href=\"%s\">дивіться інформацію в FAQ</a>.",
|
||||||
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Ваш переглядач вимагає підключення HTTPS для підтримки WebCrypto API. Спробуйте <a href=\"%s\">перемкнутися на HTTPS</a>.",
|
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Ваш переглядач вимагає підключення 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. Ви можете створювати нестиснені документи, але не зможете читати стиснені.",
|
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Ваш переглядач не підтримує WebAssembly, що використовується для стиснення zlib. Ви можете створювати нестиснені документи, але не зможете читати стиснені.",
|
||||||
"waiting on user to provide a password": "waiting on user to provide a password",
|
"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.",
|
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Не вдалося розшифрувати дані. Може, ви ввели неправильний пароль? Спробуйте знову за допомогою верхньої кнопки.",
|
||||||
"Retry": "Retry",
|
"Retry": "Спробуйте ще раз",
|
||||||
"Showing raw text…": "Showing raw text…",
|
"Showing raw text…": "Відображається неформатований текст…",
|
||||||
"Notice:": "Notice:",
|
"Notice:": "Зверніть увагу:",
|
||||||
"This link will expire after %s.": "This link will expire after %s.",
|
"This link will expire after %s.": "Термін дії цього посилання сплине через %s.",
|
||||||
"This link can only be accessed once, do not use back or refresh button in your browser.": "This link can only be accessed once, do not use back or refresh button in your browser.",
|
"This link can only be accessed once, do not use back or refresh button in your browser.": "Дане посилання доступна тільки один раз, не натискайте кнопку назад та не обновляйте сторінку браузера.",
|
||||||
"Link:": "Link:",
|
"Link:": "Посилання:",
|
||||||
"Recipient may become aware of your timezone, convert time to UTC?": "Recipient may become aware of your timezone, convert time to UTC?",
|
"Recipient may become aware of your timezone, convert time to UTC?": "Отримувач дізнається ваш часовий пояс, перетворити час в UTC?",
|
||||||
"Use Current Timezone": "Use Current Timezone",
|
"Use Current Timezone": "Використовувати поточний часовий пояс",
|
||||||
"Convert To UTC": "Convert To UTC",
|
"Convert To UTC": "Конвертувати в UTC",
|
||||||
"Close": "Close",
|
"Close": "Закрити",
|
||||||
"Encrypted note on PrivateBin": "Encrypted note on PrivateBin",
|
"Encrypted note on %s": "Зашифрована нотатка на %s",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
|
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Відвідайте посилання, щоб переглянути нотатку. Передача посилання будь-кому дозволить їм переглянути нотатку.",
|
||||||
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
"URL shortener may expose your decrypt key in URL.": "Сервіс скорочення посилань може викрити ваш ключ дешифрування з URL.",
|
||||||
"Save paste": "Save paste"
|
"Save paste": "Зберегти вставку",
|
||||||
|
"Your IP is not authorized to create pastes.": "Вашому IP не дозволено створювати вставки.",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "Спроба скоротити URL, який не вказує на наш екземпляр.",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Помилка виклику YOURLS. Ймовірно проблема з налаштуванням, наприклад \"apiurl\" чи \"signature\".",
|
||||||
|
"Error parsing YOURLS response.": "Помилка розбору відповіді YOURLS.",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "Це таємне повідомлення можна надіслати лише один раз. Хочете переглянути його зараз?",
|
||||||
|
"Yes, see it": "Так, побачити",
|
||||||
|
"Dark Mode": "Темний режим",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "Помилка при стисканні допису, через відсутність підтримки WebAssembly сервера.",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Помилка при розпакуванні допису, бо ваш браузер не підтримує WebAssembly. Будь ласка, відкрийте в іншому браузері для перегляду цього допису.",
|
||||||
|
"Start over": "Start over"
|
||||||
}
|
}
|
||||||
|
45
i18n/zh.json
45
i18n/zh.json
@ -2,12 +2,13 @@
|
|||||||
"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 %sin the browser%s using 256 bits AES.": "%s 是一个极简、开源、对粘贴内容毫不知情的在线粘贴板,数据%s在浏览器内%s进行 AES-256 加密和解密。",
|
||||||
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "更多信息请查看<a href=\"https://privatebin.info/\">项目主页</a>。",
|
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "更多信息请查看<a href=\"https://privatebin.info/\">项目主页</a>。",
|
||||||
"Because ignorance is bliss": "因为无知是福",
|
"Because ignorance is bliss": "以不知为幸",
|
||||||
"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 php %s or above to work. Sorry.": "抱歉,%s 需要 PHP %s 及以上版本才能运行。",
|
||||||
"%s requires configuration section [%s] to be present in configuration file.": "%s 需要设置配置文件中的 [%s] 部分。",
|
"%s requires configuration section [%s] to be present in configuration file.": "%s 需要设置配置文件中的 [%s] 部分。",
|
||||||
"Please wait %d seconds between each post.": [
|
"Please wait %d seconds between each post.": [
|
||||||
|
"每 %d 秒只能粘贴一次。",
|
||||||
|
"每 %d 秒只能粘贴一次。",
|
||||||
"每 %d 秒只能粘贴一次。",
|
"每 %d 秒只能粘贴一次。",
|
||||||
"每 %d 秒只能粘贴一次。",
|
"每 %d 秒只能粘贴一次。",
|
||||||
"每 %d 秒只能粘贴一次。",
|
"每 %d 秒只能粘贴一次。",
|
||||||
@ -25,7 +26,7 @@
|
|||||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "%s 需要 JavaScript 来进行加解密。 给你带来的不便敬请谅解。",
|
"JavaScript is required for %s to work. Sorry for the inconvenience.": "%s 需要 JavaScript 来进行加解密。 给你带来的不便敬请谅解。",
|
||||||
"%s requires a modern browser to work.": "%s 需要在现代浏览器上工作。",
|
"%s requires a modern browser to work.": "%s 需要在现代浏览器上工作。",
|
||||||
"New": "新建",
|
"New": "新建",
|
||||||
"Send": "送出",
|
"Create": "创建",
|
||||||
"Clone": "复制",
|
"Clone": "复制",
|
||||||
"Raw text": "纯文本",
|
"Raw text": "纯文本",
|
||||||
"Expires": "有效期",
|
"Expires": "有效期",
|
||||||
@ -35,6 +36,8 @@
|
|||||||
"Discussion": "讨论",
|
"Discussion": "讨论",
|
||||||
"Toggle navigation": "切换导航栏",
|
"Toggle navigation": "切换导航栏",
|
||||||
"%d seconds": [
|
"%d seconds": [
|
||||||
|
"%d 秒",
|
||||||
|
"%d 秒",
|
||||||
"%d 秒",
|
"%d 秒",
|
||||||
"%d 秒",
|
"%d 秒",
|
||||||
"%d 秒",
|
"%d 秒",
|
||||||
@ -44,33 +47,45 @@
|
|||||||
"%d 分钟",
|
"%d 分钟",
|
||||||
"%d 分钟",
|
"%d 分钟",
|
||||||
"%d 秒",
|
"%d 秒",
|
||||||
|
"%d 秒",
|
||||||
|
"%d 秒",
|
||||||
"%d 秒"
|
"%d 秒"
|
||||||
],
|
],
|
||||||
"%d hours": [
|
"%d hours": [
|
||||||
|
"%d 小时",
|
||||||
|
"%d 小时",
|
||||||
"%d 小时",
|
"%d 小时",
|
||||||
"%d 小时",
|
"%d 小时",
|
||||||
"%d 小时",
|
"%d 小时",
|
||||||
"%d 小时"
|
"%d 小时"
|
||||||
],
|
],
|
||||||
"%d days": [
|
"%d days": [
|
||||||
|
"%d 天",
|
||||||
|
"%d 天",
|
||||||
"%d 天",
|
"%d 天",
|
||||||
"%d 天",
|
"%d 天",
|
||||||
"%d 天",
|
"%d 天",
|
||||||
"%d 天"
|
"%d 天"
|
||||||
],
|
],
|
||||||
"%d weeks": [
|
"%d weeks": [
|
||||||
|
"%d 周",
|
||||||
|
"%d 周",
|
||||||
"%d 周",
|
"%d 周",
|
||||||
"%d 周",
|
"%d 周",
|
||||||
"%d 周",
|
"%d 周",
|
||||||
"%d 周"
|
"%d 周"
|
||||||
],
|
],
|
||||||
"%d months": [
|
"%d months": [
|
||||||
|
"%d 个月",
|
||||||
|
"%d 个月",
|
||||||
"%d 个月",
|
"%d 个月",
|
||||||
"%d 个月",
|
"%d 个月",
|
||||||
"%d 个月",
|
"%d 个月",
|
||||||
"%d 个月"
|
"%d 个月"
|
||||||
],
|
],
|
||||||
"%d years": [
|
"%d years": [
|
||||||
|
"%d 年",
|
||||||
|
"%d 年",
|
||||||
"%d 年",
|
"%d 年",
|
||||||
"%d 年",
|
"%d 年",
|
||||||
"%d 年",
|
"%d 年",
|
||||||
@ -82,30 +97,40 @@
|
|||||||
"这份文档将在一秒后过期。",
|
"这份文档将在一秒后过期。",
|
||||||
"这份文档将在 %d 秒后过期。",
|
"这份文档将在 %d 秒后过期。",
|
||||||
"这份文档将在 %d 秒后过期。",
|
"这份文档将在 %d 秒后过期。",
|
||||||
|
"这份文档将在 %d 秒后过期。",
|
||||||
|
"这份文档将在 %d 秒后过期。",
|
||||||
"这份文档将在 %d 秒后过期。"
|
"这份文档将在 %d 秒后过期。"
|
||||||
],
|
],
|
||||||
"This document will expire in %d minutes.": [
|
"This document will expire in %d minutes.": [
|
||||||
"这份文档将在一分钟后过期。",
|
"这份文档将在一分钟后过期。",
|
||||||
"这份文档将在 %d 分钟后过期。",
|
"这份文档将在 %d 分钟后过期。",
|
||||||
"这份文档将在 %d 分钟后过期。",
|
"这份文档将在 %d 分钟后过期。",
|
||||||
|
"这份文档将在 %d 分钟后过期。",
|
||||||
|
"这份文档将在 %d 分钟后过期。",
|
||||||
"这份文档将在 %d 分钟后过期。"
|
"这份文档将在 %d 分钟后过期。"
|
||||||
],
|
],
|
||||||
"This document will expire in %d hours.": [
|
"This document will expire in %d hours.": [
|
||||||
"这份文档将在一小时后过期。",
|
"这份文档将在一小时后过期。",
|
||||||
"这份文档将在 %d 小时后过期。",
|
"这份文档将在 %d 小时后过期。",
|
||||||
"这份文档将在 %d 小时后过期。",
|
"这份文档将在 %d 小时后过期。",
|
||||||
|
"这份文档将在 %d 小时后过期。",
|
||||||
|
"这份文档将在 %d 小时后过期。",
|
||||||
"这份文档将在 %d 小时后过期。"
|
"这份文档将在 %d 小时后过期。"
|
||||||
],
|
],
|
||||||
"This document will expire in %d days.": [
|
"This document will expire in %d days.": [
|
||||||
"这份文档将在一天后过期。",
|
"这份文档将在一天后过期。",
|
||||||
"这份文档将在 %d 天后过期。",
|
"这份文档将在 %d 天后过期。",
|
||||||
"这份文档将在 %d 天后过期。",
|
"这份文档将在 %d 天后过期。",
|
||||||
|
"这份文档将在 %d 天后过期。",
|
||||||
|
"这份文档将在 %d 天后过期。",
|
||||||
"这份文档将在 %d 天后过期。"
|
"这份文档将在 %d 天后过期。"
|
||||||
],
|
],
|
||||||
"This document will expire in %d months.": [
|
"This document will expire in %d months.": [
|
||||||
"这份文档将在一个月后过期。",
|
"这份文档将在一个月后过期。",
|
||||||
"这份文档将在 %d 个月后过期。",
|
"这份文档将在 %d 个月后过期。",
|
||||||
"这份文档将在 %d 个月后过期。",
|
"这份文档将在 %d 个月后过期。",
|
||||||
|
"这份文档将在 %d 个月后过期。",
|
||||||
|
"这份文档将在 %d 个月后过期。",
|
||||||
"这份文档将在 %d 个月后过期。"
|
"这份文档将在 %d 个月后过期。"
|
||||||
],
|
],
|
||||||
"Please enter the password for this paste:": "请输入这份粘贴内容的密码:",
|
"Please enter the password for this paste:": "请输入这份粘贴内容的密码:",
|
||||||
@ -182,8 +207,18 @@
|
|||||||
"Use Current Timezone": "使用当前时区",
|
"Use Current Timezone": "使用当前时区",
|
||||||
"Convert To UTC": "转换为 UTC",
|
"Convert To UTC": "转换为 UTC",
|
||||||
"Close": "关闭",
|
"Close": "关闭",
|
||||||
"Encrypted note on PrivateBin": "PrivateBin 上的加密笔记",
|
"Encrypted note on %s": "%s 上的加密笔记",
|
||||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "访问此链接来查看该笔记。将此 URL 发送给任何人即可允许其访问该笔记。",
|
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "访问此链接来查看该笔记。将此 URL 发送给任何人即可允许其访问该笔记。",
|
||||||
"URL shortener may expose your decrypt key in URL.": "短链接服务可能会暴露您在 URL 中的解密密钥。",
|
"URL shortener may expose your decrypt key in URL.": "短链接服务可能会暴露您在 URL 中的解密密钥。",
|
||||||
"Save paste": "保存内容"
|
"Save paste": "保存内容",
|
||||||
|
"Your IP is not authorized to create pastes.": "您的 IP 无权创建粘贴。",
|
||||||
|
"Trying to shorten a URL that isn't pointing at our instance.": "尝试缩短一个不指向我们实例的URL。",
|
||||||
|
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "调用 YOURLS 时出错。可能是配置问题,例如“apiurl”或“signature”错误或缺失。",
|
||||||
|
"Error parsing YOURLS response.": "解析 YOURLS 响应时出错。",
|
||||||
|
"This secret message can only be displayed once. Would you like to see it now?": "读取粘贴后只能在加载时显示一次。您想现在打开吗?",
|
||||||
|
"Yes, see it": "是的,加载它",
|
||||||
|
"Dark Mode": "暗黑模式",
|
||||||
|
"Error compressing paste, due to missing WebAssembly support.": "由于缺少 WebAssembly 支持,在压缩粘贴时出错。",
|
||||||
|
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "解压粘贴时出错,您的浏览器不支持 WebAssembly。请使用其他浏览器查看此粘贴。",
|
||||||
|
"Start over": "重新开始"
|
||||||
}
|
}
|
||||||
|
1
img/bootstrap-icons.svg
Normal file
1
img/bootstrap-icons.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 9.1 KiB |
@ -1,4 +1,4 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
/**
|
/**
|
||||||
* PrivateBin
|
* PrivateBin
|
||||||
*
|
*
|
||||||
@ -7,7 +7,6 @@
|
|||||||
* @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.3.5
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// 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
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
instrumentation:
|
instrumentation:
|
||||||
excludes:
|
excludes:
|
||||||
- jquery-3.1.1.js
|
- jquery-3.7.1.js
|
||||||
baseline-file: ../tst/log/js-coverage-baseline.json
|
baseline-file: ../tst/log/js-coverage-baseline.json
|
||||||
reporting:
|
reporting:
|
||||||
dir: ../tst/log/js-coverage-report
|
dir: ../tst/log/js-coverage-report
|
||||||
|
@ -1,17 +1,16 @@
|
|||||||
'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)
|
||||||
BASE_MAP.fill(255)
|
for (var j = 0; j < BASE_MAP.length; j++) {
|
||||||
|
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)
|
||||||
@ -23,6 +22,13 @@ 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
|
||||||
@ -62,10 +68,8 @@ 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 '' }
|
if (source.length === 0) { return new Uint8Array() }
|
||||||
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
|
||||||
@ -92,14 +96,12 @@ 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 = []
|
var vch = new Uint8Array(zeroes + (size - it4))
|
||||||
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
7
js/bootstrap-3.3.7.js
vendored
File diff suppressed because one or more lines are too long
6
js/bootstrap-3.4.1.js
vendored
Normal file
6
js/bootstrap-3.4.1.js
vendored
Normal file
File diff suppressed because one or more lines are too long
6
js/bootstrap-5.3.3.js
vendored
Normal file
6
js/bootstrap-5.3.3.js
vendored
Normal file
File diff suppressed because one or more lines are too long
38
js/common.js
38
js/common.js
@ -10,17 +10,17 @@ global.fs = require('fs');
|
|||||||
global.WebCrypto = require('@peculiar/webcrypto').Crypto;
|
global.WebCrypto = require('@peculiar/webcrypto').Crypto;
|
||||||
|
|
||||||
// application libraries to test
|
// application libraries to test
|
||||||
global.$ = global.jQuery = require('./jquery-3.4.1');
|
global.$ = global.jQuery = require('./jquery-3.7.1');
|
||||||
global.RawDeflate = require('./rawinflate-0.3').RawDeflate;
|
global.RawDeflate = require('./rawinflate-0.3').RawDeflate;
|
||||||
global.zlib = require('./zlib-1.2.11').zlib;
|
global.zlib = require('./zlib-1.3.1').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-1.9.1');
|
global.showdown = require('./showdown-2.1.0');
|
||||||
global.DOMPurify = require('./purify-2.2.7');
|
global.DOMPurify = require('./purify-3.1.7');
|
||||||
global.baseX = require('./base-x-3.0.7').baseX;
|
global.baseX = require('./base-x-4.0.0').baseX;
|
||||||
global.Legacy = require('./legacy').Legacy;
|
global.Legacy = require('./legacy').Legacy;
|
||||||
require('./bootstrap-3.3.7');
|
require('./bootstrap-3.4.1');
|
||||||
require('./privatebin');
|
require('./privatebin');
|
||||||
|
|
||||||
// internal variables
|
// internal variables
|
||||||
@ -37,7 +37,7 @@ var a2zString = ['a','b','c','d','e','f','g','h','i','j','k','l','m',
|
|||||||
})
|
})
|
||||||
),
|
),
|
||||||
schemas = ['ftp','http','https'],
|
schemas = ['ftp','http','https'],
|
||||||
supportedLanguages = ['de', 'es', 'fr', 'it', 'no', 'pl', 'pt', 'oc', 'ru', 'sl', 'zh'],
|
supportedLanguages = ['ar', 'bg', 'ca', 'co', 'cs', 'de', 'el', 'es', 'et', 'fi', 'fr', 'he', 'hu', 'id', 'it', 'ja', 'jbo', 'lt', 'no', 'nl', 'pl', 'pt', 'oc', 'ru', 'sk', 'sl', 'th', 'tr', 'uk', 'zh'],
|
||||||
mimeTypes = ['image/png', 'application/octet-stream'],
|
mimeTypes = ['image/png', 'application/octet-stream'],
|
||||||
formats = ['plaintext', 'markdown', 'syntaxhighlighting'],
|
formats = ['plaintext', 'markdown', 'syntaxhighlighting'],
|
||||||
mimeFile = fs.createReadStream('/etc/mime.types'),
|
mimeFile = fs.createReadStream('/etc/mime.types'),
|
||||||
@ -113,8 +113,8 @@ exports.jscBase64String = function() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// provides a random URL schema supported by the whatwg-url library
|
// provides a random URL schema supported by the whatwg-url library
|
||||||
exports.jscSchemas = function() {
|
exports.jscSchemas = function(withFtp = true) {
|
||||||
return jsc.elements(schemas);
|
return jsc.elements(withFtp ? schemas : schemas.slice(1));
|
||||||
};
|
};
|
||||||
|
|
||||||
// provides a random supported language string
|
// provides a random supported language string
|
||||||
@ -132,3 +132,23 @@ exports.jscFormats = function() {
|
|||||||
return jsc.elements(formats);
|
return jsc.elements(formats);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// provides random URLs
|
||||||
|
exports.jscUrl = function(withFragment = true, withQuery = true) {
|
||||||
|
let url = {
|
||||||
|
schema: exports.jscSchemas(),
|
||||||
|
address: jsc.nearray(exports.jscA2zString()),
|
||||||
|
};
|
||||||
|
if (withFragment) {
|
||||||
|
url.fragment = jsc.string;
|
||||||
|
}
|
||||||
|
if(withQuery) {
|
||||||
|
url.query = jsc.array(exports.jscQueryString());
|
||||||
|
}
|
||||||
|
return jsc.record(url);
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.urlToString = function (url) {
|
||||||
|
return url.schema + '://' + url.address.join('') + '/' + (url.query ? '?' +
|
||||||
|
encodeURI(url.query.join('').replace(/^&+|&+$/gm,'')) : '') +
|
||||||
|
(url.fragment ? '#' + encodeURI(url.fragment) : '');
|
||||||
|
};
|
||||||
|
82
js/dark-mode-switch.js
Normal file
82
js/dark-mode-switch.js
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
/*!
|
||||||
|
* Color mode toggler for Bootstrap's docs (https://getbootstrap.com/)
|
||||||
|
* Copyright 2011-2024 The Bootstrap Authors
|
||||||
|
* Licensed under the Creative Commons Attribution 3.0 Unported License.
|
||||||
|
* Modified to work with a simpler checkbox toggle & support prettify CSS themes
|
||||||
|
*/
|
||||||
|
|
||||||
|
(() => {
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
const getStoredTheme = () => localStorage.getItem('theme')
|
||||||
|
const setStoredTheme = theme => localStorage.setItem('theme', theme)
|
||||||
|
const getPreferredTheme = () => window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
|
||||||
|
|
||||||
|
const getStoredPreferredTheme = () => {
|
||||||
|
const storedTheme = getStoredTheme()
|
||||||
|
if (storedTheme) {
|
||||||
|
return storedTheme
|
||||||
|
}
|
||||||
|
return getPreferredTheme()
|
||||||
|
}
|
||||||
|
|
||||||
|
const delStoredPrettifyTheme = () => localStorage.removeItem('themePrettify')
|
||||||
|
const getStoredPrettifyTheme = () => localStorage.getItem('themePrettify')
|
||||||
|
const setStoredPrettifyTheme = theme => localStorage.setItem('themePrettify', theme)
|
||||||
|
|
||||||
|
const getPrettifyThemeLink = () => {
|
||||||
|
for (const sheet of document.getElementsByTagName('link')) {
|
||||||
|
if (sheet.rel === 'stylesheet' && sheet.href.includes('css/prettify/') && !sheet.href.includes('css/prettify/prettify.css')) {
|
||||||
|
return sheet
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
const setTheme = theme => {
|
||||||
|
const preferredTheme = theme === 'auto' ? getPreferredTheme() : theme
|
||||||
|
document.documentElement.setAttribute('data-bs-theme', preferredTheme)
|
||||||
|
const sheetPrettify = getPrettifyThemeLink()
|
||||||
|
if (sheetPrettify) {
|
||||||
|
sheetPrettify.remove()
|
||||||
|
}
|
||||||
|
const link = document.createElement('link')
|
||||||
|
link.rel = 'stylesheet'
|
||||||
|
if (preferredTheme === 'dark') {
|
||||||
|
link.href = 'css/prettify/sons-of-obsidian.css'
|
||||||
|
document.head.appendChild(link)
|
||||||
|
} else {
|
||||||
|
const themePrettify = getStoredPrettifyTheme()
|
||||||
|
if (themePrettify) {
|
||||||
|
link.href = themePrettify
|
||||||
|
document.head.appendChild(link)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
|
||||||
|
const storedTheme = getStoredTheme()
|
||||||
|
if (storedTheme !== 'light' && storedTheme !== 'dark') {
|
||||||
|
setTheme(getStoredPreferredTheme())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
window.addEventListener('DOMContentLoaded', () => {
|
||||||
|
const sheetPrettify = getPrettifyThemeLink()
|
||||||
|
if (sheetPrettify) {
|
||||||
|
setStoredPrettifyTheme(sheetPrettify.href)
|
||||||
|
} else {
|
||||||
|
delStoredPrettifyTheme()
|
||||||
|
}
|
||||||
|
const toggle = document.querySelector('#bd-theme')
|
||||||
|
const theme = getStoredPreferredTheme()
|
||||||
|
setTheme(theme)
|
||||||
|
toggle.checked = (theme === 'dark')
|
||||||
|
toggle.addEventListener('change', (event) => {
|
||||||
|
const theme = event.currentTarget.checked ? 'dark' : 'light'
|
||||||
|
setStoredTheme(theme)
|
||||||
|
setTheme(theme)
|
||||||
|
event.currentTarget.focus()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})()
|
2
js/jquery-3.4.1.js
vendored
2
js/jquery-3.4.1.js
vendored
File diff suppressed because one or more lines are too long
2
js/jquery-3.7.1.js
vendored
Normal file
2
js/jquery-3.7.1.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -6,7 +6,6 @@
|
|||||||
* @see {@link https://github.com/PrivateBin/PrivateBin}
|
* @see {@link https://github.com/PrivateBin/PrivateBin}
|
||||||
* @copyright 2012 Sébastien SAUVAGE ({@link http://sebsauvage.net})
|
* @copyright 2012 Sébastien SAUVAGE ({@link http://sebsauvage.net})
|
||||||
* @license {@link https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License}
|
* @license {@link https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License}
|
||||||
* @version 1.3.1
|
|
||||||
* @name Legacy
|
* @name Legacy
|
||||||
* @namespace
|
* @namespace
|
||||||
*/
|
*/
|
||||||
@ -178,7 +177,7 @@
|
|||||||
|
|
||||||
// async & ES6 support
|
// async & ES6 support
|
||||||
try {
|
try {
|
||||||
eval('async () => {}');
|
async () => {};
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (e instanceof SyntaxError) {
|
if (e instanceof SyntaxError) {
|
||||||
return true;
|
return true;
|
||||||
|
1785
js/package-lock.json
generated
Normal file
1785
js/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "privatebin",
|
"name": "privatebin",
|
||||||
"version": "1.3.5",
|
"version": "1.7.5",
|
||||||
"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": {
|
||||||
@ -15,7 +15,8 @@
|
|||||||
"@peculiar/webcrypto": "^1.1.1"
|
"@peculiar/webcrypto": "^1.1.1"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "mocha"
|
"test": "mocha",
|
||||||
|
"ci-test": "mocha --reporter xunit --reporter-option output=mocha-results.xml"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
437
js/privatebin.js
437
js/privatebin.js
@ -6,7 +6,6 @@
|
|||||||
* @see {@link https://github.com/PrivateBin/PrivateBin}
|
* @see {@link https://github.com/PrivateBin/PrivateBin}
|
||||||
* @copyright 2012 Sébastien SAUVAGE ({@link http://sebsauvage.net})
|
* @copyright 2012 Sébastien SAUVAGE ({@link http://sebsauvage.net})
|
||||||
* @license {@link https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License}
|
* @license {@link https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License}
|
||||||
* @version 1.3.5
|
|
||||||
* @name PrivateBin
|
* @name PrivateBin
|
||||||
* @namespace
|
* @namespace
|
||||||
*/
|
*/
|
||||||
@ -52,10 +51,42 @@ 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
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* URL fragment prefix requiring load confirmation
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
const loadConfirmPrefix = '#-';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CryptoData class
|
* CryptoData class
|
||||||
*
|
*
|
||||||
* bundles helper fuctions used in both paste and comment formats
|
* bundles helper functions used in both paste and comment formats
|
||||||
*
|
*
|
||||||
* @name CryptoData
|
* @name CryptoData
|
||||||
* @class
|
* @class
|
||||||
@ -70,7 +101,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
/**
|
/**
|
||||||
* gets the cipher data (cipher text + adata)
|
* gets the cipher data (cipher text + adata)
|
||||||
*
|
*
|
||||||
* @name Paste.getCipherData
|
* @name CryptoData.getCipherData
|
||||||
* @function
|
* @function
|
||||||
* @return {Array}|{string}
|
* @return {Array}|{string}
|
||||||
*/
|
*/
|
||||||
@ -83,7 +114,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
/**
|
/**
|
||||||
* Paste class
|
* Paste class
|
||||||
*
|
*
|
||||||
* bundles helper fuctions around the paste formats
|
* bundles helper functions around the paste formats
|
||||||
*
|
*
|
||||||
* @name Paste
|
* @name Paste
|
||||||
* @class
|
* @class
|
||||||
@ -146,7 +177,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
/**
|
/**
|
||||||
* Comment class
|
* Comment class
|
||||||
*
|
*
|
||||||
* bundles helper fuctions around the comment formats
|
* bundles helper functions around the comment formats
|
||||||
*
|
*
|
||||||
* @name Comment
|
* @name Comment
|
||||||
* @class
|
* @class
|
||||||
@ -158,19 +189,19 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
/**
|
/**
|
||||||
* gets the UNIX timestamp of the comment creation
|
* gets the UNIX timestamp of the comment creation
|
||||||
*
|
*
|
||||||
* @name Paste.getCreated
|
* @name Comment.getCreated
|
||||||
* @function
|
* @function
|
||||||
* @return {int}
|
* @return {int}
|
||||||
*/
|
*/
|
||||||
this.getCreated = function()
|
this.getCreated = function()
|
||||||
{
|
{
|
||||||
return this.meta[this.v === 1 ? 'postdate' : 'created'];
|
return this.meta[this.v === 1 ? 'postdate' : 'created'] || 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gets the icon of the comment submitter
|
* gets the icon of the comment submitter
|
||||||
*
|
*
|
||||||
* @name Paste.getIcon
|
* @name Comment.getIcon
|
||||||
* @function
|
* @function
|
||||||
* @return {string}
|
* @return {string}
|
||||||
*/
|
*/
|
||||||
@ -203,7 +234,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
'<': '<',
|
'<': '<',
|
||||||
'>': '>',
|
'>': '>',
|
||||||
'"': '"',
|
'"': '"',
|
||||||
"'": ''',
|
'\'': ''',
|
||||||
'/': '/',
|
'/': '/',
|
||||||
'`': '`',
|
'`': '`',
|
||||||
'=': '='
|
'=': '='
|
||||||
@ -409,7 +440,8 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
element.html().replace(
|
element.html().replace(
|
||||||
/(((https?|ftp):\/\/[\w?!=&.\/-;#@~%+*-]+(?![\w\s?!&.\/;#~%"=-]>))|((magnet):[\w?=&.\/-;#@~%+*-]+))/ig,
|
/(((https?|ftp):\/\/[\w?!=&.\/-;#@~%+*-]+(?![\w\s?!&.\/;#~%"=-]>))|((magnet):[\w?=&.\/-;#@~%+*-]+))/ig,
|
||||||
'<a href="$1" rel="nofollow noopener noreferrer">$1</a>'
|
'<a href="$1" rel="nofollow noopener noreferrer">$1</a>'
|
||||||
)
|
),
|
||||||
|
purifyHtmlConfig
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@ -601,7 +633,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
* @prop {string[]}
|
* @prop {string[]}
|
||||||
* @readonly
|
* @readonly
|
||||||
*/
|
*/
|
||||||
const supportedLanguages = ['bg', 'ca', 'cs', 'de', 'es', 'et', 'fr', 'he', 'hu', 'id', 'it', 'lt', 'no', 'nl', 'pl', 'pt', 'oc', 'ru', 'sl', 'uk', 'zh'];
|
const supportedLanguages = ['ar', 'bg', 'ca', 'co', 'cs', 'de', 'el', 'es', 'et', 'fi', 'fr', 'he', 'hu', 'id', 'it', 'ja', 'jbo', 'lt', 'no', 'nl', 'pl', 'pt', 'oc', 'ro', 'ru', 'sk', 'sl', 'th', 'tr', 'uk', 'zh'];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* built in language
|
* built in language
|
||||||
@ -764,10 +796,22 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
return output;
|
return output;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get currently loaded language
|
||||||
|
*
|
||||||
|
* @name I18n.getLanguage
|
||||||
|
* @function
|
||||||
|
* @return {string}
|
||||||
|
*/
|
||||||
|
me.getLanguage = function()
|
||||||
|
{
|
||||||
|
return language;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* per language functions to use to determine the plural form
|
* per language functions to use to determine the plural form
|
||||||
*
|
*
|
||||||
* @see {@link https://localization-guide.readthedocs.org/en/latest/l10n/pluralforms.html}
|
* @see {@link https://docs.translatehouse.org/projects/localization-guide/en/latest/l10n/pluralforms.html}
|
||||||
* @name I18n.getPluralForm
|
* @name I18n.getPluralForm
|
||||||
* @function
|
* @function
|
||||||
* @param {int} n
|
* @param {int} n
|
||||||
@ -776,26 +820,36 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
me.getPluralForm = function(n) {
|
me.getPluralForm = function(n) {
|
||||||
switch (language)
|
switch (language)
|
||||||
{
|
{
|
||||||
|
case 'ar':
|
||||||
|
return n === 0 ? 0 : (n === 1 ? 1 : (n === 2 ? 2 : (n % 100 >= 3 && n % 100 <= 10 ? 3 : (n % 100 >= 11 ? 4 : 5))));
|
||||||
case 'cs':
|
case 'cs':
|
||||||
return n === 1 ? 0 : (n >= 2 && n <=4 ? 1 : 2);
|
case 'sk':
|
||||||
|
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':
|
case 'he':
|
||||||
return n === 1 ? 0 : (n === 2 ? 1 : ((n < 0 || n > 10) && (n % 10 === 0) ? 2 : 3));
|
return n === 1 ? 0 : (n === 2 ? 1 : ((n < 0 || n > 10) && (n % 10 === 0) ? 2 : 3));
|
||||||
case 'id':
|
case 'id':
|
||||||
|
case 'ja':
|
||||||
|
case 'jbo':
|
||||||
|
case 'th':
|
||||||
return 0;
|
return 0;
|
||||||
case 'lt':
|
case 'lt':
|
||||||
return n % 10 === 1 && n % 100 !== 11 ? 0 : ((n % 10 >= 2 && n % 100 < 10 || n % 100 >= 20) ? 1 : 2);
|
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 'ro':
|
||||||
|
return n === 1 ? 0 : ((n === 0 || (n % 100 > 0 && 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, en, es, et, hu, it, nl, no, pt
|
// bg, ca, de, el, en, es, et, fi, hu, it, nl, no, pt
|
||||||
default:
|
default:
|
||||||
return n !== 1 ? 1 : 0;
|
return n !== 1 ? 1 : 0;
|
||||||
}
|
}
|
||||||
@ -813,7 +867,10 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
|
|
||||||
// auto-select language based on browser settings
|
// auto-select language based on browser settings
|
||||||
if (newLanguage.length === 0) {
|
if (newLanguage.length === 0) {
|
||||||
newLanguage = (navigator.language || navigator.userLanguage || 'en').substring(0, 2);
|
newLanguage = (navigator.language || navigator.userLanguage || 'en');
|
||||||
|
if (newLanguage.indexOf('-') > 0) {
|
||||||
|
newLanguage = newLanguage.split('-')[0];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// if language is already used skip update
|
// if language is already used skip update
|
||||||
@ -1010,7 +1067,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
if (mode === 'zlib' || mode === 'none') {
|
if (mode === 'zlib' || mode === 'none') {
|
||||||
if (mode === 'zlib') {
|
if (mode === 'zlib') {
|
||||||
if (typeof zlib === 'undefined') {
|
if (typeof zlib === 'undefined') {
|
||||||
throw 'Error decompressing paste, due to missing WebAssembly support.'
|
throw 'Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.'
|
||||||
}
|
}
|
||||||
data = zlib.inflate(
|
data = zlib.inflate(
|
||||||
new Uint8Array(data)
|
new Uint8Array(data)
|
||||||
@ -1247,7 +1304,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
spec[1] = atob(spec[1]);
|
spec[1] = atob(spec[1]);
|
||||||
if (spec[7] === 'zlib') {
|
if (spec[7] === 'zlib') {
|
||||||
if (typeof zlib === 'undefined') {
|
if (typeof zlib === 'undefined') {
|
||||||
throw 'Error decompressing paste, due to missing WebAssembly support.'
|
throw 'Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
@ -1463,10 +1520,11 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
me.getPasteKey = function()
|
me.getPasteKey = function()
|
||||||
{
|
{
|
||||||
if (symmetricKey === null) {
|
if (symmetricKey === null) {
|
||||||
let newKey = window.location.hash.substring(1);
|
let startPos = 1;
|
||||||
if (newKey === '') {
|
if(window.location.hash.startsWith(loadConfirmPrefix)) {
|
||||||
throw 'no encryption key given';
|
startPos = loadConfirmPrefix.length;
|
||||||
}
|
}
|
||||||
|
let newKey = window.location.hash.substring(startPos);
|
||||||
|
|
||||||
// Some web 2.0 services and redirectors add data AFTER the anchor
|
// Some web 2.0 services and redirectors add data AFTER the anchor
|
||||||
// (such as &utm_source=...). We will strip any additional data.
|
// (such as &utm_source=...). We will strip any additional data.
|
||||||
@ -1475,6 +1533,9 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
{
|
{
|
||||||
newKey = newKey.substring(0, ampersandPos);
|
newKey = newKey.substring(0, ampersandPos);
|
||||||
}
|
}
|
||||||
|
if (newKey === '') {
|
||||||
|
throw 'no encryption key given';
|
||||||
|
}
|
||||||
|
|
||||||
// version 2 uses base58, version 1 uses base64 without decoding
|
// version 2 uses base58, version 1 uses base64 without decoding
|
||||||
try {
|
try {
|
||||||
@ -1986,29 +2047,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
xhrFields: {
|
xhrFields: {
|
||||||
withCredentials: false
|
withCredentials: false
|
||||||
},
|
},
|
||||||
success: function(response) {
|
success: PasteStatus.extractUrl
|
||||||
let responseString = response;
|
|
||||||
if (typeof responseString === 'object') {
|
|
||||||
responseString = JSON.stringify(responseString);
|
|
||||||
}
|
|
||||||
if (typeof responseString === 'string' && responseString.length > 0) {
|
|
||||||
const shortUrlMatcher = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/g;
|
|
||||||
const shortUrl = (responseString.match(shortUrlMatcher) || []).sort(function(a, b) {
|
|
||||||
return a.length - b.length;
|
|
||||||
})[0];
|
|
||||||
if (typeof shortUrl === 'string' && shortUrl.length > 0) {
|
|
||||||
// we disable the button to avoid calling shortener again
|
|
||||||
$shortenButton.addClass('buttondisabled');
|
|
||||||
// update link
|
|
||||||
$pasteUrl.text(shortUrl);
|
|
||||||
$pasteUrl.prop('href', shortUrl);
|
|
||||||
// we pre-select the link so that the user only has to [Ctrl]+[c] the link
|
|
||||||
Helper.selectText($pasteUrl[0]);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Alert.showError('Cannot parse response from URL shortener.');
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
.fail(function(data, textStatus, errorThrown) {
|
.fail(function(data, textStatus, errorThrown) {
|
||||||
console.error(textStatus, errorThrown);
|
console.error(textStatus, errorThrown);
|
||||||
@ -2074,6 +2113,50 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
Helper.selectText($pasteUrl[0]);
|
Helper.selectText($pasteUrl[0]);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* extracts URLs from given string
|
||||||
|
*
|
||||||
|
* if at least one is found, it disables the shortener button and
|
||||||
|
* replaces the paste URL
|
||||||
|
*
|
||||||
|
* @name PasteStatus.extractUrl
|
||||||
|
* @function
|
||||||
|
* @param {string} response
|
||||||
|
*/
|
||||||
|
me.extractUrl = function(response)
|
||||||
|
{
|
||||||
|
if (typeof response === 'object') {
|
||||||
|
response = JSON.stringify(response);
|
||||||
|
}
|
||||||
|
if (typeof response === 'string' && response.length > 0) {
|
||||||
|
const shortUrlMatcher = /https?:\/\/[^\s"<]+/g; // JSON API will have URL in quotes, XML in tags
|
||||||
|
const shortUrl = (response.match(shortUrlMatcher) || []).filter(function(urlRegExMatch) {
|
||||||
|
if (typeof URL.canParse === 'function') {
|
||||||
|
return URL.canParse(urlRegExMatch);
|
||||||
|
}
|
||||||
|
// polyfill for older browsers (< 120) & node (< 19.9 & < 18.17)
|
||||||
|
try {
|
||||||
|
return !!new URL(urlRegExMatch);
|
||||||
|
} catch (error) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}).sort(function(a, b) {
|
||||||
|
return a.length - b.length; // shortest first
|
||||||
|
})[0];
|
||||||
|
if (typeof shortUrl === 'string' && shortUrl.length > 0) {
|
||||||
|
// we disable the button to avoid calling shortener again
|
||||||
|
$shortenButton.addClass('buttondisabled');
|
||||||
|
// update link
|
||||||
|
$pasteUrl.text(shortUrl);
|
||||||
|
$pasteUrl.prop('href', shortUrl);
|
||||||
|
// we pre-select the link so that the user only has to [Ctrl]+[c] the link
|
||||||
|
Helper.selectText($pasteUrl[0]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Alert.showError('Cannot parse response from URL shortener.');
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* shows the remaining time
|
* shows the remaining time
|
||||||
*
|
*
|
||||||
@ -2179,6 +2262,34 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
PasteDecrypter.run();
|
PasteDecrypter.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Request users confirmation to load possibly burn after reading paste
|
||||||
|
*
|
||||||
|
* @name Prompt.requestLoadConfirmation
|
||||||
|
* @function
|
||||||
|
*/
|
||||||
|
me.requestLoadConfirmation = function()
|
||||||
|
{
|
||||||
|
const $loadconfirmmodal = $('#loadconfirmmodal');
|
||||||
|
if ($loadconfirmmodal.length > 0) {
|
||||||
|
const $loadconfirmOpenNow = $loadconfirmmodal.find('#loadconfirm-open-now');
|
||||||
|
$loadconfirmOpenNow.off('click.loadPaste');
|
||||||
|
$loadconfirmOpenNow.on('click.loadPaste', PasteDecrypter.run);
|
||||||
|
const $loadconfirmClose = $loadconfirmmodal.find('.close');
|
||||||
|
$loadconfirmClose.off('click.close');
|
||||||
|
$loadconfirmClose.on('click.close', Controller.newPaste);
|
||||||
|
$loadconfirmmodal.modal('show');
|
||||||
|
} else {
|
||||||
|
if (window.confirm(
|
||||||
|
I18n._('This secret message can only be displayed once. Would you like to see it now?')
|
||||||
|
)) {
|
||||||
|
PasteDecrypter.run();
|
||||||
|
} else {
|
||||||
|
Controller.newPaste();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ask the user for the password and set it
|
* ask the user for the password and set it
|
||||||
*
|
*
|
||||||
@ -2193,6 +2304,13 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
backdrop: 'static',
|
backdrop: 'static',
|
||||||
keyboard: false
|
keyboard: false
|
||||||
});
|
});
|
||||||
|
$passwordModal.modal('show');
|
||||||
|
// focus password input
|
||||||
|
$passwordDecrypt.focus();
|
||||||
|
// then re-focus it, when modal causes it to loose focus again
|
||||||
|
setTimeout(function () {
|
||||||
|
$passwordDecrypt.focus();
|
||||||
|
}, 500);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2252,13 +2370,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
$passwordForm = $('#passwordform');
|
$passwordForm = $('#passwordform');
|
||||||
$passwordModal = $('#passwordmodal');
|
$passwordModal = $('#passwordmodal');
|
||||||
|
|
||||||
// bind events
|
// bind events - handle Model password submission
|
||||||
|
|
||||||
// focus password input when it is shown
|
|
||||||
$passwordModal.on('shown.bs.Model', function () {
|
|
||||||
$passwordDecrypt.focus();
|
|
||||||
});
|
|
||||||
// handle Model password submission
|
|
||||||
$passwordForm.submit(submitPasswordModal);
|
$passwordForm.submit(submitPasswordModal);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -2278,7 +2390,9 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
|
|
||||||
let $editorTabs,
|
let $editorTabs,
|
||||||
$messageEdit,
|
$messageEdit,
|
||||||
|
$messageEditParent,
|
||||||
$messagePreview,
|
$messagePreview,
|
||||||
|
$messagePreviewParent,
|
||||||
$message,
|
$message,
|
||||||
isPreview = false;
|
isPreview = false;
|
||||||
|
|
||||||
@ -2319,10 +2433,12 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
{
|
{
|
||||||
// toggle buttons
|
// toggle buttons
|
||||||
$messageEdit.addClass('active');
|
$messageEdit.addClass('active');
|
||||||
|
$messageEditParent.addClass('active');
|
||||||
$messagePreview.removeClass('active');
|
$messagePreview.removeClass('active');
|
||||||
|
$messagePreviewParent.removeClass('active');
|
||||||
|
|
||||||
$('#messageedit').attr('aria-selected','true');
|
$messageEdit.attr('aria-selected','true');
|
||||||
$('#messagepreview').attr('aria-selected','false');
|
$messagePreview.attr('aria-selected','false');
|
||||||
|
|
||||||
PasteViewer.hide();
|
PasteViewer.hide();
|
||||||
|
|
||||||
@ -2351,10 +2467,12 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
{
|
{
|
||||||
// toggle buttons
|
// toggle buttons
|
||||||
$messageEdit.removeClass('active');
|
$messageEdit.removeClass('active');
|
||||||
|
$messageEditParent.removeClass('active');
|
||||||
$messagePreview.addClass('active');
|
$messagePreview.addClass('active');
|
||||||
|
$messagePreviewParent.addClass('active');
|
||||||
|
|
||||||
$('#messageedit').attr('aria-selected','false');
|
$messageEdit.attr('aria-selected','false');
|
||||||
$('#messagepreview').attr('aria-selected','true');
|
$messagePreview.attr('aria-selected','true');
|
||||||
|
|
||||||
// hide input as now preview is shown
|
// hide input as now preview is shown
|
||||||
$message.addClass('hidden');
|
$message.addClass('hidden');
|
||||||
@ -2482,10 +2600,11 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
// bind events
|
// bind events
|
||||||
$message.keydown(supportTabs);
|
$message.keydown(supportTabs);
|
||||||
|
|
||||||
// bind click events to tab switchers (a), but save parent of them
|
// bind click events to tab switchers (a), and save parents (li)
|
||||||
// (li)
|
$messageEdit = $('#messageedit').click(viewEditor);
|
||||||
$messageEdit = $('#messageedit').click(viewEditor).parent();
|
$messageEditParent = $messageEdit.parent();
|
||||||
$messagePreview = $('#messagepreview').click(viewPreview).parent();
|
$messagePreview = $('#messagepreview').click(viewPreview);
|
||||||
|
$messagePreviewParent = $messagePreview.parent();
|
||||||
};
|
};
|
||||||
|
|
||||||
return me;
|
return me;
|
||||||
@ -2534,7 +2653,8 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
// let showdown convert the HTML and sanitize HTML *afterwards*!
|
// let showdown convert the HTML and sanitize HTML *afterwards*!
|
||||||
$plainText.html(
|
$plainText.html(
|
||||||
DOMPurify.sanitize(
|
DOMPurify.sanitize(
|
||||||
converter.makeHtml(text)
|
converter.makeHtml(text),
|
||||||
|
purifyHtmlConfig
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
// add table classes from bootstrap css
|
// add table classes from bootstrap css
|
||||||
@ -2580,15 +2700,12 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
// otherwise hide the placeholder
|
// otherwise hide the placeholder
|
||||||
$placeholder.addClass('hidden');
|
$placeholder.addClass('hidden');
|
||||||
|
|
||||||
switch (format) {
|
if (format === 'markdown') {
|
||||||
case 'markdown':
|
$plainText.removeClass('hidden');
|
||||||
$plainText.removeClass('hidden');
|
$prettyMessage.addClass('hidden');
|
||||||
$prettyMessage.addClass('hidden');
|
} else {
|
||||||
break;
|
$plainText.addClass('hidden');
|
||||||
default:
|
$prettyMessage.removeClass('hidden');
|
||||||
$plainText.addClass('hidden');
|
|
||||||
$prettyMessage.removeClass('hidden');
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2613,6 +2730,11 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
|
|
||||||
format = newFormat;
|
format = newFormat;
|
||||||
isChanged = true;
|
isChanged = true;
|
||||||
|
|
||||||
|
// update preview
|
||||||
|
if (Editor.isPreview()) {
|
||||||
|
PasteViewer.run();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2750,6 +2872,34 @@ 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
|
||||||
@ -2759,44 +2909,42 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
*/
|
*/
|
||||||
me.setAttachment = function(attachmentData, fileName)
|
me.setAttachment = function(attachmentData, fileName)
|
||||||
{
|
{
|
||||||
// data URI format: data:[<mediaType>][;base64],<data>
|
// skip, if attachments got disabled
|
||||||
|
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 mediaType ends
|
// position in data URI string of where mimeType ends
|
||||||
const mediaTypeEnd = attachmentData.indexOf(';');
|
const mimeTypeEnd = attachmentData.indexOf(';');
|
||||||
|
|
||||||
// extract mediaType
|
// extract mimeType
|
||||||
const mediaType = attachmentData.substring(5, mediaTypeEnd);
|
const mimeType = attachmentData.substring(5, mimeTypeEnd);
|
||||||
// extract data and convert to binary
|
// extract data and convert to binary
|
||||||
const rawData = attachmentData.substring(base64Start);
|
const rawData = attachmentData.substring(base64Start);
|
||||||
const decodedData = rawData.length > 0 ? atob(rawData) : '';
|
const decodedData = rawData.length > 0 ? atob(rawData) : '';
|
||||||
|
|
||||||
// Transform into a Blob
|
let blobUrl = getBlobUrl(decodedData, mimeType);
|
||||||
const buf = new Uint8Array(decodedData.length);
|
$attachmentLink.attr('href', blobUrl);
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
me.handleBlobAttachmentPreview($attachmentPreview, blobUrl, mediaType);
|
// sanitize SVG preview
|
||||||
|
// 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);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2807,6 +2955,9 @@ 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) {
|
||||||
@ -3014,13 +3165,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')
|
||||||
@ -3031,7 +3182,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')
|
||||||
@ -3342,9 +3493,11 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// set date
|
// set date
|
||||||
|
const created = comment.getCreated();
|
||||||
|
const commentDate = created == 0 ? '' : ' (' + (new Date(created * 1000).toLocaleString()) + ')';
|
||||||
$commentEntry.find('span.commentdate')
|
$commentEntry.find('span.commentdate')
|
||||||
.text(' (' + (new Date(comment.getCreated() * 1000).toLocaleString()) + ')')
|
.text(commentDate)
|
||||||
.attr('title', 'CommentID: ' + comment.id);
|
.attr('title', 'CommentID: ' + comment.id);
|
||||||
|
|
||||||
// if an avatar is available, display it
|
// if an avatar is available, display it
|
||||||
const icon = comment.getIcon();
|
const icon = comment.getIcon();
|
||||||
@ -3462,7 +3615,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
if (fadeOut === true) {
|
if (fadeOut === true) {
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
$comment.removeClass('highlight');
|
$comment.removeClass('highlight');
|
||||||
|
|
||||||
}, 300);
|
}, 300);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -3571,11 +3723,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
$('#pasteFormatterDisplay').text($target.text());
|
$('#pasteFormatterDisplay').text($target.text());
|
||||||
PasteViewer.setFormat(newFormat);
|
PasteViewer.setFormat(newFormat);
|
||||||
|
|
||||||
// update preview
|
|
||||||
if (Editor.isPreview()) {
|
|
||||||
PasteViewer.run();
|
|
||||||
}
|
|
||||||
|
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3588,7 +3735,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
*/
|
*/
|
||||||
function changeBurnAfterReading()
|
function changeBurnAfterReading()
|
||||||
{
|
{
|
||||||
if ($burnAfterReading.is(':checked')) {
|
if (me.getBurnAfterReading()) {
|
||||||
$openDiscussionOption.addClass('buttondisabled');
|
$openDiscussionOption.addClass('buttondisabled');
|
||||||
$openDiscussion.prop('checked', false);
|
$openDiscussion.prop('checked', false);
|
||||||
|
|
||||||
@ -3608,7 +3755,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
*/
|
*/
|
||||||
function changeOpenDiscussion()
|
function changeOpenDiscussion()
|
||||||
{
|
{
|
||||||
if ($openDiscussion.is(':checked')) {
|
if (me.getOpenDiscussion()) {
|
||||||
$burnAfterReadingOption.addClass('buttondisabled');
|
$burnAfterReadingOption.addClass('buttondisabled');
|
||||||
$burnAfterReading.prop('checked', false);
|
$burnAfterReading.prop('checked', false);
|
||||||
|
|
||||||
@ -3619,6 +3766,18 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clear the password input in the top navigation
|
||||||
|
*
|
||||||
|
* @name TopNav.clearPasswordInput
|
||||||
|
* @function
|
||||||
|
*/
|
||||||
|
|
||||||
|
function clearPasswordInput()
|
||||||
|
{
|
||||||
|
$passwordInput.val('');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clear the attachment input in the top navigation.
|
* Clear the attachment input in the top navigation.
|
||||||
@ -3663,7 +3822,14 @@ 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('</head><body><pre>' + DOMPurify.sanitize(Helper.htmlEntities(paste)) + '</pre></body></html>');
|
newDoc.write(
|
||||||
|
'</head><body><pre>' +
|
||||||
|
DOMPurify.sanitize(
|
||||||
|
Helper.htmlEntities(paste),
|
||||||
|
purifyHtmlConfig
|
||||||
|
) +
|
||||||
|
'</pre></body></html>'
|
||||||
|
);
|
||||||
newDoc.close();
|
newDoc.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3676,7 +3842,8 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
*/
|
*/
|
||||||
function downloadText()
|
function downloadText()
|
||||||
{
|
{
|
||||||
var filename='paste-' + Model.getPasteId() + '.txt';
|
var fileFormat = PasteViewer.getFormat() === 'markdown' ? '.md' : '.txt';
|
||||||
|
var filename='paste-' + Model.getPasteId() + fileFormat;
|
||||||
var text = PasteViewer.getText();
|
var text = PasteViewer.getText();
|
||||||
|
|
||||||
var element = document.createElement('a');
|
var element = document.createElement('a');
|
||||||
@ -3701,8 +3868,9 @@ 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') + '; SameSite=Lax; Secure';
|
||||||
UiHelper.reloadHome();
|
UiHelper.reloadHome();
|
||||||
|
event.preventDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -3772,6 +3940,10 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
text: window.location.href
|
text: window.location.href
|
||||||
});
|
});
|
||||||
$('#qrcode-display').html(qrCanvas);
|
$('#qrcode-display').html(qrCanvas);
|
||||||
|
// only necessary for bootstrap 5, other templates won't have this
|
||||||
|
if (bootstrap.Tooltip.VERSION) {
|
||||||
|
$('#qrcodemodal').modal('show');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -3816,7 +3988,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
}
|
}
|
||||||
emailBody += I18n._('Link:');
|
emailBody += I18n._('Link:');
|
||||||
emailBody += EOL;
|
emailBody += EOL;
|
||||||
emailBody += `${window.location.href}`;
|
emailBody += $('#pasteurl').attr('href') || window.location.href; // href is tried first as it might have been shortened
|
||||||
return emailBody;
|
return emailBody;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3858,10 +4030,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
const $emailconfirmmodal = $('#emailconfirmmodal');
|
const $emailconfirmmodal = $('#emailconfirmmodal');
|
||||||
if ($emailconfirmmodal.length > 0) {
|
if ($emailconfirmmodal.length > 0) {
|
||||||
if (expirationDate !== null) {
|
if (expirationDate !== null) {
|
||||||
I18n._(
|
|
||||||
$emailconfirmmodal.find('#emailconfirm-display'),
|
|
||||||
'Recipient may become aware of your timezone, convert time to UTC?'
|
|
||||||
);
|
|
||||||
const $emailconfirmTimezoneCurrent = $emailconfirmmodal.find('#emailconfirm-timezone-current');
|
const $emailconfirmTimezoneCurrent = $emailconfirmmodal.find('#emailconfirm-timezone-current');
|
||||||
const $emailconfirmTimezoneUtc = $emailconfirmmodal.find('#emailconfirm-timezone-utc');
|
const $emailconfirmTimezoneUtc = $emailconfirmmodal.find('#emailconfirm-timezone-utc');
|
||||||
$emailconfirmTimezoneCurrent.off('click.sendEmailCurrentTimezone');
|
$emailconfirmTimezoneCurrent.off('click.sendEmailCurrentTimezone');
|
||||||
@ -4192,6 +4360,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
me.resetInput = function()
|
me.resetInput = function()
|
||||||
{
|
{
|
||||||
clearAttachmentInput();
|
clearAttachmentInput();
|
||||||
|
clearPasswordInput();
|
||||||
$burnAfterReading.prop('checked', burnAfterReadingDefault);
|
$burnAfterReading.prop('checked', burnAfterReadingDefault);
|
||||||
$openDiscussion.prop('checked', openDiscussionDefault);
|
$openDiscussion.prop('checked', openDiscussionDefault);
|
||||||
if (openDiscussionDefault || !burnAfterReadingDefault) $openDiscussionOption.removeClass('buttondisabled');
|
if (openDiscussionDefault || !burnAfterReadingDefault) $openDiscussionOption.removeClass('buttondisabled');
|
||||||
@ -4251,7 +4420,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
*/
|
*/
|
||||||
me.getBurnAfterReading = function()
|
me.getBurnAfterReading = function()
|
||||||
{
|
{
|
||||||
return $burnAfterReading.is(':checked');
|
return $burnAfterReading.prop('checked');
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -4263,7 +4432,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
*/
|
*/
|
||||||
me.getOpenDiscussion = function()
|
me.getOpenDiscussion = function()
|
||||||
{
|
{
|
||||||
return $openDiscussion.is(':checked');
|
return $openDiscussion.prop('checked');
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -4398,6 +4567,13 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
// bootstrap template drop downs
|
// bootstrap template drop downs
|
||||||
$('ul.dropdown-menu li a', $('#expiration').parent()).click(updateExpiration);
|
$('ul.dropdown-menu li a', $('#expiration').parent()).click(updateExpiration);
|
||||||
$('ul.dropdown-menu li a', $('#formatter').parent()).click(updateFormat);
|
$('ul.dropdown-menu li a', $('#formatter').parent()).click(updateFormat);
|
||||||
|
// bootstrap5 & page drop downs
|
||||||
|
$('#pasteExpiration').on('change', function() {
|
||||||
|
pasteExpiration = Model.getExpirationDefault();
|
||||||
|
});
|
||||||
|
$('#pasteFormatter').on('change', function() {
|
||||||
|
PasteViewer.setFormat(Model.getFormatDefault());
|
||||||
|
});
|
||||||
|
|
||||||
// initiate default state of checkboxes
|
// initiate default state of checkboxes
|
||||||
changeBurnAfterReading();
|
changeBurnAfterReading();
|
||||||
@ -4406,7 +4582,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
// get default values from template or fall back to set value
|
// get default values from template or fall back to set value
|
||||||
burnAfterReadingDefault = me.getBurnAfterReading();
|
burnAfterReadingDefault = me.getBurnAfterReading();
|
||||||
openDiscussionDefault = me.getOpenDiscussion();
|
openDiscussionDefault = me.getOpenDiscussion();
|
||||||
pasteExpiration = Model.getExpirationDefault() || pasteExpiration;
|
pasteExpiration = Model.getExpirationDefault();
|
||||||
|
|
||||||
createButtonsDisplayed = false;
|
createButtonsDisplayed = false;
|
||||||
viewButtonsDisplayed = false;
|
viewButtonsDisplayed = false;
|
||||||
@ -4716,7 +4892,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
|
|
||||||
// show notification
|
// show notification
|
||||||
const baseUri = Helper.baseUri() + '?',
|
const baseUri = Helper.baseUri() + '?',
|
||||||
url = baseUri + data.id + '#' + CryptTool.base58encode(data.encryptionKey),
|
url = baseUri + data.id + (TopNav.getBurnAfterReading() ? loadConfirmPrefix : '#') + CryptTool.base58encode(data.encryptionKey),
|
||||||
deleteUrl = baseUri + 'pasteid=' + data.id + '&deletetoken=' + data.deletetoken;
|
deleteUrl = baseUri + 'pasteid=' + data.id + '&deletetoken=' + data.deletetoken;
|
||||||
PasteStatus.createPasteNotification(url, deleteUrl);
|
PasteStatus.createPasteNotification(url, deleteUrl);
|
||||||
|
|
||||||
@ -5135,7 +5311,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
Alert.hideMessages();
|
Alert.hideMessages();
|
||||||
Alert.showLoading('Decrypting paste…', 'cloud-download');
|
Alert.showLoading('Decrypting paste…', 'cloud-download');
|
||||||
|
|
||||||
if (typeof paste === 'undefined') {
|
if (typeof paste === 'undefined' || paste.type === 'click') {
|
||||||
// get cipher data and wait until it is available
|
// get cipher data and wait until it is available
|
||||||
Model.getPasteData(me.run);
|
Model.getPasteData(me.run);
|
||||||
return;
|
return;
|
||||||
@ -5242,7 +5418,10 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
AttachmentViewer.removeAttachmentData();
|
AttachmentViewer.removeAttachmentData();
|
||||||
|
|
||||||
Alert.hideLoading();
|
Alert.hideLoading();
|
||||||
history.pushState({type: 'create'}, document.title, Helper.baseUri());
|
// only push new state if we are coming from a different one
|
||||||
|
if (Helper.baseUri() != window.location) {
|
||||||
|
history.pushState({type: 'create'}, document.title, Helper.baseUri());
|
||||||
|
}
|
||||||
|
|
||||||
// clear discussion
|
// clear discussion
|
||||||
DiscussionViewer.prepareNewDiscussion();
|
DiscussionViewer.prepareNewDiscussion();
|
||||||
@ -5268,6 +5447,12 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check if we should request loading confirmation
|
||||||
|
if(window.location.hash.startsWith(loadConfirmPrefix)) {
|
||||||
|
Prompt.requestLoadConfirmation();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// show proper elements on screen
|
// show proper elements on screen
|
||||||
PasteDecrypter.run();
|
PasteDecrypter.run();
|
||||||
};
|
};
|
||||||
@ -5392,11 +5577,6 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
// first load translations
|
// first load translations
|
||||||
I18n.loadTranslations();
|
I18n.loadTranslations();
|
||||||
|
|
||||||
DOMPurify.setConfig({
|
|
||||||
ALLOWED_URI_REGEXP: /^(?:(?:(?:f|ht)tps?|mailto|magnet):)/i,
|
|
||||||
SAFE_FOR_JQUERY: true
|
|
||||||
});
|
|
||||||
|
|
||||||
// Add a hook to make all links open a new window
|
// Add a hook to make all links open a new window
|
||||||
DOMPurify.addHook('afterSanitizeAttributes', function(node) {
|
DOMPurify.addHook('afterSanitizeAttributes', function(node) {
|
||||||
// set all elements owning target to target=_blank
|
// set all elements owning target to target=_blank
|
||||||
@ -5446,8 +5626,11 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
|||||||
me.initZ();
|
me.initZ();
|
||||||
|
|
||||||
// if delete token is passed (i.e. paste has been deleted by this
|
// if delete token is passed (i.e. paste has been deleted by this
|
||||||
// access), there is nothing more to do
|
// access), add an event listener for the 'new' paste button in the alert
|
||||||
if (Model.hasDeleteToken()) {
|
if (Model.hasDeleteToken()) {
|
||||||
|
$("#new-from-alert").on("click", function () {
|
||||||
|
UiHelper.reloadHome();
|
||||||
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user