Merge branch 'staging' of github.com:xwiki-labs/cryptpad into staging

pull/1/head
yflory 4 years ago
commit afae952f64

@ -84,6 +84,11 @@ Otherwise, to update from 4.1.0 to 4.2.0:
* add support for strict mode * add support for strict mode
* supports undo/redo * supports undo/redo
* [#195](https://github.com/xwiki-labs/cryptpad/issues/195) * [#195](https://github.com/xwiki-labs/cryptpad/issues/195)
* fix kanban import
* file upload
* warn before attempting to upload a file that is too large
* [#682](https://github.com/xwiki-labs/cryptpad/issues/682)
* disallow upload outside of the documents section of drives
# 4.1.0 (B) # 4.1.0 (B)

@ -25,7 +25,7 @@ define([
].join(''); ].join('');
var built = false; var built = false;
var types = ['less', 'drive', 'migrate', 'sf', 'team', 'pad', 'end']; var types = ['less', 'drive', 'migrate', 'sf', 'team', 'pad', 'end']; // Msg.loading_state_0, loading_state_1, loading_state_2, loading_state_3, loading_state_4, loading_state_5
var current, progress; var current, progress;
var makeList = function (data) { var makeList = function (data) {
var c = types.indexOf(data.type); var c = types.indexOf(data.type);

@ -13,7 +13,7 @@ var ignoreLines = function (source, pattern) {
}; };
var GENERATED_PATTERNS = [ var GENERATED_PATTERNS = [
/(admin|settings)_.*(Hint|Title|Button)/, /(team|admin|settings|support)_.*(Hint|Title|Button)/,
/settings_colortheme/, /settings_colortheme/,
/loading_(state|drive|pad)_/, /loading_(state|drive|pad)_/,
/(admin|notifications|support|team|settings)_cat_/, /(admin|notifications|support|team|settings)_cat_/,
@ -28,7 +28,10 @@ var isPossiblyGenerated = function (key) {
var grep = function (pattern, cb) { var grep = function (pattern, cb) {
var exclude = [ var exclude = [
'www/common/translations/*', 'www/common/translations/*',
'www/common/onlyoffice/*', 'www/common/onlyoffice/v1/*',
'www/common/onlyoffice/v2b*',
'www/common/onlyoffice/x2t/*',
//'www/common/onlyoffice/build/*',
'www/lib/*', 'www/lib/*',
'www/common/pdfjs/*', 'www/common/pdfjs/*',
'*.css', '*.css',
@ -75,7 +78,7 @@ var grep = function (pattern, cb) {
if (/data\-localization/.test(stdout)) { if (/data\-localization/.test(stdout)) {
return cb(void 0, true, "DATA_LOCALIZATION", stdout); return cb(void 0, true, "DATA_LOCALIZATION", stdout);
} }
if (/(Messages|Msg|messages)\./.test(stdout)) { if (/(Messages|Msg|messages)\./.test(stdout) || /(footLink|footerCol)/.test(stdout)) {
return cb(void 0, false); return cb(void 0, false);
} }

@ -273,7 +273,7 @@ define([
return $div; return $div;
}; };
var getPrettySize = function (bytes) { var getPrettySize = function (bytes) { // XXX duplicate of UIElements.prettySize ?
var unit = Util.magnitudeOfBytes(bytes); var unit = Util.magnitudeOfBytes(bytes);
var value = unit === 'GB' ? Util.bytesToGigabytes(bytes) : Util.bytesToMegabytes(bytes); var value = unit === 'GB' ? Util.bytesToGigabytes(bytes) : Util.bytesToMegabytes(bytes);
return unit === 'GB' ? Messages._getKey('formattedGB', [value]) return unit === 'GB' ? Messages._getKey('formattedGB', [value])

@ -35,9 +35,9 @@ define([
UIElements.prettySize = function (bytes) { UIElements.prettySize = function (bytes) {
var kB = Util.bytesToKilobytes(bytes); var kB = Util.bytesToKilobytes(bytes);
if (kB < 1024) { return kB + Messages.KB; } if (kB < 1024) { return kB + Messages.KB; } // XXX replace with Msg.formattedKB ?
var mB = Util.bytesToMegabytes(bytes); var mB = Util.bytesToMegabytes(bytes);
return mB + Messages.MB; return mB + Messages.MB; // XXX replace with Msg.formattedMB
}; };
UIElements.updateTags = function (common, hrefs) { UIElements.updateTags = function (common, hrefs) {
@ -911,18 +911,22 @@ define([
}; };
var actions = { var actions = {
'bold': { 'bold': {
// Msg.mdToolbar_bold
expr: '**{0}**', expr: '**{0}**',
icon: 'fa-bold' icon: 'fa-bold'
}, },
'italic': { 'italic': {
// Msg.mdToolbar_italic
expr: '_{0}_', expr: '_{0}_',
icon: 'fa-italic' icon: 'fa-italic'
}, },
'strikethrough': { 'strikethrough': {
// Msg.mdToolbar_strikethrough
expr: '~~{0}~~', expr: '~~{0}~~',
icon: 'fa-strikethrough' icon: 'fa-strikethrough'
}, },
'heading': { 'heading': {
// Msg.mdToolbar_heading
apply: function (str) { apply: function (str) {
return '\n'+clean(str).split('\n').map(function (line) { return '\n'+clean(str).split('\n').map(function (line) {
return '# '+line; return '# '+line;
@ -931,10 +935,12 @@ define([
icon: 'fa-header' icon: 'fa-header'
}, },
'link': { 'link': {
// Msg.mdToolbar_link
expr: '[{0}](http://)', expr: '[{0}](http://)',
icon: 'fa-link' icon: 'fa-link'
}, },
'quote': { 'quote': {
// Msg.mdToolbar_quote
apply: function (str) { apply: function (str) {
return '\n\n'+str.split('\n').map(function (line) { return '\n\n'+str.split('\n').map(function (line) {
return '> '+line; return '> '+line;
@ -943,6 +949,7 @@ define([
icon: 'fa-quote-right' icon: 'fa-quote-right'
}, },
'nlist': { 'nlist': {
// Msg.mdToolbar_nlist
apply: function (str) { apply: function (str) {
return '\n'+clean(str).split('\n').map(function (line) { return '\n'+clean(str).split('\n').map(function (line) {
return '1. '+line; return '1. '+line;
@ -951,6 +958,7 @@ define([
icon: 'fa-list-ol' icon: 'fa-list-ol'
}, },
'list': { 'list': {
// Msg.mdToolbar_list
apply: function (str) { apply: function (str) {
return '\n'+clean(str).split('\n').map(function (line) { return '\n'+clean(str).split('\n').map(function (line) {
return '* '+line; return '* '+line;
@ -959,6 +967,7 @@ define([
icon: 'fa-list-ul' icon: 'fa-list-ul'
}, },
'check': { 'check': {
// Msg.mdToolbar_check
apply: function (str) { apply: function (str) {
return '\n' + clean(str).split('\n').map(function (line) { return '\n' + clean(str).split('\n').map(function (line) {
return '* [ ] ' + line; return '* [ ] ' + line;
@ -967,6 +976,7 @@ define([
icon: 'fa-check-square-o' icon: 'fa-check-square-o'
}, },
'code': { 'code': {
// Msg.mdToolbar_code
apply: function (str) { apply: function (str) {
if (str.indexOf('\n') !== -1) { if (str.indexOf('\n') !== -1) {
return '\n```\n' + clean(str) + '\n```\n'; return '\n```\n' + clean(str) + '\n```\n';
@ -976,6 +986,7 @@ define([
icon: 'fa-code' icon: 'fa-code'
}, },
'toc': { 'toc': {
// Msg.mdToolbar_toc
expr: '[TOC]', expr: '[TOC]',
icon: 'fa-newspaper-o' icon: 'fa-newspaper-o'
} }

@ -272,7 +272,7 @@
else if (bytes >= oneMegabyte) { return 'MB'; } else if (bytes >= oneMegabyte) { return 'MB'; }
}; };
Util.getPrettySize = function (bytes, Messages) { Util.getPrettySize = function (bytes, Messages) { // XXX not used anywhere?
var unit = Util.magnitudeOfBytes(bytes); var unit = Util.magnitudeOfBytes(bytes);
if (unit === 'GB') { if (unit === 'GB') {
return Messages._getKey('formattedGB', [Util.bytesToGigabytes(bytes)]); return Messages._getKey('formattedGB', [Util.bytesToGigabytes(bytes)]);

@ -310,18 +310,18 @@ define([
cache: cache cache: cache
}; };
var filesData = data.sharedFolderId && ctx.sf[data.sharedFolderId] ? ctx.sf[data.sharedFolderId].filesData : ctx.data.filesData; var filesData = data.sharedFolderId && ctx.sf[data.sharedFolderId] ? ctx.sf[data.sharedFolderId].filesData : ctx.data.filesData;
progress('reading', -1); progress('reading', -1); // Msg.settings_export_reading
nThen(function (waitFor) { nThen(function (waitFor) {
ctx.waitFor = waitFor; ctx.waitFor = waitFor;
var zipRoot = ctx.zip.folder(data.name || Messages.fm_rootName); var zipRoot = ctx.zip.folder(data.name || Messages.fm_rootName);
makeFolder(ctx, ctx.folder || ctx.data.root, zipRoot, filesData); makeFolder(ctx, ctx.folder || ctx.data.root, zipRoot, filesData);
progress('download', {}); progress('download', {}); // Msg.settings_export_download
}).nThen(function () { }).nThen(function () {
console.log(ctx.zip); console.log(ctx.zip);
console.log(ctx.errors); console.log(ctx.errors);
progress('compressing', -1); progress('compressing', -1); // Msg.settings_export_compressing
ctx.zip.generateAsync({type: 'blob'}).then(function (content) { ctx.zip.generateAsync({type: 'blob'}).then(function (content) {
progress('done', -1); progress('done', -1); // Msg.settings_export_done
cb(content, ctx.errors); cb(content, ctx.errors);
}); });
}); });

@ -86,9 +86,9 @@ define([
var content = data.content; var content = data.content;
var msg = content.msg; var msg = content.msg;
var type = Hash.parsePadUrl(msg.content.href).type; var type = Hash.parsePadUrl(msg.content.href).type;
var key = type === 'drive' ? 'notification_folderShared' : var key = type === 'drive' ? 'notification_folderShared' : // Msg.notification_folderSharedTeam
(type === 'file' ? 'notification_fileShared' : (type === 'file' ? 'notification_fileShared' : // Msg.notification_fileSharedTeam
'notification_padShared'); 'notification_padShared'); // Msg.notification_padSharedTeam
var teamNotification = /^team-/.test(data.type) && Number(data.type.slice(5)); var teamNotification = /^team-/.test(data.type) && Number(data.type.slice(5));
var teamName = ''; var teamName = '';
@ -220,7 +220,7 @@ define([
var name = Util.fixHTML(msg.content.user.displayName) || Messages.anonymous; var name = Util.fixHTML(msg.content.user.displayName) || Messages.anonymous;
var title = Util.fixHTML(msg.content.title); var title = Util.fixHTML(msg.content.title);
content.getFormatText = function() { content.getFormatText = function() {
return Messages._getKey('owner_request', [name, title]); return Messages._getKey('owner_request', [name, title]); // Msg.owner_request_accepted, .owner_request_declined
}; };
// Check authenticity // Check authenticity
@ -260,7 +260,7 @@ define([
// Display the notification // Display the notification
var name = Util.fixHTML(msg.content.user.displayName) || Messages.anonymous; var name = Util.fixHTML(msg.content.user.displayName) || Messages.anonymous;
var title = Util.fixHTML(msg.content.title); var title = Util.fixHTML(msg.content.title);
var key = 'owner_removed' + (msg.content.pending ? 'Pending' : ''); var key = 'owner_removed' + (msg.content.pending ? 'Pending' : ''); // Msg.owner_removed, owner_removedPending
content.getFormatText = function() { content.getFormatText = function() {
return Messages._getKey(key, [name, title]); return Messages._getKey(key, [name, title]);
}; };
@ -311,7 +311,7 @@ define([
var name = Util.fixHTML(msg.content.user.displayName) || Messages.anonymous; var name = Util.fixHTML(msg.content.user.displayName) || Messages.anonymous;
var teamName = Util.fixHTML(Util.find(msg, ['content', 'team', 'metadata', 'name'])  || '') || var teamName = Util.fixHTML(Util.find(msg, ['content', 'team', 'metadata', 'name'])  || '') ||
Util.fixHTML(Util.find(msg, ['content', 'teamName'])); Util.fixHTML(Util.find(msg, ['content', 'teamName']));
var key = 'team_' + (msg.content.answer ? 'accept' : 'decline') + 'Invitation'; var key = 'team_' + (msg.content.answer ? 'accept' : 'decline') + 'Invitation'; // Msg.team_acceptInvitation, team_declineInvitation
content.getFormatText = function() { content.getFormatText = function() {
return Messages._getKey(key, [name, teamName]); return Messages._getKey(key, [name, teamName]);
}; };

@ -940,9 +940,9 @@ MessengerUI, Messages) {
var todo = function (e, overLimit) { var todo = function (e, overLimit) {
if (e) { return void console.error("Unable to get the pinned usage", e); } if (e) { return void console.error("Unable to get the pinned usage", e); }
if (overLimit) { if (overLimit) {
var key = 'pinLimitReachedAlert'; var key = 'pinLimitReachedAlert'; // Msg.pinLimitReachedAlert
if (!ApiConfig.allowSubscriptions) { if (!ApiConfig.allowSubscriptions) {
key = 'pinLimitReachedAlertNoAccounts'; key = 'pinLimitReachedAlertNoAccounts'; // Msg.pinLimitReachedAlertNoAccounts
} }
$limit.show().click(function () { $limit.show().click(function () {
UI.alert(Messages._getKey(key, [encodeURIComponent(l.hostname)]), null, true); UI.alert(Messages._getKey(key, [encodeURIComponent(l.hostname)]), null, true);

@ -50,7 +50,6 @@
"initializing": "Inicialitzant...", "initializing": "Inicialitzant...",
"forgotten": "Desplaçat a la brossa", "forgotten": "Desplaçat a la brossa",
"errorState": "Error crític: {0}", "errorState": "Error crític: {0}",
"lag": "Latència",
"readonly": "Només de lectura", "readonly": "Només de lectura",
"anonymous": "Anònim", "anonymous": "Anònim",
"users": "Persones usuàries", "users": "Persones usuàries",
@ -488,7 +487,6 @@
"upload_up": "Carrega", "upload_up": "Carrega",
"download_mt_button": "Descarrega", "download_mt_button": "Descarrega",
"home_host": "Aquesta és una instància comunitària independent de CryptPad. El codi font està disponible<a href=\"https://github.com/xwiki-labs/cryptpad\" target=\"_blank\" rel=\"noreferrer noopener\">a GitHub</a>.", "home_host": "Aquesta és una instància comunitària independent de CryptPad. El codi font està disponible<a href=\"https://github.com/xwiki-labs/cryptpad\" target=\"_blank\" rel=\"noreferrer noopener\">a GitHub</a>.",
"home_product": "CryptPad és una alternativa, respectuosa amb la privacitat, a les utilitats d'oficina i els serveis al núvol. Tot el contingut desat a CryptPad es xifra abans de ser enviat, això vol dir que ningú pot accedir a les vostres dades sense que li doneu les claus (fins i tot nosaltres).",
"mdToolbar_toc": "Taula de continguts", "mdToolbar_toc": "Taula de continguts",
"mdToolbar_code": "Codi", "mdToolbar_code": "Codi",
"mdToolbar_check": "Llista de tasques", "mdToolbar_check": "Llista de tasques",

@ -48,7 +48,6 @@
"initializing": "Starten...", "initializing": "Starten...",
"forgotten": "In den Papierkorb verschoben", "forgotten": "In den Papierkorb verschoben",
"errorState": "Kritischer Fehler: {0}", "errorState": "Kritischer Fehler: {0}",
"lag": "Verzögerung",
"readonly": "schreibgeschützt", "readonly": "schreibgeschützt",
"anonymous": "Anonym", "anonymous": "Anonym",
"users": "Nutzer", "users": "Nutzer",
@ -486,7 +485,6 @@
"mdToolbar_list": "Aufzählung", "mdToolbar_list": "Aufzählung",
"mdToolbar_check": "Aufgabenliste", "mdToolbar_check": "Aufgabenliste",
"mdToolbar_code": "Code", "mdToolbar_code": "Code",
"home_product": "CryptPad ist eine Alternative mit eingebautem Datenschutz zu verbreiteten Office- und Clouddiensten. Mit CryptPad wird der gesamte Inhalt verschlüsselt, bevor er an den Server gesendet wird. Das bedeutet, dass keiner auf den Inhalt zugreifen kann, es sei denn du gibst die Schlüssel weiter. Selbst wir haben diesen Zugriff nicht.",
"home_host": "Dies ist eine unabhängige Installation der CrypPad-Software.", "home_host": "Dies ist eine unabhängige Installation der CrypPad-Software.",
"main_catch_phrase": "Suite zur Zusammenarbeit,<br>verschlüsselt und quelloffen", "main_catch_phrase": "Suite zur Zusammenarbeit,<br>verschlüsselt und quelloffen",
"footer_aboutUs": "Über uns", "footer_aboutUs": "Über uns",

@ -32,7 +32,6 @@
"initializing": "Γίνεται προετοιμασία...", "initializing": "Γίνεται προετοιμασία...",
"forgotten": "Μετακινήθηκε στον κάδο ανακύκλωσης", "forgotten": "Μετακινήθηκε στον κάδο ανακύκλωσης",
"errorState": "Κρίσιμο σφάλμα: {0}", "errorState": "Κρίσιμο σφάλμα: {0}",
"lag": "Αργή σύνδεση",
"readonly": "Λειτουργία ανάγνωσης μόνο", "readonly": "Λειτουργία ανάγνωσης μόνο",
"anonymous": "Ανώνυμος/η", "anonymous": "Ανώνυμος/η",
"users": "Χρήστες", "users": "Χρήστες",

@ -18,7 +18,6 @@
"disconnected": "Desconectado", "disconnected": "Desconectado",
"synchronizing": "Sincronizando", "synchronizing": "Sincronizando",
"reconnecting": "Reconectando", "reconnecting": "Reconectando",
"lag": "Retraso",
"readonly": "Sólo lectura", "readonly": "Sólo lectura",
"anonymous": "Anónimo", "anonymous": "Anónimo",
"users": "Usuarios", "users": "Usuarios",
@ -559,7 +558,6 @@
"mdToolbar_check": "Lista de tarea", "mdToolbar_check": "Lista de tarea",
"mdToolbar_code": "Código", "mdToolbar_code": "Código",
"mdToolbar_toc": "Tablas de contenidos", "mdToolbar_toc": "Tablas de contenidos",
"home_product": "CryptPad es una alternativa privada por diseño a las populares herramientas de oficina y servicios en la nube. Todo el contenido almacenado en CryptPad está encriptado antes de ser enviado, lo que significa que nadie puede acceder a sus datos a menos que usted les dé las claves (ni siquiera nosotros).",
"home_host": "Esta es una instancia de comunidad independiente de CryptPad. Su código fuente está disponible <a href=\"https://github.com/xwiki-labs/cryptpad\" target=\"_blank\" rel=\"noreferrer noopener\"> en GitHub </a>.", "home_host": "Esta es una instancia de comunidad independiente de CryptPad. Su código fuente está disponible <a href=\"https://github.com/xwiki-labs/cryptpad\" target=\"_blank\" rel=\"noreferrer noopener\"> en GitHub </a>.",
"whatis_title": "¿Que es CryptPad?", "whatis_title": "¿Que es CryptPad?",
"whatis_collaboration": "Colaboración fácil y rápida", "whatis_collaboration": "Colaboración fácil y rápida",

@ -51,7 +51,6 @@
"initializing": "Valmistellaan...", "initializing": "Valmistellaan...",
"forgotten": "Siirretty roskakoriin", "forgotten": "Siirretty roskakoriin",
"errorState": "Vakava virhe: {0}", "errorState": "Vakava virhe: {0}",
"lag": "Viive",
"readonly": "Vain luku", "readonly": "Vain luku",
"anonymous": "Anonyymi", "anonymous": "Anonyymi",
"users": "Käyttäjät", "users": "Käyttäjät",
@ -508,7 +507,6 @@
"mdToolbar_check": "Tehtävälista", "mdToolbar_check": "Tehtävälista",
"mdToolbar_code": "Koodi", "mdToolbar_code": "Koodi",
"mdToolbar_toc": "Sisällysluettelo", "mdToolbar_toc": "Sisällysluettelo",
"home_product": "CryptPad on sisäänrakennetun tietosuojan periaatteen mukainen vaihtoehto suosituille toimisto-ohjelmistoille ja pilvipalveluille. Kaikki CryptPadiin tallennettavat tiedot salataan ennen palvelimelle lähettämistä. Kukaan (emme edes me) ei voi päästä tietoihisi ilman avaimiasi.",
"home_host": "Tämä on itsenäinen yhteisön ylläpitämä Cryptpad-instanssi.", "home_host": "Tämä on itsenäinen yhteisön ylläpitämä Cryptpad-instanssi.",
"main_catch_phrase": "Avoimen lähdekoodin salattu kollaboraatioalusta", "main_catch_phrase": "Avoimen lähdekoodin salattu kollaboraatioalusta",
"footer_aboutUs": "Tietoa meistä", "footer_aboutUs": "Tietoa meistä",

@ -49,7 +49,6 @@
"initializing": "Initialisation...", "initializing": "Initialisation...",
"forgotten": "Déplacé vers la corbeille", "forgotten": "Déplacé vers la corbeille",
"errorState": "Erreur critique : {0}", "errorState": "Erreur critique : {0}",
"lag": "Latence",
"readonly": "Lecture seule", "readonly": "Lecture seule",
"anonymous": "Anonyme", "anonymous": "Anonyme",
"users": "Utilisateurs", "users": "Utilisateurs",
@ -493,7 +492,6 @@
"mdToolbar_list": "Liste à puces", "mdToolbar_list": "Liste à puces",
"mdToolbar_check": "Liste de tâches", "mdToolbar_check": "Liste de tâches",
"mdToolbar_code": "Code", "mdToolbar_code": "Code",
"home_product": "CryptPad est une alternative respectant la vie privée aux outils office et aux services cloud populaires. Tout le contenu stocké dans CryptPad est chiffré avant d'être envoyé, ce qui signifie que personne ne peut accéder à vos données à moins que vous ne leur donniez les clés (même pas nous).",
"home_host": "Ceci est une instance communautaire et indépendante de CryptPad.", "home_host": "Ceci est une instance communautaire et indépendante de CryptPad.",
"main_catch_phrase": "Outils collaboratifs,<br>chiffrés et open source", "main_catch_phrase": "Outils collaboratifs,<br>chiffrés et open source",
"footer_aboutUs": "À propos", "footer_aboutUs": "À propos",

@ -50,7 +50,6 @@
"initializing": "Inizializzazione in corso...", "initializing": "Inizializzazione in corso...",
"forgotten": "Spostato nel cestino", "forgotten": "Spostato nel cestino",
"errorState": "Errore critico: {0}", "errorState": "Errore critico: {0}",
"lag": "Latenza",
"readonly": "Sola lettura", "readonly": "Sola lettura",
"anonymous": "Anonimo", "anonymous": "Anonimo",
"users": "Utenti", "users": "Utenti",
@ -574,7 +573,6 @@
"whatis_collaboration": "Collaborazione veloce, facile", "whatis_collaboration": "Collaborazione veloce, facile",
"terms": "Condizioni del servizio", "terms": "Condizioni del servizio",
"main_catch_phrase": "Il cloud Zero Knowledge", "main_catch_phrase": "Il cloud Zero Knowledge",
"home_product": "CryptPad è un'alternativa ai comuni strumenti office e cloud rispettosa della privacy. Tutti i contenuti immagazzinati in CryptPad sono crittografati prima di essere spediti, ciò significa che nessuno può accedere ai tuoi dati a meno che tu non gli dia la chiave (nemmeno noi).",
"mdToolbar_check": "Elenco delle attività", "mdToolbar_check": "Elenco delle attività",
"mdToolbar_heading": "Titolo", "mdToolbar_heading": "Titolo",
"mdToolbar_strikethrough": "Barrato", "mdToolbar_strikethrough": "Barrato",

@ -51,7 +51,6 @@
"initializing": "Initializing...", "initializing": "Initializing...",
"forgotten": "Moved to the trash", "forgotten": "Moved to the trash",
"errorState": "Critical error: {0}", "errorState": "Critical error: {0}",
"lag": "Lag",
"readonly": "Read only", "readonly": "Read only",
"anonymous": "Anonymous", "anonymous": "Anonymous",
"users": "Users", "users": "Users",
@ -508,7 +507,6 @@
"mdToolbar_check": "Task list", "mdToolbar_check": "Task list",
"mdToolbar_code": "Code", "mdToolbar_code": "Code",
"mdToolbar_toc": "Table of Contents", "mdToolbar_toc": "Table of Contents",
"home_product": "CryptPad is a private-by-design alternative to popular office tools and cloud services. All the content stored on CryptPad is encrypted before being sent, which means nobody can access your data unless you give them the keys (not even us).",
"home_host": "This is an independent community instance of CryptPad.", "home_host": "This is an independent community instance of CryptPad.",
"main_catch_phrase": "Collaboration suite,<br>encrypted and open-source", "main_catch_phrase": "Collaboration suite,<br>encrypted and open-source",
"footer_aboutUs": "About us", "footer_aboutUs": "About us",

@ -46,7 +46,6 @@
"initializing": "Setter i gang…", "initializing": "Setter i gang…",
"forgotten": "Flytta til papirkurven", "forgotten": "Flytta til papirkurven",
"errorState": "Kritisk feil: {0}", "errorState": "Kritisk feil: {0}",
"lag": "Treighet",
"readonly": "Skrivebeskyttet", "readonly": "Skrivebeskyttet",
"anonymous": "Anonym", "anonymous": "Anonym",
"users": "Brukere", "users": "Brukere",

@ -144,7 +144,6 @@
"users": "Gebruikers", "users": "Gebruikers",
"anonymous": "Anoniem", "anonymous": "Anoniem",
"readonly": "Alleen-lezen", "readonly": "Alleen-lezen",
"lag": "Vertraging",
"errorState": "Kritieke fout: {0}", "errorState": "Kritieke fout: {0}",
"forgotten": "Verplaatst naar de prullenbak", "forgotten": "Verplaatst naar de prullenbak",
"initializing": "Bezig met initialiseren...", "initializing": "Bezig met initialiseren...",

@ -13,7 +13,6 @@
"disconnected": "Rozłączony", "disconnected": "Rozłączony",
"synchronizing": "Synchronizacja", "synchronizing": "Synchronizacja",
"reconnecting": "Wznawianie połączenia...", "reconnecting": "Wznawianie połączenia...",
"lag": "Lag",
"readonly": "Tylko do odczytu", "readonly": "Tylko do odczytu",
"anonymous": "Anonimowy", "anonymous": "Anonimowy",
"users": "Użytkownicy", "users": "Użytkownicy",

@ -30,7 +30,6 @@
"disconnected": "Desconectado", "disconnected": "Desconectado",
"synchronizing": "Sincronizando", "synchronizing": "Sincronizando",
"reconnecting": "Reconectando...", "reconnecting": "Reconectando...",
"lag": "Lag",
"readonly": "Somente leitura", "readonly": "Somente leitura",
"anonymous": "Anonimo", "anonymous": "Anonimo",
"users": "Usuários", "users": "Usuários",

@ -15,7 +15,6 @@
"disconnected": "Deconectat", "disconnected": "Deconectat",
"synchronizing": "Se sincronizează", "synchronizing": "Se sincronizează",
"reconnecting": "Reconectare...", "reconnecting": "Reconectare...",
"lag": "Decalaj",
"readonly": "Mod citire", "readonly": "Mod citire",
"anonymous": "Anonim", "anonymous": "Anonim",
"users": "Utilizatori", "users": "Utilizatori",

@ -49,7 +49,6 @@
"initializing": "Инициализация...", "initializing": "Инициализация...",
"forgotten": "Удалено в корзину", "forgotten": "Удалено в корзину",
"errorState": "Критическая ошибка: {0}", "errorState": "Критическая ошибка: {0}",
"lag": "Задержка",
"readonly": "Только для чтения", "readonly": "Только для чтения",
"anonymous": "Анонимный", "anonymous": "Анонимный",
"users": "Пользователи", "users": "Пользователи",
@ -652,7 +651,6 @@
"topbar_whatIsCryptpad": "Что такое CryptPad", "topbar_whatIsCryptpad": "Что такое CryptPad",
"blog": "Блог", "blog": "Блог",
"contact": "Контакты", "contact": "Контакты",
"home_product": "CryptPad это конфиденциальная альтернатива популярным офисным инструментам и облачным сервисам. Вся информация, хранимая в CryptPad, шифруется до отправки на сервер, и никто (даже мы) не сможет получить доступ к ней, пока вы не предоставите ключ для расшифровки.",
"privacy": "Политика конфиденциальности", "privacy": "Политика конфиденциальности",
"footer_aboutUs": "О нас", "footer_aboutUs": "О нас",
"home_host": "Это независимый общественный сервер CryptPad.", "home_host": "Это независимый общественный сервер CryptPad.",

@ -54,7 +54,6 @@
"colorButtonTitle": "Ändra textfärgen i presentationsläge", "colorButtonTitle": "Ändra textfärgen i presentationsläge",
"useTemplateCancel": "Starta tomt (Esc)", "useTemplateCancel": "Starta tomt (Esc)",
"pinLimitReachedAlert": "Du har nått din lagringsgräns. Nya dokument kommer inte lagras i din CryptDrive.<br>Du kan antingen ta bort dokument från din CryptDrive eller <a href=\"https://accounts.cryptpad.fr/#!on={0}\" target=\"_blank\">eller prenumerera på premium</a> för att öka din lagringsgräns.", "pinLimitReachedAlert": "Du har nått din lagringsgräns. Nya dokument kommer inte lagras i din CryptDrive.<br>Du kan antingen ta bort dokument från din CryptDrive eller <a href=\"https://accounts.cryptpad.fr/#!on={0}\" target=\"_blank\">eller prenumerera på premium</a> för att öka din lagringsgräns.",
"lag": "Fördröjning",
"anonymousStoreDisabled": "Administratören för denna CryptPad-instans har avaktiverat anonyma användare. Du måste logga in för att kunna använda CryptDrive.", "anonymousStoreDisabled": "Administratören för denna CryptPad-instans har avaktiverat anonyma användare. Du måste logga in för att kunna använda CryptDrive.",
"common_connectionLost": "<b>Serveranslutning tappad</b><br>Du är nu i skrivskyddat läge tills anslutningen är tillbaka.", "common_connectionLost": "<b>Serveranslutning tappad</b><br>Du är nu i skrivskyddat läge tills anslutningen är tillbaka.",
"button_newcode": "Nytt kod-dokument", "button_newcode": "Nytt kod-dokument",

@ -30,7 +30,6 @@
"disconnected": "已斷線", "disconnected": "已斷線",
"synchronizing": "同步中", "synchronizing": "同步中",
"reconnecting": "重新連結...", "reconnecting": "重新連結...",
"lag": "Lag",
"readonly": "唯讀", "readonly": "唯讀",
"anonymous": "匿名", "anonymous": "匿名",
"users": "用戶", "users": "用戶",

Loading…
Cancel
Save