Merge branch 'staging' into 2024.6-test

This commit is contained in:
yflory 2024-06-24 16:51:17 +02:00
commit 3a23833c30
21 changed files with 535 additions and 121 deletions

View File

@ -89,6 +89,7 @@ body:
label: Version
description: What version of CryptPad are you running?
options:
- 2024.3.1
- 2024.3.0
- 5.7.0
- 5.6.0

View File

@ -4,6 +4,48 @@ SPDX-FileCopyrightText: 2023 XWiki CryptPad Team <contact@cryptpad.org> and cont
SPDX-License-Identifier: AGPL-3.0-or-later
-->
# 2024.3.1
## Goals
This minor release introduces a workaround to recover corrupted OnlyOffice documents alongside other fixes, with some improvements.
## Fixes
- Workarounds for missing OnlyOffice methods: [#1492](https://github.com/cryptpad/cryptpad/pull/1492)
- Fix HTTP server issue with NodeJs >= v20.13.0: [4483b84](https://github.com/cryptpad/cryptpad/commit/4483b848ff2ba23176cb05dacf073f3e0581ba7b)
- Fix merge issues with `package.json`: [7f45d59](https://github.com/cryptpad/cryptpad/commit/7f45d598cbf230002863bbd84004c38252b97031)
- Fix Docker ports: [#1485](https://github.com/cryptpad/cryptpad/pull/1485)
- Change _inactive_ to _archived_ in `config.example.js` file: [#1474](https://github.com/cryptpad/cryptpad/pull/1474)
## Improvements
- New translations from our Weblate contributors: [#1491](https://github.com/cryptpad/cryptpad/pull/1491)
- Polish
- French
- Bulgarian
- Hungarian
- Basque
- Optimize default Nginx example config: [#1486](https://github.com/cryptpad/cryptpad/pull/1486)
- Add `.mjs` support in HTTPd example config: [#1471](https://github.com/cryptpad/cryptpad/pull/1471)
## Upgrade notes
If you are upgrading from a version older than `2024.3.0` please read the upgrade notes of all versions between yours and `2024.3.1` to avoid configuration issues.
To upgrade:
1. Stop your server
2. Get the latest code with git
```bash
git fetch origin --tags
git checkout 2024.3.1
npm ci
npm run install:components
./install-onlyoffice.sh
```
3. Restart your server
4. Review your instance's checkup page to ensure that you are passing all tests
# 2024.3.0
## Goals

View File

@ -60,7 +60,7 @@ ENTRYPOINT ["/bin/bash", "/cryptpad/docker-entrypoint.sh"]
HEALTHCHECK --interval=1m CMD curl -f http://localhost:3000/ || exit 1
# Ports
EXPOSE 3000 3001 3003
EXPOSE 3000 3003
# Run cryptpad on startup
CMD ["npm", "start"]

View File

@ -191,7 +191,7 @@ module.exports = {
* This archived data still takes up space and so you'll probably still want to
* remove these files after a brief period.
*
* cryptpad/scripts/evict-inactive.js is intended to be run daily
* cryptpad/scripts/evict-archived.js is intended to be run daily
* from a crontab or similar scheduling service.
*
* The intent with this feature is to provide a safety net in case of accidental

View File

@ -7,7 +7,7 @@ version: '3.8'
services:
cryptpad:
image: "cryptpad/cryptpad:version-2024.3.0"
image: "cryptpad/cryptpad:version-2024.3.1"
hostname: cryptpad
environment:
@ -30,7 +30,6 @@ services:
ports:
- "3000:3000"
- "3001:3001"
- "3003:3003"
ulimits:

View File

@ -33,8 +33,14 @@ SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
Protocols h2 http/1.1
LimitRequestBody 157286400
AddType application/javascript mjs
ProxyPass / http://localhost:3000/ upgrade=websocket
ProxyPassReverse / http://localhost:3000/
<Location "/">
LimitRequestBody 157286400
ProxyPass http://localhost:3000/ upgrade=websocket
ProxyPassReverse http://localhost:3000/
</Location>
<Location "/cryptpad_websocket">
ProxyPassMatch http://localhost:3003/ upgrade=websocket
ProxyPassReverse http://localhost:3003/
</Location>
</VirtualHost>

View File

@ -71,4 +71,15 @@ server {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
}
location ^~ /cryptpad_websocket {
proxy_pass http://localhost:3003;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
}
}

View File

@ -95,7 +95,7 @@ nThen(function (w) {
};
// spawn ws server and attach netflux event handlers
NetfluxSrv.create(new WebSocketServer({ server: Env.httpServer}))
let Server = NetfluxSrv.create(new WebSocketServer({ server: Env.httpServer}))
.on('channelClose', historyKeeper.channelClose)
.on('channelMessage', historyKeeper.channelMessage)
.on('channelOpen', historyKeeper.channelOpen)
@ -124,6 +124,65 @@ nThen(function (w) {
});
})
.register(historyKeeper.id, historyKeeper.directMessage);
// Store max active WS during the last day (reset when sending ping if enabled)
setInterval(() => {
try {
// Concurrent usage data
let oldWs = Env.maxConcurrentWs || 0;
let oldUniqueWs = Env.maxConcurrentUniqueWs || 0;
let oldChans = Env.maxActiveChannels || 0;
let oldUsers = Env.maxConcurrentRegUsers || 0;
let stats = Server.getSessionStats();
let chans = Server.getActiveChannelCount();
let reg = 0;
let regKeys = [];
Object.keys(Env.netfluxUsers).forEach(id => {
let keys = Env.netfluxUsers[id];
let key = Object.keys(keys || {})[0];
if (!key) { return; }
if (regKeys.includes(key)) { return; }
reg++;
regKeys.push(key);
});
Env.maxConcurrentWs = Math.max(oldWs, stats.total);
Env.maxConcurrentUniqueWs = Math.max(oldUniqueWs, stats.unique);
Env.maxConcurrentRegUsers = Math.max(oldUsers, reg);
Env.maxActiveChannels = Math.max(oldChans, chans);
} catch (e) {}
}, 10000);
// Clean up active registered users and channels (possible memory leak)
setInterval(() => {
try {
let users = Env.netfluxUsers || {};
let online = Server.getOnlineUsers() || [];
let removed = 0;
Object.keys(users).forEach(id => {
if (!online.includes(id)) {
delete users[id];
removed++;
}
});
if (removed) {
Env.Log.info("CLEANED_ACTIVE_USERS_MAP", {removed});
}
} catch (e) {}
try {
let HK = require('./hk-utils');
let chans = Env.channel_cache || {};
let active = Server.getActiveChannels() || [];
let removed = 0;
Object.keys(chans).forEach(id => {
if (!active.includes(id)) {
HK.dropChannel(Env, id);
removed++;
}
});
if (removed) {
Env.Log.info("CLEANED_ACTIVE_CHANNELS_MAP", {removed});
}
} catch (e) {}
}, 30000);
});
});

View File

@ -101,11 +101,13 @@ var shutdown = function (Env, Server, cb) {
// and allow system functionality to restart the server
};
var getRegisteredUsers = function (Env, Server, cb) {
var getRegisteredUsers = Admin.getRegisteredUsers = function (Env, Server, cb) {
Env.batchRegisteredUsers('', cb, function (done) {
var dir = Env.paths.pin;
var folders;
var dirB = Env.paths.block;
var folders, foldersB;
var users = 0;
var blocks = 0;
nThen(function (waitFor) {
Fs.readdir(dir, waitFor(function (err, list) {
if (err) {
@ -114,16 +116,39 @@ var getRegisteredUsers = function (Env, Server, cb) {
}
folders = list;
}));
Fs.readdir(dirB, waitFor(function (err, list) {
if (err) {
waitFor.abort();
return void done(err);
}
foldersB = list;
}));
}).nThen(function (waitFor) {
folders.forEach(function (f) {
var dir = Env.paths.pin + '/' + f;
Fs.readdir(dir, waitFor(function (err, list) {
if (err) { return; }
// Don't count placeholders
list = list.filter(name => {
return !/\.placeholder$/.test(name);
});
users += list.length;
}));
});
}).nThen(function (waitFor) {
foldersB.forEach(function (f) {
var dir = Env.paths.block + '/' + f;
Fs.readdir(dir, waitFor(function (err, list) {
if (err) { return; }
// Don't count placeholders
list = list.filter(name => {
return !/\.placeholder$/.test(name);
});
blocks += list.length;
}));
});
}).nThen(function () {
done(void 0, users);
done(void 0, {users, blocks});
});
});
};

View File

@ -10,6 +10,8 @@ const Https = require("https");
const Http = require("http");
const Util = require("../common-util");
const Stats = require("../stats");
const Admin = require("./admin-rpc.js");
const nThen = require('nthen');
var validLimitFields = ['limit', 'plan', 'note', 'users', 'origin'];
@ -111,45 +113,85 @@ var queryAccountServer = function (Env, cb) {
var done = Util.once(Util.mkAsync(cb));
var rawBody = Stats.instanceData(Env);
Env.Log.info("SERVER_TELEMETRY", rawBody);
var body = JSON.stringify(rawBody);
var options = {
host: 'accounts.cryptpad.fr',
path: '/api/getauthorized',
method: 'POST',
headers: {
"Content-Type": "application/json",
"Content-Length": Buffer.byteLength(body)
}
let send = () => {
Env.Log.info("SERVER_TELEMETRY", rawBody);
var body = JSON.stringify(rawBody);
var options = {
host: 'accounts.cryptpad.fr',
path: '/api/getauthorized',
method: 'POST',
headers: {
"Content-Type": "application/json",
"Content-Length": Buffer.byteLength(body)
}
};
var req = Https.request(options, function (response) {
if (!('' + response.statusCode).match(/^2\d\d$/)) {
return void cb('SERVER ERROR ' + response.statusCode);
}
var str = '';
response.on('data', function (chunk) {
str += chunk;
});
response.on('end', function () {
try {
var json = JSON.parse(str);
checkUpdateAvailability(Env, json);
done(void 0, json);
} catch (e) {
done(e);
}
});
});
req.on('error', function () {
done();
});
req.end(body);
};
var req = Https.request(options, function (response) {
if (!('' + response.statusCode).match(/^2\d\d$/)) {
return void cb('SERVER ERROR ' + response.statusCode);
}
var str = '';
response.on('data', function (chunk) {
str += chunk;
});
response.on('end', function () {
try {
var json = JSON.parse(str);
checkUpdateAvailability(Env, json);
done(void 0, json);
} catch (e) {
done(e);
if (Env.provideAggregateStatistics) {
let stats = {};
nThen(waitFor => {
Admin.getRegisteredUsers(Env, null, waitFor((err, data) => {
if (err) { return; }
stats.registered = data.blocks;
if (Env.lastPingRegisteredUsers) {
stats.usersDiff = stats.registered - Env.lastPingRegisteredUsers;
}
Env.lastPingRegisteredUsers = stats.registered;
let teams = (data.users - data.blocks);
if (teams > 0) { stats.teams = teams; }
}));
}).nThen(() => {
if (Env.maxConcurrentWs) {
stats.maxConcurrentWs = Env.maxConcurrentWs;
Env.maxConcurrentWs = 0;
}
if (Env.maxConcurrentUniqueWs) {
stats.maxConcurrentUniqueIPs = Env.maxConcurrentUniqueWs;
Env.maxConcurrentUniqueWs = 0;
}
if (Env.maxConcurrentRegUsers) {
stats.maxConcurrentRegUsers = Env.maxConcurrentRegUsers;
Env.maxConcurrentRegUsers = 0;
}
if (Env.maxActiveChannels) {
stats.maxConcurrentChannels = Env.maxActiveChannels;
Env.maxActiveChannels = 0;
}
rawBody.statistics = stats;
send();
});
});
req.on('error', function () {
done();
});
req.end(body);
return;
}
send();
};
Quota.shouldContactServer = function (Env) {
return !(Env.blockDailyCheck === true ||

View File

@ -81,6 +81,7 @@ Stats.instanceData = function (Env) {
if (Env.provideAggregateStatistics) {
// check how many instances provide stats before we put more work into it
data.providesAggregateStatistics = true;
data.statistics = {}; // Filled in lib/commands/quota.js because of async calls
}
return data;
};

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{
"name": "cryptpad",
"version": "2024.3.0",
"version": "2024.3.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "cryptpad",
"version": "2024.3.0",
"version": "2024.3.1",
"license": "AGPL-3.0+",
"dependencies": {
"@mcrowe/minibloom": "^0.2.0",

View File

@ -1,7 +1,7 @@
{
"name": "cryptpad",
"description": "realtime collaborative visual editor with zero knowledge server",
"version": "2024.3.0",
"version": "2024.3.1",
"license": "AGPL-3.0+",
"repository": {
"type": "git",

View File

@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later
# CryptPad
CryptPad is a collaboration suite that is end-to-end-encrypted and open-source. It is built to enable collaboration, synchronizing changes to documents in real time. Because all data is encrypted, the service and its administrators have no way of seeing the content being edited and stored.
CryptPad is a collaboration suite that is end-to-end-encrypted and open-source. It is built to enable collaboration, synchronizing changes to documents in real time. Because all data are encrypted, in the eventuality of a breach, attackers have no way of seeing the stored content. Moreover, if the administators dont alter the code, they and the service also cannot infer any piece of information about the users' content.
![Drive screenshot](screenshot.png "preview of the CryptDrive")
@ -24,7 +24,7 @@ Configuring CryptPad for production requires a little more work, but the process
## Current version
The most recent version and all past release notes can be found [here](https://github.com/cryptpad/cryptpad/releases/).
The most recent version and all past release notes can be found on the [releases page on GitHub](https://github.com/cryptpad/cryptpad/releases/).
## Setup using Docker
@ -36,7 +36,7 @@ Previously, Docker images were community maintained, had their own repository an
CryptPad offers a variety of collaborative tools that encrypt your data in your browser
before it is sent to the server and your collaborators. In the event that the server is
compromized the database holds encrypted data that is not of much value to attackers.
compromized, the database holds encrypted data that is not of much value to attackers.
The code which performs the encryption is still loaded from the host server like any
other web page, so you still need to trust the administrator to keep their server secure
@ -44,23 +44,29 @@ and to send you the right code. An expert can download code from the server and
that it isn't doing anything malicious like leaking your encryption keys, which is why
this is considered an [active attack].
The platform is designed to minimize what data is exposed to its operators. User registration
and account access is based on a cryptographic key that is derived from your username
and password so the server never needs to see either and you don't need to worry about
whether they are being stored securely. It is impossible to verify whether a server's
operators are logging your IP or other activity, so if you consider this information
sensitive it is safest to assume it is being recorded and access your preferred instance
via [Tor browser].
The platform is designed to minimize what data is exposed to its operators. User
registration and account access are based on cryptographic keys that are derived from your
username and password. Hence, the server never needs to see either, and you don't need to
worry about whether they are being stored securely. It is impossible to verify whether a
server's operators are logging your IP or other activity, so if you consider this
information sensitive it is safest to assume it is being recorded and access your
preferred instance via [Tor browser].
A correctly configured instance has safeguards to prevent collaborators from doing some
nasty things like injecting scripts into collaborative documents or uploads. The project
is actively maintained and bugs that our safeguards don't catch tend to get fixed quickly.
For this reason it is best to only use instances that are running the most recent version,
which is currently on a three-week release cycle. It is difficult for a non-expert to
which is currently on a three-month release cycle. It is difficult for a non-expert to
determine whether an instance is otherwise configured correctly, so we are actively
working on allowing administrators to opt in to a public directory of servers that
working on allowing administrators to opt in to a [public directory of
servers](https://cryptpad.org/instances/) that
meet our strict criteria for safety.
For end users, a [guide](https://blog.cryptpad.org/2024/03/14/Most-Secure-CryptPad-Usage/)
is provided in our blog to help understanding the security of CryptPad. This blog post
also explains and show the best practices when using CryptPad and clarify what end-to-end
encryption entails and not.
# Translations
CryptPad can be translated with nothing more than a web browser via our

View File

@ -2710,9 +2710,11 @@ define([
var onRefresh = function () {
sFrameChan.query('Q_ADMIN_RPC', {
cmd: 'REGISTERED_USERS',
}, function (e, data) {
}, function (e, arr) {
pre.innerText = '';
pre.append(String(data));
let data = arr[0];
pre.append(String(data.blocks));
pre.append(' (old value including teams: ' + String(data.users) + ')'); // XXX
});
};
onRefresh();

View File

@ -366,5 +366,46 @@
"login_invalUser": "Изисква се потребителско име",
"login_confirm": "Потвърдете паролата",
"login_unhandledError": "Възникна неочаквана грешка :(",
"settings_exportWarning": "Забележка: този инструмент все още е в бета версия и може да има проблеми с мащабируемостта. За по-добра производителност се препоръчва да оставите този раздел на фокус - без превключване на друг раздел."
"settings_exportWarning": "Забележка: този инструмент все още е в бета версия и може да има проблеми с мащабируемостта. За по-добра производителност се препоръчва да оставите този раздел на фокус - без превключване на друг раздел.",
"settings_export_reading": "Четене от вашият CryptDrive...",
"settings_export_download": "Изтегляне и декриптиране на вашите документи...",
"settings_export_compressing": "Данните се компресират...",
"settings_exportError": "Вижте грешките",
"settings_exportErrorEmpty": "Този документ не може да бъде експортиран (липсващо или невалидно съдържание).",
"settings_exportErrorOther": "Възникна грешка при опит за експортиране на този документ: {0}",
"settings_resetNewTitle": "Почистване на CryptDrive",
"settings_resetButton": "Премахване",
"settings_resetDone": "Вашият диск вече е празен!",
"settings_resetError": "Неправилен текст за потвърждение. Вашият CryptDrive не е променен.",
"settings_resetTipsAction": "Нулиране",
"settings_resetTips": "Съвети",
"settings_resetTipsButton": "Нулиране на наличните съвети в CryptDrive",
"settings_resetTipsDone": "Всички съвети вече са видими отново.",
"settings_thumbnails": "Миниатюри",
"settings_disableThumbnailsAction": "Деактивиране на създаването на миниатюри във вашия CryptDrive",
"settings_resetThumbnailsAction": "Почистване",
"settings_resetThumbnailsDescription": "Почистване на всички миниатюри на документи, съхранени във вашия браузър.",
"settings_resetThumbnailsDone": "Всички миниатюри са изтрити.",
"settings_importTitle": "Импортиране на последните документи в браузъра във вашия CryptDrive",
"settings_export_done": "Вашето сваляне приключи!",
"settings_exportErrorDescription": "Не успяхме да добавим следните документи в експортирания файл:",
"settings_exportErrorMissing": "Този документ липсва на нашите сървъри (изтекъл му е срокът на съхранение или е изтрит от собственика му)",
"settings_reset": "Премахване на всички файлове и папки от вашия CryptDrive",
"settings_resetPrompt": "С това действие ще премахне всички документи от вашето устройство.<br>Сигурни ли сте, че искате да продължите?<br>Напишете “<em>Обичам CryptPad</em>”, за да потвърдите.",
"settings_disableThumbnailsDescription": "Миниатюрите се създават автоматично и се съхраняват във вашия браузър, когато влезете в нов документ. Можете да деактивирате тази функция тук.",
"settings_autostoreTitle": "Съхранение на документи в CryptDrive",
"settings_import": "Импортиране",
"settings_importConfirm": "Сигурни ли сте, че искате да импортирате последните документи от този браузър в CryptDrive във потребителския ви акаунт?",
"settings_importDone": "Импортирането завърши",
"settings_autostoreHint": "<b>Автоматично</b> Всички документи, които ползвате, се съхраняват във вашия CryptDrive.<br><b>Ръчно (винаги се иска потвърждаване)</b> Ако все още не сте съхранили документ, ще бъдете попитани дали искате, да ги съхранявате във вашия CryptDrive.<br><b>Ръчно (никога не се иска потвърждаване)</b> Документите не се съхраняват автоматично във вашия CryptDrive. Опцията за съхраняването им ще бъде скрита.",
"settings_autostoreYes": "Автоматично",
"settings_autostoreNo": "Ръчно (никога не се иска потвърждаване)",
"settings_autostoreMaybe": "Ръчно (вининаги се иска потвърждаване)",
"settings_userFeedbackTitle": "Обратна връзка",
"settings_userFeedbackHint1": "CryptPad предоставя обратна връзка на сървъра, за да ни уведоми как да подобрим вашия опит. ",
"settings_userFeedbackHint2": "Съдържанието на вашите документи никога няма да бъде споделено със сървъра.",
"settings_userFeedback": "Активиране на обратната връзка с потребителя",
"settings_deleteTitle": "Изтриване на акаунта",
"settings_deleteHint": "Изтриването на акаунта е окончателно. Вашият CryptDrive и вашият списък с документи ще бъдат изтрити от сървъра. Останалите ви документи ще бъдат изтрити след 90 дни, ако никой друг не ги е съхранил в своя CryptDrive.",
"settings_deleteButton": "Изтриване на акаунта си"
}

View File

@ -1717,5 +1717,21 @@
"admin_supportEnabled": "Laguntza-sistema gaituta dago.",
"admin_supportDisabled": "Laguntza-sistema desgaituta dago.",
"admin_supportDelete": "Desgaitu laguntza",
"admin_colorHint": "Aldatu zure CryptPad instantziaren nabarmentze kolorea. Ziurtatu testua eta botoiak kontraste nahikoarekin irakur daitezkeela gai argietan zein ilunetan."
"admin_colorHint": "Aldatu zure CryptPad instantziaren nabarmentze kolorea. Ziurtatu testua eta botoiak kontraste nahikoarekin irakur daitezkeela gai argietan zein ilunetan.",
"admin_supportAdd": "Gehitu kontaktu bat laguntza-taldeari",
"admin_supportConfirm": "Ziur zaude? Honek lehendik dauden sarrera guztiak ezabatuko ditu eta moderatzaile guztien sarbidea blokeatuko da.",
"admin_supportMembers": "Laguntza taldea",
"admin_supportRotateNotify": "Abisua: gako berriak sortu dira baina ustekabeko errore batek sistemak moderatzaileei bidaltzea eragotzi du. Mesedez, kendu eta gehitu berriro laguntza-taldeko kide guztiak",
"support_cat_settings": "Ezarpenak",
"support_cat_search": "Bilatu",
"support_cat_closed": "Itxita",
"support_cat_open": "Sarrera-ontzia",
"support_cat_legacy": "Zaharra",
"support_pending": "Artxibatutako sarrerak:",
"support_pending_tag": "Artxibatuta",
"support_active_tag": "Sarrera-ontzia",
"support_closed_tag": "Itxita",
"support_privacyTitle": "Erantzun anonimoki",
"moderationPage": "Laguntza mahaia",
"admin_supportInit": "Hasieratu laguntza mahaia instantzia honetan"
}

View File

@ -1249,8 +1249,8 @@
"form_makePublic": "Publier les réponses",
"form_invalidQuestion": "Questions {0}",
"form_invalidWarning": "Certaines réponses contiennent des erreurs :",
"form_input_ph_url": "https://exemple.fr",
"form_input_ph_email": "courriel@exemple.fr",
"form_input_ph_url": "https://example.net/exemple",
"form_input_ph_email": "courriel_exemple@example.net",
"form_notAnswered": "<b>{0}</b> réponses vides",
"form_answerWarning": "Identité non confirmée",
"form_answerName": "Réponse de {0} le {1}",

View File

@ -331,5 +331,95 @@
"status": "Állapotlap",
"access_passwordUsed": "Ennek a dokumentumnak ez már volt jelszava . Nem használható többször.",
"admin_diskUsageWarning": "Figyelem! A példányon tárolt adatmennyiségtől függően ez a riport elhasználhatja akár a server teljes memóriáját és lefagyáshoz vezethet.",
"poll_comment_disabled": "A ✓ gommbal tudod a kérdőívet publikálni, ezután lehet kommentálni."
"poll_comment_disabled": "A ✓ gommbal tudod a kérdőívet publikálni, ezután lehet kommentálni.",
"fm_removePermanentlyDialog": "Tuti kiakarod törtölni ezt a Driveból? Ez a fájl megmarad a többi felhasználok számára akik eltárolták.",
"fm_contextMenuError": "Nem tudtuk megnyitni a menüt ehez. Ha továbbra is fennmarad ez a probléma, frissítse az oldalt.",
"fm_removeSeveralPermanentlyDialog": "Biztosan akarod törölni ezt a {0} elemet a tárhelyedről? De továbbra is megmaradnak a többi felhasználó tárhelyén, akik szintén tárolták ezeket.",
"fm_deleteOwnedPads": "Biztos vagy benne hogy véglegesen megsemmisíted ezt a fájlt?",
"fm_restoreDialog": "Biztosan helyreállitja a/az {0}-t az eredeti helyére?",
"fm_unknownFolderError": "A kiválasztott vagy legutóbb megtekintett mappa már nem létezik. Szülő-mappa megnyitása...",
"fm_selectError": "Nem lehet kiválasztani a célzott elemet. Ha a probléma továbbra is fennáll, próbálja újratölteni az oldalt.",
"fm_categoryError": "Nem lehet megnyitni a kiválasztott kategóriát, a gyökérmappát mutatjuk.",
"fm_info_root": "Tetszőleges mélységű mapparendszert hozhatsz létre a fájljaid rendezésére.",
"fm_info_template": "Ezek a dokumentumok sablonként vannak tárolva. Új dokumentumok létrehozásához lehet őket használni.",
"fm_info_recent": "Ezelet a dokumentumokat a közelmúltban megnyitották vagy módosították (Te, vagy a közreműködők).",
"fm_info_trash": "Ürítsd ki a Kukát a CryptDrive tárhelyed felszabadításához.",
"fm_info_sharedFolder": "Ez egy megosztott mappa. Nem vagy bejelentkezve, ezért Számodra ez csak olvasható. <br><a href=\"/register/\">Regisztrálj</a>, vagy <a href=\"/login/\">Jelentkezz be</a>, hogy importálhas a CryptDrive-odra, és szerkeszthesd a tartalmát.",
"fm_info_anonymous": "Nem vagy bejelentkezve, így a dokumentumaid {0} nap múlva lejárnak. Ha törlődik a böngésződ gyorsítótára, elvesznek.<br><a href=\"/register/\">Regisztrálj</a> (nincs szükség személyes adatok megadására) vagy <a href=\"/login/\">Jelentkezz be</a>, hogy tárolhasd őket hosszabb távon. <a href=\"#docs\">Tudj meg többet a a regisztrált CryptPad-fiókokról!</a>.",
"fm_renamedPad": "Egyéni nevet állított be ehhez a dokumentumhoz. A neve: <br><b>{0}</b>",
"fm_canBeShared": "Ez a mappa megosztható",
"fm_prop_tagsList": "Címkék",
"fm_burnThisDriveButton": "Törölje a CryptPad által tárolt összes információt a böngészőből",
"fm_burnThisDrive": "Biztos, hogy el akar távolítani mindent, amit a CryptPad tárol a böngészőjében?<br>Ez eltávolítja a CryptDrive-ot és annak előzményeit a böngészőjéből, de a dokumentumai továbbra is létezni fognak (titkosítva) a szerverünkön.",
"fm_padIsOwned": "Ön ennek a dokumentumnak a tulajdonosa",
"fm_padIsOwnedOther": "Ez a dokumentum egy másik felhasználó tulajdonában van",
"fm_tags_name": "Címke neve",
"fm_tags_used": "Felhasználások száma",
"fm_restoreDrive": "A meghajtó visszaállítása egy korábbi állapotba. A legjobb eredmény elérése érdekében ne végezzen változtatásokat a meghajtón, amíg ez a folyamat be nem fejeződött.",
"fc_newfolder": "Új mappa",
"fc_rename": "Átnevezés",
"fc_color": "Szín megváltoztatása",
"fc_open": "Megnyitás",
"fc_open_ro": "Megnyitás (csak olvasás)",
"fc_expandAll": "Minden kinyitása",
"fc_delete": "Kukába helyezés",
"fc_delete_owned": "Megsemmisítés",
"fc_restore": "Visszaállítás",
"fc_remove": "Kitörlés",
"fc_remove_sharedfolder": "Eltávolitás",
"fc_empty": "Kuka kiürítése",
"fc_prop": "Tulajdonságok",
"fc_hashtag": "Címkék",
"settingsButton": "Beállítások",
"login_username": "Felhasználónév",
"login_password": "Jelszó",
"register_header": "Regisztrálás",
"register_cancel": "Mégse",
"settings_cat_account": "Fiók",
"settings_cat_drive": "Drive",
"settings_cat_code": "Kód",
"settings_cat_subscription": "Feliratkozás",
"settings_title": "Beállitások",
"settings_save": "Mentés",
"settings_restore": "Helyreállítás",
"settings_resetButton": "Eltávolitás",
"settings_resetTipsAction": "Visszaállítás",
"settings_resetTips": "Tippek",
"settings_resetThumbnailsAction": "Törlés",
"settings_autostoreYes": "Automatikus",
"settings_userFeedbackTitle": "Visszajelzés",
"upload_cancelled": "Megszakított",
"upload_size": "Méret",
"download_mt_button": "Letöltése",
"download_dl": "Letöltés",
"download_step1": "Letöltés",
"download_step2": "Visszatitkósitás",
"todo_title": "CryptTodo",
"mdToolbar_help": "Segítség",
"mdToolbar_bold": "Vastag",
"mdToolbar_italic": "Döltbető",
"mdToolbar_strikethrough": "Áthúzott",
"mdToolbar_link": "Link",
"mdToolbar_quote": "Idézés",
"mdToolbar_code": "Kód",
"about": "Rólunk",
"features_anon": "Vendég",
"features_registered": "Regisztrált",
"features_premium": "Premium",
"edit": "Szerkesztés",
"view": "Megtekintés",
"fm_deletedPads": "Ezek a dokumentumok már nem léteznek a szerveren, eltávolításra kerültek a CryptDrive-ról: {0}",
"fc_collapseAll": "Minden bezárása",
"register_warning": "Figyelmeztetés",
"mdToolbar_tutorial": "https://www.markdowntutorial.com/",
"fm_info_owned": "Ön a tulajdonosa az itt megjelenített dokumentumoknak. Ez azt jelenti, hogy bármikor véglegesen eltávolíthatja őket a szerverről. Ha ezt megteszi, más felhasználók többé nem férhetnek hozzá hozzájuk.",
"fm_moveNestedSF": "Egy megosztott mappát nem helyezhet el egy másik mappán belül. A {0} mappa nem lett áthelyezve.",
"fm_passwordProtected": "Jelszóvédett",
"fc_newsharedfolder": "Új megosztott mappa",
"settings_cat_cursor": "Egérmutató",
"settings_thumbnails": "Előnézet",
"settings_import": "Importálás",
"upload_pending": "Függöben lévő",
"upload_up": "Feltöltés",
"features_f_subscribe": "Feliratkozás"
}

View File

@ -879,7 +879,7 @@
"team_inviteButton": "Invita membri",
"owner_request": "{0} propone tu sia proprietario/a di <b>{1}</b>",
"team_cat_general": "Informazioni",
"properties_passwordWarning": "La password è stata modificata con successo ma non è stato possibile aggiornare il tuo CryptDrive con i nuovi dati. Potrebbe essere necessario rimuovere la vecchia versione del documento manualmente. Premi OK per ricaricare e aggiornare i tuoi diritti d'accesso.",
"properties_passwordWarning": "La password è stata modificata con successo ma non è stato possibile aggiornare il tuo CryptDrive con i nuovi dati. Potrebbe essere necessario rimuovere la vecchia versione del documento manualmente.<br>Premi OK per ricaricare e aggiornare i tuoi diritti d'accesso.",
"share_embedCategory": "Incorpora",
"chrome68": "Sembra tu stia usando il browser Chrome o Chromium versione 68. Questa versione contiene un errore che fa sì che la pagina diventi completamente bianca dopo alcuni secondi o che la pagina non risponda ai clic. Per risolvere il problema puoi passare ad un'altra scheda e poi tornare a questa, oppure puoi provare a scorrere la pagina. Questo problema sarà risolto nella prossima versione del tuo browser.",
"crowdfunding_popup_text": "<h3>Abbiamo bisogno del tuo aiuto!</h3>Per garantire lo sviluppo attivo di CryptPad, valuta di sostenere il progetto tramite la nostra pagina Open Collective, dove potrai vedere il nostro <b>Cronoprogramma</b> e gli <b>obiettivi di finanziamento</b>.",

View File

@ -4,19 +4,19 @@
"pad": "Pad",
"code": "Kod",
"poll": "Balot",
"slide": "Prezentacja Markdown",
"slide": "Slajdy Markdown",
"contacts": "Kontakty",
"file": "Plik",
"kanban": "Kanban",
"presentation": "Prezentacja",
"doc": "Dokument",
"form": "Formularz",
"teams": "Grupy",
"teams": "Zespoły",
"sheet": "Arkusz",
"todo": "Do zrobienia",
"media": "Media",
"whiteboard": "Tablica",
"drive": "CryptDrive",
"drive": "Dysk",
"diagram": "Diagram"
},
"disconnected": "Rozłączony",
@ -55,7 +55,7 @@
"upgradeAccount": "Ulepsz swoje konto",
"upgrade": "Ulepsz",
"language": "Język",
"userlist_offline": "Jesteś w trybie offline, lista użytkowników nie jest dostępna.",
"userlist_offline": "Nie masz obecnie dostępu do internetu, lista użytkowników nie jest dostępna.",
"errorState": "Błąd krytyczny: {0}",
"forgotten": "Przeniesiono do kosza",
"initializing": "Inicjalizacja...",
@ -63,7 +63,7 @@
"realtime_unrecoverableError": "Wystąpił nieodwracalny błąd. Wciśnij OK, aby odświeżyć stronę.",
"disabledApp": "Ta aplikacja nie jest dostępna. Skontaktuj się z administratorem, aby uzyskać więcej informacji.",
"mustLogin": "Musisz być zalogowany/a aby otrzymać dostęp do tej strony",
"deletedFromServer": "Dokument zniszczony",
"deletedFromServer": "Dokument został zniszczony",
"deleted": "Usunięto",
"saved": "Zapisano",
"error": "Błąd",
@ -74,8 +74,8 @@
"invalidHashError": "Dokument, który chcesz zobaczyć ma błędny adres URL.",
"chainpadError": "Podczas aktualizacji zawartości wystąpił krytyczny błąd. Dokument wyświetlany jest w trybie tylko do odczytu, aby umożliwić zachowanie wyników pracy.<br>Wciśnij klawisz Esc aby wyświetlić dokument lub odśwież stronę, by spróbować wrócić do trybu edycji.",
"inactiveError": "Ten dokument został usunięty z powodu braku aktywności. Wciśnij klawisz Esc, aby stworzyć nowy dokument.",
"deletedError": "Ten dokument został usunięty i nie jest już dostępny.",
"expiredError": "Ten dokument został zniszczony i nie jest już dostępny.",
"deletedError": "Dokument został usunięty i nie jest już dostępny.",
"expiredError": "Dokument wygasł i nie jest już dostępny.",
"anonymousStoreDisabled": "Administrator tej instancji wyłączył zapisywanie danych dla niezalogowanych użytkowników. Zaloguj się, aby otrzymać dostęp do aplikacji.",
"padNotPinnedVariable": "Dokument zostanie usunięty po {4} dniach braku aktywności, {0}zaloguj się{1} lub {2}zarejestruj{3} aby go zachować.",
"padNotPinned": "Ten dokument zostanie usunięty po 3 miesiącach braku aktywności, {0}zaloguj się{1} lub {2}zarejestruj{3} aby go zachować.",
@ -357,7 +357,7 @@
"settings_cat_pad": "Tekst sformatowany",
"settings_cat_code": "Kod",
"settings_cat_cursor": "Kursor",
"settings_cat_drive": "CryptDrive",
"settings_cat_drive": "Dysk",
"settings_cat_account": "Konto",
"register_emailWarning3": "Jeśli to rozumiesz i chcesz używać swojego adresu e-mail jako nazwy użytkownika, kliknij OK.",
"register_emailWarning2": "Nie będziesz mógł zresetować swojego hasła za pomocą swojego e-maila, tak jak można to zrobić w przypadku innych usług.",
@ -438,14 +438,14 @@
"support_close": "Zamknij zgłoszenie",
"support_answer": "Odpowiedz",
"support_listHint": "Oto lista zgłoszeń wysłanych do administratorów i ich odpowiedzi. Zamknięte zgłoszenie nie może być ponownie otwarte, ale możesz utworzyć nowe. Możesz ukryć zgłoszenia, które zostały zamknięte.",
"support_listTitle": "Zgłoszenia wsparcia technicznego",
"support_listTitle": "Zgłoszenia pomocy technicznej",
"support_cat_tickets": "Aktualne zgłoszenia",
"support_formMessage": "Wpisz swoją wiadomość…",
"support_formContentError": "Błąd: treść jest pusta",
"support_formTitleError": "Błąd: tytuł jest pusty",
"support_formButton": "Wyślij",
"support_formHint": "Użyj tego formularza, aby bezpiecznie skontaktować się z administratorami.<br>Proszę zauważyć, że niektóre kwestie/pytania mogą być już poruszone w <a>Podręczniku użytkownika programu CryptPad</a>. Prosimy nie tworzyć nowego zgłoszenia, jeśli masz już otwarte zgłoszenie dotyczące tego samego problemu. Zamiast tego odpowiedz na oryginalną wiadomość, podając dodatkowe informacje.",
"support_formTitle": "Nowe zgłoszenie",
"support_formTitle": "Nowe Zgłoszenie",
"support_cat_new": "Nowe zgłoszenie",
"support_disabledHint": "Ta instancja CryptPad nie jest jeszcze skonfigurowana do korzystania z formularza pomocy technicznej.",
"support_disabledTitle": "Wsparcie nie jest włączone",
@ -457,8 +457,8 @@
"admin_supportAddKey": "Dodaj klucz prywatny",
"admin_supportInitPrivate": "Twoja instancja CryptPad ma skonfigurowany adres wsparcia technicznego, ale Twoje konto nie ma poprawnego klucza prywatnego, aby uzyskać do niej dostęp. Użyj poniższego formularza, aby dodać lub zaktualizować klucz prywatny do swojego konta.",
"admin_supportInitHelp": "Twój serwer nie jest jeszcze skonfigurowany do używania skrzynki pocztowej służącej do udzielania pomocy technicznej. Jeśli chcesz, aby skrzynka pocztowa służąca do udzielania pomocy technicznej otrzymywała wiadomości od Twoich użytkowników, powinieneś poprosić administratora serwera o uruchomienie skryptu znajdującego się w \"./scripts/generate-admin-keys.js\", a następnie zapisanie klucza publicznego w pliku \"config.js\" i przesłanie Ci klucza prywatnego.",
"admin_cat_support": "Pomoc",
"supportPage": "Pomoc",
"admin_cat_support": "Wsparcie",
"supportPage": "Wsparcie",
"fm_info_sharedFolderHistory": "To jest tylko historia Twojego folderu współdzielonego: <b>{0}</b><br>Twój CryptDrive pozostanie w trybie tylko do odczytu podczas nawigacji.",
"notifications_dismiss": "Odrzuć",
"share_withFriends": "Udostępnij",
@ -499,7 +499,7 @@
"contact_devHint": "Na prośby o funkcje, poprawę użyteczności lub podziękowania.",
"contact_dev": "Skontaktuj się z twórcami",
"contact_adminHint": "W przypadku jakichkolwiek problemów związanych z kontem użytkownika, limitem pamięci lub dostępnością usługi.\n",
"contact_admin": "Skontaktuj się z administratorami w celu: {0}",
"contact_admin": "Skontaktuj się z administratorami: {0}",
"footer_donate": "Przekaż darowiznę",
"admin_flushCacheDone": "Pamięć podręczna wyczyszczona pomyślnie",
"admin_flushCacheButton": "Wyczyść pamięć podręczną",
@ -516,7 +516,7 @@
"admin_activeSessionsHint": "Liczba aktywnych połączeń websocket (i połączonych unikalnych adresów IP)",
"admin_activeSessionsTitle": "Aktywne połączenia",
"adminPage": "Administracja",
"admin_cat_stats": "Statystyka",
"admin_cat_stats": "Statystyki",
"admin_cat_general": "Ogólne",
"admin_authError": "Tylko administratorzy mogą mieć dostęp do tej strony",
"fm_expirablePad": "Traci ważność: {0}",
@ -558,7 +558,7 @@
"share_linkCopy": "Kopiuj link",
"share_linkOpen": "Otwórz link",
"share_linkPresent": "Obecny",
"share_linkView": "Pokaż",
"share_linkView": "Podgląd",
"share_linkEdit": "Edytuj",
"share_linkAccess": "Prawa dostępu do danych",
"share_linkCategory": "Link",
@ -642,7 +642,7 @@
"about": "O stronie",
"main_catch_phrase": "Pakiet do współpracy<br>end-to-end szyfrowany i oparty na otwartym kodzie źródłowym",
"home_host": "To jest niezależna wersja społecznościowa CryptPada.",
"mdToolbar_toc": "Spis treści",
"mdToolbar_toc": "Spis Treści",
"mdToolbar_code": "Kod",
"mdToolbar_check": "Lista zadań",
"mdToolbar_list": "Lista punktowana",
@ -843,7 +843,7 @@
"form_type_md": "Opis",
"form_sort_hint": "Proszę przeciągnąć te pozycje od najbardziej (1) do najmniej ({0}) preferowanych.",
"form_type_sort": "Lista uporządkowana",
"form_type_poll": "Sonda",
"form_type_poll": "Ankieta",
"form_type_multiradio": "Macierz wyboru",
"form_type_multicheck": "Macierz pól wyboru",
"form_type_checkbox": "Pole wyboru",
@ -963,8 +963,8 @@
"pad_settings_width_large": "Pełna szerokość",
"pad_settings_width_small": "Tryb strony",
"pad_settings_info": "Domyślne ustawienia dla tego dokumentu. Zostaną one zastosowane, gdy nowi użytkownicy będą odwiedzać ten dokument.",
"pad_settings_title": "Ustawienia dokumentu",
"settings_colorthemeTitle": "Motyw kolorystyczny",
"pad_settings_title": "Ustawienia Dokumentu",
"settings_colorthemeTitle": "Kolor motywu",
"settings_colorthemeHint": "Zmień kolory CryptPada na tym urządzeniu.",
"settings_colortheme_default": "Domyślne ustawienie systemowe ({0})",
"settings_colortheme_light": "Jasny",
@ -993,8 +993,8 @@
"offlineError": "Nie można zsynchronizować najnowszych danych, ta strona nie może zostać wyświetlona w tej chwili. Ładowanie będzie kontynuowane po przywróceniu połączenia z serwisem.",
"share_noContactsOffline": "Jesteś obecnie w trybie offline. Kontakty nie są dostępne.",
"access_offline": "Jesteś obecnie w trybie offline. Zarządzanie dostępem nie jest dostępne.",
"admin_support_last": "Zaktualizowany w dniu: ",
"admin_support_first": "Utworzony w dniu: ",
"admin_support_last": "Zaktualizowano: ",
"admin_support_first": "Utworzono: ",
"admin_support_collapse": "Zwiń",
"admin_support_open": "Pokaż",
"admin_support_closed": "Zamknięte zgłoszenia:",
@ -1005,7 +1005,7 @@
"history_trimPrompt": "Ten dokument ma zapisaną {0} historię, która może spowolnić czas ładowania. Rozważ usunięcie historii, jeśli nie jest ona potrzebna.",
"mediatag_loadButton": "Wczytaj załącznik",
"settings_mediatagSizeHint": "Maksymalny rozmiar w megabajtach (MB) dla automatycznie ładowanych elementów multimedialnych (obrazy, wideo, pdf) osadzonych w dokumentach. Elementy większe niż podany rozmiar mogą zostać załadowane ręcznie. Użyj \"-1\", aby zawsze ładować elementy multimedialne automatycznie.",
"settings_mediatagSizeTitle": "Automatyczny limit pobierania",
"settings_mediatagSizeTitle": "Automatyczny limit pobrań",
"mediatag_notReady": "Proszę dokończyć pobieranie",
"pad_mediatagOpen": "Otwórz plik",
"pad_mediatagShare": "Udostępnij plik",
@ -1014,11 +1014,11 @@
"download_zip_file": "Plik {0}/{1}",
"download_zip": "Tworzenie pliku ZIP…",
"fileTableHeader": "Pobrane i przesłane dane",
"allowNotifications": "Zezwól na powiadomienia",
"archivedFromServer": "Zarchiwizowany dokument",
"allowNotifications": "Wszystkie powiadomienia",
"archivedFromServer": "Dokument zarchiwizowany",
"restoredFromServer": "Przywrócony dokument",
"admin_archiveInput2": "Hasło do dokumentu",
"admin_archiveInput": "Adres URL dokumentu",
"admin_archiveInput2": "Hasło dokumentu",
"admin_archiveInput": "URL dokumentu",
"admin_unarchiveButton": "Przywróc",
"admin_unarchiveHint": "Przywróć dokument, który został wcześniej zarchiwizowany",
"admin_archiveButton": "Archiwizuj",
@ -1058,10 +1058,10 @@
"admin_defaultlimitTitle": "Maksymalny limit przechowywania danych (MB)",
"admin_registrationTitle": "Zamknij rejestrację",
"admin_registrationHint": "Nie zezwalaj nowym użytkownikom na rejestrację",
"snapshots_cantMake": "Nie można utworzyć zrzutu obrazu. Jesteś rozłączony.",
"snapshots_notFound": "Ten zrzut obrazu już nie istnieje, ponieważ historia tego dokumentu została usunięta.",
"snapshot_error_exists": "Istnieje już zrzut tej wersji",
"snapshots_ooPickVersion": "Przed utworzeniem zrzutu obrazu należy wybrać wersję",
"snapshots_cantMake": "Nie można utworzyć obrazu. Jesteś rozłączony.",
"snapshots_notFound": "Ten obraz już nie istnieje, ponieważ historia tego dokumentu została usunięta.",
"snapshot_error_exists": "Istnieje już obraz tej wersji",
"snapshots_ooPickVersion": "Przed utworzeniem obrazu należy wybrać wersję",
"oo_version": "Wersja: ",
"oo_version_latest": "Najnowsza",
"snapshots_delete": "Usuń",
@ -1069,10 +1069,10 @@
"snapshots_close": "Zamknij",
"snapshots_restore": "Przywróć",
"snapshots_open": "Otwórz",
"snapshots_placeholder": "Tytuł zrzutu obrazu",
"snapshots_new": "Nowy zrzut obrazu",
"snapshots_button": "Zrzuty obrazów",
"snaphot_title": "Zrzut obrazu",
"snapshots_placeholder": "Nazwa obrazu",
"snapshots_new": "Nowy obraz",
"snapshots_button": "Obrazy dokumentu",
"snaphot_title": "Obraz dokumentu",
"infobar_versionHash": "Obecnie przeglądasz poprzednią wersję tego dokumentu ({0}).",
"history_restoreDriveDone": "CryptDrive przywrócony",
"history_restoreDrivePrompt": "Czy na pewno chcesz zastąpić aktualną wersję CryptDrive wyświetloną wersją?",
@ -1198,7 +1198,7 @@
"form_answerWarning": "Niepotwierdzona tożsamość",
"form_answerName": "Odpowiedź od {0} na {1}",
"form_backButton": "Wstecz",
"form_viewButton": "Pokaż",
"form_viewButton": "Podgląd",
"form_answerAnonymous": "Odpowiedź anonimowa w dniu {0}",
"form_showSummary": "Pokaż podsumowanie",
"form_showIndividual": "Pokaż poszczególne odpowiedzi",
@ -1433,7 +1433,7 @@
"admin_noticeTitle": "Ogłoszenie na stronie głównej",
"admin_noticeHint": "Opcjonalny komunikat wyświetlany na stronie głównej",
"ui_true": "prawda",
"admin_usersTitle": "Katalog Użytkownika",
"admin_usersTitle": "Katalog użytkowników",
"home_location": "Zaszyfrowane dane znajdują się w {0}",
"home_morestorage": "By uzyskać więcej miejsca:",
"register_instance": "Tworzenie nowego konta na {0}",
@ -1452,7 +1452,7 @@
"admin_documentSize": "Rozmiar dokumentu",
"admin_documentMetadata": "Aktualne metadane",
"admin_documentCreationTime": "Stworzono",
"admin_channelArchived": "Zarchiwizowano",
"admin_channelArchived": "Archiwalny",
"admin_documentMetadataPlaceholder": "ID lub adres URL dokumentu",
"admin_currentlyOnline": "Obecnie dostępni",
"admin_storageUsage": "Przechowywane dane",
@ -1464,7 +1464,7 @@
"admin_planlimit": "Limit pamięci",
"admin_getRawMetadata": "Historia metadanych",
"og_teamDrive": "Dysk grupowy",
"admin_cat_users": "Katalog Użytkownika",
"admin_cat_users": "Katalog użytkowników",
"admin_archiveReason": "Podaj powód archiwizacji i potwierdź, że chcesz kontynuować",
"admin_accountMetadataPlaceholder": "ID Użytkownika (klucz publiczny)",
"footer_website": "Strona Projektu",
@ -1482,7 +1482,7 @@
"admin_planName": "Nazwa planu",
"admin_note": "Adnotacja planu",
"admin_archiveBlock": "Zarchiwizuj segment",
"admin_restoreBlock": "Przywróć segment",
"admin_restoreBlock": "Przywróć archiwalny segment",
"og_login": "Zaloguj się do {0}",
"og_register": "Zarejestruj konto w {0}",
"og_contact": "{0} Kontakt",
@ -1491,10 +1491,10 @@
"ui_jsRequired": "JavaScript musi być włączony, aby wykonać szyfrowanie w przeglądarce",
"og_encryptedAppType": "Zaszyfrowany {0}",
"admin_documentConflict": "Zarchiwizuj/przywróć",
"admin_conflictExplanation": "Istnieją dwie wersje tego dokumentu. Przywrócenie zarchiwizowanej wersji spowoduje nadpisanie obecnej wersji. Archiwizacja obecnej wersji spowoduje nadpisanie wersji zarchiwizowanej. Nie będzie możliwe cofnięcie żadnej z tych czynności.",
"admin_conflictExplanation": "Istnieją dwie wersje tego dokumentu. Przywrócenie wersji archiwalnej spowoduje nadpisanie obecnej. Archiwizacja obecnej wersji spowoduje nadpisanie archiwalnej. Nie będzie możliwe cofnięcie żadnej z tych czynności.",
"fm_filterBy": "Filtr",
"fm_rmFilter": "Wyłącz filtr",
"calendar_rec": "Powtórz",
"calendar_rec": "Powtarzaj",
"calendar_rec_no": "Raz",
"calendar_rec_daily": "Codziennie",
"calendar_rec_stop": "Zatrzymaj powtarzanie",
@ -1504,16 +1504,16 @@
"calendar_rec_edit_from": "Edytuj przyszłe wydarzenia",
"calendar_rec_edit_one": "Edytuj tylko to wydarzenie",
"calendar_rec_weekend": "Codziennie w weekendy",
"calendar_rec_updated": "Zasada zmieniona w {0}",
"calendar_rec_updated": "Zasada zmieniona {0}",
"calendar_rec_yearly": "Raz na rok, w {2}",
"admin_blockAvailable": "Segment dostępny",
"admin_blockArchived": "Segment zarchiwizowany",
"admin_blockArchived": "Segment został zarchiwizowany",
"admin_firstPinTime": "Data najstarszej pinezki",
"admin_lastPinTime": "Data najnowszej pinezki",
"admin_pinLogAvailable": "Dostępny log pinezek",
"admin_pinLogArchived": "Log pinezek jest zarchiwizowany",
"admin_pinLogArchived": "Log pinezek został zarchiwizowany",
"admin_getPinList": "Lista obecnych pinezek",
"og_default": "CryptPad: end-to-end szyfrowany pakiet narzędzi do współpracy",
"og_default": "CryptPad: szyfrowany end-to-end pakiet narzędzi do współpracy",
"calendar_rec_edit": "Powtarzające się wydarzenie",
"calendar_str_filter_day": "Dni: {0}",
"calendar_rec_weekdays": "Codziennie w weekendy",
@ -1588,7 +1588,7 @@
"duplicate": "Duplikat",
"mfa_revoke_label": "Aby wyłączyć 2FA, na początku wprowadź swoje hasło",
"mfa_revoke_button": "Potwierdź wyłączenie 2FA",
"team_nameAlreadySet": "Zespół już nazywa się {0}",
"team_nameAlreadySet": "{0} jest już nazwą zespołu",
"selectLanguage": "Wybierz język",
"dph_reason": "Powód: {0}",
"dph_sf_destroyed_team": "Folder współdzielony <b>{0}</b> na dysku zespołowym <b>{1}</b> został zniszczony przez właściciela",
@ -1642,11 +1642,11 @@
"recovery_mfa_error": "Nieznany błąd. Odśwież i spróbuj ponownie.",
"recovery_mfa_disabled": "Uwierzytelnianie dwuetapowe jest już wyłączone dla tego konta.",
"recovery_mfa_secret_ph": "Kod odzyskiwania",
"admin_invitationTitle": "Linki do zaproszeń",
"admin_invitationCreate": "Stwórz link do zaproszenia",
"admin_invitationEmail": "Adres email użytkownika",
"admin_invitationTitle": "Zaproszenia",
"admin_invitationCreate": "Stwórz zaproszenie",
"admin_invitationEmail": "Email użytkownika",
"admin_usersRemove": "Usuń",
"register_invalidToken": "Link zaproszenia jest nieprawidłowy",
"register_invalidToken": "Zaproszenie jest nieprawidłowe",
"label_logo": "Logo CryptPad",
"recovery_mfa_secret": "Wprowadź swój kod odzyskiwania aby wyłączyć 2FA dla swojego konta:",
"login_notFilledUser": "Wprowadź nazwę użytkownika",
@ -1668,12 +1668,12 @@
"loading_recover": "Nie możesz zdobyć kodu? <a href=\"/recovery/\">Przywróć swoje konto</a>",
"goLeft": "Lewo",
"ssoauth_header": "Hasło CryptPad",
"ssoauth_form_hint_login": "Wprowadź swoje konto CryptPad",
"ssoauth_form_hint_login": "Wprowadź swoje hasło CryptPad",
"kanban_showTags": "Wszystkie tagi",
"kanban_hideTags": "Mniej tagów",
"admin_forcemfaTitle": "Wymagaj Uwierzytelniania Dwuetapowego",
"admin_forcemfaHint": "Wszyscy użytkownicy tej instancji zostaną poproszeni o skonfigurowanie uwierzytelniania dwuetapowego, aby zalogować się do swojego konta.",
"support_recordedContent": "Zawartość",
"support_recordedContent": "Treść",
"support_legacyDump": "Wyeksportuj wszystko",
"support_legacyClear": "Usuń to konto",
"mfa_disable": "Wyłącz 2FA",
@ -1690,5 +1690,78 @@
"recovery_forgot_text": "Skopiuj następujące informacje i <a href=\"mailto:{0}\">prześlij je</a> administratorom swojej instancji",
"goRight": "Prawo",
"loading_mfa_required": "Uwierzytelnianie dwuetapowe jest wymagane na tej instancji. Uaktualnij swoje kono z użyciem aplikacji uwierzytelniającej i poniższego formularza.",
"admin_invitationLink": "Link do zaproszenia"
"admin_invitationLink": "Zaproszenie",
"admin_registrationSsoTitle": "Zamknij rejestrację SSO",
"admin_usersAdd": "Dodaj istniejącego użytkownika",
"admin_storeInvitedLabel": "Automatycznie dodaj zaproszonych użytkowników",
"admin_usersRemoveConfirm": "Czy na pewno chcesz usunąć użytkownika z katalogu? Nadal będą mieć dostęp do i będą w stanie używać swojego konta.",
"ssoauth_form_hint_register": "Dodaj hasło CryptPad aby zwiększyć poziom zabezpieczenia, lub pozostaw puste i kontynuuj. Jeśli nie dodasz hasła, klucze chroniące Twoje dane będą dostępne dla administratorów instancji.",
"label_viewMode": "Włącz tryb podglądu",
"team_nameTooLong": "Zbyt długa nazwa zespołu (maks. 50 znaków)",
"context_menu": "Akcje folderów",
"admin_accountReport": "Raport archiwizacji konta",
"admin_accountReportFull": "Pobierz raport szczegółowy",
"admin_channelPlaceholder": "Zastępstwo zniszczonego dokumentu",
"status": "Status strony",
"admin_diskUsageWarning": "Uwaga! W zależności od ilości danych przechowywanych w tej instancji, wygenerowanie raportu może pochłonąć całą pamięć dostępną na serwerze i spowodować awarię.",
"calendar_rec_change": "Przenoszenie powtarzającego się wydarzenia do innego kalendarza. Zmiana może zostać zrobiona tylko dla tego wydarzenia, lub dla wszystkich jego powtórzeń.",
"calendar_rec_change_first": "Przenoszenie pierwszego powtarzającego się wydarzenia do innego kalendarza. Powtórzenia również zostaną przeniesione.",
"admin_cat_security": "Bezpieczeństwo",
"admin_cat_customize": "Dostosuj",
"admin_colorTitle": "Kolor akcentu",
"admin_logoTitle": "Własne logo",
"admin_supportAdd": "Dodaj kontakt do zespołu pomocy technicznej",
"admin_logoHint": "SVG, PNG lub JPG, maksymalny rozmiar 200KB",
"admin_logoButton": "Prześlij nowe",
"admin_logoRemoveButton": "Przywróć domyślne",
"admin_colorHint": "Zmień kolor akcentu Twojej instancji CryptPad. Dopilnuj, żeby tekst i przyciski były czytelne i posiadały wystarczający kontrast zarówno dla jasnego jak i ciemnego motywu.",
"admin_colorCurrent": "Obecny kolor akcentu",
"admin_colorChange": "Zmień kolor",
"admin_colorPick": "Wybierz kolor",
"admin_colorPreview": "Podgląd koloru",
"admin_supportSetupTitle": "Inicjalizuj pomoc",
"admin_supportEnabled": "System pomocy jest włączony.",
"admin_supportConfirm": "Jesteś pewien? Usuniesz wszystkie istniejące zgłoszenia i zablokujesz dostęp wszystkim moderatorom.",
"admin_supportDisabled": "System pomocy jest wyłączony.",
"admin_supportDelete": "Wyłącz pomoc",
"admin_supportMembers": "Zespół pomocy technicznej",
"support_cat_search": "Szukaj",
"support_cat_settings": "Ustawienia",
"support_cat_closed": "Zamknięte",
"support_cat_open": "Skrzynka odbiorcza",
"support_openTicketTitle": "Otwórz zgłoszenie dla użytkownika",
"support_cat_legacy": "Poprzednie",
"support_pending": "Zgłoszenia archiwalne:",
"support_pending_tag": "Archiwalne",
"support_active_tag": "Skrzynka odbiorcza",
"support_closed_tag": "Zamknięte",
"support_privacyTitle": "Odpowiedz anonimowo",
"support_privacyHint": "Zaznacz tę opcję żeby odpowiedzieć jako 'Zespół Pomocy Technicznej' zamiast własną nazwą użytkownika",
"support_notificationsTitle": "Wyłącz powiadomienia",
"support_userChannel": "ID kanału powiadomień użytkownika",
"support_openTicketHint": "Skopiuj dane użytkownika odbiorcy z ich profilu lub z istniejącego zgłoszenia. Otrzymają powiadomienie o wiadomości.",
"support_recordedId": "ID formatki (unikalny)",
"support_userKey": "Klucz publiczny użytkownika",
"support_invalChan": "Nieprawidłowy kanał powiadomień",
"support_recordedTitle": "Formatki",
"admin_supportTeamTitle": "Zarządzaj zespołem pomocy technicznej",
"admin_supportTeamHint": "Dodaj lub usuń osoby z zespołu pomocy technicznej tej instancji",
"support_pasteUserData": "Wklej tu dane użytkownika",
"support_legacyButton": "Pokaż aktywne zgłoszenia",
"support_recordedHint": "Zdefiniuj często używane fragmenty tekstu, które będzie można potem wstawić do wiadomości jednym kliknięciem.",
"support_recordedEmpty": "Brak formatek",
"support_legacyTitle": "Zobacz stare dane pomocy",
"support_searchLabel": "Znajdź (tytuł lub ID zgłoszenia)",
"support_legacyHint": "Zobacz zgłoszenia z poprzedniego systemu pomocy technicznej i odtwórz je w nowym.",
"admin_supportOpen": "Otwórz helpdesk",
"admin_supportInit": "Inicjalizuj helpdesk na tej instancji",
"moderationPage": "Helpdesk",
"support_userNotification": "Nowe zgłoszenie lub odpowiedź: {0}",
"admin_invitationHint": "Każde zaproszenie stworzy jedno konto, nawet jeśli rejestracja jest zamknięta. Nazwa użytkownika i email są wyłącznie poglądowe. CryptPad nie wyśle zaproszenia (czy czegokolwiek innego) mailem, skopiuj link i prześlij go za pomocą wybranego bezpiecznego kanału.",
"admin_storeSsoLabel": "Automatycznie dodaj użytkowników SSO",
"admin_usersBlock": "URL bloku logowania użytkownika (opcjonalne)",
"admin_usersHint": "Lista znanych Ci kont na tej instancji. Zaznacz poniżej aby dodać konta automatycznie, lub wprowadź informacje ręcznie za pomocą formularza.",
"admin_supportSetupHint": "Stwórz lub aktualizuj klucze pomocy.",
"admin_supportRotateNotify": "Uwaga: nowe klucze zostały wygenerowane, ale nieoczekiwany błąd nie pozwolił systemowi wysłać ich moderatorom. Usuń i dodaj ponownie członków zespołu",
"support_notificationsHint": "Zaznacz tę opcję, żeby wyłączyć powiadomienia o nowych zgłoszeniach i odpowiedziach"
}