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

pull/1/head
yflory 4 years ago
commit 43a02e5312

@ -1,3 +1,52 @@
# 4.0.0 (A)
We're very happy to introduce CryptPad v4.0!
This release is the culmination of a great deal of work over the last year, in which we searched for the right metaphors and imagery to clearly represent what CryptPad is all about. We've reworked our logo, color theme, text on our static pages, and the icons throughout the platform to convey the calm and safety we want our users to feel.
Our release schedule typically follows an alphabetical naming scheme, ranging from A for the first (or zero-th) release of the cycle to Z for the last, with a thematic name for each letter. In the rush of preparing translations and double-checking all of our changes we never found time to settle on a theme for this release, but we do find there's some value in maintaining the otherwise arbitrary rhythm we've followed all this time. The progression through the alphabet gives a sense of pace to what can otherwise seem like a endless stream of problems that need solving, and the end of the alphabet prompts us to build towards major milestones like this one.
With that in mind, you can expect 25 more major releases in this cycle before version 5.0, roughly every three weeks or so depending on circumstances.
## Goals
The main intent of this release was to deploy our `rebrand` branch which had been in development for some time. Along the way we also made notable improvements to the sheet editor which will be mentioned below.
## Update notes
In the process of redesigning the platform we started using some new features of the LESS CSS pre-processor language that were not supported by the version of lesshint that we were using to scan for errors. We've updated that dev dependency to a newer version (4.5.0 => 6.3.7) which introduced a rather large number of minor dependencies. These are only used during development, not by the server itself, so this is unlikely to have any impact on the software itself.
Otherwise, this release includes lots of changes to the platform's style sheets and static pages. If you've applied heavy customizations to your instance you might notice errors due to incompatibilities with your local changes. We recommend that you test your customizations against the latest release locally before updating a public instance to avoid service outages.
To update from 3.25.1 to 4.0.0:
1. Stop your server
2. Get the latest code from the 4.0.0 tag
3. Install the latest dependencies with `bower update` and `npm i`
4. Restart your server
## Features
* We've built a new version of the web-assembly code used to convert between OnlyOffice's internal representation of spreadsheet data and standard formats like XLSX, ODS, and CSV. We've also improved the ability to print whole sheets and selections in the UI. This still depends on the host browser's support of the required web APIs, but it should work in common browsers except maybe Safari and Internet Explorer.
* We found that certain issues reported via the built-in support ticket system were not easy to debug without knowing the id of the user's drive. Support tickets now include a `driveChannel` attribute to simplify this process.
* We've added a variety of settings for the control of how your browser uses a local database to speed up loading times and display cached versions of documents even when disconnected from our server. These are available in the "confidentiality" section of the settings page (https://cryptpad.fr/settings/#security).
Finally, the "rebrand" part of this release:
* Our home page features our new logo, a cleaner layout, new text (notably dropping the use of "zero-knowledge" from our explanation), new app icons, softer colors, neater fonts, and a custom illustration of a document shredder that hints at how CryptPad works.
* We no longer include a FAQ page with each instance, and instead link to relevant parts of our dedicated documentation platform (https://docs.cryptpad.fr) from any place that previously referenced the FAQ. This will make it easier for translators to focus on text for the platform's interface if they wish. An updated Frequently Asked Questions will be added to the documentation in the near future.
* Each of our editors now features a dedicated favicon to make it easier to distinguish different CryptPad tabs in your browser.
* The contact page now points to _Element_ instead of Riot, since the Matrix team rebranded in the last while as well.
* The "pricing" or "features" page (features.html) reads the server's configured storage limits from a server endpoint and displays them, rather than hardcoding the default values in the text.
* There is now a custom illustration of a person swallowing a key on the registration page to convey that CryptPad admins cannot restore access to documents if users lose or forget their credentials. This is underscored by highlights to the explanatory text displayed to the left of the form.
* Our loading screen now features a much simpler color scheme instead of the vibrant blue blocks. This is part of an effort to pave the way for a _dark theme_ that we hope to introduce very soon.
* Lastly, we've added a number of semantic cues in various places to improve the experience of users that rely on screen-readers. There's still a lot to do in this regard, but this big rewrite was a good opportunity to review some easy pain-points to alleviate.
## Bug fixes
* We found andd fixed a regression in the slide app which caused newly created documents to be initialized without a title.
* Thanks to a helpful user-report we were able to identify an issue in our rich text editor's _comments_ system that prevented iOS users from typing.
# ZyzomysPedunculatus' revenge (3.25.1)
This minor release is primarily intended to fix some minor issues that were introduced or detected following our 3.25.0 release, but it also includes some major improvements that we want to test and stabilize before our upcoming 4.0.0 release.

@ -100,7 +100,7 @@
transition: none;
.fa, .cptools {
margin-right: 0.2em;
margin-right: 5px;
}
.cptools {
vertical-align: middle;

@ -1,22 +0,0 @@
```javascript
CryptPad_AsyncStore.rpc.send('ADMIN',
['GET_WORKER_PROFILES'],
(e, _o) => {
var o = _o[0];
// console.log(o[0])
var sorted = Object.keys(o).sort(function (a, b) {
if (o[b] - o[a] <= 0) { return -1; }
return 1;
});
var x = {};
//console.log(sorted);
var total = 0;
sorted.forEach(function (k) { total += o[k]; });
sorted.forEach(function (k) {
console.log("[%s] %ss running time (%s%)", k, o[k], Math.floor((o[k] / total) * 100));
});
}
)
```

@ -5,6 +5,7 @@ const getFolderSize = require("get-folder-size");
const Util = require("../common-util");
const Ulimit = require("ulimit");
const Decrees = require("../decrees");
const Pinning = require("./pin-rpc");
var Fs = require("fs");
@ -324,6 +325,13 @@ var getLimits = function (Env, Server, cb) {
cb(void 0, Env.limits);
};
// CryptPad_AsyncStore.rpc.send('ADMIN', ['GET_USER_TOTAL_SIZE', "CrufexqXcY/z+eKJlEbNELVy5Sb7E/EAAEFI8GnEtZ0="], console.log)
var getUserTotalSize = function (Env, Server, cb, data) {
var signingKey = Array.isArray(data) && data[1];
if (typeof(signingKey) !== 'string' || signingKey.length < 44) { return void cb("EINVAL"); } // FIXME use a standard check for this
Pinning.getTotalSize(Env, signingKey, cb);
};
var commands = {
ACTIVE_SESSIONS: getActiveSessions,
ACTIVE_PADS: getActiveChannelCount,
@ -349,6 +357,7 @@ var commands = {
GET_LIMITS: getLimits,
SET_LAST_EVICTION: setLastEviction,
GET_WORKER_PROFILES: getWorkerProfiles,
GET_USER_TOTAL_SIZE: getUserTotalSize,
};
Admin.command = function (Env, safeKey, data, _cb, Server) {

@ -639,7 +639,15 @@ const handleGetHistory = function (Env, Server, seq, userId, parsed) {
Server.send(userId, [0, HISTORY_KEEPER_ID, 'MSG', userId, JSON.stringify(msg)], readMore);
}, (err) => {
if (err && err.code !== 'ENOENT') {
if (err.message !== 'EINVAL') { Log.error("HK_GET_HISTORY", {
if (err.message === "EUNKNOWN") {
Log.error("HK_GET_HISTORY", {
channel: channelName,
lastKnownHash: lastKnownHash,
userId: userId,
sessions: Object.keys(HK.getNetfluxSession(Env, userId) || {}),
err: err && err.message || err,
});
} else if (err.message !== 'EINVAL') { Log.error("HK_GET_HISTORY", {
channel: channelName,
err: err && err.message || err,
stack: err && err.stack,

@ -167,6 +167,13 @@
}
}
table#cp-performance-table {
td, th {
padding: 5px;
border: 1px solid #222;
}
}
input.cp-admin-inval {
border-color: red !important;
}

@ -62,6 +62,9 @@ define([
'support': [
'cp-admin-support-list',
'cp-admin-support-init'
],
'performance': [
'cp-admin-performance-profiling',
]
};
@ -852,6 +855,62 @@ define([
return;
};
Messages.admin_cat_performance = "Performance"; // XXX admin
Messages.admin_performanceProfilingHint = "Measure the running time of various server tasks by type"; // XXX admin
Messages.admin_performanceProfilingTitle = "Performance"; // XXX admin
Messages.admin_performanceKeyHeading = 'KEY'; // XXX admin
Messages.admin_performanceTimeHeading = 'Time (seconds)'; // XXX admin
Messages.admin_performancePercentHeading = '%'; // XXX admin
create['performance-profiling'] = function () {
var $div = makeBlock('performance-profiling');
var body = h('tbody');
var table = h('table#cp-performance-table', [
h('thead', [
h('th', Messages.admin_performanceKeyHeading),
h('th', Messages.admin_performanceTimeHeading),
h('th', Messages.admin_performancePercentHeading),
]),
body,
]);
$div.append(table);
var appendRow = function (key, time, percent) {
console.log("[%s] %ss running time (%s%)", key, time, percent);
body.appendChild(h('tr', [ key, time, percent ].map(function (x) {
return h('td', x);
})));
};
var process = function (_o) {
var o = _o[0];
var sorted = Object.keys(o).sort(function (a, b) {
if (o[b] - o[a] <= 0) { return -1; }
return 1;
});
var total = 0;
sorted.forEach(function (k) { total += o[k]; });
sorted.forEach(function (k) {
var percent = Math.floor((o[k] / total) * 1000) / 10;
appendRow(k, o[k], percent);
});
};
sFrameChan.query('Q_ADMIN_RPC', {
cmd: 'GET_WORKER_PROFILES',
}, function (e, data) {
if (e) { return void console.error(e); }
//console.info(data);
process(data);
});
return $div;
};
var hideCategories = function () {
APP.$rightside.find('> div').hide();
};
@ -861,6 +920,15 @@ define([
APP.$rightside.find('.'+c).show();
});
};
var SIDEBAR_ICONS = {
general: 'fa fa-user-o',
stats: 'fa fa-line-chart',
quota: 'fa fa-hdd-o',
support: 'fa fa-life-ring',
performance: 'fa fa-heartbeat',
};
var createLeftside = function () {
var $categories = $('<div>', {'class': 'cp-sidebarlayout-categories'})
.appendTo(APP.$leftside);
@ -873,10 +941,10 @@ define([
common.setHash(active);
Object.keys(categories).forEach(function (key) {
var $category = $('<div>', {'class': 'cp-sidebarlayout-category'}).appendTo($categories);
if (key === 'general') { $category.append($('<span>', {'class': 'fa fa-user-o'})); }
if (key === 'stats') { $category.append($('<span>', {'class': 'fa fa-line-chart'})); }
if (key === 'quota') { $category.append($('<span>', {'class': 'fa fa-hdd-o'})); }
if (key === 'support') { $category.append($('<span>', {'class': 'fa fa-life-ring'})); }
var iconClass = SIDEBAR_ICONS[key];
if (iconClass) {
$category.append($('<span>', {'class': iconClass}));
}
if (key === active) {
$category.addClass('cp-leftside-active');

@ -43,7 +43,7 @@
"saved": "Tallennettu",
"synced": "Kaikki on tallennettu",
"deleted": "Poistettu",
"deletedFromServer": "Padi poistettu palvelimelta",
"deletedFromServer": "Asiakirja tuhottu",
"mustLogin": "Kirjaudu sisään käyttääksesi tätä sivua",
"disabledApp": "Tämä sovellus on poistettu käytöstä. Saadaksesi lisätietoja ota yhteyttä tämän CryptPad-instanssin ylläpitäjään.",
"realtime_unrecoverableError": "Tapahtui peruuttamaton virhe. Paina OK ladataksesi uudelleen.",
@ -422,17 +422,17 @@
"login_invalUser": "Käyttäjänimi vaaditaan",
"login_invalPass": "Salasana vaaditaan",
"login_unhandledError": "Tapahtui odottamaton virhe :(",
"register_importRecent": "Tuo padeja anonyymistä sessiosta",
"register_importRecent": "Tuo rekisteröitymättömänä luodut asiakirjat CryptDriveen",
"register_acceptTerms": "Hyväksyn <a href='/terms.html' tabindex='-1'>käyttöehdot</a>",
"register_passwordsDontMatch": "Salasanat eivät täsmää!",
"register_passwordTooShort": "Salasanan täytyy olla vähintään {0} merkkiä pitkä.",
"register_mustAcceptTerms": "Sinun täytyy hyväksyä käyttöehdot.",
"register_mustRememberPass": "Emme voi nollata salasanaasi, jos unohdat sen. On erittäin tärkeää, että muistat sen! Ole hyvä ja laita rasti valintaruutuun vahvistaaksesi.",
"register_whyRegister": "Miksi rekisteröityminen kannattaa?",
"register_header": "Tervetuloa CryptPadiin",
"register_header": "Rekisteröidy",
"register_writtenPassword": "Olen kirjoittanut ylös käyttäjätunnukseni ja salasanani, jatka",
"register_cancel": "Takaisin",
"register_warning": "Nollatietoperiaate tarkoittaa, ettemme voi palauttaa tietojasi, jos hävität salasanasi.",
"register_cancel": "Peruuta",
"register_warning": ".<i class='fa fa-warning'></i> Varoitus",
"register_alreadyRegistered": "Tämä käyttäjä on jo olemassa, haluatko kirjautua sisään?",
"register_emailWarning0": "Näyttää siltä, että lähetit sähköpostiosoitteesi käyttäjätunnuksenasi.",
"register_emailWarning1": "Voit halutessasi tehdä niin, mutta sitä ei lähetetä palvelimellemme.",
@ -570,7 +570,7 @@
"upload_notEnoughSpace": "CryptDrivessasi ei ole tarpeeksi vapaata tallennustilaa tälle tiedostolle.",
"upload_notEnoughSpaceBrief": "Tallennustila ei riitä",
"upload_tooLarge": "Tiedoston koko ylittää suurimman käyttäjätilillesi sallitun latauskoon.",
"upload_tooLargeBrief": "Liian suuri tiedosto",
"upload_tooLargeBrief": "Tiedoston koko ylittää [0}MB rajan",
"upload_choose": "Valitse tiedosto",
"upload_pending": "Odottaa",
"upload_cancelled": "Keskeytetty",
@ -610,14 +610,14 @@
"mdToolbar_code": "Koodi",
"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. Sen lähdekoodi on saatavilla <a href=\"https://github.com/xwiki-labs/cryptpad\" target=\"_blank\" rel=\"noreferrer noopener\">GitHubissa</a>.",
"home_host": "Tämä on itsenäinen yhteisön ylläpitämä Cryptpad-instanssi.",
"home_host_agpl": "Cryptpad-ohjelmisto jaellaan AGPL3-ohjelmistolisenssin ehtojen mukaisesti",
"home_ngi": "NGI Award-palkinnon voittaja",
"about_intro": "CryptPadia kehittää Pariisissa, Ranskassa ja Iasissa, Romaniassa toimiva<a href=\"http://xwiki.com\">XWiki SAS</a>-pienyrityksen tutkimusryhmä. CryptPadin parissa työskentelee kolme ryhmän ydinjäsentä ja lisäksi joitakin avustajia XWiki SAS:n sisältä ja ulkopuolelta.",
"about_core": "Ydinkehittäjät",
"about_contributors": "Tärkeät avustajat",
"main_info": "<h2>Luottamuksellista yhteistyötä</h2> Jaa ideoita yhdessä jaettujen asiakirjojen avulla.<strong>Nollatieto</strong>-teknologia turvaa yksityisyytesi - <strong>jopa meiltä</strong>.",
"main_catch_phrase": "Pilvipalvelu nollatietoperiaatteella",
"main_catch_phrase": "Avoimen lähdekoodin salattu kollaboraatioalusta",
"main_footerText": "CryptPadin avulla voit nopeasti luoda kollaboratiivisia asiakirjoja muistiinpanoja ja yhteistä ideointia varten.",
"footer_applications": "Sovellukset",
"footer_contact": "Ota yhteyttä",
@ -628,8 +628,8 @@
"terms": "Käyttöehdot",
"blog": "Blogi",
"topbar_whatIsCryptpad": "Mikä on CryptPad",
"whatis_title": "Mikä on CryptPad",
"whatis_collaboration": "Nopeaa ja helppoa yhteistyötä",
"whatis_title": "Mikä on CryptPad?",
"whatis_collaboration": "Yksityisyyden huomioivaa yhteistyötä",
"team_inviteLinkError": "Linkin luomisessa tapahtui virhe.",
"whatis_drive": "CryptDriven järjestely",
"admin_activeSessionsTitle": "Aktiiviset yhteydet",
@ -811,44 +811,44 @@
"policy_choices_vpn": "Jos haluat käyttää ylläpitämäämme CryptPad-instanssia, mutta et paljastaa IP-osoitettasi, voit suojata sen käyttämällä <a href=\"https://www.torproject.org/projects/torbrowser.html.en\" title=\"downloads from the Tor project\" target=\"_blank\" rel=\"noopener noreferrer\">Tor-selainpakettia</a> tai <a href=\"https://riseup.net/en/vpn\" title=\"VPNs provided by Riseup\" target=\"_blank\" rel=\"noopener noreferrer\">VPN-palvelua</a>.",
"policy_choices_ads": "Jos haluat ainoastaan estää analytiikkapalvelumme, voit käyttää mainosten estämiseen tarkoitettuja työkaluja, kuten <a href=\"https://www.eff.org/privacybadger\" title=\"download privacy badger\" target=\"_blank\" rel=\"noopener noreferrer\">Privacy Badgeria</a>.",
"features": "Ominaisuudet",
"features_title": "Ominaisuuksien vertailu",
"features_title": "Ominaisuudet",
"features_feature": "Ominaisuus",
"features_anon": "Anonyymi käyttäjä",
"features_registered": "Rekisteröitynyt käyttäjä",
"features_premium": "Premium-käyttäjä",
"features_anon": "Rekisteröitymätön",
"features_registered": "Rekisteröitynyt",
"features_premium": "Premium",
"features_notes": "Huomautukset",
"features_f_apps": "Käyttöoikeus pääsovelluksiin",
"features_f_core": "Sovellusten yleiset ominaisuudet",
"features_f_apps": "Käyttöoikeus kaikkiin sovelluksiin",
"features_f_core": "Yleiset ominaisuudet",
"features_f_core_note": "Muokkaus, Tuonti ja vienti, Historia, Käyttäjälista, Keskustelu",
"features_f_file0": "Avaa tiedostoja",
"features_f_file0_note": "Katsele ja lataa muiden käyttäjien jakamia tiedostoja",
"features_f_file0": "Avaa asiakirjoja",
"features_f_file0_note": "Katsele ja lataa muiden käyttäjien jakamia asiakirjoja",
"features_f_cryptdrive0": "Rajoitettu CryptDrive-käyttöoikeus",
"features_f_cryptdrive0_note": "Mahdollisuus säilyttää padit selaimessa myöhempää käyttöä varten",
"features_f_storage0": "Rajoitettu säilytysaika",
"features_f_storage0_note": "Luodut padit poistetaan kolmen kuukauden käyttämättömyyden jälkeen",
"features_f_storage0_note": "Asiakirjat poistetaan {0} päivän käyttämättömyyden jälkeen",
"features_f_anon": "Kaikki anonyymien käyttäjien ominaisuudet",
"features_f_anon_note": "Paremmalla käytettävyydellä ja tehokkaammilla padien hallintaominaisuuksilla",
"features_f_anon_note": "Lisätoiminnoilla varustettuna",
"features_f_cryptdrive1": "Täysi CryptDrive-toiminnallisuus",
"features_f_cryptdrive1_note": "Kansiot, jaetut kansiot, mallipohjat, tunnisteet",
"features_f_devices": "Padisi kaikilla laitteillasi",
"features_f_devices_note": "CryptDrive käytettävissä kaikkialta käyttäjätunnuksen avulla",
"features_f_social": "Sosiaaliset sovellukset",
"features_f_social_note": "Luo käyttäjäprofiili, käytä avatar-kuvaa, keskustele yhteystietojen kanssa",
"features_f_social": "Yhteistyöominaisuudet",
"features_f_social_note": "Lisää yhteystietoja turvallista yhteistyötä varten, luo profiili, hienojakoiset käyttöoikeudet",
"features_f_file1": "Lataa ja jaa tiedostoja",
"features_f_file1_note": "Jaa tiedostoja yhteystietojesi kanssa tai upota ne padeihisi",
"features_f_storage1": "Pysyvä tallennustila (50Mt)",
"features_f_storage1_note": "CryptDriveen tallennettuja padeja ei koskaan poisteta käyttämättömyyden takia",
"features_f_file1_note": "Säilytä haluamasi tiedostot, kuten kuvat, PDF-tiedostot ja videot CryptDrivessasi. Voit jakaa ne yhteystietojesi kanssa tai upottaa ne asiakirjoihisi (maksimikoko {0}Mt)",
"features_f_storage1": "Henkilökohtainen tallennustila ({0}Mt)",
"features_f_storage1_note": "CryptDriveen tallennettuja padeja ei poisteta käyttämättömyyden takia",
"features_f_register": "Rekisteröidy ilmaiseksi",
"features_f_reg": "Kaikki rekisteröityneiden käyttäjien ominaisuudet",
"features_f_reg_note": "Ja auta CryptPadin kehitystyötä",
"features_f_reg_note": "Lisäetuja saatavilla",
"features_f_storage2": "Lisää tallennustilaa",
"features_f_storage2_note": "5Gt - 50Gt riippuen valitusta tilauksesta",
"features_f_storage2_note": "5Gt - 50Gt riippuen valitusta tilauksesta, korkeampi palvelimelle ladattujen tiedostojen kokorajoitus ({0}Mt)",
"features_f_support": "Nopeampi tuki",
"features_f_support_note": "Ammattimainen sähköpostituki Team-tilauksella",
"features_f_supporter": "Ryhdy yksityisyyden tukijaksi",
"features_f_supporter_note": "Auta meitä näyttämään, että yksityisyyttä edistävien ohjelmistojen tulisi olla oletusarvo",
"features_f_subscribe": "Tilaa Premium",
"features_f_subscribe_note": "Kirjaudu ensin sisään CryptPadiin",
"features_f_support_note": "Ylläpitotiimin tarjoama priorisoitu tuki sähköpostin ja sisäänrakennetun tukipyyntöjärjestelmän välityksellä",
"features_f_supporter": "Tue yksityisyyttä",
"features_f_supporter_note": "Auta CryptPadia nousemaan taloudellisesti kannattavaksi ja näytä, että yksityisyyttä korostavan, asiakkaiden omasta tahdostaan rahoittaman ohjelmiston tulisi olla normi",
"features_f_subscribe": "Tilaa",
"features_f_subscribe_note": "Tilaamiseen tarvitaan rekisteröity käyttäjätili",
"policy_howweuse_p1": "Käytämme näitä tietoja suunnitellaksemme CryptPadin mainostusta ja arvioidaksemme aiempien kampanjoiden onnistumista. Sijaintitietosi puolestaan kertovat meille, mitä kieliä CryptPadin tulisi mahdollisesti tukea englannin lisäksi.",
"tos_title": "CryptPad-käyttöehdot",
"tos_legal": "Älä ole pahantahtoinen, väärinkäyttäjä tai tee mitään laitonta.",
@ -863,7 +863,7 @@
"help": {
"title": "Näin pääset alkuun",
"generic": {
"more": "Tutustu <a href=\"/faq.html\" target=\"_blank\">usein kysyttyihin kysymyksiin</a> saadaksesi lisätietoja CryptPadin toiminnallisuudesta.",
"more": "Tutustu CryptPadin toimintaan ja ominaisuuksiin <a href=\"https://docs.cryptpad.fr\" target=\"_blank\" rel=\"noopener noreferrer\">dokumentaatiosivuillamme</a>.",
"share": "Jaa tämä asiakirja <i class=\"fa fa-shhare-alt\"></i> <b>Jaa</b>-painikkeella ja hallitse käyttöoikeuksia <i class=\"fa fa-unlock-alt\"></i> <b>Käyttöoikeudet</b>-painikkeella.",
"save": "Kaikki tekemäsi muutokset synkronoidaan automaattisesti, joten sinun ei tarvitse koskaan tallentaa"
},
@ -1103,12 +1103,12 @@
"contact_bug": "Virheraportti",
"contact_devHint": "Ominaisuuspyyntöjä, käytettävyysparannuksia tai kiitoksia varten.",
"contact_dev": "Ota yhteyttä kehittäjiin",
"contact_adminHint": "Käyttäjätiliin, tallennustilaan tai palvelun saatavuuteen liittyviä ongelmia varten.",
"contact_adminHint": "Käyttäjätiliin, tallennustilaan tai palvelun saatavuuteen liittyviä ongelmia varten.\n",
"contact_admin": "Ota yhteyttä ylläpitäjiin",
"footer_tos": "Käyttöehdot",
"footer_legal": "Oikeusasiat",
"footer_donate": "Lahjoita",
"footer_team": "Tiimimme",
"footer_team": "Tekijät",
"footer_product": "Tuotteemme",
"admin_flushCacheDone": "Välimuisti tyhjennetty onnistuneesti",
"admin_flushCacheButton": "Tyhjennä välimuisti",
@ -1185,7 +1185,7 @@
"creation_appMenuName": "Uusi padi (Ctrl + E)",
"creation_propertiesTitle": "Saatavuus",
"creation_passwordValue": "Salasana",
"creation_expiration": "Vanhenemisaika",
"creation_expiration": "Vanhenemispäivämäärä",
"creation_noOwner": "Ei omistajaa",
"creation_ownedByOther": "Toisen käyttäjän omistama",
"creation_owners": "Omistajat",
@ -1194,7 +1194,7 @@
"creation_create": "Luo",
"creation_newTemplate": "Uusi mallipohja",
"creation_noTemplate": "Ei mallipohjaa",
"creation_password": "Lisää salasana",
"creation_password": "Salasana\n",
"creation_expire2": "<b>Vanhenevalla</b> padilla on asetettu elinikä, jonka täyttyessä se poistetaan automaattisesti palvelimelta ja muiden käyttäjien CryptDriveista.",
"creation_expire1": "<b>Rajoittamatonta</b> padia ei poisteta palvelimelta, ellei sen omistaja poista sitä.",
"creation_expireMonths": "Kuukausi(a)",
@ -1205,7 +1205,7 @@
"creation_expire": "Vanheneva padi",
"creation_expireTitle": "Elinikä",
"creation_owned2": "<b>Avoimella</b> padilla ei ole omistajaa, ja sitä ei voida poistaa palvelimelta, ellei sen vanhenemisaika ole tullut täyteen.",
"creation_owned1": "<b>Omistettu</b> padi voidaan poistaa palvelimelta omistajan niin halutessa. Omistetun padin poistaminen poistaa sen muiden käyttäjien CryptDriveista.",
"creation_owned1": "<b>Omistettu</b> asiakirja voidaan poistaa palvelimelta omistajan niin halutessa. Omistetun asiakirjan poistaminen poistaa sen myös muiden käyttäjien CryptDriveista.",
"creation_ownedFalse": "Avoin padi",
"creation_ownedTrue": "Omistettu padi",
"creation_owned": "Omistettu padi",
@ -1313,5 +1313,51 @@
"loading_state_3": "Lataa jaetut kansiot",
"loading_state_2": "Päivitä sisältö",
"loading_state_1": "Lataa Drive",
"loading_state_0": "Rakenna käyttöliittymä"
"loading_state_0": "Rakenna käyttöliittymä",
"register_notes_title": "Tärkeät huomiot",
"home_support_title": "Tue CryptPadia",
"home_opensource": "Kuka tahansa voi ylläpitää omaa henkilökohtaista tai ammattimaista CryptPad-instanssia. Lähdekoodi on saatavilla <a rel=\"noopener noreferrer\" target=\"_blank\" href=\"https://github.com/xwiki-labs/cryptpad\">GitHubissa</a>.",
"home_opensource_title": "Avoin lähdekoodi",
"home_host_title": "Tietoja tästä instanssista",
"home_privacy_text": "CryptPad on luotu helpottamaan yhteistyötä ja pitämään samalla tietosi yksityisinä. Kaikki sisällön salaus ja purku tapahtuu omassa selaimessasi. Tämä tarkoittaa, että asiakirjat, keskustelut ja tiedostot ovat lukukelvottomia istuntosi ulkopuolella. Edes palvelun ylläpitäjät eivät pääse käyttämään tietojasi.",
"home_privacy_title": "Suunniteltu yksityiseksi",
"offlineError": "Uusimpia tietoja ei voitu synkronoida. Sivua ei voida juuri nyt näyttää. Sivun latautumista jatketaan, kun yhteys palveluun palaa.",
"share_noContactsOffline": "Olet offline-tilassa. Yhteystiedot eivät ole saatavilla.",
"access_offline": "Olet offline-tilassa. Käyttöoikeuksien hallinta ei ole saatavilla.",
"admin_support_last": "Päivitetty: ",
"admin_support_first": "Luotu: ",
"admin_support_collapse": "Pienennä",
"admin_support_open": "Näytä",
"admin_support_closed": "Suljetut tukipyynnöt:",
"admin_support_answered": "Vastatut tukipyynnöt:",
"admin_support_normal": "Vastaamattomat tukipyynnöt:",
"admin_support_premium": "Premium-tukipyynnöt:",
"contacts_confirmCancel": "Haluatko varmasti perua henkilölle <b>{0}</b> lähetetyn yhteyspyynnön?",
"history_trimPrompt": "Tähän asiakirjaan liittyy {0} historiatietoa, jotka saattavat hidastaa asiakirjan latautumista. Harkitse tarpeettomien historiatietojen poistamista.",
"mediatag_loadButton": "Lataa liite",
"settings_mediatagSizeHint": "Maksimikoko automaattisesti ladattaville asiakirjoihin upotetuille mediaobjekteille (kuvat, videot, PDF-tiedostot). Maksimikokoa suuremmat objektit voidaan ladata manuaalisesti. Käytä arvoa \"-1\" ladataksesi mediaobjektit aina automaattisesti.",
"settings_mediatagSizeTitle": "Automaattinen latausrajoitus",
"mediatag_notReady": "Ole hyvä ja anna latauksen valmistua",
"pad_mediatagOpen": "Avaa tiedosto",
"pad_mediatagShare": "Jaa tiedosto",
"mediatag_saveButton": "Tallenna",
"Offline": "Offline-tilassa",
"download_zip_file": "Tiedosto {0}/{1}",
"download_zip": "Rakennetaan ZIP-arkistoa...",
"fileTableHeader": "Lataukset palvelimelta ja palvelimelle",
"allowNotifications": "Salli ilmoitukset",
"archivedFromServer": "Asiakirja arkistoitu",
"restoredFromServer": "Asiakirja palautettu",
"admin_archiveInval": "Virheellinen asiakirja",
"admin_archiveInput2": "Asiakirjan salasana",
"admin_archiveInput": "Asiakirjan URL",
"admin_unarchiveButton": "Palauta",
"admin_unarchiveHint": "Palauta aiemmin arkistoitu asiakirja",
"admin_unarchiveTitle": "Palauta asiakirjoja",
"admin_archiveButton": "Arkistoi",
"admin_archiveHint": "Estä asiakirjan käyttö poistamatta sitä lopullisesti. Asiakirja sijoitetaan arkistokansioon ja poistetaan sieltä muutaman päivän kuluttua (poistoaika säädettävissä palvelimen konfiguraatiotiedostosta).",
"admin_archiveTitle": "Arkistoi asiakirjoja",
"errorPopupBlocked": "CryptPadin täytyy pystyä avaamaan uusia välilehtiä toimiakseen. Ole hyvä ja salli ponnahdusikkunat selaimesi osoitekentästä. Ponnahdusikkunoita ei koskaan käytetä mainostamiseen.",
"unableToDisplay": "Asiakirjan näyttäminen epäonnistui. Paina Esc-näppäintä ladataksesi sivun uudelleen. Jos ongelma ei ratkea, ota yhteyttä käyttäjätukeen.",
"documentID": "Asiakirjan tunniste"
}

@ -133,13 +133,13 @@
"register_importRecent": "匿名セッション中のパッドをインポート",
"importButton": "インポート",
"policy_title": "CryptPad プライバシーポリシー",
"main_catch_phrase": "ゼロ知識クラウド",
"main_catch_phrase": "コラボレーションスイート<br>暗号化されかつオープンソース",
"tos_3rdparties": "私たちは、法律で義務付けられている場合を除き、個別のデータを第三者に提供しません。",
"tos_logs": "あなたのブラウザからサーバーに送信されたメタデータは、サービスを維持するために記録される場合があります。",
"tos_availability": "私たちはこのサービスがあなたの役に立つことを願っていますが、可用性や性能は保証できません。定期的にデータをエクスポートしてください。",
"tos_legal": "悪意ある行為、乱用する行為、または何らかの違法な行為を行わないでください。",
"tos_title": "CryptPad サービス利用規約",
"whatis_title": "CryptPad とは何か",
"whatis_title": "CryptPad とは",
"topbar_whatIsCryptpad": "CryptPad とは何か",
"footer_tos": "利用規約",
"footer_donate": "寄付",
@ -149,7 +149,7 @@
"contact": "連絡先",
"privacy": "プライバシー",
"blog": "ブログ",
"driveReadmeTitle": "CryptPad とは何ですか",
"driveReadmeTitle": "CryptPad とは",
"readme_welcome": "CryptPad へようこそ!",
"register_header": "CryptPad へようこそ",
"login_confirm": "パスワードの確認",
@ -420,5 +420,13 @@
"share_contactCategory": "連絡先",
"share_linkCategory": "リンク",
"share_linkEdit": "編集",
"previewButtonTitle": "マークダウンのプレビューを表示または非表示にします"
"previewButtonTitle": "マークダウンのプレビューを表示または非表示にします",
"whatis_model": "ビジネスモデル",
"whatis_collaboration": "プライベートコラボレーション",
"home_support_title": "CryptPad を支援する",
"home_opensource": "CryptPad は、個人やプロなど誰でもホストすることができます。ソースコードは <a rel=\"noopener noreferrer\" target=\"_blank\" href=\"https://github.com/xwiki-labs/cryptpad\">GitHub</a> で確認できます。",
"home_opensource_title": "オープンソース",
"home_host_title": "このインスタンスについて",
"home_privacy_text": "CryptPad は、データをプライベートに保護しながらコラボレーションを可能にするように構築されています。すべてのコンテンツは、あなたのブラウザ上で暗号化および復号されます。つまり、ドキュメント、チャット、およびファイルは、あなたがログインしているセッション以外では読み取れません。サービス管理者でさえ、あなたの情報にアクセスすることはできません。",
"home_privacy_title": "プライバシーバイデザイン"
}

@ -1 +1,24 @@
{}
{
"common_connectionLost": "<b>Sunucu Bağlantısı Kesildi</b><br>Bağlantı geri gelene kadar salt-okunur moddasınız.",
"button_newwhiteboard": "Yeni Beyaz tahta",
"button_newslide": "Yeni Sunum",
"button_newpoll": "Yeni Anket",
"button_newcode": "Yeni Kod padi",
"button_newpad": "Yeni Zengin Metin padi",
"type": {
"teams": "Ekipler",
"contacts": "Kişiler",
"todo": "Yapılacaklar listesi",
"media": "Medya",
"file": "Dosya",
"whiteboard": "Beyaz Tahta",
"drive": "CryptSürücü",
"slide": "Sunum",
"poll": "Anket",
"code": "Kod",
"pad": "Zengin metin biçimi"
},
"fm_alert_anonymous": "Merhaba, şu anda CryptPad'i anonim olarak kullanıyorsunuz, sorun değil, ancak padlariniz bir süre kullanılmadığında silinebilir. Anonim kullanıcılar için sürücünün gelişmiş özelliklerini devre dışı bıraktık, çünkü bir şeyleri depolamak için güvenli bir yer olmadığınııkça belirtmek istiyoruz. Bunu neden yaptığımız hakkında <a href=\"https://blog.cryptpad.fr/2017/05/17/You-gotta-log-in/\" target=\"_blank\"> ve neden <a href=\"/register/\"> Kayıt olmanız</a> ve <a href=\"/login/\"> Giriş yapmanız</a> gerektiği hakkında okuyabilirsiniz.",
"main_catch_phrase": "Ekip iş birliği sistemi, <br>şifreli ve açık kaynak",
"main_title": "CryptPad: Tamamen Gizli, İşbirliğine Dayalı Gerçek Zamanlı Düzenleme"
}

Loading…
Cancel
Save