Merge branch 'staging' into form-del

This commit is contained in:
yflory 2022-10-12 17:19:22 +02:00
commit 8a3be878e8
64 changed files with 3194 additions and 418 deletions

View File

@ -1,5 +1,5 @@
name: Bug report
description: Report a reproducible bug for CryptPad. (NOT to be used for support questions.)
name: Reproducible bug report
description: Report a reproducible bug ONLY, otherwise see the links below
labels: ["bug"]
body:
- type: checkboxes
@ -20,7 +20,7 @@ body:
required: true
- label: I have understood that answers are voluntary and community-driven, and not commercial support.
required: true
- label: I have verified that my issue has not been already answered in the past. I've read the [Common issues documentation section](https://docs.cryptpad.fr/en/FAQ.html#common-issues) and I also checked [previous issues](https://github.com/xwiki-labs/cryptpad/issues).
- label: I have verified that my issue has not been already answered in the past. I've read the [Common issues documentation section](https://docs.cryptpad.org/en/FAQ.html#common-issues) and I also checked [previous issues](https://github.com/xwiki-labs/cryptpad/issues).
required: true
- type: textarea
attributes:

View File

@ -1,8 +1,17 @@
blank_issues_enabled: false
contact_links:
- name: CryptPad.fr issue
- name: Bug report
url: https://forum.cryptpad.org/t/bug-report
about: Use the appropriate tags & describe your issue in much details as possible
- name: Feature request
url: https://forum.cryptpad.org/t/feature-request
about: Check if an existing topic doesn't already cover the feature you'd like
- name: Generic question
url: https://forum.cryptpad.org/t/general
about: Feel free to use the forum to ask any question you might have
- name: CryptPad.fr flagship instance issue
url: https://cryptpad.fr/support/#new
about: Please use the integrated support form for CryptPad.fr
about: Issue with an account or document on cryptpad.fr only
- name: Report a security vulnerability
url: https://ouvaton.link/pOgHev
about: Please give us appropriate time to verify, respond and fix before disclosure

View File

@ -1,38 +0,0 @@
name: Feature Request
description: Suggest an idea for CryptPad.
labels: ["Feature Request"]
body:
- type: checkboxes
attributes:
label: Contribution guidelines
description: Please read the code of conduct before proceeding.
options:
- label: I've read the [code of conduct](https://github.com/xwiki-labs/cryptpad/blob/main/CODE_OF_CONDUCT.md) and wholeheartedly agree
required: true
- type: checkboxes
attributes:
label: I would like to request a new feature for CryptPad
description: Prior to creating a new issue, please check following:** *(fill out each checkbox with an `X` once done)*
options:
- label: I have searched past issues and labels to check that my question/idea does not exist
required: true
- label: I have understood that this report is dedicated for feature requests, and not for support-related inquiries.
required: true
- label: I have understood that answers are voluntary and community-driven, and not commercial support.
required: true
- type: textarea
attributes:
label: Summary
description: Please describe your idea in a reasonable amount of detail.
validations:
required: true
- type: textarea
attributes:
label: Motivation
description: Please describe how your idea would benefit you and other users.
validations:
required: true
- type: textarea
attributes:
label: Additional context
description: Add any other context or screenshots about the feature request.

View File

@ -44,7 +44,7 @@
"emptyRule": { "enabled": true },
"hexValidation": { "enabled": true }, // disallow actual garbage color hex codes (e.g. #ab)
"propertyUnits": {
"valid": ["rem", "vw", "em", "px"], // These units are allowed for all properties
"valid": ["rem", "vw", "em", "px", "ch"], // These units are allowed for all properties
"invalid": ["pt"], // The 'pt' unit is not allowed under any circumstances
"properties": {
//"line-height": [] // No units are allowed for line-height

View File

@ -1,3 +1,76 @@
# 5.1.0
## Goals
We had two new members join our team in the time since our previous release.
Mathilde joined us as an administrator of CryptPad.fr, so we decided to put some unplanned time towards the platform's administrative tooling to simplify some common workflows.
Maxime joined us for a summer internship as a front-end developer, and took initiative on a number of popular issues from our tracker on GitHub.
## Update notes
* We applied a minor optimization to CryptPad's caching rules which should result in a slight decrease of many pages' loading times, thanks to some helpful profiling by one of our users.
* We have started implementing a very basic build system for CryptPad which, at the moment, is only responsible for generating a few static HTML pages.
* These pages include the _opengraph_ tags which describe how previews of the page should be rendered in social media posts, messenger applications, and search engine summaries.
* For the moment we haven't configured the system to build distinct pages for every language, so they will include text which is hardcoded in a single language which defaults to English. This can be configured in `config/config.js` (for example: `preferredLanguage: 'de',`). We intend to improve this in the future.
* They also update the content of the page's `<noscript>` tag, which is displayed in the event that the user has disabled JavaScript in their browser. The build system includes every translation of this message that is available, rather than just the English and French translations that were displayed previously.
* We've included some new tests on the checkup page to detect whether these customized pages have been built, and to remind administrators to generate them otherwise (using `npm run build`).
* Because the generated pages are based on the current default versions of these pages, updating to future versions of the software without re-building could result in errors due to outdated code being served. We'll include reminders in the update steps as we do for other common errors.
* In order for the above changes to be effective, you'll need to update your NGINX configuration file. You can use git to see what has changed since v5.0.0 by running `git diff 5.0.0...main ./docs` in the root of your CryptPad repository.
* We've updated the home page to use a distinct version of the CryptPad logo for its main image. This makes it easier to customize the home page itself without impacting the rest of the platform. To override the default image, include your own at `/customize/CryptPad_logo_hero.svg`.
* Finally, a number of admins had opted into inclusion in our public instance directory but had not configured pages for their privacy policy or terms of service, which caused the checkup page to display an error. We've updated this error message to point directly to the relevant documentation, since the previous values were not sufficiently clear.
To update from `5.0.0` to `5.1.0`:
1. Update your reverse proxy configuration to match the settings in our current `./docs/example.nginx.conf` and reload its configuration
2. Stop your API server
3. Fetch the latest code with git
4. Install the latest dependencies with `bower update` and `npm i`
5. Run `npm run build` to generate the new static pages
5. Restart your server
6. Review your instance's checkup page to ensure that you are passing all tests
## Features
* Administration:
* The instance admin panel now features a "Database" tab which makes it possible to generate reports for accounts, documents, and "login blocks". This finally enables administrators to review document and account metadata, archive or restore data, and generally perform actions that used to require specialized knowledge about the platform's data storage formats.
* Since the _Database_ tab identifies accounts by their public signing keys, we made it easier to access these keys by adding a button to support tickets which copies the author's key to your clipboard.
* Thanks to contributors, the platform is now available in Spanish (100%) and European Portuguese (91%).
* We've updated our mermaid integration to [v9.1.7](https://github.com/mermaid-js/mermaid/releases/tag/v9.1.7).
* Spellcheck is now enabled by default in our rich text editor and can be disabled via the settings page in case you have not already done so.
* Our code editor now includes a highlighting module for _asciidoc_ syntax.
* The contact page has been updated to reflect that we have migrated our Mastodon account to [Fosstodon.org/@cryptpad](https://fosstodon.org/@cryptpad)
* Various links throughout the platform have been updated to reflect that we've migrated our documentation from docs.cryptpad.fr to [docs.cryptpad.org](https://docs.cryptpad.org). The old domain now redirects to the new one to preserve compatibility with old instances or any other pages that have linked to it.
* We've updated our issue templates on GitHub to use their new _Issue Forms_ functionality, making it easier to correctly submit a well-formatted bug report or feature request.
* The project's readme now includes a widget indicating the completeness of CryptPad's translations on our Weblate instance.
* We've added a placeholder to pages' basic HTML to make it easier to tell that something is happening before the proper loading screen is displayed.
## Bug fixes
* Thanks to some detailed reports from users of our spreadsheet editor we were able to reproduce an error that caused very large changes to be saved incorrectly. Such changes trigger multi-part messages to be created, but only the first message was correctly sent to the server. The client has now been updated to correctly send each part of the patch.
* The behaviour of the long-form text input editor in our form app was not consistent with markdown-editing interfaces on the rest of the platform, so we enabled the same functionality as elsewhere.
* Administration
* We found that the quantity of support tickets shown for each category was sometimes inaccurate, so we corrected the way this number was computed.
* A change in the internal format of each instance's name, location, and description caused these fields not to be included in telemetry for instances that had opted into the [public instance directory](https://cryptpad.org/instances/). We've corrected this so such instances provide all the necessary information.
* We've corrected some logic for displaying configured URLs for privacy policies, terms of service, and similar resources such that relative URLs are considered relative to the top-level domain (rather than the sandbox domain).
* The "Launch time" value on the admin panel was using a hard-coded rather than the relevant translation, and was not correctly updating when the "Refresh" button was clicked. Both issues have been fixed.
* Members of editing sessions are correctly informed when administrators archive active channels.
* The _Custom limits_ section of the API is now displayed in a somewhat nicer table.
* A flaw in some of the styles for the kanban app made it impossible to add text to an empty card via the usual inline text field UI. Adding placeholder content to this field made the default click events work as expected.
* Dropdowns with text content containing quotes (such as those that could be created in the form app) caused an invalid CSS selector to be constructed, which resulted in rendering issues. Such quotes are now properly escaped.
* We found that some message handlers in CryptPad were receiving and trying to parse messages from unexpected sources (browser extensions). These messages triggered parsing errors which cause CryptPad's error screen to be displayed. We now guard against such messages and ignore them when they are not in the expected format or when they otherwise trigger parsing errors.
* We updated our translation linting script to compare markup and variable substitution patterns across different translations. We identified and fixed quite a few errors (invalid markup, incomplete translations), and expect to have an easier time ensuring consistency going forward.
# 5.0.0
## Goals
@ -108,7 +181,7 @@ Our main goal for this release was to follow up on some of the findings of the [
This release includes **BREAKING CHANGES**, especially if you have not configured your instance correctly. We advise that you read the following section carefully and follow its recommendations as closely as possible if you operate your own CryptPad instance.
First, some review: CryptPad is designed to be deployed using two domains. One is the primary domain which users enter into their address bar, while the second is a "sandbox" that is loaded indirectly. Sensitive operations like cryptographic key management are performed in the scope of the primary domain, while the sandbox is used to load the majority of the platform's UI. If there is a vulnerability in the sandbox, it is at least limited in scope because of measures we've taken to prevent it from accessing user accounts' keys. We initially introduced this system [nearly five years ago](https://blog.cryptpad.org/2017/08/30/CryptPad-s-new-Secure-Cross-Domain-Iframe/), it is described in [our admin installation guide](https://docs.cryptpad.fr/en/admin_guide/installation.html#domains), and we've done our best to make sure admins are aware of its importance. Even so, only a small number of our admins follow our recommendations.
First, some review: CryptPad is designed to be deployed using two domains. One is the primary domain which users enter into their address bar, while the second is a "sandbox" that is loaded indirectly. Sensitive operations like cryptographic key management are performed in the scope of the primary domain, while the sandbox is used to load the majority of the platform's UI. If there is a vulnerability in the sandbox, it is at least limited in scope because of measures we've taken to prevent it from accessing user accounts' keys. We initially introduced this system [nearly five years ago](https://blog.cryptpad.org/2017/08/30/CryptPad-s-new-Secure-Cross-Domain-Iframe/), it is described in [our admin installation guide](https://docs.cryptpad.org/en/admin_guide/installation.html#domains), and we've done our best to make sure admins are aware of its importance. Even so, only a small number of our admins follow our recommendations.
Since we've tried every other option we could think of to inform administrators of the risks of storing sensitive data on a misconfigured CryptPad instance, we are now adopting a more drastic policy where correct behaviour is _enforced_ in the code itself. What that means for admins is that if you fail to implement configuration parameters which we consider essential, then various parts of the codebase will detect this and _refuse to operate_.
@ -134,7 +207,7 @@ We're also recommending a few more updates, but we don't expect that these will
* The API server will check the version of its runtime when it launches. It will print a warning to your server logs and set a public flag in `/api/config` indicating that it should be updated. There is a corresponding test on the checkup page which checks for the presence of this flag for admins that aren't in the habit of reviewing their logs.
* The recommended NGINX config file also includes some minor changes. You can compare the current version (in `cryptpad/docs/example.nginx.conf`) against your live config with a diff tool. There are also new tests on the checkup page which will identify whether the newly changed headers have been correctly applied.
* There are updates to our dependencies using both `npm` and `bower`.
* There are a number of new configuration parameters that can be customized via `application_config.js`. Some are optional. A number of other parameters, such as URLs for a privacy policy and terms of service, will be expected if your instance permits registration. The checkup page will display warnings if these are absent. Configuration via `application_config.js` is described in [our docs](https://docs.cryptpad.fr/en/admin_guide/customization.html#application-config).
* There are a number of new configuration parameters that can be customized via `application_config.js`. Some are optional. A number of other parameters, such as URLs for a privacy policy and terms of service, will be expected if your instance permits registration. The checkup page will display warnings if these are absent. Configuration via `application_config.js` is described in [our docs](https://docs.cryptpad.org/en/admin_guide/customization.html#application-config).
We've also made a number of changes and additions to the instance admin panel:
@ -192,7 +265,7 @@ To update from 4.13.0 to 4.14.0:
* The drive's _history mode_ now displays the appropriate document id in the properties menu in cases where an earlier version of a document had a different id (due to a password change).
* During development of a new feature we discovered that the server could respond to HTTP requests with _stack traces_ in cases where the request triggered an error. These responses could contain information about the server's directory structure, so we now handle these errors and send the client a page indicating that there was an internal server error.
* Attempting to convert office documents could mistakenly trigger two concurrent downloads of the client-side conversion engine. Now it is only downloaded once, so conversion should be roughly twice as fast for cases where the WebAssembly blob was not already cached.
* A number of users reported various actions which could cause documents in their team drives to be duplicated. These duplicated entries are _references to the same document as the original_, not complete copies, so care should be taken **not to use the destroy option** when removing them from your drive. If a user accidentally destroys a document then it should be possible for an administrator to restore its content via the admin panel if the user can provide a [safe link](https://docs.cryptpad.fr/en/user_guide/user_account.html?highlight=safe%20link#confidentiality) that they can find using the drive's _history mode_.
* A number of users reported various actions which could cause documents in their team drives to be duplicated. These duplicated entries are _references to the same document as the original_, not complete copies, so care should be taken **not to use the destroy option** when removing them from your drive. If a user accidentally destroys a document then it should be possible for an administrator to restore its content via the admin panel if the user can provide a [safe link](https://docs.cryptpad.org/en/user_guide/user_account.html?highlight=safe%20link#confidentiality) that they can find using the drive's _history mode_.
# 4.13.0
@ -329,7 +402,7 @@ We've also updated the checkup page to test for the expected server behaviour an
Our team has limited resources, so we've chosen to introduce the new (and **experimental**) office editors gradually to avoid getting overwhelmed by support tickets as was the case when we introduced the current spreadsheet editor in 2019. In order to support this we've implemented an **early access** system which _optionally_ restricts the use of these editors to premium subscribers. We will enable this system on CryptPad.fr, but admins of independent instances can enable them at their discretion.
To enable the use of the OnlyOffice Document and Presentation editor for everyone on your instance, edit your [customize/application_config.js](https://docs.cryptpad.fr/en/admin_guide/customization.html#application-config) file to include `AppConfig.enableEarlyAccess = true;`.
To enable the use of the OnlyOffice Document and Presentation editor for everyone on your instance, edit your [customize/application_config.js](https://docs.cryptpad.org/en/admin_guide/customization.html#application-config) file to include `AppConfig.enableEarlyAccess = true;`.
If you wish to avoid a rush of support tickets from your users by limiting early access to users with custom quota increases, add another line like so `AppConfig.premiumTypes = ['doc', 'presentation'];`.
@ -392,7 +465,7 @@ To update from 4.10.0 to 4.11.0:
* The term "Anonymous" was only ever intended to convey the classical sense of the word ("without name or attribution") rather than the stricter modern sense "indistinguishable from a meaningfully large set of other individuals". To be clear, this is a change of terminology, not behaviour. To prevent your IP address from being revealed to the host server while using CryptPad the best option has always been, and continues to be [Tor browser](https://www.torproject.org/download/).
* Going forward, if you see "anonymize" in CryptPad (such as in forms), you can take it to mean that extra efforts are being taken to make protocol-level metadata indistinguishable from that of other users, while "Guest" means only that you haven't registered or have removed your display name.
* While we were reconsidering the notion of guest accounts we decided that it would be useful to be able to distinguish one guest from another. We decided to implement this by hooking into the existing system for displaying users' profile pictures by mapping a list of emojis to guests' randomly generated identifiers.
* We chose a list of emojis that we hoped nobody would find objectionable ('🙈 🦀 🐞 🦋 🐬 🐋 🐢 🦉 🦆 🐧 🦡 🦘 🦨 🦦 🦥 🐼 🐻 🦝 🦓 🐄 💮️ 🐙️ 🌸️ 🌻️ 🐝️ 🐐 🦙 🦒 🐘 🦏 🐁 🐹 🐰 🦫 🦔 🐨 🐱 🐺 👺 👹 👽 👾 🤖'), but we realize that cultures and contexts differ widely. As such, we've made this configurable on a per-instance basis. A custom list of emojis can be set in `customize/application_config.js` as an array of single-emoji strings (`AppConfig.emojiAvatars = ['🥦', '🧄', '🍄', '🌶️'];`) or as an empty array if you prefer not to display any emojis (`AppConfig.emojiAvatars = [];`). See [our admin docs](https://docs.cryptpad.fr/en/admin_guide/customization.html#application-config) for more info on customization.
* We chose a list of emojis that we hoped nobody would find objectionable ('🙈 🦀 🐞 🦋 🐬 🐋 🐢 🦉 🦆 🐧 🦡 🦘 🦨 🦦 🦥 🐼 🐻 🦝 🦓 🐄 💮️ 🐙️ 🌸️ 🌻️ 🐝️ 🐐 🦙 🦒 🐘 🦏 🐁 🐹 🐰 🦫 🦔 🐨 🐱 🐺 👺 👹 👽 👾 🤖'), but we realize that cultures and contexts differ widely. As such, we've made this configurable on a per-instance basis. A custom list of emojis can be set in `customize/application_config.js` as an array of single-emoji strings (`AppConfig.emojiAvatars = ['🥦', '🧄', '🍄', '🌶️'];`) or as an empty array if you prefer not to display any emojis (`AppConfig.emojiAvatars = [];`). See [our admin docs](https://docs.cryptpad.org/en/admin_guide/customization.html#application-config) for more info on customization.
* Users can edit their display name inline in the user list or on their settings page, in which case their avatar will be one or two letters from their name (their first two initials if their name contains at least one space, otherwise the first two letters of their name).
* Once these initial improvements had been made to the user list, the lack of support for emoji avatars in a number of places felt very conspicuous, so we've done our best to implement them consistently across every social aspect of the platform. Default emoji avatars are also displayed in comments in the rich text editor, in authorship data in our code/markdown editor, in tooltips when you hover over the marker for remote users' cursor location, in the "currently editing" indicator for Kanban cards, in the share and access menus, and in the "contacts" app.
* The file upload dialog now includes a preview of the media that you are about to upload (as long as it's something CryptPad is capable of displaying) as well as a text field for describing the media. Descriptive text is added to the file's encrypted metadata and is applied to rendered media as `alt` or `title` attributes wherever applicable. This coincides with a broader effort to improve keyboard navigation and add support for screen-readers.
@ -442,7 +515,7 @@ It seems that some browser developers thought to do the same thing, because we n
## Update notes
4.10.0 includes some minor changes to [the checkup page](https://docs.cryptpad.fr/fr/admin_guide/installation.html#diagnostics). Some admins have included screenshots of this page in bug reports or requests for support along with details of problems they suspect of being related. Because we've observed that the root of many issues is the browser (sometimes in addition to the server) we have decided to include details about the browser in this page's summary.
4.10.0 includes some minor changes to [the checkup page](https://docs.cryptpad.org/fr/admin_guide/installation.html#diagnostics). Some admins have included screenshots of this page in bug reports or requests for support along with details of problems they suspect of being related. Because we've observed that the root of many issues is the browser (sometimes in addition to the server) we have decided to include details about the browser in this page's summary.
Up until now the checkup page only tested observable behaviour of the server such as HTTP headers on particular resources, configuration parameters distributed to the client, and the availability of essential resources. This practice meant that a report for an instance should have been the same regardless of the device that was used to generate the report. In light of a serious regression in Chrome (and all its derivatives) we decided that objectiveness was less important than utility and introduced some tests which check whether the client running the diagnostics interprets the provided server configuration. Terrible browsers (ie. every browser that is available on iOS) will fail these tests every time because they don't implement the expected APIs, but we've tried to detect these cases and warn that they are expected.
@ -499,7 +572,7 @@ We allocated most of this release cycle towards a schedule of one-on-one user in
It appears our promotion of the checkup page through our recent release notes and the inclusion of a link to it from the instance admin have been moderately successful. We've observed that more instance admins are noticing and fixing some common configuration issues.
This release features some minor changes to one instance configuration test which incorrectly provided an exemption for the use of `http://localhost:3000` as an `httpUnsafeOrigin` value. This exemption was provided because this value is valid for local development. However, it suppressed errors when this configuration was used for production instances where it could cause a variety of problems. As usual, we recommend checking your instance's admin page after updating to confirm that you are passing the latest tests. Information about the checkup page is included in [our documentation](https://docs.cryptpad.fr/en/admin_guide/admin_panel.html#network).
This release features some minor changes to one instance configuration test which incorrectly provided an exemption for the use of `http://localhost:3000` as an `httpUnsafeOrigin` value. This exemption was provided because this value is valid for local development. However, it suppressed errors when this configuration was used for production instances where it could cause a variety of problems. As usual, we recommend checking your instance's admin page after updating to confirm that you are passing the latest tests. Information about the checkup page is included in [our documentation](https://docs.cryptpad.org/en/admin_guide/admin_panel.html#network).
To update from 4.8.0 to 4.9.0:
@ -697,7 +770,7 @@ This release includes very few new features aside from those already mentioned i
## Goals
This release cycle we aimed to complete three major milestones: the official release of our calendar app, the ability for admins to close registration on their instance, and the deployment of the admin section of our [official documentation](https://docs.cryptpad.fr/en/admin_guide/index.html). We spent the remainder of our time addressing a growing backlog of issues on GitHub by fixing a number of weird bugs.
This release cycle we aimed to complete three major milestones: the official release of our calendar app, the ability for admins to close registration on their instance, and the deployment of the admin section of our [official documentation](https://docs.cryptpad.org/en/admin_guide/index.html). We spent the remainder of our time addressing a growing backlog of issues on GitHub by fixing a number of weird bugs.
## Update notes
@ -893,7 +966,7 @@ To update from 4.1.0 to 4.2.0:
* We've reverted the styles for the rich text editor so that the document always has a white background, even in dark mode, since we could not guarantee that documents would be legible to all users if custom text colors had been applied. While we were looking at this editor, we also repositioned several buttons used to control the page's layout, including the width of the document, the presence of the table of contents, and its comments.
* We've continued to improve several key parts of the platform to accommodate offline usage. Teams, shared folders within teams, and the file app can now load and display content cached within the browser even if the client cannot establish a connection to our API server.
* The content of _whiteboard_ documents can now be downloaded directly from within team or user drives, rather than exclusively from within the whiteboard editor itself. To do so, right-click a whiteboard and choose _download_ to export a PNG file.
* Since we now regularly serve more than 125 thousand visitors a week it's gotten quite difficult to keep up with support tickets. To help alleviate this burden we're taking steps to increase the visibility of our documentation (https://docs.cryptpad.fr). The support ticket page now displays a link to that documentation above the form to create a new ticket.
* Since we now regularly serve more than 125 thousand visitors a week it's gotten quite difficult to keep up with support tickets. To help alleviate this burden we're taking steps to increase the visibility of our documentation (https://docs.cryptpad.org). The support ticket page now displays a link to that documentation above the form to create a new ticket.
* Several users have reported confusion regarding various password fields in CryptPad, in the access menu, pad creation screen, when uploading new files, and when creating a shared folder. We've updated the text associated with these fields to better indicate that they are not requesting your user password, but rather that they allow you to add an optional password as an additional layer of protection.
* Server administrators can now refresh the _performance_ table on the admin panel without reloading the page.
* We've begun working on a _checkup_ page for CryptPad to help administrators identify and fix common misconfigurations of the platform. It's still in a very basic state, but we hope to to make it a core part of the server installation guide that is under development.
@ -1011,7 +1084,7 @@ To update from 3.25.1 to 4.0.0:
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.
* We no longer include a FAQ page with each instance, and instead link to relevant parts of our dedicated documentation platform (https://docs.cryptpad.org) 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.
@ -1317,7 +1390,7 @@ This release was developed over a longer period than usual due to holidays, our
We've had a few disgruntled administrators contact us about our apparent _failure to provide a docker image_ or to otherwise support their preferred configuration. With that in mind, this is a periodic reminder that CryptPad is provided to the public under the terms of the AGPL (found within this repository in the [LICENSE file](./LICENSE)) which implies on our part no warranty, liability, or responsibility to configure your server for you. We do our best to provide the necessary information to correctly launch your own instance of the software given our limited budget, however, all such files are provided **AS IS** and are only intended to function under the narrow circumstances of usage which we recommend within the comments of the provided example configuration files.
With that said, the vast majority of our community acts kindly and courteously towards us and each other. We really do appreciate it, and we'll continue to help you to the best of our ability. With that in mind, we're happy to announce that we've written and deployed a first version of our user guide, available at https://docs.cryptpad.fr. The work that went into this was funded by NLnet foundation as an NGI Zero PET (Privacy-Enhancing Technology) grant. We are currently working on two more guides intended for developers and administrators, and will deploy them to the same domain as they are completed. In the meantime we have begun to update our README, GitHub wiki, and other resources to reflect the current recommended practices and remove references to unsupported configurations.
With that said, the vast majority of our community acts kindly and courteously towards us and each other. We really do appreciate it, and we'll continue to help you to the best of our ability. With that in mind, we're happy to announce that we've written and deployed a first version of our user guide, available at https://docs.cryptpad.org. The work that went into this was funded by NLnet foundation as an NGI Zero PET (Privacy-Enhancing Technology) grant. We are currently working on two more guides intended for developers and administrators, and will deploy them to the same domain as they are completed. In the meantime we have begun to update our README, GitHub wiki, and other resources to reflect the current recommended practices and remove references to unsupported configurations.
If you're only reading this for instructions on how to update your instance from 3.20.1 to 3.21.0:

View File

@ -110,12 +110,15 @@ module.exports = {
* To give access to the admin panel to a user account, just add their public signing
* key, which can be found on the settings page for registered users.
* Entries should be strings separated by a comma.
* adminKeys: [
* "[cryptpad-user1@my.awesome.website/YZgXQxKR0Rcb6r6CmxHPdAGLVludrAF2lEnkbx1vVOo=]",
* "[cryptpad-user2@my.awesome.website/jA-9c5iNuG7SyxzGCjwJXVnk5NPfAOO8fQuQ0dC83RE=]",
* ]
*
*/
/*
adminKeys: [
//"[cryptpad-user1@my.awesome.website/YZgXQxKR0Rcb6r6CmxHPdAGLVludrAF2lEnkbx1vVOo=]",
],
*/
/* =====================
* STORAGE

View File

@ -143,7 +143,7 @@ define([
Pages.privacyLink = footLink(customURLs.privacy, 'privacy');
Pages.termsLink = footLink(customURLs.terms, 'terms');
Pages.sourceLink = footLink(customURLs.source, 'footer_source');
Pages.docsLink = footLink('https://docs.cryptpad.fr', 'docs_link');
Pages.docsLink = footLink('https://docs.cryptpad.org', 'docs_link');
Pages.roadmapLink = footLink(customURLs.roadmap, 'footer_roadmap');
@ -228,7 +228,7 @@ define([
h('i.fa.fa-info-circle'),
Pages.areSubscriptionsAllowed()? Msg.pricing: Msg.features
]),
h('a.nav-item.nav-link', { href: 'https://docs.cryptpad.fr'},
h('a.nav-item.nav-link', { href: 'https://docs.cryptpad.org'},
[h('i.fa.fa-book', {'aria-hidden':'true'}),Msg.docs_link]),
].concat(rightLinks)
);

View File

@ -15,7 +15,14 @@
margin-bottom: 10px !important;
}
}
// todo ul, ol
// fix silly spacing around sublists in "loose lists"
:is(ul, ol) li > p {
& + :is(ul, ol) {
margin-bottom: 1rem;
}
}
// TOC
div.cp-md-toc {
background: @cp_markdown-bg;

View File

@ -87,9 +87,14 @@ server {
if ($args ~ ver=) {
set $cacheControl max-age=31536000;
}
# This rule overrides the above caching directive and makes things somewhat less efficient.
# We had inverted them as an optimization, but Safari 16 introduced a bug that interpreted
# some important headers incorrectly when loading these files from cache.
# This is why we can't have nice things :(
if ($uri ~ ^(\/|.*\/|.*\.html)$) {
set $cacheControl no-cache;
}
# Will not set any header if it is emptystring
add_header Cache-Control $cacheControl;

View File

@ -200,6 +200,46 @@ var archiveDocument = function (Env, Server, cb, data) {
// Env.blobStore.archive.proof(userSafeKey, blobId, cb)
};
var removeDocument = function (Env, Server, cb, data) {
if (!Array.isArray(data)) { return void cb("EINVAL"); }
var args = data[1];
var id, reason;
if (typeof(args) === 'string') {
id = args;
} else if (args && typeof(args) === 'object') {
id = args.id;
reason = args.reason;
}
if (typeof(id) !== 'string' || id.length < 32) { return void cb("EINVAL"); }
switch (id.length) {
case 32:
return void Env.msgStore.removeChannel(id, Util.both(cb, function (err) {
Env.Log.info("REMOVAL_CHANNEL_BY_ADMIN_RPC", {
channelId: id,
reason: reason,
status: err? String(err): "SUCCESS",
});
Channel.disconnectChannelMembers(Env, Server, id, 'EDELETED', err => {
if (err) { } // TODO
});
}));
case 48:
return void Env.blobStore.remove.blob(id, Util.both(cb, function (err) {
Env.Log.info("REMOVAL_BLOB_BY_ADMIN_RPC", {
id: id,
reason: reason,
status: err? String(err): "SUCCESS",
});
}));
default:
return void cb("INVALID_ID_LENGTH");
}
};
var restoreArchivedDocument = function (Env, Server, cb, data) {
if (!Array.isArray(data)) { return void cb("EINVAL"); }
var args = data[1];
@ -733,6 +773,8 @@ var commands = {
SET_LAST_EVICTION: setLastEviction,
GET_WORKER_PROFILES: getWorkerProfiles,
GET_USER_TOTAL_SIZE: getUserTotalSize,
REMOVE_DOCUMENT: removeDocument,
};
Admin.command = function (Env, safeKey, data, _cb, Server) {

View File

@ -189,8 +189,9 @@ var queryQuotaServer = function (Env, cb) {
let url = new URL(Env.accounts_api);
if (!['https:', 'http:'].includes(url.protocol)) { throw new Error("INVALID_PROTOCOL"); }
if (url.protocol === 'http:') { H = Http; }
if (typeof(url.port) === 'number') { options.port = url.port; }
options.host = url.host;
let port = Number(url.port);
if (port && typeof(port) === 'number') { options.port = port; }
options.host = url.hostname;
Env.Log.info("USING_CUSTOM_ACCOUNTS_API", {
value: Env.accounts_api,
});
@ -241,7 +242,7 @@ Quota.updateCachedLimits = function (Env, _cb) {
Quota.applyCustomLimits(Env);
if (!Env.allowSubscriptions && !Env.accounts_api) { return void cb(); }
if (!Env.allowSubscriptions || !Env.accounts_api) { return void cb(); }
Quota.queryQuotaServer(Env, function (err, json) {
if (err) { return void cb(err); }
if (!json) { return void cb(); }

View File

@ -206,7 +206,7 @@ RPC.create = function (Env, cb) {
// failure is expected if they have not specified a quota API endpoint
if (!Env.accounts_api) { return; }
if (e) {
Env.WARN('limitUpdate', e);
Env.WARN('LIMIT_UPDATE', e);
}
});
};

View File

@ -73,9 +73,11 @@ Stats.instanceData = function (Env) {
//data.archiveRetentionTime = Env.archiveRetentionTime,
}
// we won't consider instances for public listings
// unless they opt to provide more info about themselves
if (!Env.provideAggregateStatistics) { return data; }
// Admins can opt-in to providing more detailed information about the extent of the instance's usage
if (!Env.provideAggregateStatistics) {
// check how many instances provide stats before we put more work into it
data.providesAggregateStatistics = true;
}
return data;
};

View File

@ -85,6 +85,62 @@ var channelExists = function (filepath, cb) {
});
};
var isChannelAvailable = function (env, channelName, cb) {
// construct the path
var filepath = mkPath(env, channelName);
var metapath = mkMetadataPath(env, channelName);
// (ansuz) I'm uncertain whether this task should be unordered or ordered.
// there's a round trip to the client (and possibly the user) before they decide
// to act on the information of whether there is already content present in this channel.
// so it's practically impossible to avoid race conditions where someone else creates
// some content before you.
// if that's the case, it's basically impossible that you'd generate the same signing key,
// and thus historykeeper should reject the signed messages of whoever loses the race.
// thus 'unordered' seems appropriate.
env.schedule.unordered(channelName, function (next) {
var done = Util.once(Util.mkAsync(Util.both(cb, next)));
var exists = false;
var handler = function (err, _exists) {
if (err) { return void done(err); }
exists = exists || _exists;
};
nThen(function (w) {
channelExists(filepath, w(handler));
channelExists(metapath, w(handler));
}).nThen(function () {
done(void 0, exists);
});
});
};
var isChannelArchived = function (env, channelName, cb) {
// construct the path
var filepath = mkArchivePath(env, channelName);
var metapath = mkArchiveMetadataPath(env, channelName);
// as with the method above, somebody might remove, restore, or overwrite an archive
// in the time that it takes to answer this query and to execute whatever follows.
// since it's impossible to win the race every time let's just make this 'unordered'
env.schedule.unordered(channelName, function (next) {
var done = Util.once(Util.mkAsync(Util.both(cb, next)));
var exists = false;
var handler = function (err, _exists) {
if (err) { return void done(err); }
exists = exists || _exists;
};
nThen(function (w) {
channelExists(filepath, w(handler));
channelExists(metapath, w(handler));
}).nThen(function () {
done(void 0, exists);
});
});
};
const destroyStream = function (stream) {
if (!stream) { return; }
try {
@ -683,6 +739,7 @@ var unarchiveChannel = function (env, channelName, cb) {
// so unlike 'archiveChannel' we won't overwrite.
// Fse.move will call back with EEXIST in such a situation
var ENOENT = false;
nThen(function (w) {
// if either metadata or a file exist in prod, abort
channelExists(channelPath, w(function (err, exists) {
@ -702,7 +759,7 @@ var unarchiveChannel = function (env, channelName, cb) {
}
if (exists) {
w.abort();
return CB("UNARCHIVE_METADATA_CONFLICT");
return CB("UNARCHIVE_METADATA_CONFLICT"); // XXX
}
}));
}).nThen(function (w) {
@ -710,6 +767,10 @@ var unarchiveChannel = function (env, channelName, cb) {
var archiveChannelPath = mkArchivePath(env, channelName);
// restore the archived channel
Fse.move(archiveChannelPath, channelPath, w(function (err) {
if (err && err.code === 'ENOENT') {
ENOENT = true;
return;
}
if (err) {
w.abort();
return void CB(err);
@ -723,6 +784,10 @@ var unarchiveChannel = function (env, channelName, cb) {
Fse.move(archiveMetadataPath, metadataPath, w(function (err) {
// if there's nothing to move, you're done.
if (err && err.code === 'ENOENT') {
if (ENOENT) {
// nothing was deleted? the client probably wants to know about that.
return void cb("ENOENT");
}
return CB();
}
// call back with an error if something goes wrong
@ -1196,31 +1261,12 @@ module.exports.create = function (conf, _cb) {
// check if a channel exists in the database
isChannelAvailable: function (channelName, cb) {
if (!isValidChannelId(channelName)) { return void cb(new Error('EINVAL')); }
// construct the path
var filepath = mkPath(env, channelName);
// (ansuz) I'm uncertain whether this task should be unordered or ordered.
// there's a round trip to the client (and possibly the user) before they decide
// to act on the information of whether there is already content present in this channel.
// so it's practically impossible to avoid race conditions where someone else creates
// some content before you.
// if that's the case, it's basically impossible that you'd generate the same signing key,
// and thus historykeeper should reject the signed messages of whoever loses the race.
// thus 'unordered' seems appropriate.
schedule.unordered(channelName, function (next) {
channelExists(filepath, Util.both(cb, next));
});
isChannelAvailable(env, channelName, cb);
},
// check if a channel exists in the archive
isChannelArchived: function (channelName, cb) {
if (!isValidChannelId(channelName)) { return void cb(new Error('EINVAL')); }
// construct the path
var filepath = mkArchivePath(env, channelName);
// as with the method above, somebody might remove, restore, or overwrite an archive
// in the time that it takes to answer this query and to execute whatever follows.
// since it's impossible to win the race every time let's just make this 'unordered'
schedule.unordered(channelName, function (next) {
channelExists(filepath, Util.both(cb, next));
});
isChannelArchived(env, channelName, cb);
},
// move a channel from the database to the archive, along with its metadata
archiveChannel: function (channelName, cb) {

View File

@ -2,17 +2,19 @@
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 screenshot](screenshot.png "Private real-time collaboration on a Rich Text document.")
![Drive screenshot](screenshot.png "preview of the CryptDrive")
![Suite screenshots](screenshot-suite.png "all CyptPad applications: Document, Sheet, Presentation, Form, Kanban, Code, Rich Text, Whiteboard")
# Installation
## For development
Our [developer guide](https://docs.cryptpad.fr/en/dev_guide/setup.html) provides instructions for setting up a local instance without HTTPS or our more advanced security features.
Our [developer guide](https://docs.cryptpad.org/en/dev_guide/setup.html) provides instructions for setting up a local instance without HTTPS or our more advanced security features.
## For production
Configuring CryptPad for production requires a little more work, but the process is described in our [admin installation guide](https://docs.cryptpad.fr/en/admin_guide/installation.html). From there you can find more information about customization and maintenance.
Configuring CryptPad for production requires a little more work, but the process is described in our [admin installation guide](https://docs.cryptpad.org/en/admin_guide/installation.html). From there you can find more information about customization and maintenance.
## Current version
@ -62,10 +64,12 @@ More information about this can be found in [our translation guide](/customize.d
# Contacting Us
You can reach members of the CryptPad development team on [Twitter](https://twitter.com/cryptpad),
via our [GitHub issue tracker](https://github.com/xwiki-labs/cryptpad/issues/), on our
[Matrix channel](https://riot.im/app/#/room/#cryptpad:matrix.org), or by
[e-mail](mailto:research@xwiki.com).
The best places to reach the development team and the community are the [CryptPad Forum](https://forum.cryptpad.org) and the [Matrix chat](https://matrix.to/#/#cryptpad:matrix.xwiki.com)
The team is also on social media:
- Mastodon: [@cryptpad@fosstodon.org](https://fosstodon.org/@cryptpad)
- Twitter: [@cryptpad](https://twitter.com/cryptpad)
# Team
@ -73,7 +77,7 @@ CryptPad is actively developed by a team at [XWiki SAS](https://www.xwiki.com),
# Contributing
We love Open Source and we love contribution. Learn more about [contributing](https://docs.cryptpad.fr/en/how_to_contribute.html).
We love Open Source and we love contribution. Learn more about [contributing](https://docs.cryptpad.org/en/how_to_contribute.html).
If you have any questions or comments, or if you're interested in contributing to CryptPad, come say hi in our [Matrix channel](https://app.element.io/#/room/#cryptpad:matrix.xwiki.com).

BIN
screenshot-suite.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 125 KiB

View File

@ -1,4 +1,6 @@
var EN = require("../../www/common/translations/messages.json");
var Util = require("../../www/common/common-util.js");
var Fs = require("fs");
var simpleTags = [
'<br>',
@ -51,12 +53,63 @@ special_rules.fr = function (s) {
var noop = function () {};
var getTags = S => {
if (typeof(S) !== 'string') { return []; }
var tags = [];
S.replace(/(<[\s\S]*?>|\{\d+\})/g, function (html) {
tags.push(html);
});
return tags;
};
var getTagCount = T => {
var M = {};
T.forEach(html => {
Util.inc(M, html);
});
return M;
};
// bidirectional comparison
var compareMarkup = (A, B) => {
// if the frequency of some key in A does not match that of the same key in B
var diff = {};
var compare = k => {
if (diff[k]) { return; }
var a = A[k] || 0;
var b = B[k] || 0;
if (a === b) { return; }
diff[k] = b - a;
};
Object.keys(A).forEach(compare);
// same for B
Object.keys(B).forEach(compare);
return diff;
};
var getReferenceMarkup = (function () {
var O = {};
return function (k) {
var val = O[k];
if (typeof(val) !== 'undefined') { return val; }
var tags = getTags(EN[k]);
val = O[k] = getTagCount(tags);
return val;
};
}());
var finalErrorCount = 0;
var processLang = function (map, lang, primary) {
var announced = false;
var announce = function () {
if (announced) { return; }
announced = true;
console.log("NEXT LANGUAGE: ", lang);
console.log("## LANGUAGE: %s\n", lang);
};
var special = special_rules[lang] || noop;
@ -68,7 +121,20 @@ var processLang = function (map, lang, primary) {
if (typeof(s) !== 'string') { return; }
var usesHTML;
s.replace(/<[\s\S]*?>/g, function (html) {
var ref = getReferenceMarkup(k);
var tags = getTags(s);
var tagCount = getTagCount(tags);
var markupDiff = compareMarkup(ref, tagCount);
//console.log(markupDiff);
var markupMatches = Object.keys(markupDiff).length === 0;
//console.log(ref);
tags.forEach(html => {
if (/\{\d+\}/.test(html)) { return; }
if (simpleTags.includes(html)) {
found_tags[html] = 1;
return;
@ -88,41 +154,40 @@ var processLang = function (map, lang, primary) {
var specialViolation = special(s);
if (usesHTML || weirdCapitalization || specialViolation) {
if (usesHTML || weirdCapitalization || specialViolation || !markupMatches) {
finalErrorCount++;
announce();
console.log("%s", s);
console.log("[%s]\n", k);
console.log("`[%s]`\n", k);
console.log("`%s`", s);
if (!markupMatches) {
console.log("\nMarkup does not match base translation");
console.log("\n**Reference**: \n\n`%s`\n", EN[k]);
//console.log('base', ref);
//console.log('translation', tagCount);
console.log('**diff**:\n\n```\n%s\n```', JSON.stringify(markupDiff, null, 2));
console.log();
}
//if (mismatchedTags.length) { console.log(mismatchedTags); } // XXX
}
});
};
var langs = Fs.readdirSync("www/common/translations").filter(name => {
return /messages\..+\.json$/.test(name);
}).map(name => {
var code;
name.replace(/messages\.(.+)\.json$/, (all, _code) => {
code = _code;
});
return code;
});
processLang(EN, 'en', true);
[
'ar',
//'bn_BD',
'ca',
'cs',
'de',
'es',
'eu',
'fi',
'fr',
'hi',
'it',
'ja',
'nb',
'nl',
'pl',
'pt-br',
'ro',
'ru',
'sv',
//'te',
'tr',
'uk',
'zh',
].forEach(function (lang) {
langs.forEach(function (lang) {
try {
var map = require("../../www/common/translations/messages." + lang + ".json");
if (!Object.keys(map).length) { return; }
@ -136,3 +201,7 @@ simpleTags.forEach(html => {
if (found_tags[html]) { return; }
console.log(`html exemption '${html}' is unnecessary.`);
});
if (finalErrorCount) {
console.log(`\nTotal errors: ${finalErrorCount}`);
}

View File

@ -312,11 +312,11 @@ app.get('/api/updatequota', function (req, res) {
var Quota = require("./lib/commands/quota");
Quota.updateCachedLimits(Env, (e) => {
if (e) {
Env.warn('UPDATE_QUOTA_ERR', e);
Env.Log.warn('UPDATE_QUOTA_ERR', e);
res.status(500);
return void send500(res);
}
Env.log('QUOTA_UPDATED', {});
Env.Log.info('QUOTA_UPDATED', {});
res.send();
});
});

View File

@ -2,7 +2,6 @@
@import (reference) '../../customize/src/less2/include/sidebar-layout.less';
@import (reference) '../../customize/src/less2/include/support.less';
@import (reference) '../../customize/src/less2/include/charts.less';
&.cp-app-admin {
.framework_min_main();
@ -21,11 +20,12 @@
text-decoration: underline;
}
.alert.alert-info.cp-admin-bigger-alert {
font-size: 16px;
.alert.alert-info, .alert.alert-danger {
&.cp-admin-bigger-alert {
font-size: 16px;
}
}
.cp-admin-setlimit-form, .cp-admin-broadcast-form {
label {
font-weight: normal !important;
@ -45,6 +45,10 @@
}
}
.cp-admin-getlimits {
td {
overflow: hidden;
text-overflow: ellipsis;
}
code {
cursor: pointer;
}
@ -61,12 +65,15 @@
max-width: 500px;
}
@media screen and (max-width: 1200px) {
td.note {
button.cp-report {
display: none;
}
:is(td, th).note {
display: none;
}
}
@media screen and (max-width: 1400px) {
td.plan {
:is(td, th).plan {
display: none;
}
}
@ -330,6 +337,7 @@
.cp-charts-row.heading {
font-weight: bold;
}
table.cp-admin-all-limits,
table.cp-metadata-history,
table.cp-account-stats,
table.cp-block-stats,
@ -341,7 +349,7 @@
td, pre {
color: @cryptpad_text_col;
}
td {
td, th {
max-width: 60vw; // XXX
border: 1px solid @color;
padding: 5px;

View File

@ -105,7 +105,7 @@ define([
'cp-admin-update-available',
'cp-admin-checkup',
'cp-admin-block-daily-check',
//'cp-admin-provide-aggregate-statistics',
'cp-admin-provide-aggregate-statistics',
'cp-admin-list-my-instance',
'cp-admin-consent-to-contact',
@ -200,6 +200,7 @@ define([
var data = {
generated: +new Date(),
key: key,
safeKey: Util.escapeKeyCharacters(key),
};
return void nThen(function (w) {
@ -376,7 +377,16 @@ define([
row(Messages.admin_generatedAt, new Date(data.generated));
// signing key
row(Messages.settings_publicSigningKey, data.key);
if (data.key === data.safeKey) {
row(Messages.settings_publicSigningKey, h('code', data.key));
} else {
row(Messages.settings_publicSigningKey, h('span', [
h('code', data.key),
', ',
h('br'),
h('code', data.safeKey),
]));
}
// First pin activity time
row(Messages.admin_firstPinTime, maybeDate(data.first));
@ -701,7 +711,7 @@ define([
var row = tableObj.row;
row(Messages.admin_generatedAt, maybeDate(data.generated));
row(Messages.documentID, data.id);
row(Messages.documentID, h('code', data.id));
row(Messages.admin_documentType, localizeType(data.type));
row(Messages.admin_documentSize, data.size? getPrettySize(data.size): Messages.ui_undefined);
@ -778,7 +788,72 @@ define([
}
if (data.live) {
if (data.live && data.archived) {
let disableButtons;
let restoreButton = danger(Messages.admin_unarchiveButton, function () {
justifyRestorationDialog('', reason => {
nThen(function (w) {
sframeCommand('REMOVE_DOCUMENT', {
id: data.id,
reason: reason,
}, w(err => {
if (err) {
w.abort();
return void UI.warn(Messages.error);
}
}));
}).nThen(function () {
sframeCommand("RESTORE_ARCHIVED_DOCUMENT", {
id: data.id,
reason: reason,
}, (err /*, response */) => {
if (err) {
console.error(err);
return void UI.warn(Messages.error);
}
UI.log(Messages.restoredFromServer);
disableButtons();
});
});
});
});
let archiveButton = danger(Messages.admin_archiveButton, function () {
justifyArchivalDialog('', result => {
sframeCommand('ARCHIVE_DOCUMENT', {
id: data.id,
reason: result,
}, (err /*, response */) => {
if (err) {
console.error(err);
return void UI.warn(Messages.error);
}
UI.log(Messages.archivedFromServer);
disableButtons();
});
});
});
disableButtons = function () {
[archiveButton, restoreButton].forEach(el => {
disable($(el));
});
};
row(h('span', [
Messages.admin_documentConflict,
h('br'),
h('small', Messages.ui_experimental),
]), h('span', [
h('div.alert.alert-danger.cp-admin-bigger-alert', [
Messages.admin_conflictExplanation,
]),
h('p', [
restoreButton,
archiveButton,
]),
]));
} else if (data.live) {
// archive
var archiveDocumentButton = danger(Messages.admin_archiveButton, function () {
justifyArchivalDialog('', result => {
@ -799,9 +874,7 @@ define([
archiveDocumentButton,
h('small', Messages.admin_archiveHint),
]));
}
if (data.archived && !data.live) {
} else if (data.archived) {
var restoreDocumentButton = primary(Messages.admin_unarchiveButton, function () {
justifyRestorationDialog('', reason => {
sframeCommand("RESTORE_ARCHIVED_DOCUMENT", {
@ -1017,7 +1090,7 @@ define([
var row = tableObj.row;
row(Messages.admin_generatedAt, maybeDate(data.generated));
row(Messages.admin_blockKey, data.key);
row(Messages.admin_blockKey, h('code', data.key));
row(Messages.admin_blockAvailable, localizeState(data.live));
row(Messages.admin_blockArchived, localizeState(data.archived));
@ -1535,8 +1608,6 @@ define([
return obj[a].limit > obj[b].limit;
});
var compact = list.length > 10;
var content = list.map(function (key) {
var user = obj[key];
var limit = getPrettySize(user.limit);
@ -1544,33 +1615,50 @@ define([
Messages._getKey('admin_limitPlan', [user.plan]) + ', ' +
Messages._getKey('admin_limitNote', [user.note]);
var infoButton = h('button.btn.primary.cp-report', {
style: 'margin-left: 10px; cursor: pointer;',
}, Messages.admin_diskUsageButton);
$(infoButton).click(() => {
console.log(key);
getAccountData(key, (err, data) => {
if (err) { return void console.error(err); }
console.log(data);
var table = renderAccountData(data);
UI.alert(table, () => {
}, {
wide: true,
});
});
});
var keyEl = h('code.cp-limit-key', key);
$(keyEl).click(function () {
$('.cp-admin-setlimit-form').find('.cp-setlimit-key').val(key);
$('.cp-admin-setlimit-form').find('.cp-setlimit-quota').val(Math.floor(user.limit / 1024 / 1024));
$('.cp-admin-setlimit-form').find('.cp-setlimit-note').val(user.note);
});
if (compact) {
return h('tr.cp-admin-limit', {
title: title
}, [
h('td', keyEl),
h('td.limit', Messages._getKey('admin_limit', [limit])),
h('td.plan', Messages._getKey('admin_limitPlan', [user.plan])),
h('td.note', Messages._getKey('admin_limitNote', [user.note]))
]);
}
return h('li.cp-admin-limit', [
keyEl,
h('ul.cp-limit-data', [
h('li.limit', Messages._getKey('admin_limit', [limit])),
h('li.plan', Messages._getKey('admin_limitPlan', [user.plan])),
h('li.note', Messages._getKey('admin_limitNote', [user.note]))
])
var attr = { title: title };
return h('tr.cp-admin-limit', [
h('td', [
keyEl,
infoButton,
]),
h('td.limit', attr, limit),
h('td.plan', attr, user.plan),
h('td.note', attr, user.note)
]);
});
if (compact) { return $div.append(h('table.cp-admin-all-limits', content)); }
$div.append(h('ul.cp-admin-all-limits', content));
return $div.append(h('table.cp-admin-all-limits', [
h('tr', [
h('th', Messages.settings_publicSigningKey),
h('th.limit', Messages.admin_planlimit),
h('th.plan', Messages.admin_planName),
h('th.note', Messages.admin_note)
]),
].concat(content)));
});
};
APP.refreshLimits();

View File

@ -64,7 +64,7 @@ define(['/api/config'], function (ApiConfig) {
// If we ever abandon the cryptpad.fr domain someone could squat it and abuse this trust.
// If the docs domain is a subdomain of the current one then redirect automatically.
// We might make the docs domain configurable at some point in the future.
if (target.host === 'docs.cryptpad.fr' && target.host.endsWith(host.host)) {
if (target.host === 'docs.cryptpad.org' && target.host.endsWith(host.host)) {
return void go();
}

View File

@ -21,10 +21,24 @@ html, body {
padding-top: 15px;
}
.summary, .failure, .error, .success {
.cp-test-status, .summary {
margin-bottom: 1em;
border-radius: @corner;
padding: 15px;
&.success {
border: 1px solid green;
}
&.failure {
border: 1px solid red;
}
&.error {
border: 1px solid red;
}
&.warning {
border: 1px solid yellow;
}
}
//.summary, .failure, .error, .success { }
.pending {
border: 1px solid @cryptpad_text_col;
@ -32,15 +46,6 @@ html, body {
margin-right: 20px;
}
}
.success {
border: 1px solid green;
}
.failure {
border: 1px solid red;
}
.error {
border: 1px solid red;
}
.hidden {
display: none;
}
@ -84,14 +89,19 @@ html, body {
word-break: keep-all;
font-style: italic;
}
a {
color: @cryptpad_color_link;
}
}
.cp-notice-browser, .cp-notice-details, .cp-notice-other {
a {
color: @cryptpad_color_link;
}
.cp-notice-browser, .cp-notice-details, .cp-notice-other, .cp-notice-customizations {
font-size: 70%;
}
.cp-notice-customizations {
border: 1px solid #777;
padding: 5px;
}
.underline { text-decoration: underline; }
.cp-app-checkup-version, .cp-app-checkup-browser {
.underline;

View File

@ -1167,7 +1167,7 @@ define([
return h('span', [
" See ",
h('a', {
href: href || 'https://docs.cryptpad.fr/en/admin_guide/customization.html#application-config',
href: href || 'https://docs.cryptpad.org/en/admin_guide/customization.html#application-config',
target: "_blank",
rel: 'noopener noreferrer',
}, "the relevant documentation"),
@ -1178,7 +1178,7 @@ define([
};
var TERMS_DOCS_LINK = function (key) {
return APPCONFIG_DOCS_LINK(key, 'https://docs.cryptpad.fr/en/admin_guide/customization.html#links-to-terms-of-service-privacy-policy-and-imprint-pages');
return APPCONFIG_DOCS_LINK(key, 'https://docs.cryptpad.org/en/admin_guide/customization.html#links-to-terms-of-service-privacy-policy-and-imprint-pages');
};
var isValidInfoURL = function (url) {
@ -1469,9 +1469,87 @@ define([
});
});
assert(function (cb, msg) {
// public instances are expected to be open for registration
// if this is not a public instance, pass this test immediately
if (!ApiConfig.listMyInstance) { return cb(true); }
// if it's public but registration is not registricted, that's also a pass
if (!ApiConfig.restrictRegistration) { return void cb(true); }
setWarningClass(msg);
msg.appendChild(h('span', [
"The administrators of this instance have opted in to inclusion in ",
link('https://cryptpad.org/instances/', 'the public instance directory'),
' but have disabled registration, which is expected to be open.',
h('br'),
h('br'),
" Registration can be reopened using the instance's admin panel.",
]));
cb(false);
});
var compareCustomized = function (a, b, cb) {
var getText = (url, done) => {
Tools.common_xhr(url, xhr => {
xhr.done(done);
});
};
var A, B;
nThen(w => {
getText(a, w(res => {
A = res;
}));
getText(b, w(res => {
B = res;
}));
}).nThen(() => {
cb(void 0, A === B);
});
};
var CUSTOMIZATIONS = [];
// check whether some important pages have been customized
assert(function (cb /*, msg */) {
nThen(function (w) {
// add whatever custom pages you want here
[
'application_config.js',
'pages.js',
].forEach(resource => {
// sort this above errors and warnings and style in a neutral color.
var A = `/customize.dist/${resource}`;
var B = `/customize/${resource}`;
compareCustomized(A, B, w((err, same) => {
if (err || same) { return; }
CUSTOMIZATIONS.push(resource);
}));
});
}).nThen(function () {
// Implementing these checks as a test was an easy way to ensure that
// they completed before the final report was shown. It's intentional
// that this always passes
cb(true);
});
});
var serverToken;
Tools.common_xhr('/', function (xhr) {
serverToken = xhr.getResponseHeader('server');
assert(function (cb, msg) {
Tools.common_xhr('/', function (xhr) {
serverToken = xhr.getResponseHeader('server');
msg.appendChild(h('span', [
`Due to its use of `,
h('em', `CloudFlare`),
` this instance may be inaccessible by users of the Tor network, and generally less secure because of the additional point of failure where code can be intercepted and modified by bad actors.`,
]));
//if (1) { return void cb(false || {serverToken}); }
cb(!/cloudflare/i.test(serverToken) || {
serverToken,
});
});
});
var row = function (cells) {
@ -1488,11 +1566,11 @@ define([
console.error(err);
}
return h('div.error', [
return h(`div.errorcp-test-status.${obj.type}`, [
h('h5', obj.message),
h('div.table-container',
h('table', [
row(["Failed test number", obj.test + 1]),
row(["Test number", obj.test + 1]),
row(["Returned value", h('pre', code(printableValue))]),
])
),
@ -1536,21 +1614,82 @@ define([
};
Assert.run(function (state) {
var errors = state.errors;
var isWarning = function (x) {
return x && /cp\-warning/.test(x.getAttribute('class'));
};
var isInfo = x => x && /cp\-info/.test(x.getAttribute('class'));
var errors = state.errors; // TODO anomalies might be better?
var categories = {
error: 0,
info: 0,
warning: 0,
};
errors.forEach(obj => {
if (isWarning(obj.message)) {
obj.type = 'warning';
} else if (isInfo(obj.message)) {
obj.type = 'info';
state.passed++;
} else {
obj.type = 'error';
}
Util.inc(categories, obj.type);
});
var failed = errors.length;
Messages.assert_numberOfTestsPassed = "{0} / {1} tests passed.";
var statusClass = failed? 'failure': 'success';
var statusClass;
if (categories.error !== 0) {
statusClass = 'failure';
} else if (categories.warning !== 0) {
statusClass = 'failure';
} else if (categories.info !== 0) {
statusClass = 'neutral';
} else {
statusClass = 'success';
}
var failedDetails = "Details found below";
var successDetails = "This checkup only tests the most common configuration issues. You may still experience errors or incorrect behaviour.";
var details = h('p.cp-notice-details', failed? failedDetails: successDetails);
var sortMethod = function (a, b) {
if (a.type === 'info' && b.type !== 'info') {
return 1;
}
if (a.type === 'warning' && b.type !== 'warning') {
return 1;
}
return a.test - b.test;
};
var customizations;
if (CUSTOMIZATIONS.length) {
customizations = h('div.cp-notice-customizations', [
h('p', `The following assets have been customized for this instance:`),
h('ul', CUSTOMIZATIONS.map(asset => {
var href = `/customize/${asset}`;
return h('li', [
h('a', {
href: `href?${+new Date()}`,
target: '_blank',
}, href),
]);
})),
h('p', `Unexpected behaviour could be related to these changes. If you are this instance's administrator, please try temporarily disabling them before submitting a bug report.`),
]);
}
var summary = h('div.summary.' + statusClass, [
versionStatement(),
serverStatement(serverToken),
browserStatement(),
customizations,
h('p', Messages._getKey('assert_numberOfTestsPassed', [
state.passed,
state.total
@ -1558,17 +1697,6 @@ define([
details,
]);
var isWarning = function (x) {
return x && /cp\-warning/.test(x.getAttribute('class'));
};
var sortMethod = function (a, b) {
if (isWarning(a.message) && !isWarning(b.message)) {
return 1;
}
return a.test - b.test;
};
var report = h('div.report', [
summary,
h('div.failures', errors.sort(sortMethod).map(failureReport)),

View File

@ -1041,7 +1041,7 @@ define([
});
if (exitable) {
$(window).focus();
$(window).keydown(function (e) {
$(window).keydown(function (e) { // XXX what if they don't have a keyboard?
if (e.which === 27) {
$loading.hide();
if (typeof(exitable) === "function") { exitable(); }

View File

@ -372,7 +372,7 @@ define([
h('div.cp-teams-invite-block', [
h('span', Messages.team_inviteLinkSetPassword),
h('a.cp-teams-help.fa.fa-question-circle', {
href: origin + Pages.localizeDocsLink('https://docs.cryptpad.fr/en/user_guide/security.html#passwords-for-documents-and-folders'),
href: origin + Pages.localizeDocsLink('https://docs.cryptpad.org/en/user_guide/security.html#passwords-for-documents-and-folders'),
target: "_blank",
'data-tippy-placement': "right"
})
@ -1205,12 +1205,12 @@ define([
whiteboard: 'whiteboard',
};
var href = "https://docs.cryptpad.fr/en/user_guide/applications.html";
var href = "https://docs.cryptpad.org/en/user_guide/applications.html";
if (apps[type]) {
href = "https://docs.cryptpad.fr/en/user_guide/apps/" + apps[type] + ".html";
href = "https://docs.cryptpad.org/en/user_guide/apps/" + apps[type] + ".html";
}
if (type === 'drive') {
href = "https://docs.cryptpad.fr/en/user_guide/drive.html";
href = "https://docs.cryptpad.org/en/user_guide/drive.html";
}
href = Pages.localizeDocsLink(href);
@ -1871,7 +1871,7 @@ define([
attributes: {
'target': '_blank',
'rel': 'noopener',
'href': 'https://docs.cryptpad.fr',
'href': 'https://docs.cryptpad.org',
'class': 'fa fa-book'
},
content: h('span', Messages.docs_link)
@ -2386,7 +2386,7 @@ define([
UI.getFileIcon({type: type})[0],
h('div.cp-creation-title-text', [
h('span', newPadH3Title),
createHelper(Pages.localizeDocsLink('https://docs.cryptpad.fr/en/user_guide/apps/general.html#new-document'), Messages.creation_helperText)
createHelper(Pages.localizeDocsLink('https://docs.cryptpad.org/en/user_guide/apps/general.html#new-document'), Messages.creation_helperText)
])
]);
$creation.append(title);
@ -2820,6 +2820,8 @@ define([
if (err.type === 'EEXPIRED') {
msg = Messages.expiredError;
if (err.loaded) {
// XXX You can still use the current version in read-only mode by pressing Esc.
// what if they don't have a keyboard (ie. mobile)
msg += Messages.errorCopy;
}
if (toolbar && typeof toolbar.deleted === "function") { toolbar.deleted(); }

View File

@ -345,7 +345,7 @@ define([
]),
h('br'),
h('a.cp-learn-more', {
href: Pages.localizeDocsLink('https://docs.cryptpad.fr/en/user_guide/security.html#remote-content'),
href: Pages.localizeDocsLink('https://docs.cryptpad.org/en/user_guide/security.html#remote-content'),
}, [
Messages.resources_learnWhy
]),

View File

@ -2645,7 +2645,7 @@ define([
}
if (!APP.loggedIn) {
msg = APP.newSharedFolder ? Messages.fm_info_sharedFolder : Messages._getKey('fm_info_anonymous', [ApiConfig.inactiveTime || 90]);
var docsLink = 'https://docs.cryptpad.fr/en/user_guide/user_account.html#account-types';
var docsLink = 'https://docs.cryptpad.org/en/user_guide/user_account.html#account-types';
$box.html(msg).find('a[href="#docs"]').each(function () {
$(this).attr({
href: Pages.localizeDocsLink(docsLink),
@ -2772,7 +2772,7 @@ define([
// Get the upload options
var addSharedFolderModal = function (cb) {
var docsHref = common.getBounceURL(Pages.localizeDocsLink("https://docs.cryptpad.fr/en/user_guide/share_and_access.html#owners"));
var docsHref = common.getBounceURL(Pages.localizeDocsLink("https://docs.cryptpad.org/en/user_guide/share_and_access.html#owners"));
// Ask for name, password and owner
var content = h('div', [
@ -4755,7 +4755,7 @@ define([
style: 'display:flex;align-items:center;justify-content:space-between'
}, [
UI.createCheckbox('cp-upload-owned', Messages.sharedFolders_create_owned, true),
UI.createHelper(Pages.localizeDocsLink('https://docs.cryptpad.fr/en/user_guide/share_and_access.html#owners'), Messages.creation_owned1)
UI.createHelper(Pages.localizeDocsLink('https://docs.cryptpad.org/en/user_guide/share_and_access.html#owners'), Messages.creation_owned1)
]),
]);
return void UI.confirm(convertContent, function(res) {

View File

@ -301,7 +301,7 @@ define([
h('a', {href: '#'}, Messages.passwordFaqLink)
]);
$(link).click(function () {
opts.common.openUnsafeURL(Pages.localizeDocsLink("https://docs.cryptpad.fr/en/user_guide/security.html#passwords-for-documents-and-folders"));
opts.common.openUnsafeURL(Pages.localizeDocsLink("https://docs.cryptpad.org/en/user_guide/security.html#passwords-for-documents-and-folders"));
});
return link;
};

View File

@ -590,8 +590,9 @@ define([
if (!channel.isFriendChat) { return; }
var curvePublic = channel.curvePublic;
var friend = contactsData[curvePublic] || friendData;
var name = Util.fixHTML(UI.getDisplayName(friend.name || friend.displayName));
var content = h('div', [
UI.setHTML(h('p'), Messages._getKey('contacts_confirmRemove', [Util.fixHTML(friend.name)])),
UI.setHTML(h('p'), Messages._getKey('contacts_confirmRemove', [ name ])),
]);
UI.confirm(content, function (yes) {
if (!yes) { return; }
@ -709,6 +710,7 @@ define([
var curvePublic = info.curvePublic;
contactsData[curvePublic] = info;
if (!Array.isArray(types)) { return; }
if (types.indexOf('displayName') !== -1) {
var name = info.displayName;

View File

@ -238,6 +238,8 @@ define([
var removeFromFriendList = function (ctx, curvePublic, cb) {
var proxy = ctx.store.proxy;
var friends = proxy.friends;
// FIXME this probably shouldn't happen, but functions that take callbacks
// should be guaranteed to call back.
if (!friends) { return; }
delete friends[curvePublic];
Realtime.whenRealtimeSyncs(ctx.store.realtime, function () {
@ -447,7 +449,12 @@ define([
var msg = [Types.unfriend, proxy.curvePublic, +new Date()];
var msgStr = JSON.stringify(msg);
var cryptMsg = channel.encrypt(msgStr);
channel.wc.bcast(cryptMsg).then(function () {}, function (err) {
channel.wc.bcast(cryptMsg).then(function () {
onFriendRemoved(ctx, curvePublic, data.channel);
removeFromFriendList(ctx, curvePublic, function () {
cb();
});
}, function (err) {
if (err) { return void cb({error:err}); }
onFriendRemoved(ctx, curvePublic, data.channel);
removeFromFriendList(ctx, curvePublic, function () {

View File

@ -353,7 +353,7 @@ define([
style: 'display:flex;align-items:center;justify-content:space-between'
}, [
UI.createCheckbox('cp-upload-owned', Messages.upload_modal_owner, modalState.owned),
createHelper(Pages.localizeDocsLink('https://docs.cryptpad.fr/en/user_guide/share_and_access.html#owners'), Messages.creation_owned1)
createHelper(Pages.localizeDocsLink('https://docs.cryptpad.org/en/user_guide/share_and_access.html#owners'), Messages.creation_owned1)
]),
manualStore
]);
@ -411,7 +411,7 @@ define([
style: 'display:flex;align-items:center;justify-content:space-between'
}, [
UI.createCheckbox('cp-upload-owned', Messages.uploadFolder_modal_owner, modalState.owned),
createHelper(Pages.localizeDocsLink('https://docs.cryptpad.fr/en/user_guide/share_and_access.html#owners'), Messages.creation_owned1)
createHelper(Pages.localizeDocsLink('https://docs.cryptpad.org/en/user_guide/share_and_access.html#owners'), Messages.creation_owned1)
]),
manualStore
]);

View File

@ -807,7 +807,7 @@ define([
if (i) { i.classList = 'fa fa-shhare-alt'; }
var a = error.querySelector('a');
if (a) {
a.setAttribute('href', Pages.localizeDocsLink("https://docs.cryptpad.fr/en/user_guide/user_account.html#confidentiality"));
a.setAttribute('href', Pages.localizeDocsLink("https://docs.cryptpad.org/en/user_guide/user_account.html#confidentiality"));
}
UI.errorLoadingScreen(error);
});
@ -856,6 +856,8 @@ define([
ctx.sframeChan.on('EV_LOADING_ERROR', function (err) {
var msg = err;
if (err === 'DELETED') {
// XXX You can still use the current version in read-only mode by pressing Esc.
// what if they don't have a keyboard (ie. mobile)
msg = Messages.deletedError + '<br>' + Messages.errorRedirectToHome;
}
if (err === "INVALID_HASH") {

1499
www/common/translations/' Normal file

File diff suppressed because it is too large Load Diff

View File

@ -18,16 +18,16 @@
},
"common_connectionLost": "<b>S'ha perdut la connexió amb el servidor</b><br>Fins que la connexió no torni, esteu en mode només de lectura.",
"typeError": "Aquest document és incompatible amb l'aplicació seleccionada",
"onLogout": "Esteu fora del vostre compte, {0}cliqueu aquí{1} per iniciar la sessió<br>o premeu <em>Esc</em> per accedir al vostre document en mode només de lectura.",
"onLogout": "Esteu fora del vostre compte, {0}cliqueu aquí{1} per iniciar la sessió<br>o premeu Esc per accedir al vostre document en mode només de lectura.",
"padNotPinned": "Aquest document caducarà després de 3 mesos d'inactivitat, {0}connecteu-vos{1} o {2}registreu-vos{3} per conservar-lo.",
"anonymousStoreDisabled": "L'administració d'aquesta instància de CryptPad ha desactivat l'emmagatzematge pels comptes anònims. Cal que inicieu la sessió per utilitzar el CryptDrive.",
"expiredError": "Aquest document ha caducat i ja no està disponible.",
"deletedError": "Aquest document ha estat esborrat i ja no està disponible.",
"inactiveError": "Donada la seva inactivitat, aquest document s'ha esborrat. Premeu Esc per crear un nou document.",
"chainpadError": "Hi ha hagut un error crític mentre s'actualitzava el vostre contingut. Aquesta pàgina es manté en mode només de lectura per assegurar que no perdreu el que ja heu fet.<br>Premeu <em>Esc</em> per continuar veient aquest document o torneu a carregar la pàgina per provar de continuar editant-lo.",
"chainpadError": "Hi ha hagut un error crític mentre s'actualitzava el vostre contingut. Aquesta pàgina es manté en mode només de lectura per assegurar que no perdreu el que ja heu fet.<br>Premeu Esc per continuar veient aquest document o torneu a carregar la pàgina per provar de continuar editant-lo.",
"invalidHashError": "El document que heu demanat té una adreça URL no vàlida.",
"errorCopy": " Encara podeu usar la versió actual en mode \"només lectura\" prement <em>Esc</em>.",
"errorRedirectToHome": "Premeu <em>Esc</em> per tornar al vostre CryptDrive.",
"errorCopy": " Encara podeu usar la versió actual en mode \"només lectura\" prement Esc.",
"errorRedirectToHome": "Premeu Esc per tornar al vostre CryptDrive.",
"newVersionError": "Hi ha una nova versió disponible de CryptPad.<br><a href='#'>Torneu a carregar</a> la pàgina per utilitzar la versió nova o premeu Esc per accedir al vostre contingut en mode <b>fora de línia</b>.",
"loading": "Carregant...",
"error": "Error",
@ -215,7 +215,7 @@
"contacts_title": "Contactes",
"contacts_added": "Invitació de contacte acceptada.",
"contacts_rejected": "Invitació de contacte rebutjada",
"contacts_request": "<em>{0}</em> vol afegir-vos com a contacte. <b>Ho accepteu<b>?",
"contacts_request": "<em>{0}</em> vol afegir-vos com a contacte. <b>Ho accepteu</b>?",
"contacts_send": "Envia",
"contacts_remove": "Suprimeix aquest contacte",
"contacts_confirmRemove": "De debò voleu suprimir <em>{0}</em> dels vostres contactes?",
@ -395,7 +395,7 @@
"register_emailWarning1": "Podeu continuar, però aquestes dades no són necessàries i no s'enviaran al nostre servidor.",
"register_emailWarning2": "No podreu restablir la vostra contrasenya utilitzant la vostra adreça electrònica, com en molts altres serveis.",
"register_emailWarning3": "Si això us ha quedat clar i voleu seguir utilitzant la vostra adreça electrònica com identificador, cliqueu D'acord.",
"settings_autostoreHint": "L'emmagatzematge <b>Automàtic</b> dels documents permet de desar tots els documents que visiteu dins el vostre CryptDrive, sense que hàgiu de fer res de la vostra part.<br>L'emmagatzematge <b>Manual (sense preguntar)</b> permet que no es desin els documents automàticament. Sempre hi haurà l'opció de desar-los, però restarà oculta.",
"settings_autostoreHint": "L'emmagatzematge <b>Automàtic</b> dels documents permet de desar tots els documents que visiteu dins el vostre CryptDrive, sense que hàgiu de fer res de la vostra part.<br>L'emmagatzematge <b>Manual (preguntar sempre)</b> permet que es desin els documents.<br>L'emmagatzematge <b>Manual (sense preguntar)</b> sempre hi haurà l'opció de desar-los, però restarà oculta.",
"settings_autostoreYes": "Automàtic",
"settings_autostoreNo": "Manual (sense preguntar)",
"settings_autostoreMaybe": "Manual (preguntar sempre)",
@ -527,4 +527,4 @@
"features_f_cryptdrive1_note": "Carpetes, carpetes compartides, models, etiquetes",
"ui_restore": "Restaura",
"admin_documentType": "Tipus"
}
}

View File

@ -14,7 +14,7 @@
"login_password": "Heslo",
"login_username": "Uživatelské jméno",
"padNotPinned": "Tento dokument expiruje za 3 měsíce neaktivity, {0}přihlašte se{1} nebo {2}se registrujte{3} pro jeho uchování.",
"onLogout": "Jste odhlášení, {0}klikněte zde{1} pro přihlášení<br>nebo zmáčkněte <em>Escape</em> pro čtení dokumentu.",
"onLogout": "Jste odhlášení, {0}klikněte zde{1} pro přihlášení<br>nebo zmáčkněte Esc pro čtení dokumentu.",
"typeError": "Tento dokument není kompatibilní s vybranou aplikací",
"common_connectionLost": "<b>Spojení se serverem ztraceno</b><br>Nyní jste v režimu čtení, dokud nebude spojení obnoveno.",
"type": {
@ -89,9 +89,9 @@
"disabledApp": "Tato aplikace byla zakázána. Kontaktujte administrátory této CryptPad instance pro bližší informace.",
"mustLogin": "Pro přístup k této stránce je vyžadováno přihlášení",
"newVersionError": "K dispozici je nová verze CryptPad.<br><a href='#'>Obnovte stránku</a> pro zobrazení nové verze nebo zmáčkněte escape pro pokračování <b>offline</b>.",
"errorRedirectToHome": "Stiskněte <em>Esc</em> pro přesměrování do vašeho CryptDrive.",
"errorCopy": " Stále můžete použít současnou verzi v režimu jen pro čtení stisknutím <em>Esc</em>.",
"chainpadError": "Během nahrávání vašeho obsahu nastala kritická chyba. Tato stránka je režimu jen pro čtení, aby nedošlo ke ztrátě vaší práce.<br>Pro pokračování prohlížení tohoto dokumentu stiskněte <em>Esc</em>, nebo stránku znovu načtěte pro pokračování v úpravách.",
"errorRedirectToHome": "Stiskněte Esc pro přesměrování do vašeho CryptDrive.",
"errorCopy": " Stále můžete použít současnou verzi v režimu jen pro čtení stisknutím Esc.",
"chainpadError": "Během nahrávání vašeho obsahu nastala kritická chyba. Tato stránka je režimu jen pro čtení, aby nedošlo ke ztrátě vaší práce.<br>Pro pokračování prohlížení tohoto dokumentu stiskněte Esc, nebo stránku znovu načtěte pro pokračování v úpravách.",
"fm_tags_name": "Název štítku",
"fm_deletedPads": "Tyto dokumenty již na serveru neexistují, byly odstraněny z vašeho CryptDrite: {0}",
"fm_padIsOwnedOther": "Tento dokument vlastní jiný uživatel",
@ -250,7 +250,7 @@
"contacts_confirmRemove": "Jste si jistí, že chcete odstranit <em>{0}</em> z vašich kontaktů?",
"contacts_remove": "Odebrat kontakt",
"contacts_send": "Odeslat",
"contacts_request": "<em>{0}</em> si vás chce přidat do kontaktů. <b>Přijmout<b>?",
"contacts_request": "<em>{0}</em> si vás chce přidat do kontaktů. <b>Přijmout</b>?",
"contacts_rejected": "Žádost o přidání do kontaktů zamítnuta",
"contacts_added": "Žádost o přidání do kontatů přijata.",
"contacts_title": "Kontakty",
@ -551,7 +551,7 @@
"fc_newsharedfolder": "Nová sdílená složka",
"fc_newfolder": "Nová složka",
"fm_tags_used": "Počet uživatelů",
"fm_removePermanentlyDialog": "Jste si jistí, že chcete odebrat tuto {0} položku z vašeho CryptDrive? Zůstane v CryptDrive dalších uživatelů, kteří si ji uložili.",
"fm_removePermanentlyDialog": "Jste si jistí, že chcete odebrat tuto položku z vašeho CryptDrive? Zůstane v CryptDrive dalších uživatelů, kteří si ji uložili.",
"friendRequest_accepted": "<b>{0}</b> přijal vaši žádost o přidání do kontaktů",
"friendRequest_declined": "<b>{0}</b> odmítnul vaši žádost o přidání do kontaktů",
"friendRequest_decline": "Odmítnout",
@ -566,7 +566,7 @@
"admin_diskUsageButton": "Vytvořit report",
"admin_diskUsageHint": "Množství úložného prostoru spotřebovaného různými prostředky CryptPad",
"admin_diskUsageTitle": "Využití Drive",
"timeoutError": "Kvůli chybě došlo k přerušení spojení se serverem. <br>Stiskněte <em>Esc</em> pro obnovení stránky.",
"timeoutError": "Kvůli chybě došlo k přerušení spojení se serverem. <br>Stiskněte Esc pro obnovení stránky.",
"contact_email": "Email",
"contact_chat": "Chat",
"contact_bug": "Nahlásit chybu",

View File

@ -20,15 +20,15 @@
},
"common_connectionLost": "<b>Die Verbindung zum Server ist abgebrochen</b><br>Du kannst das Dokument nicht bearbeiten, bis die Verbindung wieder funktioniert.",
"typeError": "Dieses Dokument ist mit der ausgewählten Anwendung nicht kompatibel",
"onLogout": "Du bist ausgeloggt. {0}Klicke hier{1}, um dich wieder einzuloggen,<br>oder drücke <em>Escape</em>, um dein Dokument schreibgeschützt zu öffnen.",
"onLogout": "Du bist ausgeloggt. {0}Klicke hier{1}, um dich wieder einzuloggen,<br>oder drücke Esc, um dein Dokument schreibgeschützt zu öffnen.",
"padNotPinned": "Dieses Dokument wird nach 3 Monaten ohne Aktivität auslaufen. {0}Logge dich ein{1} oder {2}registriere dich{3}, um das Auslaufen zu verhindern.",
"anonymousStoreDisabled": "Der Administrator dieser CryptPad-Instanz hat die Verwendung des Speichers für Gäste deaktiviert. Logge dich ein, um dein persönliches CryptDrive zu verwenden.",
"expiredError": "Dieses Dokument ist abgelaufen und nicht mehr verfügbar.",
"deletedError": "Dieses Dokument wurde gelöscht und ist nicht mehr verfügbar.",
"inactiveError": "Dieses Dokument ist wegen Inaktivität gelöscht worden. Drücke Esc, um ein neues Dokument zu erstellen.",
"chainpadError": "Ein kritischer Fehler ist beim Aktualisieren deines Inhalts aufgetreten. Diese Seite ist schreibgeschützt, damit du sicherstellen kannst, dass kein Inhalt verloren geht.<br>Drücke <em>Esc</em>, um das Dokument schreibgeschützt zu öffnen oder lade es neu, um die Bearbeitung fortzusetzen.",
"errorCopy": " Du kannst die aktuelle Version weiterhin schreibgeschützt verwenden, indem du <em>Esc</em> drückst.",
"errorRedirectToHome": "Drücke <em>Esc</em>, um zu deinem CryptDrive zurückzukehren.",
"chainpadError": "Ein kritischer Fehler ist beim Aktualisieren deines Inhalts aufgetreten. Diese Seite ist schreibgeschützt, damit du sicherstellen kannst, dass kein Inhalt verloren geht.<br>Drücke Esc, um das Dokument schreibgeschützt zu öffnen oder lade es neu, um die Bearbeitung fortzusetzen.",
"errorCopy": " Du kannst die aktuelle Version weiterhin schreibgeschützt verwenden, indem du Esc drückst.",
"errorRedirectToHome": "Drücke Esc, um zu deinem CryptDrive zurückzukehren.",
"newVersionError": "Eine neue Version von CryptPad ist verfügbar.<br><a href='#'>Lade die Seite neu</a>, um die neue Version zu benutzen. Drücke Esc, um im <b>Offline-Modus</b> weiterzuarbeiten.",
"loading": "Laden...",
"error": "Fehler",
@ -214,7 +214,7 @@
"contacts_title": "Kontakte",
"contacts_added": "Kontaktanfrage akzeptiert.",
"contacts_rejected": "Kontaktanfrage abgelehnt",
"contacts_request": "Benutzer <em>{0}</em> möchte dich als Kontakt hinzufügen. <b>Annehmen<b>?",
"contacts_request": "<em>{0}</em> möchte dich als Kontakt hinzufügen. <b>Annehmen</b>?",
"contacts_send": "Senden",
"contacts_remove": "Diesen Kontakt entfernen",
"contacts_confirmRemove": "Bist du sicher, dass du <em>{0}</em> von der Kontaktliste entfernen möchtest?",
@ -624,7 +624,7 @@
"contact_bug": "Fehlerbericht",
"contact_chat": "Chat",
"contact_email": "E-Mail",
"timeoutError": "Ein Fehler hat deine Verbindung zum Server unterbrochen. <br>Drücke <em>Esc</em>, um die Seite neu zu laden.",
"timeoutError": "Ein Fehler hat deine Verbindung zum Server unterbrochen. <br>Drücke Esc, um die Seite neu zu laden.",
"admin_diskUsageTitle": "Speicherplatzbelegung",
"admin_diskUsageHint": "Speicherplatz, der von verschiedenen CryptPad-Ressourcen verwendet wird",
"admin_diskUsageButton": "Bericht generieren",
@ -948,7 +948,7 @@
"slide_backCol": "Hintergrundfarbe",
"slide_textCol": "Textfarbe",
"support_languagesPreamble": "Das Support-Team spricht die folgenden Sprachen:",
"settings_safeLinkDefault": "Sichere Links sind nun standardmäßig aktiviert. Bitte verwende zum Kopieren von Links das Menü <b>Teilen</b> und nicht die Adressleiste des Browsers.",
"settings_safeLinkDefault": "Sichere Links sind nun standardmäßig aktiviert. Bitte verwende zum Kopieren von Links das Menü <i></i><b>Teilen</b> und nicht die Adressleiste des Browsers.",
"info_imprintFlavour": "<a>Rechtliche Informationen</a> über die Administratoren dieses Servers",
"info_privacyFlavour": "<a>Datenschutzerklärung</a> für diese Instanz",
"user_about": "Über CryptPad",
@ -1487,5 +1487,18 @@
"og_contact": "{0}: Kontakt",
"og_teamDrive": "Team-Drive",
"og_default": "CryptPad: Ende-zu-Ende-verschlüsselte Suite zur Zusammenarbeit",
"ui_jsRequired": "JavaScript muss aktiviert sein, um die Verschlüsselung in deinem Browser zu ermöglichen"
"ui_jsRequired": "JavaScript muss aktiviert sein, um die Verschlüsselung in deinem Browser zu ermöglichen",
"admin_restoreArchivedPins": "Liste der Dokumente wiederherstellen",
"admin_archivePinLog": "Liste der Dokumente archivieren",
"admin_getPinList": "Liste der gespeicherten Dokumente",
"admin_pinLogArchived": "Liste der Dokumente wurde archiviert",
"admin_pinLogAvailable": "Liste der Dokumente ist verfügbar",
"admin_lastPinTime": "Letzte Speicheraktivität",
"admin_firstPinTime": "Erste Speicheraktivität",
"og_login": "Melde dich bei {0} an",
"admin_documentConflict": "Archivieren/Wiederherstellen",
"og_register": "Registriere einen Account auf {0}",
"admin_conflictExplanation": "Es gibt zwei Versionen dieses Dokuments. Wenn du die archivierte Version wiederherstellst, wird die aktuelle Version überschrieben. Wenn du die aktuelle Version archivierst, überschreibst du die archivierte Version. Beide Aktionen können nicht rückgängig gemacht werden.",
"admin_note": "Abo-Notiz",
"admin_planName": "Abo-Name"
}

View File

@ -14,7 +14,7 @@
},
"common_connectionLost": "<b>Η σύνδεση με τον διακομιστή χάθηκε</b><br>Βρίσκεστε σε λειτουργία ανάγνωσης μόνο μέχρι να επανέλθει η σύνδεση.",
"typeError": "Αυτό το pad δεν είναι συμβατό με την επιλεγμένη εφαρμογή",
"onLogout": "Έχετε αποσυνδεθεί, {0}κάντε \"κλικ\" εδώ{1} για να συνδεθείτε<br>ή πατήστε <em>Escape</em> για να προσπελάσετε το έγγραφο σε λειτουργία ανάγνωσης μόνο.",
"onLogout": "Έχετε αποσυνδεθεί, {0}κάντε \"κλικ\" εδώ{1} για να συνδεθείτε<br>ή πατήστε Esc για να προσπελάσετε το έγγραφο σε λειτουργία ανάγνωσης μόνο.",
"loading": "Φόρτωση...",
"error": "Σφάλμα",
"saved": "Αποθηκεύτηκε",
@ -44,7 +44,7 @@
"formattedGB": "{0} GB",
"formattedKB": "{0} KB",
"pinLimitReached": "Έχετε φτάσει το όριο αποθηκευτικού χώρου",
"pinLimitReachedAlert": "Έχετε φτάσει το όριο αποθηκευτικού χώρου. Τα νέα pads δεν θα αποθηκευτούν στο CryptDrive σας.<br>Μπορείτε είτε να διαγράψετε αρχεία από το CryptDrive σας, είτε να <a href=\"https://accounts.cryptpad.fr/#!on={0}\" target=\"_blank\">αναβαθμισετε τον λογαριασμό σας</a> για να αυξήσετε το όριο αποθήκευσης.",
"pinLimitReachedAlert": "Έχετε φτάσει το όριο αποθηκευτικού χώρου. Τα νέα pads δεν θα αποθηκευτούν στο CryptDrive σας.<br>Μπορείτε είτε να διαγράψετε αρχεία από το CryptDrive σας, είτε να <a>αναβαθμισετε τον λογαριασμό σας</a> για να αυξήσετε το όριο αποθήκευσης.",
"pinLimitReachedAlertNoAccounts": "Έχετε φτάσει το όριο αποθηκευτικού χώρου",
"pinLimitNotPinned": "Έχετε φτάσει το όριο αποθηκευτικού χώρου.<br>Αυτό το pad δεν θα αποθηκευτεί στο CryptDrive σας.",
"pinLimitDrive": "Έχετε φτάσει το όριο αποθηκευτικού χώρου.<br>Δεν μπορείτε να δημιουργήσετε νέα pads.",
@ -60,7 +60,7 @@
"saveTitle": "Αποθήκευση τίτλου (enter)",
"forgetButton": "Διαγραφή",
"forgetPrompt": "Πατώντας OK θα μετακινηθεί αυτό το pad στον κάδο ανακύκλωσης. Είστε σίγουρος;",
"movedToTrash": "Το pad μετακινήθηκε στον κάδο.<br><a href=\"/drive/\">Μεταφερθείτε στο CryptDrive σας</a>",
"movedToTrash": "Το pad μετακινήθηκε στον κάδο.<br><a>Μεταφερθείτε στο CryptDrive σας</a>",
"shareButton": "Διαμοιρασμός",
"shareSuccess": "Ο σύνδεσμος αντιγράφηκε στην προσωρινή μνήμη",
"userListButton": "Λίστα χρηστών",
@ -169,7 +169,7 @@
"contacts_title": "Επαφές",
"contacts_added": "Η επαφή αποδέχτηκε την πρόσκληση.",
"contacts_rejected": "Η επαφή απέρριψε την πρόσκληση",
"contacts_request": "Ο/Η <em>{0}</em> Θα ήθελε να σας προσθέσει ως επαφή. <b>Αποδοχή<b>;",
"contacts_request": "Ο/Η <em>{0}</em> Θα ήθελε να σας προσθέσει ως επαφή. <b>Αποδοχή</b>;",
"contacts_send": "Αποστολή",
"contacts_remove": "Αφαίρεση αυτής της επαφής",
"contacts_confirmRemove": "Είσαστε σίγουροι πως θέλετε να αφαιρέσετε τον/την <em>{0}</em> από τις επαφές σας;",
@ -217,7 +217,6 @@
"fm_info_template": "Περιέχει όλα τα pads που έχουν αποθηκευτεί ως πρότυπα και μπορείτε να ξαναχρησιμοποιήσετε όταν δημιουργείτε ένα νέο pad.",
"fm_info_recent": "Λίστα των πρόσφατα τροποποιημένων ή ανοιγμένων pads.",
"fm_info_trash": "Αδειάστε τον κάδο σας για να απελευθερώσετε χώρο στο CryptDrive σας.",
"fm_info_anonymous": "Δεν έχετε συνδεθεί, οπότε τα pads σας θα διαγραφούν μετά από 3 μήνες. <a href=\"/register/\">Εγγραφείτε</a> ή <a href=\"/login/\">Συνδεθείτε</a> για να τα κρατήσετε επ' αόριστον.",
"fm_error_cantPin": "Εσωτερικό σφάλμα διακομιστή. Παρακαλούμε επαναφορτώστε τη σελίδα και προσπαθήστε ξανά.",
"fm_viewListButton": "Προβολή λίστας",
"fm_viewGridButton": "Προβολή πλέγματος",
@ -331,7 +330,6 @@
"mdToolbar_list": "Λίστα με σημεία",
"mdToolbar_check": "Λίστα εργασιών",
"mdToolbar_code": "Κώδικας",
"main_catch_phrase": "Το Zero Knowledge σύννεφο",
"about": "Σχετικά",
"privacy": "Ιδιωτικότητα",
"contact": "Επικοινωνία",
@ -343,7 +341,7 @@
"view": "προβολή",
"feedback_about": "Εάν το διαβάζετε αυτό, πιθανότατα ήσασταν περίεργοι για ποιο λόγο το CryptPad ζητά ιστοσελίδες όταν κάνετε συγκεκριμένες ενέργειες",
"feedback_privacy": "Ενδιαφερόμαστε για την ιδιωτικότητά σας και ταυτόχρονα θέλουμε το CryptPad να είναι πολύ εύκολο στην χρήση. Χρησιμοποιούμε αυτό το αρχείο για να καταλάβουμε ποια χαρακτηριστικά του περιβάλλοντος διάδρασης ενδιαφέρουν τους χρήστες μας, με το να το ζητήσουμε σε συνδυασμό με μια παράμετρο η οποία μας δείχνει συγκεκριμένα ποια ενέργεια έγινε.",
"feedback_optout": "Εάν θα θέλατε να απέχετε, επισκεφθείτε <a href='/settings/'>τη σελίδα ρυθμίσεων</a> του λογαριασμού σας, όπου θα βρείτε ένα κουτί στο οποίο μπορείτε να ενεργοποιήσετε ή να απενεργοποιήσετε την αναπληροφόρηση",
"feedback_optout": "Εάν θα θέλατε να απέχετε, επισκεφθείτε <a>τη σελίδα ρυθμίσεων</a> του λογαριασμού σας, όπου θα βρείτε ένα κουτί στο οποίο μπορείτε να ενεργοποιήσετε ή να απενεργοποιήσετε την αναπληροφόρηση",
"ui_restore": "Επαναφορά",
"admin_documentType": "Τύπος"
}
}

View File

@ -51,7 +51,7 @@
"poll_descriptionHint": "Descripción",
"header_logoTitle": "Volver a tu CryptDrive",
"typeError": "Este documento no es compatible con la aplicación seleccionada",
"onLogout": "Tu sesión está cerrada, {0}haz clic aquí{1} para iniciar sesión<br>o pulsa <em>Escape</em> para acceder al documento en modo sólo lectura.",
"onLogout": "Tu sesión está cerrada, {0}haz clic aquí{1} para iniciar sesión<br>o pulsa Esc para acceder al documento en modo sólo lectura.",
"loading": "Cargando...",
"error": "Error",
"language": "Idioma",
@ -294,10 +294,10 @@
"expiredError": "Este documento ha expirado y ya no está disponible.",
"deletedError": "Este documento ha sido borrado y ya no se encuentra disponible.",
"inactiveError": "Este documento ha sido eliminado por inactividad. Presione Esc para crear un nuev documento.",
"chainpadError": "Ha ocurrido un error crítico al actualizar su contenido. Esta página esta en modo de sólo lectura, para asegurarse que no perderá su trabajo.<br>Hit<em>Esc</em>para continuar y ver este documento, o recargar para editar nuevamente.",
"chainpadError": "Ha ocurrido un error crítico al actualizar su contenido. Esta página esta en modo de sólo lectura, para asegurarse que no perderá su trabajo.<br>Hit Esc para continuar y ver este documento, o recargar para editar nuevamente.",
"invalidHashError": "El documento que has solicitado tiene una URL invalida.",
"errorCopy": " Aún puedes acceder esta versión en modo lectura persionando <em>Esc</em>.",
"errorRedirectToHome": "Presiona<em>Esc</em>para ser redirigido a tu Cryptdrive.",
"errorCopy": " Aún puedes acceder esta versión en modo lectura persionando Esc.",
"errorRedirectToHome": "Presiona Esc para ser redirigido a tu Cryptdrive.",
"newVersionError": "Una nueva versión de CryptPad está disponible.<br><a href='#'>Recargar</a> para usar la nueva versión, o presiona escape para acceder a tu contenido en <b>modo offline</b>.",
"deletedFromServer": "Nota borrada",
"mustLogin": "Debes haber ingresado a tu cuenta para acceder a esta página",
@ -316,7 +316,7 @@
"printButtonTitle2": "Imprimir el documento o exportar como archivo PDF",
"printBackground": "Usar una imagen de fondo",
"printBackgroundButton": "Elija una imagen",
"printBackgroundValue": "<b>Fondo de pantalla actual</b><em>{0</em>}",
"printBackgroundValue": "<b>Fondo de pantalla actual</b><em>{0}</em>",
"printBackgroundRemove": "Eliminar este fondo de pantalla",
"tags_title": "Etiquetas (sólo para tí)",
"tags_add": "Actualizar las etiquetas para los documentos seleccionados",
@ -377,7 +377,7 @@
"fm_info_recent": "Estos documentos han sido abiertas o modificadas recientemente por ti o por tus colaboradores.",
"fm_info_sharedFolder": "Esta es una carpeta compartida. Usted no ha ingresado a su cuenta por lo que solo tiene acceso en modo solo lectura. <br><a href=\"/register/\">ingresar</a> o <a href=\"/login/\">ingresar</a> para poder importarla a su Cryptdrive y modificarla.",
"fm_info_owned": "Usted es el dueño de los documentos que se presentan. Esto significa que puede eliminarlos de manera permanente del servidor cuando lo desee. Si lo hace, los otros usuarios no podrán acceder a ellos nunca más.",
"fm_renamedPad": "Ha definido un nombre personalizado para este documento. El título compartido es: br><b>{0}</b>",
"fm_renamedPad": "Ha definido un nombre personalizado para este documento. El título compartido es: <br><b>{0}</b>",
"fm_canBeShared": "Esta carpeta puede ser compartida",
"fm_prop_tagsList": "Etiquetas",
"fm_burnThisDriveButton": "Borre toda la información que ha sido almacenada por CryptPad en su navegador",
@ -592,7 +592,7 @@
"admin_registeredHint": "Número de usuarios registrados en tu instancia",
"admin_registeredTitle": "Usuarios registrados",
"admin_activePadsHint": "Número de documentos únicos que se están viendo o editando ahora",
"admin_activePadsTitle": "Blocs activos",
"admin_activePadsTitle": "Documentos activos",
"admin_activeSessionsHint": "Número de conexiones websocket activas (y direcciones IP únicas conectadas)",
"admin_activeSessionsTitle": "Conexiones activas",
"adminPage": "Administración",
@ -603,13 +603,13 @@
"survey": "Encuesta de CryptPad",
"crowdfunding_popup_no": "Ahora no",
"crowdfunding_popup_text": "<h3>¡Necesitamos tu ayuda!</h3>Para garantizar que CryptPad se desarrolle activamente, considera apoyar el proyecto a través de la página OpenCollective, donde puedes ver nuestra <b>Hoja de ruta</b> y <b>Objetivos de financiación</b>.",
"autostore_notAvailable": "Tienes que guardar el bloc en tu CryptDrive antes de usar esta función.",
"autostore_notAvailable": "Tienes que guardar este documento en tu CryptDrive antes de poder usar esta función.",
"autostore_forceSave": "Guarda el fichero en tu CryptDrive",
"autostore_saved": "El bloc se guardó correctamente en tu CryptDrive!",
"autostore_error": "Error extraño: No pudimos guardar este bloc, inténtalo otra vez.",
"autostore_saved": "El documento se guardó correctamente en tu CryptDrive!",
"autostore_error": "Error inesperado: No pudimos guardar este documento, inténtalo otra vez.",
"autostore_hide": "No guardar",
"autostore_store": "Guardar",
"autostore_settings": "Puedes habilitar el almacenamiento automático de blocs en su <a>Página de</a> configuración!",
"autostore_settings": "Puedes habilitar el almacenamiento automático de documentos en su <a>Página de</a> configuración.",
"autostore_notstored": "Este {0} no está en su CryptDrive. ¿Quieres guardarlo ahora?",
"autostore_sf": "carpeta",
"chrome68": "Parece que estás usando el navegador Chrome o Chromium versión 68. Contiene un error que hace que la página se vuelva completamente blanca después de unos segundos o que la página no responda a los clics. Para solucionar este problema, puede cambiar a otra pestaña y volver, o tratar de desplazarse en la página. Este error debe corregirse en la próxima versión de su navegador.",
@ -626,12 +626,12 @@
"convertFolderToSF_SFParent": "Esta carpeta no puede ser convertida a una carpeta compartida en su actual localización. Mueva la carpeta fuera de la carperta compartida para continuar.",
"sharedFolders_share": "Comparte este enlace con otros usuarios registrados para darles accesso a la carpeta compartida. Una vez que ellos/as abran este enlace, la carpeta compartida será añadida a sus CryptDrive.",
"sharedFolders_create": "Crear una carpeta compartida",
"sharedFolders_duplicate": "Algunos de los documentos que intentaste mover ya estaban compartidos en la carpeta de destino",
"sharedFolders_duplicate": "Algunos de los documentos que intentaste mover ya estaban compartidos en la carpeta de destino.",
"admin_flushCacheTitle": "Vaciar caché HTTP",
"admin_updateLimitDone": "Actualización correcta",
"admin_updateLimitButton": "Actualizar cuotas",
"admin_updateLimitHint": "Forzar una actualización de los límites de almacenamiento del usuario se puede hacer en cualquier momento, pero sólo es necesario en caso de error",
"crowdfunding_button2": "Ayuda a CryptPad",
"crowdfunding_button2": "Dona",
"autostore_pad": "bloc",
"settings_padOpenLinkTitle": "Abrir links con un click",
"fm_expirablePad": "Expiración: {0}",
@ -640,14 +640,14 @@
"admin_diskUsageButton": "Generar informe",
"admin_diskUsageHint": "Cantidad de almacenamiento gastado por diversos recursos de CryptPad",
"admin_diskUsageTitle": "Almacenamiento usado",
"timeoutError": "Algún error ha cortado la conexión al servidor. <br>Pulsa<em>Esc </em> para recargar la página.",
"timeoutError": "Algún error ha cortado la conexión al servidor. <br>Pulsa Esc para recargar la página.",
"contact_email": "Correo electrónico",
"contact_chat": "Chat",
"contact_bug": "Informe de error",
"contact_devHint": "Para sugerencias de funciones, mejoras de usabilidad o para simplemente agradecer.",
"contact_dev": "Contactar a los desarrolladores",
"contact_adminHint": "Para cualquier problema relacionado con su cuenta, límites de almacenamiento o disponibilidad del servicio.\n",
"contact_admin": "Contactar a los administradores",
"contact_admin": "Contactar a los administradores para: {0}",
"footer_donate": "Donar",
"admin_flushCacheDone": "Vaciado de caché exitoso",
"admin_flushCacheButton": "Vaciar caché",
@ -715,5 +715,790 @@
"notification_fileShared": "{0} ha compartido un archivo contigo: <b>{1}</b>",
"notification_padShared": "{0} ha compartido un documento contigo: <b>{1}</b>",
"isNotContact": "{0} <b>no</b> es uno de tus contactos",
"isContact": "{0} es uno de tus contactos"
"isContact": "{0} es uno de tus contactos",
"team_inviteFrom": "Desde:",
"team_inviteLinkCopy": "Copiar link",
"team_inviteLinkCreate": "Crear link",
"team_inviteLinkErrorName": "Porfavor añade un nombre para la persona que estás invitando. Lo pueden cambiar después. ",
"team_inviteLinkWarning": "La primera persona en acceder a este link podrá unirse a este equipo y ver sus contenidos. Compártelo cuidadosamente.",
"team_inviteLinkLoading": "Generando tu link",
"team_inviteLinkNoteMsg": "Este mensaje será mostrado antes de que el/a recibidor/a decida unirse a este equipo.",
"team_inviteLinkNote": "Añadir un mensaje personal",
"team_inviteLinkSetPassword": "Proteger el link con una contraseña (recomendado)",
"team_inviteLinkTempName": "Nombre temporal (visible en la lista de invitaciones pendientes)",
"team_inviteLinkTitle": "Crear una invitación personalizada a este equipo",
"contacts_muteInfo": "No recibirás ninguna notificación o mensajes de usuarios/as silenciados/as.<br>Ellos/as no sabrán que los/as has silenciado. ",
"contacts_mutedUsers": "Cuentas silenciadas",
"contacts_manageMuted": "Manejar silenciados/as",
"contacts_unmute": "Dejar de silenciar",
"contacts_mute": "Silenciar",
"share_noContactsNotLoggedIn": "Accede o regístrate para ver tus contactos existentes y añadir nuevos.",
"share_copyProfileLink": "Copiar link del perfil",
"share_noContactsLoggedIn": "No estás conectado/a con nadie en CryptPad aún. Comparte el link hacia tu perfil para que la gente te envíe solicitudes de contacto.",
"passwordFaqLink": "Leer más acerca de las contraseñas",
"share_embedPasswordAlert": "Este ítem está protegido con contraseña. Cuando incruste este documento se le preguntará a los/as espectadores/as la contraseña.",
"share_contactPasswordAlert": "Este ítem está protegido con contraseña. Porque lo estás compartiendo con un contacto de CryptPad, el/la recibidor/a no tendrá que ingresar la contraseña.",
"share_linkPasswordAlert": "Este item está protegido con contraseña. Cuando envíes el link el/la recibidor/a tendrá que ingresar la contraseña.",
"share_linkWarning": "Este link contiene las llaves para tu documento. Los/as recibidores/as obtendrán acceso irrevocable a tu contenido.",
"pad_wordCount": "Palabras: {0}",
"teams_table_role": "Rol",
"teams_table_owners": "Manejar equipo",
"teams_table_admins": "Manejar miembros/as",
"teams_table_specificHint": "Estas son carpetas compartidas viejas en las cuales los espectadores aún tienen permiso para editar los documentos existentes. Los documentos creados o copiados en estas carpetas tendrán permisos estándar.",
"teams_table_specific": "Excepciones",
"teams_table_generic_own": "Manejar equipo: cambiar el nombre del equipo y su avatar, anñadir o expulsar propietarios/as, cambiar la suscripción del equipo, eliminar al equipo.",
"teams_table_generic_admin": "Manejar miembros/as: invitar y expulsar miembros/as, cambiar los roles de los/as miembros/as hasta administrador/a.",
"teams_table_generic_edit": "Editar: crear, modificar, y eliminar archivos y documentos.",
"teams_table_generic_view": "Vista: acceso a archivos y documentos (solo lectura).",
"teams_table_generic": "Roles y permisos",
"teams_table": "Roles",
"driveOfflineError": "Tu conexión a CryptPad ha sido perdida. Los cambios en este documento no serán guardados en tu CryptDrive. Porfavor cierra todas las pestañas de CryptPad e intenta de nuevo en una nueva ventana. ",
"properties_passwordSuccessFile": "La contraseña fue exitosamente cambiada.",
"properties_passwordWarningFile": "La contraseña ha sido cambiada exitosamente pero no pudimos actualizar tu CryptDrive con los datos nuevos. Tal vez tengas que eliminar la versión vieja del archivo manualmente.",
"properties_confirmNewFile": "¿Estás seguro/a? Añadir una contraseña cambiará la URL de este archivo. Los/as usuarios/as sin la contraseña perderán el acceso a este archivo.",
"properties_confirmChangeFile": "¿Estás seguro/a? Los/as usuarios/as sin la contraseña nueva perderán el acceso a este archivo.",
"password_error_seed": "¡No se ha encontrado el documento!<br>Este error puede ser causado por dos factores: O una contraseña fue agregada/cambiada, o el documento ha sido eliminado del servidor.",
"drive_sfPasswordError": "Contraseña incorrecta",
"drive_sfPassword": "Tu carpeta compartida {0} ya no está disponible. O ha sido eliminada por su propietario/a o ahora está protegida con una nueva contraseña. Puedes quitar esta carpeta de tu CryptDrive, o recuperar el acceso usando la nueva contraseña.",
"team_viewers": "Espectadores",
"settings_codeBrackets": "Soportes de autocierre",
"team_quota": "El límite de almacenamiento de tu equipo",
"team_title": "Equipo: {0}",
"team_demoteMeConfirm": "Estás a punto de renunciar a tus derechos. No vas a poder deshacer esta acción. ¿Estás seguro/a?",
"team_pendingOwnerTitle": "Este/a administrador/a no ha aceptado el ofrecimiento de propiedad todavía.",
"team_pendingOwner": "(pendiente)",
"team_deleteConfirm": "Estás a punto de eliminar los datos de todo un equipo. Esto puede impactar el acceso a los datos de otros/as miembros/as del equipo. Esto no se puede deshacer. ¿Estás seguro/a de que quieres proceder?",
"team_deleteButton": "Eliminar",
"team_deleteHint": "Eliminar el equipo y todos los documentos de propiedad exclusiva del equipo.",
"team_deleteTitle": "Eliminación de equipo",
"team_pending": "Invitado/a",
"sent": "Mensaje enviado",
"team_kickConfirm": "{0} va a saber que lo/a has quitado del equipo. ¿Estás seguro/a?",
"team_ownerConfirm": "Copropietarios/as pueden modificar o eliminar el equipo y quitarte como propietario/a. ¿Estás seguro/a?",
"team_rosterPromoteOwner": "Ofrecer propiedad",
"owner_team_add": "{0} quiere que seas un/a propietario/a del equipo <b>{1}</b>. ¿Aceptas?",
"team_listSlot": "Ranura de equipo disponible",
"team_listTitle": "Tus equipos",
"team_maxTeams": "Cada cuenta de usuario/a tan solo puede ser miembro/a de {0} equipos.",
"team_infoContent": "Cada equipo tiene su propio CryptDrive, quota de almacenamiento, chat, y lista de miembros/as. Los/as propietarios/as de equipos pueden borrar todo el equipo, los/as administradores/as pueden invitar or expulsar miembros/as y los/as miembros/as pueden dejar el equipo.",
"team_avatarHint": "Tamaño máximo 500KB (png, jpg, jpeg, gif)",
"team_avatarTitle": "Avatar del equipo",
"team_nameHint": "Establece el nombre del equipo",
"team_nameTitle": "Nombre del equipo",
"team_members": "Miembros/as",
"team_admins": "Administradores/as",
"team_owner": "Propietarios/as",
"team_leaveConfirm": "Si dejas este equipo perderás acceso a su CryptDrive, historial del chat, y otros contenidos. ¿Estás seguro/a?",
"team_leaveButton": "Dejar este equipo",
"team_inviteButton": "Invitar miembros",
"team_rosterKick": "Expulsar del equipo",
"team_rosterDemote": "Degradar",
"team_rosterPromote": "Promocionar",
"team_createName": "Nombre del equipo",
"team_createLabel": "Crear un nuevo equipo",
"team_infoLabel": "Acerca de equipos",
"team_cat_admin": "Administración",
"team_cat_drive": "Disco",
"team_cat_chat": "Chat",
"team_cat_members": "Miembros",
"team_cat_back": "Devuelta a equipos",
"team_cat_create": "Nuevo",
"team_cat_list": "Equipos",
"team_cat_general": "Acerca de",
"team_declineInvitation": "{0} ha rechazado tu ofrecimiento para unirse al equipo: <b>{1}</b>",
"team_acceptInvitation": "{0} ha aceptado tu ofrecimiento para unirse al equipo: <b>{1}</b>",
"team_kickedFromTeam": "{0} te ha expulsado del equipo: <b>{1}</b>",
"team_invitedToTeam": "{0} te ha invitado a unirte a su equipo: <b>{1}</b>",
"team_pcsSelectHelp": "Crear un documento apropiado en el disco de tu equipo le dará propiedad al equipo.",
"team_pcsSelectLabel": "Guardar en",
"team_inviteModalButton": "Invitar",
"team_pickFriends": "Elige a que contactos quieres invitar a este equipo",
"share_linkTeam": "Añadir al drive de equipo",
"owner_removedPending": "{0} ha rechazado tu ofrecimiento de propiedad para <b>{1}</b>",
"owner_removed": "{0} ha eliminado tu propiedad de <b>{1}</b>",
"owner_request_declined": "{0} ha rechazado tu ofrecimiento de ser propietario de <b>{1}</b>",
"owner_request_accepted": "{0} ha aceptado tu ofrecimiento de ser propietario de <b>{1}</b>",
"owner_request": "{0} quiere que seas un propietario de <b>{1}</b>",
"owner_add": "{0} quiere que seas un propietario del documento <b>{1}</b>. ¿Aceptas?",
"owner_addConfirm": "Los copropietarios podrán cambiar el contenido y eliminarte como propietario. ¿Estás seguro?",
"owner_removeMeConfirm": "Estás a punto de renunciar a tus derechos de propiedad. No podrás deshacer esta acción. ¿Estás seguro?",
"owner_removeConfirm": "¿Estás seguro de quitar la titularidad a los usuarios seleccionados? Se les notificará de esta acción.",
"owner_unknownUser": "desconocido",
"owner_removePendingText": "Pendiente",
"owner_removeText": "Propietarios",
"features_pricing": "{0} a {2}€ al mes",
"features_noData": "No se requiere información personal",
"homePage": "Página de inicio",
"pricing": "Precios",
"properties_unknownUser": "{0} usuario/s desconocido/s",
"requestEdit_sent": "Solicitud enviada",
"requestEdit_accepted": "{1} te ha concedido derechos de edición para el documento <b>{0}</b>",
"requestEdit_request": "{1} quiere editar el documento <b>{0}</b>",
"later": "Decidir más tarde",
"requestEdit_viewPad": "Abrir el documento en una nueva pestaña",
"requestEdit_confirm": "{1} ha pedido poder editar el documento <b>{0}</b>. ¿Quieres concederle/s acceso?",
"requestEdit_button": "Solicitar derechos de edición",
"support_notification": "Un administrador ha respondido a tu ticket de soporte",
"notifications_dismissAll": "Rechazar todas",
"notifications_cat_archived": "Historial",
"notifications_cat_pads": "Compartido conmigo",
"notifications_cat_friends": "Solicitudes de contacto",
"notifications_cat_all": "Todas",
"openNotificationsApp": "Abrir panel de notificaciones",
"notificationsPage": "Notificaciones",
"fc_noAction": "Ninguna acción disponible",
"support_closed": "Este ticket ha sido cerrado",
"support_from": "<b>De:</b> {0}",
"support_formTitle": "Ticket nuevo",
"support_cat_new": "Ticket nuevo",
"support_disabledHint": "Esta instancia de CryptPad aún no está configurada para usar un formulario de soporte.",
"support_disabledTitle": "El soporte no está habilitado",
"admin_supportListHint": "Aquí está la lista de tickets enviados por los usuarios al buzón de soporte. Todos los administradores pueden ver los mensajes y sus respuestas. Un ticket cerrado no se puede volver a abrir. Solo puedes eliminar (ocultar) tickets cerrados, y los tickets eliminados siguen siendo visibles para otros administradores.",
"admin_supportListTitle": "Buzón de soporte",
"form_willClose": "Este formulario cerrará en {0}",
"form_isClosed": "Este formulario fue cerrado en {0}",
"form_isOpen": "Este formulario está abierto",
"form_removeEnd": "Eliminar fecha de cierre",
"form_setEnd": "Establecer fecha de cierre",
"form_open": "Abrir",
"form_isPrivate": "Las respuestas son privadas",
"form_isPublic": "Las respuestas son públicas",
"form_makePublicWarning": "¿Estás seguro/a que quieres hacer las respuestas a este formulario públicas? Las respuestas pasadas y futuras serán visibles por los participantes. Esto no se puede deshacer.",
"form_makePublic": "Publicar respuestas",
"form_invalidQuestion": "Pregunta {0}",
"form_invalidWarning": "Hay errores en algunas respuestas:",
"form_input_ph_url": "https://ejemplo.com",
"form_input_ph_email": "email@ejemplo.com",
"form_notAnswered": "<b>{0}</b> respuestas vacías",
"form_answerWarning": "Identidad sin confirmar",
"form_answerName": "Respuesta desde {0} en {1}",
"form_backButton": "Atrás",
"form_viewButton": "Ver",
"form_answerAnonymous": "Respuesta anónima en {0}",
"form_showSummary": "Mostrar sumario",
"form_showIndividual": "Mostrar respuestas individuales",
"form_editor": "Editor",
"form_results_empty": "No hay respuestas",
"form_results": "Respuestas ({0})",
"form_answered": "Ya has respondido a este formulario",
"form_cantFindAnswers": "No se pudieron recuperar tus respuestas existentes para este formulario.",
"form_updateWarning": "Actualizar de todos modos",
"form_submitWarning": "Enviar de todos modos",
"form_delete": "Eliminar",
"form_reset": "Reiniciar",
"form_submit": "Enviar",
"form_maxOptions": "respuesta(s) máximas {0}",
"form_description_default": "Tu texto aquí",
"form_type_page": "Salto de página",
"form_type_md": "Descripción",
"form_sort_hint": "Por favor arrastre estos ítems desde el más (1) al menos ({0}) preferido.",
"form_type_sort": "Lista ordenada",
"form_type_poll": "Encuesta",
"form_type_multicheck": "Cuadrícula de casillas de verificación",
"form_type_checkbox": "Casilla de verificación",
"form_type_multiradio": "Escoge la red",
"form_type_radio": "Opción",
"form_type_textarea": "Párrafo",
"form_type_input": "Texto",
"form_default": "¿Tu pregunta aquí?",
"form_text_number": "Número",
"form_text_email": "Correo",
"form_text_url": "Link",
"form_text_text": "Texto",
"form_textType": "Tipo de texto",
"form_pollYourAnswers": "Tus respuestas",
"form_pollTotal": "Total",
"form_poll_switch": "Intercambio de ejes",
"form_poll_time": "Tiempo",
"form_poll_day": "Día",
"form_poll_text": "Texto",
"form_editType": "Tipo de opción",
"form_editMaxLength": "Máximos carácteres",
"form_editMax": "Máximas opciones seleccionables",
"form_editBlock": "Editar",
"form_invalid": "Formulario inválido",
"share_formView": "Participante",
"share_formAuditor": "Auditor/a",
"share_formEdit": "Autor/a",
"admin_supportPrivButton": "Mostrar llave",
"admin_supportPrivHint": "Muestra la llave privada que otros/as administradores/as necesitarán para ver tickets de soporte. Una forma de ingresar esta llave será mostrada en su panel de administrador/a.",
"admin_supportInitGenerate": "Generar llaves de soporte",
"admin_supportPrivTitle": "Llave privada del buzón de soporte",
"admin_emailHint": "Establece el correo de contacto para tu instancia aquí",
"admin_emailTitle": "Correo de contacto del administrador/a",
"oo_importBin": "Presiona OK para importar el formato .bin interno de CryptPad.",
"oo_conversionSupport": "Tu navegador no puede manejar la conversión hacia y desde formatos de office. Sugerimos usar una versión reciente de Firefox o Chrome.",
"register_registrationIsClosed": "La registración está cerrada.",
"mediatag_defaultImageName": "imágen",
"genericCopySuccess": "Copiado al portapapeles",
"toolbar_storeInDrive": "Guardar en CryptDrive",
"calendar_noNotification": "Ninguno",
"calendar_addNotification": "Añadir recordatorio",
"calendar_notifications": "Recordatorios",
"settings_notifCalendarCheckbox": "Activar notificaciones del calendario",
"settings_notifCalendarHint": "Activa/desactiva todas las notificaciones para los próximos eventos del calendario.",
"settings_notifCalendarTitle": "Notificaciones del calendario",
"reminder_date": "<b>{0}</b> en {1}",
"reminder_time": "<b>{0}</b> hoy a las {1}",
"reminder_minutes": "<b>{0}</b> empezará en {1} minuto(s)",
"reminder_inProgressAllDay": "Hoy: <b>{0}</b>",
"reminder_inProgress": "<b>{0}</b> ha empezado en {1}",
"reminder_now": "<b>{0}</b> ha empezado",
"reminder_missed": "<b>{0}</b> tuvo lugar en {1}",
"calendar_more": "{0} más",
"calendar_days": "Días",
"calendar_hours": "Horas",
"calendar_minutes": "Minutos",
"calendar_allDay": "Todo el día",
"calendar_location": "Localización: {0}",
"calendar_loc": "Localización",
"calendar_title": "Título",
"calendar_dateTimeRange": "{0} {1} - {2}",
"calendar_dateRange": "{0} - {1}",
"calendar_newEvent": "Nuevo evento",
"calendar_import": "Añadir a mis calendarios",
"calendar_errorNoCalendar": "Ningún calendario editable seleccionado",
"calendar_deleteOwned": "Se mantendrá visible para otros/as usuarios/as con los que se haya compartido.",
"calendar_deleteTeamConfirm": "¿Estás seguro/a que quieres eliminar este calendario del equipo?",
"calendar_deleteConfirm": "¿Estás seguro/a que quieres eliminar este calendario de tu cuenta?",
"calendar_today": "Hoy",
"calendar_month": "Mes",
"calendar_week": "Semana",
"calendar_day": "Día",
"calendar_new": "Nuevo calendario",
"calendar_default": "Mi calendario",
"calendar": "Calendario",
"calendar_before": "antes",
"calendar_weekNumber": "Semana {0}",
"calendar_import_temp": "Importar este calendario",
"pad_goToAnchor": "Ir al anclaje",
"oo_cantMigrate": "Esta hoja excede el tamaño máximo de subida y es muy grande para ser migrada.",
"footer_roadmap": "Hoja de ruta",
"settings_deleteSubscription": "Manejar mi suscripción",
"settings_deleteContinue": "Eliminar mi cuenta",
"settings_deleteWarning": "Advertencia: actualmente estás suscrito/a a un plan premium (pagado o dado por otro/a usuario/a). Por favor cancela tu plan antes de eliminar tu cuenta ya que no será posible sin contactar a soporte una vez tu cuenta esté eliminada.",
"broadcast_newCustom": "Mensaje de los/as administradores/as",
"broadcast_preview": "Previsualizar notificación",
"broadcast_defaultLanguage": "Volver a este idioma",
"broadcast_translations": "Traducciones",
"admin_broadcastCancel": "Eliminar mensaje",
"admin_broadcastActive": "Mensaje activo",
"admin_broadcastButton": "Envíar",
"admin_broadcastHint": "Envía un mensaje a todos/as los/as usuarios/as en esta instancia. Todos/as los/as usuarios/as nuevos/as y existentes lo recibirán como una notificación. Previsualiza los mensajes antes de enviarlos con \"Previsualizar notificación\". Las notificaciones de previsualización tienen un ícono rojo y son visibles sólo para ti.",
"admin_broadcastTitle": "Mensaje de difusión",
"broadcast_surveyURL": "Link del cuestionario",
"admin_surveyActive": "Abrir cuestionario",
"admin_surveyCancel": "Eliminar",
"admin_surveyButton": "Guardar cuestionario",
"broadcast_newSurvey": "Un nuevo cuestionario está disponible. Presiona para abrir.",
"admin_surveyHint": "Añade, actualiza o borra un link a un cuestionario externo. Los/as usuarios/as recibirán una notificación y el cuestionario se mantendrá disponible desde el menú de usuario/a.",
"admin_surveyTitle": "Cuestionario",
"broadcast_maintenance": "Un mantenimiento está planeado entre las <b>{0}</b> y <b>{1}</b>. CryptPad puede no estar disponible durante ese tiempo.",
"broadcast_end": "Terminar",
"broadcast_start": "Empezar",
"admin_maintenanceCancel": "Cancelar mantenimiento",
"admin_maintenanceButton": "Planear mantenimiento",
"admin_maintenanceHint": "Planear un mantenimiento en esta instancia y notificar a todos/as los/as usuarios/as. Limitado a un mantenimiento activo en un momento dado.",
"admin_maintenanceTitle": "Mantenimiento",
"admin_cat_broadcast": "Difusión",
"fm_cantUploadHere": "No se puede subir un archivo aquí",
"importError": "Fallo al importar (formato incorrecto)",
"addOptionalPassword": "Añadir una contraseña (opcional)",
"settings_colortheme_custom": "Personalizado",
"pad_settings_show": "Mostrar",
"pad_settings_hide": "Esconder",
"pad_settings_comments": "Escoge si los comentarios deberían ser visibles o escondidos por defecto.",
"pad_settings_outline": "Escoge si la tabla de contemidos debería ser visible o escondida por defecto.",
"pad_settings_width_large": "Ancho total",
"pad_settings_width_small": "Modo de página",
"pad_settings_info": "Configuraciones por defecto para este documento. Estos serán aplicados cuando usuarios/as nuevos/as visiten este documento.",
"pad_settings_title": "Configuración del documento",
"settings_colorthemeTitle": "Tema del color",
"settings_colorthemeHint": "Cambiar los colores en general de CryptPad en este dispositivo.",
"settings_colortheme_default": "Tema del sistema por defecto ({0})",
"settings_colortheme_light": "Blanco",
"settings_colortheme_dark": "Negro",
"settings_cat_style": "Apariencia",
"admin_performancePercentHeading": "Porcentaje",
"admin_performanceTimeHeading": "Tiempo (segundos)",
"admin_performanceKeyHeading": "Comando",
"admin_performanceProfilingTitle": "Rendimiento",
"admin_performanceProfilingHint": "Una visión general del tiempo total gastado ejecutando varios comandos en el lado del servidor",
"admin_cat_performance": "Rendimiento",
"redo": "Rehacer",
"undo": "Deshacer",
"settings_cacheButton": "Limpiar caché existente",
"settings_cacheCheckbox": "Activar caché en este dispositivo",
"settings_cacheHint": "CryptPad guarda partes de tus documentos en la memoria de tu navegador para poder ahorrar en uso de la red y mejorar los tiempos de carga. Puedes desactivar el caché si tu dispositivo no tiene mucho espacio libre. Por razones de seguridad, el caché siempre es limpiado cuando cierras sesión, pero puedes limpiarlo manualmente si quieres recuperar espacio de almacenamiento en tu máquina.",
"settings_cacheTitle": "Caché",
"docs_link": "Documentación",
"creation_helperText": "Abrir en documentación",
"creation_expiresIn": "Expira en",
"register_warning_note": "Debido a la naturaleza encriptada de CryptPad, los/as administradores/as de servicio no podrán recuperar los datos en caso de que olvides tu nombre de usuario/a y/o contraseña. Por favor guardalos en un lugar seguro.",
"register_notes": "<ul class=\"cp-notes-list\"><li>Tu contraseña es la llave secreta que encripta todos tus documentos. <span class=\"red\">Si la pierdes no hay forma que podamos recuperar tus datos.</span></li><li>Si estás usando una computadora compartida, <span class=\"red\">recuerda cerrar la sesión</span> cuando estés listo/a. Tan solo cerrar la ventana del navegador dejará a tu cuenta expuesta. </li><li>Para mantener los documentos que creaste y/o guardaste sin acceder, marca \"Importar documentos de tu sesión de invitado/a\".</li></ul>",
"register_notes_title": "Notas importantes",
"offlineError": "No se han podido sincronizar los datos más recientes, esta página no puede ser mostrada ahora. La carga continuará cuando tu conexión al servicio sea restaurada.",
"share_noContactsOffline": "Actualmente estás fuera de línea. Los contactos no están disponibles.",
"access_offline": "Actualmente estás fuera de línea. Manejo de acceso no está disponible.",
"admin_support_first": "Creado en: ",
"admin_support_collapse": "Colapsar",
"admin_support_open": "Mostrar",
"admin_support_closed": "Tickets cerrados:",
"admin_support_answered": "Tickets respondidos:",
"admin_support_normal": "Tickets sin responder:",
"admin_support_premium": "Tickets premium:",
"contacts_confirmCancel": "¿Estás seguro/a que quieres cancelar tu solicitud de contacto con <b>{0}</b>?",
"history_trimPrompt": "Este documento ha acumulado {0} de historial que puede ralentizar el tiempo de carga. Considere borrar el historial si no es necesario.",
"mediatag_loadButton": "Cargar adjunto",
"settings_mediatagSizeHint": "Tamaño máximo en megabytes (MB) para automáticamente cargar elementos multimedia (imágenes, vídeos, pdf) incrustados en documentos. Elementos más grandes que el tamaño especificado pueden ser cargados manualmente. Use \"-1\" para siempre cargar los elementos multimedia automáticamente.",
"settings_mediatagSizeTitle": "Límite automático de descarga",
"mediatag_notReady": "Por favor complete la descarga",
"pad_mediatagOpen": "Abrir archivo",
"pad_mediatagShare": "Compartir archivo",
"mediatag_saveButton": "Guardar",
"Offline": "Fuera de línea",
"download_zip_file": "Archivo {0}/{1}",
"download_zip": "Construyendo archivo ZIP…",
"fileTableHeader": "Descargas y subidas",
"allowNotifications": "Permitir notificaciones",
"archivedFromServer": "Documento archivado",
"restoredFromServer": "Documento restaurado",
"admin_archiveInput2": "Contraseña del documento",
"admin_archiveInput": "URL del documento",
"admin_unarchiveButton": "Restaurar",
"admin_unarchiveHint": "Restaurar un documento que fue previamente archivado",
"admin_archiveButton": "Archivo",
"admin_archiveHint": "Hacer un documento no disponible sin eliminarlo permanentemente. Será puesto en un directorio 'archivo' y eliminado luego de unos días (configurable en el archivo de configuración del servidor).",
"errorPopupBlocked": "CryptPad necesita poder abrir nuevas pestañas para operar. Por favor permita las ventanas emergentes en la barra de direcciones de su navegador. Estas ventanas nunca van a ser usadas para mostrarle anuncios.",
"unableToDisplay": "No se puede mostrar este documento. Por favor presione Esc para recargar la página. Si el problema persiste, por favor contacte a soporte.",
"documentID": "Identificador del documento",
"error_unhelpfulScriptError": "Error de script: Vea la consola del navegador para los detalles",
"tag_edit": "Editar",
"tag_add": "Añadir",
"loading_state_5": "Reconstruir documento",
"loading_state_4": "Cargar equipos",
"loading_state_3": "Cargar carpetas compartidas",
"loading_state_2": "Actualizar el contenido",
"loading_state_1": "Cargar el disco",
"loading_state_0": "Construir interfaz",
"fm_shareFolderPassword": "Proteger esta carpeta con una contraseña (opcional)",
"access_destroyPad": "Destruir este documento o carpeta permanentemente",
"fm_deletedFolder": "Carpeta eliminada",
"admin_limitUser": "Llave pública del usuario/a",
"team_exportButton": "Descargar",
"team_exportHint": "Descargar todos los documentos en el disco de este equipo. Los documentos serán descargados en formatos que sean legibles para otras aplicaciones cuando cierto formato esté disponible. Cuando cierto formato no esté disponible, los documentos serán descargados en un formato legible por CryptPad.",
"team_exportTitle": "Descargar disco del equipo",
"admin_cat_quota": "Almacenamiento del usuario/a",
"admin_invalLimit": "Valor de límite inválido",
"admin_invalKey": "Llave pública inválida",
"admin_limitSetNote": "Nota",
"admin_limitMB": "Límite (en MB)",
"admin_setlimitTitle": "Aplicar un límite personalizado",
"admin_setlimitHint": "Establecer límites personalizados para usuarios/as usando su llave pública. Puedes actualizar o borrar un límite existente.",
"admin_limitNote": "Nota: {0}",
"admin_limitPlan": "Plan: {0}",
"admin_getlimitsTitle": "Límites personalizados",
"admin_getlimitsHint": "Enlistar todos los límites de almacenamiento personalizados aplicados en tu instancia.",
"admin_limit": "Límite actual: {0}",
"admin_setlimitButton": "Establecer límite",
"admin_defaultlimitTitle": "Límite de almacenamiento (MB)",
"admin_defaultlimitHint": "Límite de almacenamiento máximo para los CryptDrives (usuarios/as y equipos) cuando no hay una regla personalizada aplicada",
"admin_registrationTitle": "Cerrar registración",
"admin_registrationHint": "No permitir a ningún usuario/a nuevo/a registrarse",
"snapshots_cantMake": "La instantánea no pudo ser creada. Estás desconectado/a.",
"snapshots_notFound": "Esta instantánea ya no existe debido a que el historial del documento ha sido borrado.",
"snapshot_error_exists": "Ya hay una instantánea de esta versión",
"snapshots_ooPickVersion": "Debes seleccionar una versión antes de crear una instantánea",
"oo_version": "Versión: ",
"oo_version_latest": "Último",
"snapshots_delete": "Eliminar",
"oo_deletedVersion": "Esta versión ya no existe en el historial.",
"snapshots_close": "Cerrar",
"snapshots_restore": "Restaurar",
"snapshots_open": "Abrir",
"snapshots_placeholder": "Título de la instantánea",
"snapshots_new": "Nueva Instantánea",
"snapshots_button": "Instantáneas",
"snaphot_title": "Instantánea",
"infobar_versionHash": "Actualmente estás viendo una versión pasada de este documento ({0}).",
"history_restoreDriveDone": "CryptDrive restaurado",
"history_restoreDrivePrompt": "¿Estás seguro/a de que quieres reemplazar la versión actual del CryptDrive con la versión mostrada?",
"history_restoreDriveTitle": "Restaurar la versión seleccionada del CryptDrive",
"history_userNext": "Siguiente autor/a",
"history_fastNext": "Siguiente sesión de edición",
"history_userPrev": "Autor/a previo/a",
"history_fastPrev": "Sesión de edición previa",
"share_versionHash": "Estás a punto de compartir la versión del historial seleccionado del documento en el modo de solo lectura. Esto también <b>dará acceso de visión</b> para todas las versiones del documento.",
"history_shareTitle": "Compartir un link a esta versión",
"history_cantRestore": "Restauración fallida. Estás desconectado/a.",
"history_close": "Cerrar",
"history_restore": "Restaurar",
"share_bar": "Crear link",
"settings_cat_kanban": "Kanban",
"settings_kanbanTagsOr": "O",
"settings_kanbanTagsAnd": "Y",
"settings_kanbanTagsHint": "Selecciona como quieres que actúe el filtro de etiquetas cuando se seleccionen múltiples etiquetas: solo mostrar tarjetas conteniendo todas las etiquetas seleccionadas (Y) o mostrar tarjetas conteniendo cualquiera de las etiquetas seleccionadas (O)",
"settings_kanbanTagsTitle": "Filtro de etiquetas",
"pad_tocHide": "Esquema",
"fm_noResult": "No se encontraron resultados",
"fm_restricted": "No tienes acceso",
"fm_emptyTrashOwned": "Tu basurero contiene documentos que te pertenecen. Puedes <b>borrarlos</b> solamente de tu disco, o <b>detruirlos</b> para todos/as los/as usuarios/as.",
"support_formCategoryError": "Error: la categoría está vacía",
"support_category": "Escoge una categoría",
"oo_refresh": "Refrescar",
"notification_folderSharedTeam": "{0} ha compartido una carpet con el equipo {2}: <b>{1}</b>",
"notification_fileSharedTeam": "{0} ha compartido un archivo con el equipo {2}: <b>{1}</b>",
"notification_padSharedTeam": "{0} ha compartido un documento con el equipo {2}: <b>{1}</b>",
"support_addAttachment": "Añadir adjunto",
"support_attachments": "Adjuntos",
"support_cat_all": "Todo",
"support_cat_other": "Otros",
"support_cat_bug": "Reporte de fallos",
"support_cat_data": "Pérdida de contenido",
"support_cat_account": "Cuenta de usuario/a",
"info_privacyFlavour": "<a>Política de privacidad</a> para esta instancia",
"user_about": "Acerca de CryptPad",
"info_imprintFlavour": "<a>Información legal</a> acerca de los/as administradores/as de esta instancia",
"settings_safeLinkDefault": "Los links seguros ahora están activados por defecto. Por favor usa el menú <i></i><b>Compartir</b> para compartir links en lugar de la barra de direcciones de tu navegador.",
"support_languagesPreamble": "El equipo de soporte habla los siguientes idiomas:",
"slide_textCol": "Color del texto",
"slide_backCol": "Color de fondo",
"toolbar_file": "Archivo",
"code_editorTheme": "Tema del editor",
"drive_treeButton": "Archivos",
"toolbar_tools": "Herramientas",
"toolbar_savetodrive": "Guardar como imagen",
"toolbar_insert": "Insertar",
"toolbar_theme": "Tema",
"todo_move": "Tu lista de cosas por hacer ahora está en el kanban <b>{0}</b> en tu Disco.",
"fm_sort": "Ordenar",
"comments_error": "No se puede comentar aquí",
"settings_padNotifCheckbox": "Desactivar las notificaciones de comentarios",
"settings_padNotifHint": "Ignorar las notificaciones cuando alguien responda a uno de tus comentarios",
"comments_comment": "Comentar",
"comments_resolve": "Resolver",
"comments_reply": "Responder",
"comments_submit": "Envíar",
"comments_edited": "Editado",
"comments_deleted": "Comentario eliminado por su autor/a",
"mentions_notification": "{0} te ha mencionado en <b>{1}</b>",
"unknownPad": "Documento desconocido",
"comments_notification": "Responde a tu comentario \"{0}\" en <b>{1}</b>",
"cba_title": "Colores del autor",
"oo_login": "Por favor accede o regístrate para mejorar el rendimiento de las hojas de cálculo.",
"cba_hide": "Esconder los colores del autor",
"cba_show": "Mostrar los colores del autor",
"cba_disable": "Limpiar y desactivar",
"cba_enable": "Activar",
"cba_hint": "Esta configuración será recordada cuando crees tu próximo documento.",
"cba_properties": "Colores de autor (experimental)",
"cba_writtenBy": "Escrito por: {0}",
"canvas_select": "Seleccionar",
"canvas_brush": "Pincel",
"admin_openFilesHint": "Número de descriptores de archivo actualmente abiertos en el servidor.",
"admin_openFilesTitle": "Abrir archivos",
"profile_copyKey": "Copiar llave pública",
"oo_isLocked": "sincronizando los cambios, por favor espere",
"kanban_editBoard": "Editar este tablero",
"kanban_editCard": "Editar esta tarjeta",
"kanban_clearFilter": "Limpiar filtro",
"kanban_conflicts": "Actualmente editando:",
"kanban_noTags": "Sin etiquetas",
"kanban_tags": "Filtrar por etiqueta",
"kanban_delete": "Eliminar",
"kanban_color": "Color",
"kanban_body": "Contenido",
"kanban_title": "Título",
"teams": "Equipos",
"allow_text": "Usar una lista de acceso significa que solo los/as usuarios/as seleccionados/as y propietarios/as podrán acceder a este documento.",
"logoutEverywhere": "Cerrar sesión en todos lados",
"owner_text": "El/los/as propietario/a/s de un documento son los/as únicos/as usuarios/as autorizados/as para: añadir/expulsar propietarios/as, restringir acceso al documento con una lista de acceso, o eliminar el documento.",
"access_muteRequests": "Silenciar solicitudes de acceso para este documento",
"allow_label": "Lista de acceso: {0}",
"allow_disabled": "desactivado",
"allow_enabled": "activado",
"allow_checkbox": "Activar lista de acceso",
"access_noContact": "No hay otro contacto que añadir",
"contacts": "Contactos",
"restrictedError": "No estás autorizado/a para acceder a este documento",
"accessButton": "Acceso",
"access_allow": "Lista",
"access_main": "Acceso",
"copy_title": "{0} (copiar)",
"makeACopy": "Hacer una copia",
"settings_trimHistoryHint": "Ahorra espacio de almacenamiento al borrar el historial de tu disco y notificaciones. Esto no afectará el historial de tus documentos. Puedes borrar el historial de los documentos en su diálogo de propiedades.",
"settings_trimHistoryTitle": "Borrar historial",
"trimHistory_noHistory": "No hay historial que pueda ser borrado",
"trimHistory_currentSize": "Tamaño del historial actual: <b>{0}</b>",
"trimHistory_needMigration": "Porfavor <a>actualize su CryptDrive</a> para activar esta función.",
"trimHistory_success": "El historial ha sido borrado",
"trimHistory_error": "Ha habido un error al borrar el historial",
"trimHistory_getSizeError": "Ha habido un error mientras se calculaba el tamaño del historial de tu disco",
"trimHistory_button": "Borrar historial",
"historyTrim_contentsSize": "Contenidos: {0}",
"historyTrim_historySize": "Historial: {0}",
"areYouSure": "¿Estás seguro/a?",
"settings_safeLinksHint": "CryptPad incluye las llaves para desencriptar tus documentos en sus links. Cualquiera con acceso a tu historial de búsqueda puede potencialmente leer tus datos. Esto incluye a extensiones del navegador intrusivas y navegadores que sincronizan tu historial de búsqueda entre dispositivos. Activar \"links seguros\" previene que las llaves entren a tu historial de búsqueda o que sean mostradas en la barra de direcciones cuando sea posible. Recomendamos encarecidamente que actives esta función y usar el {0} menú Compartir para generar links compartibles.",
"profile_login": "Necesita acceder para poder añadir a este usuario/a a tus contactos",
"dontShowAgain": "No mostrar de nuevo",
"safeLinks_error": "Este link fue copiado directamente desde la barra de direcciones del navegador y no provee acceso al documento. Porfavor use el menú <i></i> <b>Compartir</b> para compartir directamente con contactos o copiar el link. <a> Leer más acerca de la función links seguros</a>.",
"settings_safeLinksCheckbox": "Activar links seguros",
"settings_safeLinksTitle": "Links seguros",
"settings_cat_security": "Confidencialidad",
"imprint": "Aviso legal",
"oo_sheetMigration_anonymousEditor": "Este documento requiere una actualización. La edición está desactivada para espectadores/as hasta que un/a usuario/a registrado/a lo abra.",
"oo_sheetMigration_complete": "Versión actualizada disponible, presione OK para recargar.",
"admin_consentToContactTitle": "Consentir a contacto",
"admin_checkupButton": "Ejecutar diagnóstico",
"admin_checkupHint": "Cryptopad incluye una página que automáticamente diagnostica errores comunes y sugiere cómo corregirlos si fuera necesario.",
"admin_checkupTitle": "Valide la configuración de la instancia",
"admin_updateAvailableButton": "Ver las notas de lanzamiento",
"admin_updateAvailableHint": "Una versión nueva de CryptPad está disponible",
"admin_updateAvailableTitle": "Nuevas versiones",
"admin_cat_network": "Red",
"mdToolbar_embed": "Incrustar archivo",
"restrictedLoginPrompt": "No estás autorizado/a a acceder a este documento. <a>Accede</a> si crees que tu cuenta debería poder accederlo.",
"copyToClipboard": "Copiar al portapapeles",
"settings_driveRedirect": "Redirigirme automáticamente",
"settings_driveRedirectHint": "La redirección automática desde la página de inicio al disco cuando ya accedió ya no está activada por defecto. El comportamiento de legado puede ser activado abajo.",
"settings_driveRedirectTitle": "Redirección a la página de inicio",
"form_page": "Página {0}/{1}",
"form_clear": "Limpiar",
"form_addMultipleHint": "Añadir múltiples fechas y tiempos",
"form_addMultiple": "Añadir todo",
"form_anonymous_blocked": "Las respuestas de invitados/a están bloqueadas para este formulario. Debes <a href=\"/login/\">acceder</a> o <a href=\"/register/\">registrarte</a> para enviar respuestas.",
"form_add_item": "Añadir ítem",
"form_add_option": "Añadir opción",
"form_newItem": "Nuevo ítem",
"form_newOption": "Nueva opción",
"form_defaultItem": "Ítem {0}",
"form_defaultOption": "Opción {0}",
"form_anonymous_off": "Bloqueado",
"form_anonymous_on": "Permitido",
"form_anonymous": "Acceso de invitado/a (sin acceder)",
"oo_sheetMigration_loading": "Actualizando tu documento a la última versión. Porfavor espera aproximadamente 1 minuto.",
"oo_exportInProgress": "Exportación en progreso",
"oo_importInProgress": "Importación en progreso",
"oo_invalidFormat": "Este archivo no puede ser importado",
"burnAfterReading_warningDeleted": "Este documento ha sido eliminado permanentemente, cuando cierres esta ventana no podrás acceder a el otra vez.",
"burnAfterReading_proceed": "ver y eliminar",
"burnAfterReading_warningAccess": "Este documento se va a autodestruir. Cuando presiones el botón de abajo verás el contenido una vez antes de que sea eliminado permanentemente. Cuando cierres esta ventana no vas a poder acceder a este otra vez. Si no estás listo/a para proceder puedes cerrar esta ventana y volver más tarde.",
"burnAfterReading_generateLink": "Presiona el botón de abajo para generar un link.",
"burnAfterReading_warningLink": "Has configurado este documento para autodestruir. Cuando el/la recibidor/a visíte el link, podrán ver el documento una vez antes de que sea eliminado permanentemente.",
"burnAfterReading_linkBurnAfterReading": "Ver una vez y autodestruir",
"team_inviteLinkError": "Ha habido un error mientras se creaba el link.",
"team_inviteInvalidLinkError": "Este link de invitación no es válido.",
"team_links": "Links de invitación",
"team_cat_link": "Link de invitación",
"team_inviteGetData": "Obteniendo datos del equipo",
"team_inviteTitle": "Invitación de equipo",
"team_inviteJoin": "Unirse al equipo",
"team_invitePasswordLoading": "Desencriptando invitación",
"team_inviteEnterPassword": "Porfavor ingrese la contraseña de invitación para continuar.",
"team_invitePleaseLogin": "Porfavor accede o regístrate para aceptar esta invitación.",
"team_inviteFromMsg": "{0} te ha invitado a que te unas al equipo <b>{1}</b>",
"admin_conflictExplanation": "Existen dos versiones de este documento. Restaurar la versión archivada sobreescribirá la versión activa. Archivar la versión activa sobreescribirá la versión archivada. Ninguna acción puedes ser deshecha.",
"admin_documentConflict": "Archivar/restaurar",
"og_encryptedAppType": "Encriptado {0}",
"ui_jsRequired": "JavaScript debe estar activado para realizar la encriptación en tu navegador",
"og_features": "{0} Funciones",
"og_pricing": "{0} Precio",
"og_contact": "{0} Contacto",
"og_register": "Registrar una cuenta en {0}",
"og_login": "Acceder hacia {0}",
"og_default": "CryptPad: suite de colaboración encriptada de extremo a extremo",
"og_teamDrive": "Disco del equipo",
"admin_getRawMetadata": "Historial de metadatos",
"admin_reportContent": "Reportar contenido",
"admin_planlimit": "Límite de almacenamiento",
"admin_restoreDocument": "Restaurar documento",
"admin_archiveDocument": "Archivar documento",
"admin_restoreArchivedPins": "Restaurar registro archivado de pin",
"admin_archivePinLog": "Archivar el registro de pin de esta cuenta",
"admin_getPinList": "Lista de pin actual",
"admin_archiveBlock": "Archivar bloqueo",
"admin_restoreBlock": "Restaurar bloqueo archivado",
"admin_blockArchived": "Bloqueo está archivado",
"admin_blockAvailable": "Bloqueo está disponible",
"admin_blockKey": "Bloquear llave pública",
"admin_pinLogArchived": "El registro de pin está archivado",
"admin_pinLogAvailable": "El registro de pin está disponible",
"admin_fileCount": "Número de archivos",
"admin_channelCount": "Número de documentos",
"admin_storageUsage": "Datos guardados",
"admin_note": "Nota del plan",
"admin_planName": "Nombre del plan",
"admin_currentlyOnline": "Está actualmente en línea",
"admin_lastPinTime": "Tiempo de actividad del último pin",
"admin_firstPinTime": "Tiempo de actividad del primer pin",
"admin_accountMetadataPlaceholder": "Id del usuario/a (llave de firma pública)",
"admin_blockMetadataPlaceholder": "URL de bloqueo absoluta o relativa",
"admin_blockMetadataHint": "El bloqueo de acceso es lo que permite a una cuenta acceder a CryptPad con la combinación de usuario/a + contraseña",
"admin_blockMetadataTitle": "Información del bloqueo de acceso",
"admin_documentMetadataPlaceholder": "URL o id del documento",
"admin_channelArchived": "Archivado",
"admin_channelAvailable": "Disponible",
"admin_currentlyOpen": "Abierto actualmente",
"admin_documentModifiedTime": "Última modificación",
"admin_documentCreationTime": "Creado",
"admin_documentMetadata": "Metadatos actuales",
"admin_documentSize": "Tamaño del documento",
"admin_documentMetadataHint": "Consulta por un documento o archivo vía su id o URL",
"admin_documentMetadataTitle": "Información del documento",
"admin_accountMetadataHint": "Ingresa la llave pública de un/a usuario/a para buscar datos acerca de su cuenta.",
"admin_accountMetadataTitle": "Información de la cuenta",
"admin_restoreReason": "Por favor especifique la razón para la restauración y confirme que le gustaría proceder",
"admin_archiveReason": "Por favor especifique la razón para archivar y confirme que le gustaría proceder",
"ui_archive": "Archivar",
"ui_confirm": "Confirmar",
"ui_fetch": "Buscar",
"ui_success": "Éxito",
"ui_generateReport": "Generar reporte",
"ui_none": "ninguno",
"ui_undefined": "desconocido",
"ui_false": "falso",
"ui_true": "verdadero",
"admin_generatedAt": "Reportar marca de tiempo",
"admin_cat_database": "Base de datos",
"admin_uptimeHint": "Fecha y tiempo en el cuál el servidor fue lanzado",
"admin_uptimeTitle": "Tiempo de lanzamiento",
"register_instance": "Creando una nueva cuenta en {0}",
"login_instance": "Conecta tu cuenta en {0}",
"home_morestorage": "Para más espacio de almacenamiento:",
"home_location": "Los datos encriptados están alojados en {0}",
"footer_website": "Sitio web del proyecto",
"admin_noticeHint": "Un mensaje opcional para mostrar en la página de inicio",
"admin_noticeTitle": "Aviso de la página de inicio",
"ui_experimental": "Esta función es considerada experimental.",
"error_evalPermitted": "Abortando por que la evaluación no debería estar permitida.\n\nEste error esta ligado a encabezados de Contenido-Seguridad-Política, se puede deber a: un navegador obsoleto que no los soporta, extensiones del navegador que interfieren con su comportamiento correcto, o una configuración incorrecta de esta instancia de CryptPad.",
"error_incorrectAccess": "Esta página solo puede ser accedida vía {0}.",
"error_embeddingDisabledSpecific": "La incrustación está desactivada para esta aplicación de CryptPad.",
"error_embeddingDisabled": "La incrustación está desactivada para esta instancia de CryptPad",
"admin_enableembedsHint": "Permitir que los documentos y multimedia de esta instancia sean incrustados en otros sitios web. Esto añadirá un opción \"Incrustar\" en el menú Compartir. Por razones de seguridad las aplicaciones que usan OnlyOffice (Hojas, Documentos, Presentación) no pueden ser incrustadas incluso si la configuración está activada.",
"admin_enableembedsTitle": "Activar incrustación remota",
"ui_ms": "milisegundos",
"admin_setDuration": "Establecer duración",
"admin_bytesWrittenHint": "Si tienes activada las mediciones de rendimiento del disco entoces la duración de la ventana puede ser configurada abajo.",
"admin_bytesWrittenTitle": "Ventana de medición del rendimiento del disco",
"admin_enableDiskMeasurementsHint": "Si se activa, un terminal API JSON será expuesto bajo <code>/api/profiling</code>. Esto mantiene una medición funcionando del E/S de disco en la ventana de tiempo puesta abajo. Esta configuración puede impactar el rendimiento del servidor y puede revelar datos sensibles. Es recomendado que dejes esta configuración desactivada a menos que sepas lo que estás haciendo.",
"admin_enableDiskMeasurementsTitle": "Medir rendimiento del disco",
"admin_infoNotice2": "Ver la pestaña 'Red' para más detalles.",
"admin_infoNotice1": "Usa los siguientes campos para describir tu instancia. Esta información es usada en la página principal de la instancia. También es enviada como parte de la telemetría del servidos si optas para que sea incluida en la lista de instancias públicas de CryptPad.",
"admin_reviewCheckupNotice": "Es recomendado revisar la página de <a>chequeo</a> para confirmar que esta intancia esta configurada correctamente.",
"admin_cacheEvictionRequired": "Este servidor ha sido actualizado con la nueva configuración. Por favor usa el botón <b>Vaciar caché</b> para asegurarse de que este cambio se vuelva visible para todos/as los/as usuarios/as.",
"fivehundred_internalServerError": "Error interno del servidor",
"support_debuggingDataHint": "La siguiente información está incluida en los tickets de soporte que envíes. Ninguno de estos permite a los/as administradores/as a acceder o desencriptar tus documentos. Esta información es encriptada tal que solo los/as administradores/as puedan leerla.",
"support_debuggingDataTitle": "Información de depuración de la cuenta",
"support_cat_debugging": "Depurar datos",
"ui_openDirectly": "Esta funcionalidad no está disponible cuando CryptPad esta incrustado en otro sitio. ¿Abrir este documento en una nueva pestaña?",
"support_cat_abuse": "Reportar abuso",
"support_cat_document": "Documento",
"support_cat_drives": "Disco o equipo",
"support_warning_other": "¿Cuál es la naturaleza de tu consulta? Por favor provee cuanta información relevante sea posible para hacer más fácil para nosotros/as resolver tu problema rápidamente",
"support_warning_abuse": "Por favor reporta contenido que viole los <a>Términos de servicio</a>. Por favor provee links hacia los documentos ofensivos o perfiles de usuario/a y describe como están violando los términos. Cualquier información adicional acerca del contexto en el cual descubriste el contenido o comportamiento puede ayudar a los/as administradores/as a prevenir futuras violaciones",
"support_warning_bug": "Por favor especifica en que navegador ocurre el problema y si hay instalada cualquier extensión. Por favor provee cuantos detalles sean posibles acerca del problema y los pasos necesarios para reproducirlo",
"support_warning_document": "Por favor especifica que tipo de documento está causando el problema y provee un <a>identificador de documento</a> o un link",
"support_warning_drives": "Ten en cuenta que los/as administradores/as no pueden identificar carpetas y documentos por nombre. Para carpetas compartidas, por favor provee un <a>identificador de documento</a>",
"support_warning_account": "Por favor ten en cuenta que los/as administradores/as no pueden restaurar contraseñas. Si has perdido las credenciales para tu cuenta pero sigues con la sesión iniciada, puedes <a>migrar tus datos a una nueva cuenta</a>",
"support_warning_prompt": "Por favor escoge la categoría más relevante para tu problema. Esto ayuda a los/as administradores/as a triajar y proveer más sugerencias acerca de que información proveer.",
"info_sourceFlavour": "<a>Código fuente</a> para CryptPad",
"info_termsFlavour": "<a>Términos de servicio</a> para esta instancia",
"footer_source": "Código fuente",
"admin_jurisdictionHint": "El país donde los datos encriptados de esta instancia están alojados",
"admin_jurisdictionTitle": "Localización de alojamiento",
"admin_descriptionHint": "El texto descriptivo mostrado para esta instancia en la lista de instancias públicas en cryptpad.org",
"admin_descriptionTitle": "Descripción de la instancia",
"ui_saved": "{0} guardado",
"admin_nameHint": "El nombre mostrado para esta instancia en el listado de instancias públicas en cryptpad.org",
"admin_nameTitle": "Nombre de la instancia",
"admin_archiveNote": "Nota",
"bounce_danger": "El link que presionaste no dirige hacia una página web per hacia algún código o datos que podría ser malicioso.\n\n(\"{0}\")\n\nCryptPad bloquea estos por razones de seguridad. Presionar OK cerrará esta pestaña.",
"bounce_confirm": "Estás a punto de dejar: {0}\n\n¿Estás seguro/a de que quieres visitar? \"{1}\"?",
"form_exportSheet": "Exportar a hoja",
"premiumAccess": "Como un/a suscriptor/a en {0}, puedes crear nuevos documentos en esta aplicación de acceso anticipado. Por favor esté al tanto de que es experimental y no debería ser confiado todavía con datos importantes.",
"earlyAccessBlocked": "Esta aplicación no está disponible todavía en esta instancia",
"premiumOnly": "Crear nuevos documentos en esta aplicación actualmente está limitado a suscriptores/as en {0}. Esta es una aplicación experimental de acceso anticipado para propósitos de prueba. Pronto estará disponible para todos/as en {0}.",
"download_step3": "Convirtiendo...",
"fc_openIn": "Abrir en {0}",
"creation_new": "Nuevo {0}",
"form_conditional_hint": "Para hacer esta sección condicional, por favor añade una pregunta de elección o casilla de verificación encima de esta",
"form_colors": "Tema del color",
"userlist_visitProfile": "Visitar perfil",
"form_conditional_addAnd": "Añadir condición Y",
"form_conditional_add": "Añadir condición O",
"form_conditional": "Solo mostrar esta sección cuando:",
"form_condition_hasnot": "no ha",
"form_condition_has": "ha",
"form_condition_isnot": "no es",
"form_condition_is": "es",
"form_condition_v": "Escoge un valor",
"form_condition_q": "Escoge una pregunta",
"form_type_section": "Sección condicional",
"form_editable": "Edición después del envío",
"form_makeAnon": "Anonimizar las respuestas",
"form_responseMsg": "Este mensaje será mostrado después que los/as participantes envíen el formulario.",
"form_addMsg": "Añadir mensaje de envío",
"form_updateMsg": "Actualizar mensaje de envío",
"toolbar_preview": "Previsualizar",
"form_geturl": "Copiar link",
"form_corruptAnswers": "Este formulario ya tiene respuestas. Cambiar este tipo de pregunta puede invalidar los datos previos de respuesta.",
"form_changeTypeConfirm": "Selecciona el nuevo tipo de pregunta.",
"form_preview": "Previsualizar formulario",
"form_required_off": "Opcional",
"form_authAnswer": "Este formulario no puede ser enviado anónimamente",
"form_anonAnswer": "Las respuestas a este formulario son anónimas",
"form_viewAllAnswers": "Ver todas las respuestas ({0})",
"form_viewAnswer": "Ver mis respuestas",
"form_preview_button": "Previsualización",
"form_template_poll": "Encuesta de programación rápida",
"upload_addOptionalAlt": "Añadir texto descriptivo (opcional)",
"upload_modal_alt": "Texto alternativo",
"profile_defaultAlt": "Foto de perfil predeterminada",
"toolbar_expand": "Expandir barra de herramientas",
"toolbar_collapse": "Colapsar barra de herramientas",
"support_premiumLink": "Ver opciones de suscripción",
"support_premiumPriority": "Los/as usuarios/as premium ayudan a financiar mejoras a la usabilidad de CryptPad y se benefician de respuestas priorizadas a sus tickets de soporte.",
"form_totalResponses": "Respuestas totales: {0}",
"ui_expand": "Expandir",
"ui_collapse": "Colapsar",
"fm_link_invalid": "URL inválida",
"fm_link_warning": "Advertencia: la URL excede los 200 carácteres",
"form_anonName": "Tu nombre",
"notification_linkShared": "{0} ha compartido un link contigo: <b>{1}</b>",
"fm_link_name_placeholder": "Mí link",
"fm_link_url": "URL",
"fm_link_name": "Nombre del link",
"fm_link_type": "Link",
"fm_link_new": "Nuevo link",
"notification_openLink": "Has recibido un link <b>{0}</b> de {1}:",
"form_exportCSV": "Exportar a CSV",
"team_leaveOwner": "Por favor degradate del rol de propietario/a antes de dejar el equipo. Ten en cuenta que los equipos deben tener al menos un/a propietario/a, por favor añade uno/a antes de proceder si actualmente eres el único/a propietario/a.",
"admin_instancePurposeHint": "¿Porqué diriges esta instancia? Tu respuesta será usada para informar al plan de desarrollo si su telemetría esta activada.",
"admin_purpose_business": "Para una empresa u organización comercial",
"admin_purpose_public": "Para proveer un servicio gratuito al público",
"admin_purpose_education": "Para una escuela, colegio o universidad",
"admin_purpose_org": "Para una organización sin ánimos de lucro o un grupo de defensa",
"admin_purpose_personal": "Para mí, familia, o amigos/as",
"admin_purpose_experiment": "Para probar la plataforma o desarrollar nuevas funciones",
"admin_purpose_noanswer": "Prefiero no decirlo",
"admin_instancePurposeTitle": "Propósito de la instancia",
"resources_learnWhy": "Conoce por qué fue bloqueado",
"resources_openInNewTab": "Abrirlo en una nueva pestaña",
"resources_imageBlocked": "CryptPad bloqueó una imágen remota",
"fc_open_formro": "Abrir (como participante)",
"form_poll_hint": "<i></i>: Si, <i></i>: No, <i></i>: Aceptable",
"admin_provideAggregateStatisticsLabel": "Proveer estadísticas adicionales",
"admin_provideAggregateStatisticsHint": "Puedes optar por incluir mediciones de uso adicionales para los/as desarrolladores/as, tal como el número aproximado de usuarios/as diarios y registrados/as para tu instancia.",
"admin_provideAggregateStatisticsTitle": "Agregación estadística",
"admin_blockDailyCheckLabel": "Desactivar telemetría del servidor",
"admin_blockDailyCheckHint": "Las instancias de CryptPad envian un mensaje al servidor de los/as desarrolladores/as cuando son lanzadas y una vez por día a partir de entonces. Esto les permite mantenerse al tanto de cuantos servidores están funcionando con que versiones del software. Puedes salirte de esta medición abajo. Los contenidos de este mensaje pueden ser encontrados en el registro de la aplicación del servidor para tu revisión.",
"admin_blockDailyCheckTitle": "Telemetría del servidor",
"admin_removeDonateButtonLabel": "No publicar las campañas de financiación colectiva",
"admin_removeDonateButtonHint": "El desarrollo de CryptPad es financiado parcialmente por subvenciones públicas y donaciones. Publicar nuestros esfuerzos de financiación colectiva en tu instancia ayuda a los/as desarrolladores/as a continuar mejorando la plataforma para todos/as, pero puedes desactivar estos abisos si los encuentras inapropiados.",
"admin_removeDonateButtonTitle": "Participación en la financiación colectiva",
"admin_listMyInstanceLabel": "Listar esta instancia",
"admin_listMyInstanceHint": "Si tu instancia es adecuada para el uso público puedes consentir a que sea enlistada en los directorios de la red. La telemetría del servidor debe estar activada para que esto tenga algún efecto.",
"admin_listMyInstanceTitle": "Listar mi instancia en los directorios públicos",
"admin_consentToContactLabel": "Consiento",
"admin_consentToContactHint": "La telemetría del servidor incluye el correo de contacto del administrador/a para que así los/as desarrolladores/as puedan notificarte de problemas serios con el software o tu configuración. Nunca será compartido, vendido, o usado por razones de marketing. Consiente al contacto si te gustaría estar informado/a de problemas críticos en tu servidor."
}

View File

@ -119,17 +119,17 @@
"error": "Errorea",
"loading": "Kargatzen...",
"newVersionError": "CryptPad bertsio berri bat dago erabilgarri.<br><a href='#'>Birkargatu</a> bertsio berria erabiltzeko, edo sakatu Esc zure edukia <b>konexiorik gabeko moduan</b> atzitzeko.",
"errorRedirectToHome": "Sakatu <em>Esc</em> zure CryptDrive-ra birbideratzeko.",
"errorCopy": " Uneko bertsioa oraindik erabili dezakezu irakurtzeko moduan <em>Esc</em> sakatuta.",
"errorRedirectToHome": "Sakatu Esc zure CryptDrive-ra birbideratzeko.",
"errorCopy": " Uneko bertsioa oraindik erabili dezakezu irakurtzeko moduan Esc sakatuta.",
"invalidHashError": "Eskatu duzun dokumentua baliogabeko URLa du.",
"chainpadError": "Errore larri bat gertatu da zure edukia eguneratzean. Orrialde hau irakurtzeko moduan dago zure lana galduko ez duzula ziurtatzeko.<br>Sakatu <em>Esc</em> dokumentua ikusten jarraitzeko, edo kargatu berriro editatzen saiatzeko.",
"chainpadError": "Errore larri bat gertatu da zure edukia eguneratzean. Orrialde hau irakurtzeko moduan dago zure lana galduko ez duzula ziurtatzeko.<br>Sakatu Esc dokumentua ikusten jarraitzeko, edo kargatu berriro editatzen saiatzeko.",
"inactiveError": "Dokumentu hau ezabatu da aktibitate faltagatik. Sakatu Esc dokumentu berri bat sortzeko.",
"deletedError": "Dokumentu hau ezabatu da eta ezin ezingo da gehiago erabili.",
"expiredError": "Dokumentu hau iraungitze-datara iritsi da eta ezin izango da gehiago erabili.",
"anonymousStoreDisabled": "CryptPad instantzia honen administratzaileak gonbidatuek gordetzea galarazi du. Hasi saioa zure CryptDrive propiora sartzeko.",
"padNotPinnedVariable": "Dokumentu hau {4} egun barru iraungiko da aktibitaterik ez badago, {0}saioa hasi{1} edo {2}erregistratu{3} mantentzeko.",
"padNotPinned": "Dokumentu hau 3 hilabete barru iraungiko da aktibitaterik ez badu, {0}saioa hasi{1} edo {2}erregistratu{3} mantentzeko.",
"onLogout": "Saiotik kanpo zaude, {0}egin klik hemen{1} saioa hasteko<br>edo sakatu <em>Esc</em> zure dokumentua irakurtzeko moduan ikusteko.",
"onLogout": "Saiotik kanpo zaude, {0}egin klik hemen{1} saioa hasteko<br>edo sakatu Esc zure dokumentua irakurtzeko moduan ikusteko.",
"typeError": "Dokumentu hau ez da bateragarria hautatutako aplikazioarekin",
"common_connectionLost": "<b>Zerbitzariaren konexioa galdu da</b><br>Konexioa berreskuratu arte irakurtzeko moduan zaude.",
"type": {
@ -330,7 +330,7 @@
"contacts_confirmRemove": "Ziur zaude <em>{0}</em> zure kontaktuetatik kendu nahi duzula?",
"contacts_remove": "Kendu kontaktu hau",
"contacts_send": "Bidali",
"contacts_request": "<em>{0}</em> erabiltzaileak kontaktu gisa gehitu nahi zaitu. <b>Onartu<b>?",
"contacts_request": "<em>{0}</em> erabiltzaileak kontaktu gisa gehitu nahi zaitu. <b>Onartu</b>?",
"contacts_rejected": "Kontaktu-gonbidapena baztertu da",
"contacts_added": "Kontaktu-gonbidapena onartu da.",
"contacts_title": "Kontaktuak",
@ -778,14 +778,14 @@
"admin_diskUsageButton": "Sortu txostena",
"admin_diskUsageHint": "CryptPad baliabide ezberdinek kontsumitzen duten biltegiratze-espazioa",
"admin_diskUsageTitle": "Diskoaren erabilera",
"timeoutError": "Errore batek zerbitzariarekiko konexioa hautsi du. <br>Sakatu <em>Esc</em> orria berriro kargatzeko.",
"timeoutError": "Errore batek zerbitzariarekiko konexioa hautsi du. <br>Sakatu Esc orria berriro kargatzeko.",
"contact_email": "Posta elektronikoa",
"contact_chat": "Txata",
"contact_bug": "Akats-txostena",
"contact_devHint": "Eginbideen eskaerak, erabilgarritasuna hobetzeko edo eskerrak emateko.",
"contact_dev": "Kontaktatu garatzaileekin",
"contact_adminHint": "Zure kontuarekin, biltegiratze mugarekin edo zerbitzuaren erabilgarritasunarekin lotutako edozein arazotarako.\n",
"contact_admin": "Kontaktuan jarri administratzaileekin honetarako: [0]",
"contact_admin": "Kontaktuan jarri administratzaileekin honetarako: {0}",
"footer_donate": "Diruz lagundu",
"admin_flushCacheDone": "Cachea behar bezala garbitu da",
"admin_flushCacheButton": "Garbitu cachea",
@ -1300,7 +1300,6 @@
"form_defaultOption": "{0} aukera",
"form_anonymous_off": "Blokeatua",
"form_anonymous_on": "Baimenduta",
"form_anonymous": "Inprimaki hau {0} egunean itxiko da",
"form_willClose": "Inprimaki hau {0} egunean itxiko da",
"form_isClosed": "Inprimaki hau {0} egunean itxi zen",
"form_isOpen": "Inprimaki hau irekita dago",

View File

@ -17,19 +17,19 @@
},
"common_connectionLost": "<b>Yhteys palvelimelle katkennut</b><br>Sovellus on vain luku-tilassa, kunnes yhteys palaa.",
"typeError": "Tämä padi ei ole yhteensopiva valitun sovelluksen kanssa",
"onLogout": "Olet kirjautunut ulos, {0}napsauta tästä{1} kirjautuaksesi sisään tai paina <em>Esc-näppäintä</em> käyttääksesi padia vain luku-tilassa.",
"padNotPinned": "Tämä padi vanhenee kolmen kuukauden käyttämättömyyden jälkeen, {0}kirjaudu sisään{1} tai [2}rekisteröidy{3} säilyttääksesi sen.",
"onLogout": "Olet kirjautunut ulos, {0}napsauta tästä{1} kirjautuaksesi sisään<br>tai paina Esc-näppäintä käyttääksesi padia vain luku-tilassa.",
"padNotPinned": "Tämä padi vanhenee kolmen kuukauden käyttämättömyyden jälkeen, {0}kirjaudu sisään{1} tai {2}rekisteröidy{3} säilyttääksesi sen.",
"padNotPinnedVariable": "Tämä padi vanhenee {4} päivän käyttämättömyyden jälkeen, {0}kirjaudu sisään{1} tai {2}rekisteröidy{3} säilyttääksesi sen.",
"anonymousStoreDisabled": "Tämän CryptPad-instanssin ylläpitäjä on estänyt anonyymien käyttäjien pääsyn tallennustilaan. Kirjaudu sisään käyttääksesi CryptDrivea.",
"expiredError": "Tämä padi on vanhentunut, eikä se ole enää saatavilla.",
"deletedError": "Tämä padi on poistettu, eikä se ole enää saatavilla.",
"inactiveError": "Tämä padi on poistettu käyttämättömyyden vuoksi. Paina Esc-näppäintä luodaksesi uuden padin.",
"chainpadError": "Sisältöä päivitettäessä tapahtui vakava virhe. Tämä sivu on vain luku-tilassa, jotta tekemäsi muutokset eivät katoaisi.<br>Paina <em>Esc-näppäintä</em> jatkaaksesi padin katselua vain luku-tilassa, tai lataa sivu uudelleen yrittääksesi muokkaamista.",
"chainpadError": "Sisältöä päivitettäessä tapahtui vakava virhe. Tämä sivu on vain luku-tilassa, jotta tekemäsi muutokset eivät katoaisi.<br>Paina Esc-näppäintä jatkaaksesi padin katselua vain luku-tilassa, tai lataa sivu uudelleen yrittääksesi muokkaamista.",
"invalidHashError": "Pyytämäsi asiakirjan URL-osoite on virheellinen.",
"main_title": "CryptPad: Reaaliaikaista, kollaboratiivista editointia nollatietoperiaatteella",
"errorCopy": " Voit yhä käyttää nykyistä versiota vain luku-tilassa painamalla <em>Esc</em>-näppäintä.",
"errorRedirectToHome": "Paina<em>Esc</em>-näppäintä ohjautuaksesi CryptDriveen.",
"newVersionError": "Uusi versio CryptPadista on saatavilla.<br><a href='#'>Lataa sivu uudelleen</a> siirtyäksesi uuteen versioon, tai paina <em>Esc</em>-näppäintä käyttääksesi sisältöäsi <b>offline-tilassa</b>.",
"errorCopy": " Voit yhä käyttää nykyistä versiota vain luku-tilassa painamalla Esc-näppäintä.",
"errorRedirectToHome": "Paina Esc-näppäintä ohjautuaksesi CryptDriveen.",
"newVersionError": "Uusi versio CryptPadista on saatavilla.<br><a href='#'>Lataa sivu uudelleen</a> siirtyäksesi uuteen versioon, tai paina Esc-näppäintä käyttääksesi sisältöäsi <b>offline-tilassa</b>.",
"loading": "Ladataan...",
"error": "Virhe",
"saved": "Tallennettu",
@ -93,7 +93,7 @@
"saveTemplateButton": "Tallenna mallipohjaksi",
"saveTemplatePrompt": "Valitse otsikko mallipohjalle",
"templateSaved": "Mallipohja tallennettu!",
"selectTemplate": "Valitse mallipohja tai paina <em>Esc</em>-näppäintä",
"selectTemplate": "Valitse mallipohja tai paina Esc-näppäintä",
"useTemplate": "Haluatko käyttää mallipohjaa?",
"useTemplateOK": "Valitse mallipohja (Enter)",
"useTemplateCancel": "Aloita alusta (Esc)",
@ -462,7 +462,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": "Tiedoston koko ylittää [0}MB rajan",
"upload_tooLargeBrief": "Tiedoston koko ylittää {0}MB rajan",
"upload_choose": "Valitse tiedosto",
"upload_pending": "Odottaa",
"upload_cancelled": "Keskeytetty",
@ -872,14 +872,13 @@
"admin_diskUsageButton": "Luo raportti",
"admin_diskUsageHint": "CryptPad-resurssien käyttämä tallennustila",
"admin_diskUsageTitle": "Tallennustilan käyttö",
"timeoutError": "Virhe on katkaissut yhteytesi palvelimelle. <br> Paina <em>Esc</em> ladataksesi sivun uudelleen.",
"timeoutError": "Virhe on katkaissut yhteytesi palvelimelle. <br> Paina Esc ladataksesi sivun uudelleen.",
"contact_email": "Sähköposti",
"contact_chat": "Keskustelu",
"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.\n",
"contact_admin": "Ota yhteyttä ylläpitäjiin",
"footer_donate": "Lahjoita",
"admin_flushCacheDone": "Välimuisti tyhjennetty onnistuneesti",
"admin_flushCacheButton": "Tyhjennä välimuisti",

View File

@ -20,16 +20,16 @@
},
"common_connectionLost": "<b>Connexion au serveur perdue</b><br>Vous êtes désormais en mode lecture seule jusqu'au retour de la connexion.",
"typeError": "Ce document n'est pas compatible avec l'application sélectionnée",
"onLogout": "Vous êtes déconnecté de votre compte utilisateur, {0}cliquez ici{1} pour vous authentifier<br>ou appuyez sur <em>Échap</em> pour accéder au document en mode lecture seule.",
"onLogout": "Vous êtes déconnecté de votre compte utilisateur, {0}cliquez ici{1} pour vous authentifier<br>ou appuyez sur Échap pour accéder au document en mode lecture seule.",
"padNotPinned": "Ce document va expirer après 3 mois d'inactivité, {0}connectez-vous{1} ou {2}enregistrez-vous{3} pour le préserver.",
"anonymousStoreDisabled": "L'administrateur de cette instance de CryptPad a désactivé le stockage pour les utilisateurs non enregistrés. Vous devez vous connecter pour pouvoir utiliser votre propre CryptDrive.",
"expiredError": "Ce document a atteint sa date d'expiration est n'est donc plus disponible.",
"deletedError": "Ce document a été supprimé et n'est plus disponible.",
"inactiveError": "Ce document a été supprimé en raison de son inactivité. Appuyez sur Échap pour créer un nouveau pad.",
"chainpadError": "Une erreur critique est survenue lors de la mise à jour du contenu. Le document est désormais en mode lecture seule afin de s'assurer que vous ne perdiez pas davantage de données.<br>Appuyez sur <em>Échap</em> pour voir le document ou rechargez la page pour pouvoir le modifier à nouveau.",
"chainpadError": "Une erreur critique est survenue lors de la mise à jour du contenu. Le document est désormais en mode lecture seule afin de s'assurer que vous ne perdiez pas davantage de données.<br>Appuyez sur Échap pour voir le document ou rechargez la page pour pouvoir le modifier à nouveau.",
"invalidHashError": "L'URL du document demandé n'est pas valide.",
"errorCopy": " Vous pouvez toujours utiliser la version actuelle en mode lecture seule en appuyant sur <em>Échap</em>.",
"errorRedirectToHome": "Appuyez sur <em>Échap</em> pour retourner vers votre CryptDrive.",
"errorCopy": " Vous pouvez toujours utiliser la version actuelle en mode lecture seule en appuyant sur Échap.",
"errorRedirectToHome": "Appuyez sur Échap pour retourner vers votre CryptDrive.",
"newVersionError": "Une nouvelle version de CryptPad est disponible.<br><a href='#'>Rechargez la page</a> pour utiliser la nouvelle version, ou appuyez sur Échap pour accéder au contenu actuel en <b>mode hors-ligne</b>.",
"loading": "Chargement...",
"error": "Erreur",
@ -218,7 +218,7 @@
"contacts_title": "Contacts",
"contacts_added": "Invitation de contact acceptée.",
"contacts_rejected": "Invitation de contact rejetée",
"contacts_request": "<em>{0}</em> souhaite vous ajouter en tant que contact. <b>Accepter<b> ?",
"contacts_request": "<em>{0}</em> souhaite vous ajouter en tant que contact. <b>Accepter</b> ?",
"contacts_send": "Envoyer",
"contacts_remove": "Supprimer ce contact",
"contacts_confirmRemove": "Êtes-vous sûr de vouloir supprimer <em>{0}</em> de vos contacts ?",
@ -626,7 +626,7 @@
"contact_bug": "Rapport de bug",
"contact_chat": "Chat",
"contact_email": "Email",
"timeoutError": "Une erreur a coupé la connexion au serveur. <br>Appuyez sur <em>Échap</em> pour recharger la page.",
"timeoutError": "Une erreur a coupé la connexion au serveur. <br>Appuyez sur Échap pour recharger la page.",
"admin_diskUsageTitle": "Utilisation du disque",
"admin_diskUsageHint": "Quantité d'espace de stockage utilisé par la base de données de CryptPad",
"admin_diskUsageButton": "Générer le rapport",
@ -1498,5 +1498,7 @@
"og_contact": "{0} Contact",
"og_pricing": "{0} Tarification",
"og_features": "{0} Fonctionnalités",
"og_encryptedAppType": "Chiffré {0}"
"og_encryptedAppType": "Chiffré {0}",
"admin_conflictExplanation": "Il existe deux versions de ce document. La restauration de la version archivée va écraser la version courante. L'archivage de la version courante va écraser le document archivé. Aucune de ces actions ne peut être annulée.",
"admin_documentConflict": "Archiver/restaurer"
}

View File

@ -19,12 +19,12 @@
},
"typeError": "Dokumen ini tidak sesuai dengan aplikasi yang dipilih",
"common_connectionLost": "<b>Koneksi Server Terputus</b><br>Kau sekarang di mode baca hingga koneksi kembali.",
"main_title": "Cryptpad: Informasi Aman, Kolaborasi Waktu Nyata",
"fc_open_ro": "Buka (<i>read-only</i>)",
"main_title": "CryptPad: Informasi Aman, Kolaborasi Waktu Nyata",
"fc_open_ro": "Buka (read-only)",
"fc_open": "Buka",
"exportButton": "Ekspor",
"invalidHashError": "URL dari dokumen yang ada minta tidaklah valid.",
"errorRedirectToHome": "Tekan <em>Esc</em> untuk diarahkan ke CryptDrive anda.",
"errorRedirectToHome": "Tekan Esc untuk diarahkan ke CryptDrive anda.",
"inactiveError": "Dokumen ini telah dihapus karena tidak ada aktivitas. Tekan Esc untuk membuat dokumen baru.",
"deletedError": "Dokumen ini telah dihapus dan tidak lagi tersedia."
}

View File

@ -20,16 +20,16 @@
},
"common_connectionLost": "<b>Connessione al server persa</b><br>Rimarrai in modalità solo lettura finché la connessione non sarà ripristinata.",
"typeError": "Questo documento non è compatibile con l'applicazione selezionata",
"onLogout": "Sei uscito, {0}clicca qui{1} per entrare<br>o premi <em>Esc</em> per accedere al tuo documento in modalità di sola lettura.",
"onLogout": "Sei uscito, {0}clicca qui{1} per entrare<br>o premi Esc per accedere al tuo documento in modalità di sola lettura.",
"padNotPinned": "Questo documento scadrà dopo 3 mesi di inattività, {0}accedi{1} o {2}registrati{3} per conservarlo.",
"anonymousStoreDisabled": "L'amministratore di questa istanza di CryptPad ha disabilitato il drive per gli ospiti. Accedi per poter usare il tuo CryptDrive.",
"expiredError": "Questo documento ha raggiunto la sua data di scadenza e non è più disponibile.",
"deletedError": "Questo documento è stato cancellato dal suo autore e non è più disponibile.",
"inactiveError": "Questo documento è stato cancellato per inattività. Premi Esc per creare un nuovo documento.",
"chainpadError": "Si è verificato un errore critico nell'aggiornamento del tuo contenuto. Questa pagina è in modalità di sola lettura per assicurarci che non perderai il tuo lavoro.<br>Premi <em>Esc</em> per continuare a visualizzare questo documento, o ricarica la pagina per provare a modificarlo di nuovo.",
"chainpadError": "Si è verificato un errore critico nell'aggiornamento del tuo contenuto. Questa pagina è in modalità di sola lettura per assicurarci che non perderai il tuo lavoro.<br>Premi Esc per continuare a visualizzare questo documento, o ricarica la pagina per provare a modificarlo di nuovo.",
"invalidHashError": "Il documento richiesto ha un URL non valido.",
"errorCopy": " Puoi ancora utilizzare la versione attuale in modalità di sola lettura premendo <em>Esc</em>.",
"errorRedirectToHome": "Premi <em>Esc</em> per essere reindirizzato al tuo CryptDrive.",
"errorCopy": " Puoi ancora utilizzare la versione attuale in modalità di sola lettura premendo Esc.",
"errorRedirectToHome": "Premi Esc per essere reindirizzato al tuo CryptDrive.",
"newVersionError": "Una nuova versione di CryptPad è disponibile. <br><a href='#'>Ricarica</a> per usare la nuova versione, o premi Esc per accedere al tuo contenuto in <b>modalità offline</b>.",
"loading": "Caricamento in corso...",
"error": "Errore",
@ -217,7 +217,7 @@
"contacts_title": "Contatti",
"contacts_added": "Invito ai contatti accettato.",
"contacts_rejected": "Invito ai contatti rifiutato",
"contacts_request": "<em>{0}</em> vorrebbe aggiungerti ai contatti. <b>Accettare<b>?",
"contacts_request": "<em>{0}</em> vorrebbe aggiungerti ai contatti. <b>Accettare</b>?",
"contacts_send": "Invia",
"contacts_remove": "Rimuovi questo contatto",
"contacts_confirmRemove": "Sei sicuro di voler rimuovere <em>{0}</em> dai tuoi contatti?",
@ -276,7 +276,7 @@
"fm_info_template": "Questi documenti sono salvati come modelli. Puoi riutilizzarli per creare nuovi documenti.",
"fm_info_recent": "Questi documenti sono stati recentemente aperti o modificati da te o da persone con le quali tu collabori.",
"fm_info_trash": "Svuota il tuo cestino per liberare spazio nel tuo CryptDrive.",
"fm_info_anonymous": "Non hai effettuato l'accesso, quindi i tuoi documenti scadranno tra {0} giorni. Cancellando la cronologia potresti farli scomparire.<br><a href=\"/register/\">Registrati</a> (non sono richieste informazioni personali) oppure <a href=\"/login/\">Accedi</a> per conservarli permanentemente nel tuo drive.<br> <a href=\"#docs\">Leggi di più sugli account registrati</a>.",
"fm_info_anonymous": "Non hai effettuato l'accesso, quindi i tuoi documenti scadranno tra {0} giorni. Cancellando la cronologia potresti farli scomparire.<br><a href=\"/register/\">Registrati</a> (non sono richieste informazioni personali) oppure <a href=\"/login/\">Accedi</a> per conservarli permanentemente nel tuo drive. <a href=\"#docs\">Leggi di più sugli account registrati</a>.",
"fm_info_sharedFolder": "Questa è una cartella condivisa. Non hai effettuato l'accesso, quindi puoi visualizzarla solo in modalità di sola lettura.<br><a href=\"/register/\">Registrati</a> o <a href=\"/login/\">Accedi</a> per poterla importare nel tuo CryptDrive e per modificarla.",
"fm_info_owned": "Sei il proprietario dei documenti mostrati qui. Questo significa che puoi rimuoverli permanentemente dal server quando lo desideri. Se lo fai, gli altri utenti non potranno più accedervi.",
"fm_error_cantPin": "Errore interno del server. Ricarica la pagina e prova di nuovo.",
@ -728,7 +728,7 @@
"burnAfterReading_proceed": "visualizza ed elimina",
"oo_sheetMigration_complete": "Versione aggiornata disponibile, premi OK per ricaricare.",
"view": "visualizza",
"timeoutError": "Un errore ha interrotto la tua connessione al server. <br>Premi <em>Esc</em> per ricaricare la pagina.",
"timeoutError": "Un errore ha interrotto la tua connessione al server. <br>Premi Esc per ricaricare la pagina.",
"support_disabledTitle": "Il supporto non è abilitato",
"support_listHint": "Qui c'è l'elenco dei ticket inviati agli amministratori e delle loro risposte. Un ticket chiuso non può essere riaperto ma puoi farne uno nuovo. Puoi nascondere i ticket che sono stati chiusi.",
"creation_expireDays": "Giorno(i)",

View File

@ -400,7 +400,7 @@
"settings_disableThumbnailsAction": "CryptDriveでのサムネイルの作成を無効にする",
"settings_resetError": "入力した確認文が正しくありません。CryptDriveのデータは消去されていません。",
"settings_resetDone": "データが消去されました!",
"settings_resetPrompt": "あなたのドライブからのドキュメントを削除します。<br>本当に続けてよろしいですか?<br>続けるには「I love CryptPad」と入力してください。",
"settings_resetPrompt": "あなたのドライブからのドキュメントを削除します。<br>本当に続けてよろしいですか?<br>続けるには「<em>I love CryptPad</em>」と入力してください。",
"settings_reset": "CryptDriveの全てのファイルとフォルダを削除",
"settings_exportErrorOther": "ドキュメントのエクスポート中にエラーが発生しました: {0}",
"drive_activeOld": "以前のドキュメント",
@ -730,18 +730,18 @@
"realtime_unrecoverableError": "回復不能なエラーが発生しました。OKをクリックして再読み込みを行ってください。",
"disabledApp": "このアプリケーションは無効になっています。詳細については、このCryptPadの管理者にお問い合わせください。",
"deletedFromServer": "ドキュメントが破棄されました",
"newVersionError": "新しいバージョンのCryptPadがあります。<br><a href='#'>リロードする</a>と新しいバージョンを読み込みます。<em>Esc</em>キーを押すと<b>オフラインモード</b>でコンテンツにアクセスします。",
"errorRedirectToHome": "<em>Esc</em>キーを押すとCryptDriveにリダイレクトします。",
"errorCopy": " <em>Esc</em>キーを押すと、閲覧モードで引き続きコンテンツにアクセスできます。",
"newVersionError": "新しいバージョンのCryptPadがあります。<br><a href='#'>リロードする</a>と新しいバージョンを読み込みます。Escキーを押すと<b>オフラインモード</b>でコンテンツにアクセスします。",
"errorRedirectToHome": "Escキーを押すとCryptDriveにリダイレクトします。",
"errorCopy": " Escキーを押すと、閲覧モードで引き続きコンテンツにアクセスできます。",
"invalidHashError": "要求したドキュメントのURLが無効です。",
"chainpadError": "コンテンツを更新する際に重大なエラーが発生しました。コンテンツが失われないよう、閲覧モードで表示されています。<br>このドキュメントの表示を続けるには<em>Esc</em>キーを押し、再度編集を試みるにはリロードをしてください。",
"chainpadError": "コンテンツを更新する際に重大なエラーが発生しました。コンテンツが失われないよう、閲覧モードで表示されています。<br>このドキュメントの表示を続けるにはEscキーを押し、再度編集を試みるにはリロードをしてください。",
"inactiveError": "このドキュメントは利用されていなかったため削除されました。Escキーを押すと新しいパドキュメントを作成します。",
"deletedError": "このドキュメントは削除されたため、利用できなくなりました。",
"expiredError": "このドキュメントは利用期限を過ぎてしまったため、利用できなくなりました。",
"anonymousStoreDisabled": "このCryptPadのインスタンスの管理者は、ゲストによる保存を無効に設定しています。あなたのCryptDriveにアクセスするにはログインが必要です。",
"padNotPinnedVariable": "このドキュメントは{4}日間利用しないと有効期限が切れます。{0}ログイン{1}するか{2}登録{3}して保存してください。",
"padNotPinned": "このドキュメントは3か月間利用しないと有効期限が切れます。{0}ログイン{1}するか{2}登録{3}して保存してください。",
"onLogout": "ログアウトしました。{0}ここをクリック{1}するか<br><em>Escape</em>キーを押すと、閲覧モードでドキュメントにアクセスできます。",
"onLogout": "ログアウトしました。{0}ここをクリック{1}するか<br>Escキーを押すと、閲覧モードでドキュメントにアクセスできます。",
"typeError": "このドキュメントは選択したアプリケーションと互換性がありません",
"form_type_page": "ページ分割",
"form_description_default": "ここにテキストを入力",
@ -974,7 +974,7 @@
"useTemplateCancel": "新しく開始Esc",
"fm_originalPath": "本来のパス",
"contacts_online": "このルームの別のユーザーがオンラインです",
"contacts_request": "<em>{0}</em>があなたを連絡先に追加しようとしています。<b>承諾しますか<b>",
"contacts_request": "<em>{0}</em>があなたを連絡先に追加しようとしています。<b>承諾しますか</b>",
"contacts_rejected": "連絡先の招待が拒否されました",
"contacts_added": "連絡先の招待が承諾されました。",
"profile_uploadTypeError": "エラー: あなたのアバターの種類は許可されていません。許可されている種類: {0}",
@ -1005,7 +1005,7 @@
"register_emailWarning0": "ユーザー名にメールアドレスが入力されています。",
"fm_tags_used": "使用数",
"fm_deletedPads": "これらのドキュメントはサーバーにありません。あなたのCryptDriveから削除されています: {0}",
"fm_renamedPad": "このドキュメントにユーザー定義の名前を設定しました。共有のファイル名は「<b>{0}</b>」です",
"fm_renamedPad": "このドキュメントにユーザー定義の名前を設定しました。<br>共有のファイル名は「<b>{0}</b>」です",
"fm_ownedPadsName": "所有",
"burnAfterReading_generateLink": "下のボタンをクリックするとリンクを生成します。",
"fm_restricted": "アクセス権がありません",
@ -1159,7 +1159,7 @@
"friendRequest_received": "<b>{0}</b>が連絡先への追加を希望しています",
"friendRequest_declined": "<b>{0}</b>が連絡先のリクエストを拒否しました",
"admin_diskUsageHint": "CryptPadのリソースが消費しているストレージ容量",
"timeoutError": "エラーが発生してサーバーへの接続が切断されました。<br><em>Esc</em>キーを押してページを再読み込みしてください。",
"timeoutError": "エラーが発生してサーバーへの接続が切断されました。<br>Escキーを押してページを再読み込みしてください。",
"admin_updateLimitHint": "ユーザーのストレージ制限の強制アップデートはいつでも可能です。エラーが発生したときは必須となります",
"admin_cat_general": "全般",
"poll_bookmarked_col": "列をブックマークしました。常に編集可能な仕方で左端に表示されます。",
@ -1290,7 +1290,7 @@
"history_cantRestore": "復元に失敗しました。接続が切れています。",
"todo_move": "タスクリストはCryptDriveのカンバン「<b>{0}</b>」に移動しました。",
"info_imprintFlavour": "<a>このインスタンスの管理者に関する法的情報</a>。",
"settings_safeLinkDefault": "セーフリンクは既定で有効になっています。ブラウザーのアドレスバーではなく、<b>共有</b>メニューを使ってリンクをコピーしてください。",
"settings_safeLinkDefault": "セーフリンクは既定で有効になっています。ブラウザーのアドレスバーではなく、<i></i> <b>共有</b>メニューを使ってリンクをコピーしてください。",
"comments_notification": "<b>{1}</b>でのあなたのコメント「{0}」に対する返信",
"infobar_versionHash": "このドキュメントの過去のバージョンを閲覧しています({0})。",
"history_fastNext": "次の編集セッション",

View File

@ -20,17 +20,17 @@
},
"common_connectionLost": "<b>Server Connection Lost</b><br>You're now in read-only mode until the connection is back.",
"typeError": "This document is not compatible with the selected application",
"onLogout": "You are logged out, {0}click here{1} to log in<br>or press <em>Escape</em> to access your document in read-only mode.",
"onLogout": "You are logged out, {0}click here{1} to log in<br>or press Esc to access your document in read-only mode.",
"padNotPinned": "This document will expire after 3 months of inactivity, {0}login{1} or {2}register{3} to preserve it.",
"padNotPinnedVariable": "This document will expire after {4} days of inactivity, {0}login{1} or {2}register{3} to preserve it.",
"anonymousStoreDisabled": "The administrator of this CryptPad instance has disabled storage for guests. Log in to access your own CryptDrive.",
"expiredError": "This document has reached its expiration time and is no longer available.",
"deletedError": "This document has been deleted and is no longer available.",
"inactiveError": "This document has been deleted due to inactivity. Press Esc to create a new document.",
"chainpadError": "A critical error occurred when updating your content. This page is in read-only mode to make sure you won't lose your work.<br>Hit <em>Esc</em> to continue to view this document, or reload to try editing again.",
"chainpadError": "A critical error occurred when updating your content. This page is in read-only mode to make sure you won't lose your work.<br>Hit Esc to continue to view this document, or reload to try editing again.",
"invalidHashError": "The document you've requested has an invalid URL.",
"errorCopy": " You can still use the current version in read-only mode by pressing <em>Esc</em>.",
"errorRedirectToHome": "Press <em>Esc</em> to be redirected to your CryptDrive.",
"errorCopy": " You can still use the current version in read-only mode by pressing Esc.",
"errorRedirectToHome": "Press Esc to be redirected to your CryptDrive.",
"newVersionError": "A new version of CryptPad is available.<br><a href='#'>Reload</a> to use the new version, or press escape to access your content in <b>offline mode</b>.",
"loading": "Loading...",
"error": "Error",
@ -220,7 +220,7 @@
"contacts_title": "Contacts",
"contacts_added": "Contact invite accepted.",
"contacts_rejected": "Contact invite rejected",
"contacts_request": "<em>{0}</em> would like to add you as a contact. <b>Accept<b>?",
"contacts_request": "<em>{0}</em> would like to add you as a contact. <b>Accept</b>?",
"contacts_send": "Send",
"contacts_remove": "Remove this contact",
"contacts_confirmRemove": "Are you sure you want to remove <em>{0}</em> from your contacts?",
@ -645,7 +645,7 @@
"contact_bug": "Bug report",
"contact_chat": "Chat",
"contact_email": "Email",
"timeoutError": "An error has broken your connection to the server. <br>Hit <em>Esc</em> to reload the page.",
"timeoutError": "An error has broken your connection to the server. <br>Hit Esc to reload the page.",
"admin_diskUsageTitle": "Disk usage",
"admin_diskUsageHint": "Amount of storage space consumed by various CryptPad resources",
"admin_diskUsageButton": "Generate report",
@ -948,7 +948,7 @@
"slide_backCol": "Background color",
"slide_textCol": "Text color",
"support_languagesPreamble": "The support team speaks the following languages:",
"settings_safeLinkDefault": "Safe Links are now turned on by default. Please use the <b>Share</b> menu to copy links rather than your browser's address bar.",
"settings_safeLinkDefault": "Safe Links are now turned on by default. Please use the <i></i> <b>Share</b> menu to copy links rather than your browser's address bar.",
"info_imprintFlavour": "<a>Legal information</a> about the administrators of this instance",
"user_about": "About CryptPad",
"info_privacyFlavour": "<a>Privacy policy</a> for this instance",
@ -1498,5 +1498,7 @@
"og_pricing": "{0} Pricing",
"og_features": "{0} Features",
"ui_jsRequired": "JavaScript must be enabled to perform encryption in your browser",
"og_encryptedAppType": "Encrypted {0}"
"og_encryptedAppType": "Encrypted {0}",
"admin_documentConflict": "Archive/restore",
"admin_conflictExplanation": "Two versions of this document exist. Restoring the archived version will overwrite the live version. Archiving the live version will overwrite the archived version. Neither action can be undone."
}

View File

@ -71,20 +71,20 @@
"saved": "Užsaugota",
"error": "Klaida",
"loading": "Kraunasi...",
"newVersionError": "Yra nauja „CryptPad“ versija. <br> <a href='#'> Perkraukite iš naujo </a>, jei norite naudoti naują versiją, arba paspauskite „Escape“, kad pasiektumėte savo turinį <b> offline režimu </b>.",
"errorRedirectToHome": "Paspauskite <em> Esc </em>, kad būtumėte nukreipti į „CryptDrive“.",
"errorCopy": " Vis dar galite naudoti dabartinę versiją tik skaitymo režimu paspausdami <em> Esc </em>.",
"newVersionError": "Yra nauja „CryptPad“ versija. <br> <a href='#'> Perkraukite iš naujo </a>, jei norite naudoti naują versiją, arba paspauskite „Esc“, kad pasiektumėte savo turinį <b> offline režimu </b>.",
"errorRedirectToHome": "Paspauskite Esc, kad būtumėte nukreipti į „CryptDrive“.",
"errorCopy": " Vis dar galite naudoti dabartinę versiją tik skaitymo režimu paspausdami Esc.",
"invalidHashError": "Prašytame dokumente yra neteisingas URL.",
"chainpadError": "Atnaujinant turinį įvyko kritinė klaida. Šis puslapis veikia tik skaitymo režimu, kad neprarastumėte savo darbo. <br> Jei norite toliau peržiūrėti šį padą, paspauskite <em> Esc </em> arba įkelkite iš naujo, jei norite bandyti redaguoti dar kartą.",
"chainpadError": "Atnaujinant turinį įvyko kritinė klaida. Šis puslapis veikia tik skaitymo režimu, kad neprarastumėte savo darbo. <br> Jei norite toliau peržiūrėti šį padą, paspauskite Esc arba įkelkite iš naujo, jei norite bandyti redaguoti dar kartą.",
"inactiveError": "Šis padas buvo ištrintas dėl neveiklumo. Paspauskite Esc, kad sukurtumėte naują padą.",
"deletedError": "Šis dokumentas ištrintas ir jo nebėra.",
"expiredError": "Šis Padas nebegalioja ir yra ištrintas.",
"anonymousStoreDisabled": "Šios instancijos nepalaiko anoniminio vartojimo. Jūs turite prisiregistruoti, kad galėtumete naudoti CryptDrive.",
"padNotPinnedVariable": "Šis padas nustos galioti po {4} neaktyvių dienų, {0}prisijungti{1} arba {2}registruotis{3} kad užsaugoti.",
"padNotPinned": "Nenaudojamas padas nustos galioti po 3mėn, {0}prisijungti{1} arba {2} registruotis{3} kad užsaugoti.",
"onLogout": "Jūs esate prisijungęs, {0}Spausti čia{1}Prisjungti čia<br>arba spausti <em>Escape</em> pasiekti savo pad tik skaityti.",
"onLogout": "Jūs esate prisijungęs, {0}Spausti čia{1}Prisjungti čia<br>arba spausti Esc pasiekti savo pad tik skaityti.",
"typeError": "Šis Pad nesuderinama su pasirinkta programa",
"common_connectionLost": "<b> serverio sujungimas prarastas<b><br> Tik skaitymo rėžimas kol sujungimas atsiras.",
"common_connectionLost": "<b> serverio sujungimas prarastas</b><br> Tik skaitymo rėžimas kol sujungimas atsiras.",
"type": {
"form": "Forma",
"teams": "Komandos",

View File

@ -17,16 +17,16 @@
},
"common_connectionLost": "<b>Tjener frakoblet</b><br>I lesemodus til tilkoblingen gjenopprettes.",
"typeError": "Dette dokumentet er ikke kompatibelt med det valgte programmet",
"onLogout": "Du er utlogget, {0}klikk her{1} for å logge inn<br>eller trykk <em>Esc</em> for å se dokumentet i lesemodus.",
"onLogout": "Du er utlogget, {0}klikk her{1} for å logge inn<br>eller trykk Esc for å se dokumentet i lesemodus.",
"padNotPinned": "Dette dokumentet vil automatisk utløpe etter 3 måneder uten aktivitet, {0}logg inn{1} eller {2}registrer deg{3} for å ta vare på det.",
"anonymousStoreDisabled": "Beklager, denne CryptPad-dokumentet er ikke tilgjengelig for anonyme brukere. Logg inn for å bruke CryptDrive.",
"expiredError": "Dette dokumentet har utløpt, og er ikke tilgjengelig.",
"deletedError": "Dette dokumentet er slettet, og dermed ikke lenger tilgjengelig.",
"inactiveError": "Dette dokumentet har blitt har blitt slettet pga. inaktivitet. Trykk «Esc» for å lage en nytt dokument.",
"chainpadError": "En kritisk feil oppstod under oppdatering av innholdet. Denne siden er i lesemodus slik at du ikke mister arbeidet.<br>Trykk <em>Esc</em> for å fortsette, eller forsøk å laste inn siden på nytt.",
"chainpadError": "En kritisk feil oppstod under oppdatering av innholdet. Denne siden er i lesemodus slik at du ikke mister arbeidet.<br>Trykk Esc for å fortsette, eller forsøk å laste inn siden på nytt.",
"invalidHashError": "Dokumentet du ba om har en ugyldig nettadresse.",
"errorCopy": " Du kan fremdeles bruke nåværende versjon i lesemodus ved å trykke <em>Esc</em>.",
"errorRedirectToHome": "Trykk <em>Esc</em> for bli videresendt til din CryptDrive.",
"errorCopy": " Du kan fremdeles bruke nåværende versjon i lesemodus ved å trykke Esc.",
"errorRedirectToHome": "Trykk Esc for bli videresendt til din CryptDrive.",
"newVersionError": "En ny versjon av CryptPad er her.<br><a href='#'>Gjeninnlast siden</a> eller trykk «Esc» for å redigere innholdet i <b>frakoblet modus</b>.",
"loading": "Laster …",
"error": "Feil",
@ -175,7 +175,7 @@
"admin_flushCacheButton": "Tøm hurtiglager",
"admin_flushCacheDone": "Hurtiglager tømt",
"footer_donate": "Doner",
"contact_admin": "Kontakt administratorne",
"contact_admin": "Kontakt administratorne for {0}",
"contact_adminHint": "For problemer med kontoen, lagringsgrenser eller tjenestetilgang.\n",
"contact_dev": "Kontakt utviklerne",
"contact_devHint": "For å sende inn forslag, forbedringer eller takk.",
@ -189,7 +189,7 @@
"contacts_title": "Kontakter",
"contacts_added": "Kontaktinvitasjon godtatt.",
"contacts_rejected": "Kontaktinvitasjonen avvist",
"contacts_request": "<em>{0}</em> vil legge deg til som kontakt. <b>Aksepter<b>?",
"contacts_request": "<em>{0}</em> vil legge deg til som kontakt. <b>Aksepter</b>?",
"contacts_remove": "Fjern denne kontakten",
"contacts_confirmRemove": "Fjern <em>{0}</em> fra kontaktlisten din?",
"contacts_typeHere": "Skriv en melding her …",
@ -254,7 +254,7 @@
"formattedGB": "{0} GB",
"formattedMB": "{0} MB",
"storageStatus": "Lagringsplass:<br><b>{0}</b> brukt, av <b>{1}</b>",
"padNotPinnedVariable": "Denne dokumentet utløper etter {4] dager med inaktivitet, {0}logg inn{1} eller {2}registrer deg{3} for å bevare det.",
"padNotPinnedVariable": "Denne dokumentet utløper etter {4} dager med inaktivitet, {0}logg inn{1} eller {2}registrer deg{3} for å bevare det.",
"history_restoreTitle": "Gjenopprett den valgte dokumentversjonen",
"history_closeTitle": "Lukk historikken",
"history_loadMore": "Vis mer historikk",

View File

@ -15,7 +15,7 @@
"code": "Code"
},
"padNotPinned": "Deze werkomgeving wordt na 3 maanden gewist als hij niet wordt gebruikt. {0}Log in{1} of {2}registreer{3} om deze te behouden.",
"onLogout": "U bent uitgelogd. {0}Klik hier{1} om in te loggen<br>of druk op <em>Escape</em> om uw werkomgeving te openen in alleen-lezenmodus.",
"onLogout": "U bent uitgelogd. {0}Klik hier{1} om in te loggen<br>of druk op Esc om uw werkomgeving te openen in alleen-lezenmodus.",
"typeError": "Deze werkomgeving kan niet worden gebruikt met het gekozen programma",
"common_connectionLost": "<b>Serververbinding verbroken</b><br>De alleen-lezenmodus is ingeschakeld tot de verbinding hersteld wordt.",
"padNotPinnedVariable": "Deze werkomgeving wordt na {4} dagen gewist als hij niet wordt gebruikt. {0}Log in{1} of {2}registreer{3} om deze te behouden.",
@ -156,10 +156,10 @@
"settings_ownDriveConfirm": "Uw account upgraden kan enkele minuten duren. U zult op all uw apparaten opnieuw moeten inloggen. Weet u dit zeker?",
"settings_ownDriveButton": "Upgrade uw account",
"settings_ownDriveHint": "Oude accounts hebben geen toegang tot de nieuwste functies. Een gratis update zal nieuwe functies inschakelen en jouw Drive voor toekomstige updates voorbereiden.",
"errorRedirectToHome": "Druk op <em>Esc</em> om door te gaan naar uw CryptDrive.",
"errorCopy": " U kunt nog altijd toegang krijgen tot de inhoud als u op <em>Esc</em> drukt.<br>Als u dit venster sluit, kunt u er geen toegang meer tot krijgen.",
"errorRedirectToHome": "Druk op Esc om door te gaan naar uw CryptDrive.",
"errorCopy": "U kunt nog altijd toegang krijgen tot de inhoud als u op Esc drukt.",
"invalidHashError": "De url van het opgevraagde document is ongeldig.",
"chainpadError": "Er is een kritieke fout opgetreden tijdens het bijwerken van uw inhoud. Deze pagina bevindt zich nu in alleen-lezenmodus zodat u uw werk niet kwijtraakt. <br>Druk op <em>Esc</em> om door te gaan met het bekijken van deze werkomgeving of herlaad de pagina om te trachten deze werkomgeving weer aan te kunnen passen.",
"chainpadError": "Er is een kritieke fout opgetreden tijdens het bijwerken van uw inhoud. Deze pagina bevindt zich nu in alleen-lezenmodus zodat u uw werk niet kwijtraakt. <br>Druk op Esc om door te gaan met het bekijken van deze werkomgeving of herlaad de pagina om te trachten deze werkomgeving weer aan te kunnen passen.",
"inactiveError": "Deze werkomgeving is verwijderd wegens gebrek aan activiteit. Druk op Esc om een nieuwe werkomgeving samen te stellen.",
"deletedError": "Deze werkomgeving is verwijderd door de eigenaar en niet meer beschikbaar.",
"main_title": "CryptPad: werk samen aan documenten - geen kennis benodigd",
@ -223,7 +223,7 @@
"contacts_title": "Contacten",
"contacts_added": "Contactuitnodiging geaccepteerd.",
"contacts_rejected": "Contactuitnodiging afgewezen",
"contacts_request": "<em>{0}</em> wilt u toevoegen als contactpersoon. <b>Accepteren<b>?",
"contacts_request": "<em>{0}</em> wilt u toevoegen als contactpersoon. <b>Accepteren</b>?",
"contacts_send": "Verzenden",
"contacts_remove": "Verwijder deze contactpersoon",
"contacts_confirmRemove": "Weet u zeker dat u <em>{0}</em> wilt verwijderen uit uw contacten?",
@ -419,4 +419,4 @@
"mdToolbar_tutorial": "https://www.markdowntutorial.com/nl/",
"ui_restore": "Herstellen",
"admin_documentType": "Type"
}
}

View File

@ -18,7 +18,6 @@
"whiteboard": "Tablica",
"drive": "CryptDrive"
},
"common_connectionLost": "Przerwano połączenie z serwerem",
"disconnected": "Rozłączony",
"synchronizing": "Synchronizacja",
"reconnecting": "Wznawianie połączenia...",
@ -68,25 +67,25 @@
"saved": "Zapisano",
"error": "Błąd",
"loading": "Ładowanie...",
"newVersionError": "Nowa wersja CryptPad jest dostępna.<br><a href='#'>Odśwież</a> aby korzystać z nowej wersji lub wciśnij klawisz <em>ESC</em> aby pracować w trybie <b>offline</b>.",
"errorRedirectToHome": "Wciśnij <em>ESC</em> aby być przeniesionym do swojego CryptDrive.",
"errorCopy": " Możesz korzystać z aktualnej wersji w trybie odczytu, klikając <em>ESC</em>.",
"newVersionError": "Nowa wersja CryptPad jest dostępna.<br><a href='#'>Odśwież</a> aby korzystać z nowej wersji lub wciśnij klawisz Esc aby pracować w trybie <b>offline</b>.",
"errorRedirectToHome": "Wciśnij Esc aby być przeniesionym do swojego CryptDrive.",
"errorCopy": " Możesz korzystać z aktualnej wersji w trybie odczytu, klikając Esc.",
"invalidHashError": "Dokument, który chcesz zobaczyć ma błędny adres URL.",
"chainpadError": "Podczas ładowania zawartości, wystąpił krytyczny błąd. Dostępny jest wyłącznie odczyt, aby dać szansę na odzyskanie dokumentu.<br>Wciśnij klawisz <em>ESC</em> aby przejrzeć dokument lub odśwież stronę aby spróbować włączyć tryb edycji.",
"inactiveError": "Ten dokument został usunięty z powodu braku aktywności. Wciśnij klawisz ESC, aby stworzyć nowy dokument.",
"chainpadError": "Podczas ładowania zawartości, wystąpił krytyczny błąd. Dostępny jest wyłącznie odczyt, aby dać szansę na odzyskanie dokumentu.<br>Wciśnij klawisz Esc aby przejrzeć dokument lub odśwież stronę aby spróbować włączyć tryb 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.",
"expiredError": "Ten dokument wygasł i nie jest już dostępny.",
"anonymousStoreDisabled": "Administrator wyłączył zapisywanie danych dla niezalogowanych użytkowników. Musisz się zalogować 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ć.",
"onLogout": "Jesteś wylogowany, {0}kliknij tutaj{1} aby się zalogować<br>lub użyj klawisza <em>ESC</em> aby odczytać swój dokument (bez możliwości edycji).",
"onLogout": "Jesteś wylogowany, {0}kliknij tutaj{1} aby się zalogować<br>lub użyj klawisza Esc aby odczytać swój dokument (bez możliwości edycji).",
"typeError": "Dokument nie jest kompatybilny z wybraną aplikacją",
"template_empty": "Brak szablonów",
"template_import": "Zaimportuj szablon",
"useTemplateCancel": "Rozpocznij od nowa (Esc)",
"useTemplateOK": "Wybierz szablon (Enter)",
"useTemplate": "Dodać nowy szablon?",
"selectTemplate": "Wybierz szablon lub naciśnij klawisz Escape",
"selectTemplate": "Wybierz szablon lub naciśnij klawisz Esc",
"templateSaved": "Szablon zapisany!",
"saveTemplatePrompt": "Wybierz nazwę dla szablonu",
"saveTemplateButton": "Zapisz jako szablon",
@ -106,10 +105,10 @@
"user_rename": "Zmień nazwę wyświetlaną",
"exportButton": "Eksportuj",
"importButton": "Importuj",
"pinLimitDrive": "Osiągnięto limit przestrzeni dyskowej. Nie możesz utworzyć nowych dokumentów.",
"pinLimitNotPinned": "Osiągnięto limit przestrzeni dyskowej. Ten dokument nie jest zapisany w CryptDrive.",
"pinLimitDrive": "Osiągnięto limit przestrzeni dyskowej.<br> Nie możesz utworzyć nowych dokumentów.",
"pinLimitNotPinned": "Osiągnięto limit przestrzeni dyskowej.<br> Ten dokument nie jest zapisany w CryptDrive.",
"pinLimitReachedAlertNoAccounts": "Osiągnięto limit przestrzeni dyskowej",
"pinLimitReachedAlert": "Osiągnięto limit przestrzeni dyskowej. Nowe dokumenty nie będą przechowywane w Twoim CryptDrive. Możesz usunąć dokumenty z Twojego CryptDrive'a lub skorzystać z oferty premium.",
"pinLimitReachedAlert": "Osiągnięto limit przestrzeni dyskowej. Nowe dokumenty nie będą przechowywane w Twoim CryptDrive.<br>Możesz usunąć dokumenty z Twojego CryptDrive'a lub <a>skorzystać z oferty premium</a>.",
"pinLimitReached": "Osiągnięto limit przestrzeni dyskowej",
"formattedKB": "{0} KB",
"formattedGB": "{0} GB",
@ -181,7 +180,7 @@
"contacts_confirmRemove": "Czy na pewno chcesz usunąć <em>{0}</em> ze swoich kontaktów?",
"contacts_remove": "Usuń ten kontakt",
"contacts_send": "Wyślij",
"contacts_request": "<em>{0}</em> chciałby dodać Cię jako kontakt. <b>Akceptujesz<b>?",
"contacts_request": "<em>{0}</em> chciałby dodać Cię jako kontakt. <b>Akceptujesz</b>?",
"contacts_rejected": "Zaproszenie do kontaktu odrzucone",
"contacts_added": "Zaproszenie do kontaktu przyjęte.",
"contacts_title": "Kontakty",
@ -261,7 +260,7 @@
"slideOptionsTitle": "Dostosuj swoje slajdy",
"slideOptionsText": "Opcje",
"tags_noentry": "Nie możesz oznaczyć usuniętego dokumentu",
"tags_duplicate": "Duplikat tagu",
"tags_duplicate": "Duplikat tagu: {0}",
"tags_notShared": "Twoje tagi nie są udostępniane innym użytkownikom",
"tags_add": "Aktualizuj tagi dla wybranych dokumentów",
"tags_title": "Tagi (tylko dla Ciebie)",
@ -491,7 +490,7 @@
"admin_diskUsageButton": "Wygeneruj raport",
"admin_diskUsageHint": "Ilość przestrzeni dyskowej zużywanej przez różne zasoby CryptPada",
"admin_diskUsageTitle": "Wykorzystanie dysku",
"timeoutError": "Wystąpił błąd, który przerwał połączenie z serwerem.Naciśnij <em>Esc</em>, aby przeładować stronę.",
"timeoutError": "Wystąpił błąd, który przerwał połączenie z serwerem.<br> Naciśnij Esc, aby przeładować stronę.",
"contact_email": "E-mail",
"team_cat_chat": "Czat",
"contact_chat": "Czat",
@ -612,7 +611,7 @@
"features_f_reg": "Wszystkie funkcje zarejestrowanego użytkownika",
"features_f_register": "Zarejestruj się bezpłatnie",
"features_f_storage1_note": "Dokumenty przechowywane w CryptDrive nie są usuwane w przypadku braku aktywności",
"features_f_storage1": "Własne miejsce przechowywania danych",
"features_f_storage1": "Własne miejsce przechowywania danych: {0}",
"features_f_file1_note": "Przechowuj pliki w swoim CryptDrive: obrazy, pliki PDF, wideo i inne. Udostępniaj je swoim kontaktom lub osadzaj w swoich dokumentach. (do {0}MB)",
"features_f_file1": "Przesyłaj i udostępniaj pliki",
"features_f_social_note": "Dodawanie kontaktów w celu bezpiecznej współpracy, tworzenie profilu, precyzyjna kontrola dostępu",
@ -894,7 +893,7 @@
"reminder_minutes": "<b>{0}</b> rozpocznie się za {1} minut(y)",
"reminder_inProgressAllDay": "Dzisiaj: <b>{0}</b>",
"reminder_inProgress": "<b>{0}</b> rozpoczął się w {1}",
"reminder_now": "<b>{0}</b> miało miejsce w dniu {1}",
"reminder_now": "<b>{0}</b> miało miejsce w dniu",
"reminder_missed": "<b>{0}</b> miało miejsce w dniu {1}",
"calendar_more": "{0} więcej",
"calendar_days": "Dni",

View File

@ -20,7 +20,7 @@
},
"common_connectionLost": "<b>Conexão com o Servidor Perdida</b><br>Você agora está em modo somente leitura até a conexão ser restaurada.",
"typeError": "Este documento não é compatível com a aplicação selecionada",
"onLogout": "Você foi desconectado, {0}clique aqui{1} para se conectar, <br>ou pressione <em>ESC</em> para acessar seu documento em modo somente leitura.",
"onLogout": "Você foi desconectado, {0}clique aqui{1} para se conectar, <br>ou pressione Esc para acessar seu documento em modo somente leitura.",
"loading": "Carregando...",
"error": "Erro",
"saved": "Salvo",
@ -54,7 +54,7 @@
"user_accountName": "Nome da Conta",
"clickToEdit": "Clique para Editar",
"forgetPrompt": "Clicando OK, você irá mover este documento para a lixeira. Você tem certeza?",
"movedToTrash": "Esse documento foi movido para a lixeira.<br>a>Acessar meu Drive</a>",
"movedToTrash": "Esse documento foi movido para a lixeira.<br><a>Acessar meu Drive</a>",
"shareButton": "Compartilhar",
"shareSuccess": "Endereço copiado para o clipboard",
"newButton": "Novo",
@ -62,7 +62,7 @@
"saveTemplateButton": "Salvar como modelo",
"saveTemplatePrompt": "Escolha o nome do modelo",
"templateSaved": "Modelo salvo!",
"selectTemplate": "Selecione um modelo ou pressione ESC",
"selectTemplate": "Selecione um modelo ou pressione Esc",
"previewButtonTitle": "Mostrar ou esconder o modo de visualização markdown",
"presentButtonTitle": "Entrar no modo apresentação",
"backgroundButtonTitle": "Mudar cor do fundo da apresentação",
@ -82,7 +82,7 @@
"notifyLeft": "{0} deixou essa sessão colaborativa",
"okButton": "OK (Enter)",
"cancel": "Cancelar",
"cancelButton": "Cancelar (ESC)",
"cancelButton": "Cancelar (Esc)",
"historyButton": "Exibir histórico do documento",
"history_next": "Próxima versão",
"history_prev": "Versão anterior",
@ -218,10 +218,10 @@
"expiredError": "Este documento atingiu seu tempo de validade e não está mais disponível.",
"deletedError": "Este documento foi apagado e não está mais disponível.",
"inactiveError": "Este documento foi apagado devido à inatividade. Pressione Esc para criar um novo documento.",
"chainpadError": "Ocorreu um erro crítico ao atualizar seu conteúdo. Esta página está em modo somente leitura para que você não perca seu trabalho.<br>Pressione <em>Esc</em> para continuar a visualizar este documento, ou recarregue para tentar editar novamente.",
"chainpadError": "Ocorreu um erro crítico ao atualizar seu conteúdo. Esta página está em modo somente leitura para que você não perca seu trabalho.<br>Pressione Esc para continuar a visualizar este documento, ou recarregue para tentar editar novamente.",
"invalidHashError": "O documento requerido por você, apresenta uma URL inválida.",
"errorCopy": " Você pode continuar usando esta versão em modo somente leitura pressionando <em>Esc</em>.",
"errorRedirectToHome": "Tecle <em>Esc</em> para ser redirecionado para seu CryptDrive.",
"errorCopy": " Você pode continuar usando esta versão em modo somente leitura pressionando Esc.",
"errorRedirectToHome": "Tecle Esc para ser redirecionado para seu CryptDrive.",
"newVersionError": "Uma nova versão do CryptPad está disponível. <br><a href='#'>Recarregue</a> para usar a nova versão, ou tecle Esc para acessar seu conteúdo em <b>modo offline</b>.",
"deletedFromServer": "Documento destruído",
"mustLogin": "Você precisa estar logado para acessar esta página",
@ -350,7 +350,7 @@
"settings_autostoreNo": "Manual (nunca perguntar)",
"settings_autostoreMaybe": "Manual (sempre perguntar)",
"settings_autostoreYes": "Automático",
"settings_autostoreHint": "<b>Automatico</b> Todos os documentos que você visitou estão armazenados em seu CryptDrive.<br><b>Manual (sempre pergunta)<b> Se você ainda não armazenou documentos, será questionado se deseja armazená-los em seu CryptDrive.<br><b>Manual (nunca pergunta)</b> Os documentos não são armazenados automaticamente em seu CryptDrive. A opção para armazená-los estará escondida.",
"settings_autostoreHint": "<b>Automatico</b> Todos os documentos que você visitou estão armazenados em seu CryptDrive.<br><b>Manual (sempre pergunta)</b> Se você ainda não armazenou documentos, será questionado se deseja armazená-los em seu CryptDrive.<br><b>Manual (nunca pergunta)</b> Os documentos não são armazenados automaticamente em seu CryptDrive. A opção para armazená-los estará escondida.",
"settings_autostoreTitle": "Bloco armazenado no CryptDrive",
"settings_resetThumbnailsDone": "Todas as miniaturas foram apagadas.",
"settings_resetThumbnailsDescription": "Limpar todas as miniaturas de documentos armazenadas em seu navegador.",
@ -443,7 +443,7 @@
"contacts_confirmRemove": "Tem certeza de que quer remover <em>{0}</em> dos seus contatos?",
"contacts_remove": "Remover este contato",
"contacts_send": "Enviar",
"contacts_request": "<em>{0}</em> quer te adicionar como contato. <b>Aceitar<b>?",
"contacts_request": "<em>{0}</em> quer te adicionar como contato. <b>Aceitar</b>?",
"contacts_rejected": "Convite de contato rejeitado",
"contacts_added": "Convite de contato aceito.",
"contacts_title": "Contatos",
@ -804,14 +804,14 @@
"admin_diskUsageButton": "Gerar relatório",
"admin_diskUsageHint": "Quantidade de espaço de armazenamento consumido por vários recursos do CryptPad",
"admin_diskUsageTitle": "Uso de disco",
"timeoutError": "Um erro interrompeu sua conexão com o servidor. <br> Pressione <em> Esc </em> para recarregar a página.",
"timeoutError": "Um erro interrompeu sua conexão com o servidor. <br> Pressione Esc para recarregar a página.",
"contact_email": "Email",
"contact_chat": "Bate-papo",
"contact_bug": "Reportar Bug",
"contact_devHint": "Para solicitações de recursos, melhorias de usabilidade ou para dizer obrigado.",
"contact_dev": "Contate os desenvolvedores",
"contact_adminHint": "Para quaisquer problemas relacionados à sua conta, limite de armazenamento ou disponibilidade do serviço.\n",
"contact_admin": "Contate os administradores",
"contact_admin": "Contate os administradore de: {0}",
"footer_donate": "Doe",
"admin_flushCacheDone": "Cache limpo com sucesso",
"admin_flushCacheButton": "Limpar cache",

View File

@ -20,7 +20,7 @@
},
"common_connectionLost": "<b>A conexão com o Servidor foi Perdida</b><br> Está agora em modo só de leitura até restaurar a conexão.",
"typeError": "Este documento não é compatível com a aplicação selecionada",
"onLogout": "A sua sessão foi encerrada, {0}clique aqui{1} para iniciar sessão <br>ou pressione <em>ESC</em> para aceder ao seu documento em modo só de leitura.",
"onLogout": "A sua sessão foi encerrada, {0}clique aqui{1} para iniciar sessão <br>ou pressione Esc para aceder ao seu documento em modo só de leitura.",
"loading": "Carregando...",
"error": "Erro",
"saved": "Guardar",
@ -54,7 +54,7 @@
"user_accountName": "Nome da Conta",
"clickToEdit": "Clique para editar",
"forgetPrompt": "Ao clicar OK, irá mover este documento para o lixo. Tem a certeza?",
"movedToTrash": "O documento foi movido para o lixo.<br>a>Aceder ao meu Drive</a>",
"movedToTrash": "O documento foi movido para o lixo.<br><a>Aceder ao meu Drive</a>",
"shareButton": "Partilhar",
"shareSuccess": "Endereço copiado para o clipboard",
"newButton": "Novo",
@ -62,7 +62,7 @@
"saveTemplateButton": "Guardar como modelo",
"saveTemplatePrompt": "Escolha o nome do modelo",
"templateSaved": "Modelo guardado!",
"selectTemplate": "Selecione um modelo ou pressione ESC",
"selectTemplate": "Selecione um modelo ou pressione Esc",
"previewButtonTitle": "Mostrar ou esconder o modo de visualização markdown",
"presentButtonTitle": "Entrar em modo apresentação",
"backgroundButtonTitle": "Mudar a cor do fundo da apresentação",
@ -82,7 +82,7 @@
"notifyLeft": "{0} saiu da sessão colaborativa",
"okButton": "OK (Enter)",
"cancel": "Cancelar",
"cancelButton": "Cancelar (ESC)",
"cancelButton": "Cancelar (Esc)",
"historyButton": "Exibir o histórico do documento",
"history_next": "Próxima versão",
"history_prev": "Versão anterior",
@ -218,10 +218,10 @@
"expiredError": "Este documento atingiu seu prazo de validade e não está mais disponível.",
"deletedError": "Este documento foi eliminado e não está mais disponível.",
"inactiveError": "Este documento foi apagado devido a inatividade. Pressione Esc para criar um novo documento.",
"chainpadError": "Ocorreu um erro crítico ao atualizar o seu conteúdo. Esta página está em modo só de leitura para garantir que não perde o seu trabalho.<br>Pressione <em>Esc</em> para continuar a visualizar este documento, ou recarregue-o para tentar editar novamente.",
"chainpadError": "Ocorreu um erro crítico ao atualizar o seu conteúdo. Esta página está em modo só de leitura para garantir que não perde o seu trabalho.<br>Pressione Esc para continuar a visualizar este documento, ou recarregue-o para tentar editar novamente.",
"invalidHashError": "O documento que pediu apresenta um URL inválido.",
"errorCopy": " Pode continuar a usar esta versão em modo só de leitura pressionando <em>Esc</em>.",
"errorRedirectToHome": "Pressione <em>Esc</em> para ser redirecionado para seu CryptDrive.",
"errorCopy": " Pode continuar a usar esta versão em modo só de leitura pressionando Esc.",
"errorRedirectToHome": "Pressione Esc para ser redirecionado para seu CryptDrive.",
"newVersionError": "Uma nova versão do CryptPad está disponível.<br><a href='#'>Recarregue</a> para usar a nova versão, ou pressione Esc para aceder ao seu conteúdo em <b>modo offline</b>.",
"deletedFromServer": "Documento destruído",
"mustLogin": "Precisa de ter sessão iniciada para aceder a esta página",
@ -350,7 +350,7 @@
"settings_autostoreNo": "Manual (nunca perguntar)",
"settings_autostoreMaybe": "Manual (sempre perguntar)",
"settings_autostoreYes": "Automático",
"settings_autostoreHint": "<b>Automatico</b> Todos os documentos que você visitou estão armazenados em seu CryptDrive.<br><b>Manual (sempre pergunta)<b> Se você ainda não armazenou documentos, será questionado se deseja armazená-los em seu CryptDrive.<br><b>Manual (nunca pergunta)</b> Os documentos não são armazenados automaticamente em seu CryptDrive. A opção para armazená-los estará escondida.",
"settings_autostoreHint": "<b>Automatico</b> Todos os documentos que você visitou estão armazenados em seu CryptDrive.<br><b>Manual (sempre pergunta)</b> Se você ainda não armazenou documentos, será questionado se deseja armazená-los em seu CryptDrive.<br><b>Manual (nunca pergunta)</b> Os documentos não são armazenados automaticamente em seu CryptDrive. A opção para armazená-los estará escondida.",
"settings_autostoreTitle": "Bloco armazenado no CryptDrive",
"settings_resetThumbnailsDone": "Todas as miniaturas foram apagadas.",
"settings_resetThumbnailsDescription": "Limpar todas as miniaturas de documentos armazenadas em seu navegador.",
@ -443,7 +443,7 @@
"contacts_confirmRemove": "Tem certeza de que quer remover <em>{0}</em> dos seus contactos?",
"contacts_remove": "Remover este contacto",
"contacts_send": "Enviar",
"contacts_request": "<em>{0}</em> quer adiciona-lo como contacto. <b>Aceitar<b>?",
"contacts_request": "<em>{0}</em> quer adiciona-lo como contacto. <b>Aceitar</b>?",
"contacts_rejected": "Convite de contacto rejeitado",
"contacts_added": "Convite de contacto aceite.",
"contacts_title": "Contactos",
@ -804,14 +804,14 @@
"admin_diskUsageButton": "Gerar relatório",
"admin_diskUsageHint": "Quantidade de espaço de armazenamento consumido por vários recursos do CryptPad",
"admin_diskUsageTitle": "Uso de disco",
"timeoutError": "Um erro interrompeu sua conexão com o servidor. <br> Pressione <em> Esc </em> para recarregar a página.",
"timeoutError": "Um erro interrompeu sua conexão com o servidor. <br> Pressione Esc para recarregar a página.",
"contact_email": "Email",
"contact_chat": "Bate-papo",
"contact_bug": "Reportar Bug",
"contact_devHint": "Para solicitações de recursos, melhorias de usabilidade ou para dizer obrigado.",
"contact_dev": "Contate os desenvolvedores",
"contact_adminHint": "Para quaisquer problemas relacionados à sua conta, limite de armazenamento ou disponibilidade do serviço.\n",
"contact_admin": "Contate os administradores",
"contact_admin": "Contate os administradores de {0}",
"footer_donate": "Doe",
"admin_flushCacheDone": "Cache limpo com sucesso",
"admin_flushCacheButton": "Limpar cache",

View File

@ -2,7 +2,7 @@
"main_title": "CryptPad: Zero Knowledge, Colaborare în timp real",
"common_connectionLost": "<b>S-a pierdut conexiunea la server</b><br>Până la restabilirea conexiunii, vei fi în modul citire",
"typeError": "Această filă nu este compatibilă cu aplicația aleasă",
"onLogout": "Nu mai ești autentificat, {0}apasă aici{1} să te autentifici<br>sau apasă <em>Escape</em>să accesezi fila în modul citire.",
"onLogout": "Nu mai ești autentificat, {0}apasă aici{1} să te autentifici<br>sau apasă Esc să accesezi fila în modul citire.",
"loading": "Se încarcă...",
"error": "Eroare",
"saved": "Salvat",
@ -20,7 +20,7 @@
"upgrade": "Actualizare",
"MB": "MB",
"pinLimitReached": "Ai atins limita de stocare",
"pinLimitReachedAlert": "Ai atins limita de stocare. Noile pad-uri nu vor mai fi stocate în CryptDrive.<br>Pentru a rezolva această problemă, poți să înlături pad-uri din CryptDrive-ul tău (incluzând gunoiul) sau să subscrii la un pachet premium pentru a-ți extinde spațiul de stocare.",
"pinLimitReachedAlert": "Ai atins limita de stocare. Noile pad-uri nu vor mai fi stocate în CryptDrive.<br>Pentru a rezolva această problemă, poți să înlături pad-uri din CryptDrive-ul tău (incluzând gunoiul) sau să <a>subscrii la un pachet premium</a> pentru a-ți extinde spațiul de stocare.",
"pinLimitNotPinned": "Ai atins limita de stocare.<br>Acest pad nu va fi stocat în CryptDrive-ul tău.",
"pinLimitDrive": "Ai atins limita de stocare.<br>Nu poți să creezi alte pad-uri.",
"importButtonTitle": "Importă un pad dintr-un fișier local",
@ -112,7 +112,7 @@
"fm_info_root": "Crează câte foldere tip cuib ai nevoie pentru a-ți sorta fișierele.",
"fm_info_template": "Conține toate pad-urile stocate ca șabloane și pe care le poți refolosi atunci când creezi un nou pad.",
"fm_info_trash": "Fișierele șterse din gunoi vor fi șterse și din \"Toate fișierele\", făcând imposibilă recuperarea fișierelor din managerul de fișiere.",
"fm_info_anonymous": "Nu ești logat cu un cont valid așa că aceste pad-uri vor fi șterse. <a href=\"/register/\">Înscrie-te</a> sau <a href=\"/login/\">Loghează-te</a> pentru a le salva.",
"fm_info_anonymous": "Nu ești logat cu un cont valid așa că aceste pad-uri vor fi șterse după {0} zile.<br><a href=\"/register/\">Înscrie-te</a> sau <a href=\"/login/\">Loghează-te</a> pentru a le salva. <a href=\"#docs\">Citiți mai multe despre conturile înregistrate</a>.",
"fc_newfolder": "Folder nou",
"fc_rename": "Redenumește",
"fc_open": "Deschide",
@ -202,10 +202,10 @@
"expiredError": "Această filă a expirat și nu mai este disponibilă.",
"deletedError": "Această filă a fost ștearsă de către proprietarul ei și nu mai este disponibilă.",
"inactiveError": "Această filă a fost ștersă din motive de inactivitate. Apasă Esc pentru a crea una nouă.",
"chainpadError": "O eroare critică a apărut in timpul updatării conținutului. Pagina rămâne în modul citire pentru a ne asigura ca nu vei pierde conținutul.<br>Apasă <em>Esc</em> pentru a continua vizualizarea acestei file sau reîncarcă pagina pentru a încerca să o editezi din nou.",
"chainpadError": "O eroare critică a apărut in timpul updatării conținutului. Pagina rămâne în modul citire pentru a ne asigura ca nu vei pierde conținutul.<br>Apasă Esc pentru a continua vizualizarea acestei file sau reîncarcă pagina pentru a încerca să o editezi din nou.",
"invalidHashError": "Documentul solicitat are un URL invalid.",
"errorCopy": " Încă mai poți copia conținutul într-o altă locație prin apăsarea butonului <em>Esc</em>.<br>După ce vei părăsi această pagină ea va dispărea!",
"errorRedirectToHome": "Apasă <em>1Esc</em>2 pentru a fi redirecționat spre CryptDrive-ul tău.",
"errorCopy": " Încă mai poți copia conținutul într-o altă locație prin apăsarea butonului Esc.",
"errorRedirectToHome": "Apasă Esc pentru a fi redirecționat spre CryptDrive-ul tău.",
"newVersionError": "O nouă versiune CryptPad este disponibilă.<br><a href='#'>Reîncarcă pagina</a> pentru a folosi noua versiune, sau apasă escape pentru a-ți accesa conținutul în <b>modul offline</b>.",
"deletedFromServer": "Pad șters de pe server",
"mustLogin": "Trebuie să fii logat pentru a accesa această pagină.",
@ -318,7 +318,7 @@
"contacts_title": "Contacte",
"contacts_added": "Invitația din partea contactului acceptată",
"contacts_rejected": "Invitația din partea contactului refuzată",
"contacts_request": "<em>{0}</em> ar dori să vă adauge la lista de contacte. <b>Acceptati<b>?",
"contacts_request": "<em>{0}</em> ar dori să vă adauge la lista de contacte. <b>Acceptati</b>?",
"contacts_send": "Trimite",
"contacts_remove": "Șterge acest contact",
"contacts_confirmRemove": "Ești sigur ca vrei să-l ștergi pe <em>1{0}</em>2 din lista de contacte?",
@ -480,9 +480,8 @@
"upload_cancelled": "Anulat",
"upload_pending": "În așteptare",
"upload_choose": "Alegeți un fișier",
"upload_tooLargeBrief": "Fișier prea mare",
"upload_tooLarge": "Acest fișier depășește dimensiunea maximă de încărcare permisă pentru contul dumneavoastră.",
"upload_notEnoughSpaceBrief": "Spațiu insuficient",
"ui_restore": "Restaurează",
"admin_documentType": "Tip"
}
}

View File

@ -20,16 +20,16 @@
},
"common_connectionLost": "<b>Нет соединения с сервером</b><br>Пока оно не восстановится, вы можете только читать.",
"typeError": "Этот документ несовместим с выбранным приложением",
"onLogout": "Вы вышли из учётной записи, {0}нажмите сюда{1} чтобы войти<br>или нажмите клавишу <em>Escape</em> что бы просто читать ваш документ.",
"onLogout": "Вы вышли из учётной записи, {0}нажмите сюда{1} чтобы войти<br>или нажмите клавишу Esc что бы просто читать ваш документ.",
"padNotPinned": "Этот документ исчезнет через 3 месяца неактивности, {0}войдите{1} или {2}зарегистируйтесь{3} чтобы сохранить его.",
"anonymousStoreDisabled": "Администратор этого сервера CryptPad отключил хранилище для анонимных пользователей. Войдите, чтобы использовать личный CryptDrive.",
"expiredError": "Этот документ устарел и более недоступен.",
"deletedError": "Этот документ был удалён и более недоступен.",
"inactiveError": "Этот документ был удалён из-за длительной неактивности. Нажмите Esc чтобы создать новый.",
"chainpadError": "Во время обновления вашей информации произошла критическая ошибка. Документ пока доступен только для чтения, чтобы вы не потеряли свою информацию.<br>Нажмите <em>Esc</em> чтобы продолжить чтение или перезагрузите страницу и начните заново.",
"chainpadError": "Во время обновления вашей информации произошла критическая ошибка. Документ пока доступен только для чтения, чтобы вы не потеряли свою информацию.<br>Нажмите Esc чтобы продолжить чтение или перезагрузите страницу и начните заново.",
"invalidHashError": "Запрошенный вами документ имеет неправильный адрес URL.",
"errorCopy": " Вы все еще можете читать текущую версию, нажав <em>Esc</em>.",
"errorRedirectToHome": "Нажмите <em>Esc</em> чтобы перейти к вашему хранилищу.",
"errorCopy": " Вы все еще можете читать текущую версию, нажав Esc.",
"errorRedirectToHome": "Нажмите Esc чтобы перейти к вашему хранилищу.",
"newVersionError": "Доступна новая версия CryptPad.<br><a href='#'>Перезагрузите</a> чтобы использовать новую версию или нажмите Esc, чтобы использовать вашу информацию в <b>оффлайн-режиме</b>.",
"loading": "Загрузка...",
"error": "Ошибка",
@ -293,7 +293,7 @@
"printCSS": "Пользовательские настройки вида (CSS):",
"viewEmbedTag": "Чтобы встроить данный документ, вставьте этот iframe в нужную страницу. Вы можете настроить внешний вид используя CSS и HTML атрибуты.",
"fm_ownedPadsName": "Собственный",
"fm_info_anonymous": "Вы не вошли в учетную запись, поэтому срок действия ваших документов истечет через {0} дней. Они хранятся в вашем браузере, поэтому очистка истории может привести к их исчезновению.<br><a href=\"/register/\">Зарегистрируйтесь</a> или <a href=\"/login/\">Войдитеn</a> чтобы сохранить их.",
"fm_info_anonymous": "Вы не вошли в учетную запись, поэтому срок действия ваших документов истечет через {0} дней. Они хранятся в вашем браузере, поэтому очистка истории может привести к их исчезновению.<br><a href=\"/register/\">Зарегистрируйтесь</a> или <a href=\"/login/\">Войдитеn</a> чтобы сохранить их. <a href=\"#docs\">Подробнее о зарегистрированных аккаунтах</a>.",
"fm_burnThisDriveButton": "Удалить всю информацию, хранящуюся от CryptPad в браузере",
"fm_tags_used": "Количество использований",
"fm_restoreDrive": "Восстановление прежнего состояния диска. Для достижения наилучших результатов не вносите изменения в диск, пока этот процесс не будет завершен.",
@ -357,7 +357,7 @@
"settings_exportCancel": "Вы уверены, что хотите отменить экспорт? В следующий раз вам придется начинать все сначала.",
"settings_export_reading": "Читаем ваше хранилище...",
"settings_export_download": "Скачиваем и расшифровываем ваши документы...",
"contacts_request": "<em>{0}</em> хотел бы добавить вас в список контактов. <b>Принять <b>?",
"contacts_request": "<em>{0}</em> хотел бы добавить вас в список контактов. <b>Принять </b>?",
"contacts_confirmRemove": "Вы уверены, что хотите удалить <em>1{0}</em>2 из ваших контактов?",
"register_acceptTerms": "Я принимаю <a>условия использования</a>",
"register_warning": "Внимание",
@ -916,12 +916,12 @@
"admin_diskUsageButton": "Создать отчет",
"admin_diskUsageHint": "Объем дискового пространства, используемого различными ресурсами CryptPad",
"admin_diskUsageTitle": "Использование диска",
"timeoutError": "Произошла ошибка, разорвавшая ваше соединение с сервером. <br>Нажмите <em>Esc</em>, чтобы перезагрузить страницу.",
"timeoutError": "Произошла ошибка, разорвавшая ваше соединение с сервером. <br>Нажмите Esc, чтобы перезагрузить страницу.",
"contact_bug": "Сообщить об ошибке",
"contact_devHint": "Для запросов новых функций, улучшений удобства использования или для того, чтобы поблагодарить.",
"contact_dev": "Связаться с разработчиками",
"contact_adminHint": "По любым вопросам, связанным с Вашей учетной записью, лимитом хранилища или доступностью службы.\n",
"contact_admin": "Связаться с администраторами",
"contact_admin": "Связаться с администраторами {0}",
"admin_flushCacheDone": "Кеш успешно очищен",
"admin_flushCacheButton": "Очистить кеш",
"admin_flushCacheHint": "Заставьте пользователей скачать последние клиентские ресурсы (только если ваш сервер находится в обновлённом режиме)",

View File

@ -14,7 +14,7 @@
"login_password": "Heslo",
"login_username": "Uživatelské jméno",
"padNotPinned": "Tento dokument expiruje za 3 měsíce neaktivity, {0}přihlašte se{1} nebo {2}se registrujte{3} pro jeho uchování.",
"onLogout": "Jste odhlášení, {0}klikněte zde{1} pro přihlášení<br>nebo zmáčkněte <em>Escape</em> pro čtení dokumentu.",
"onLogout": "Jste odhlášení, {0}klikněte zde{1} pro přihlášení<br>nebo zmáčkněte Esc pro čtení dokumentu.",
"typeError": "Tento dokument není kompatibilní s vybranou aplikací",
"common_connectionLost": "<b>Spojení se serverem ztraceno</b><br>Nyní jste v režimu čtení, dokud nebude spojení obnoveno.",
"type": {

View File

@ -130,16 +130,16 @@
"error": "Fel",
"loading": "Laddar...",
"newVersionError": "En ny version av CryptPad är tillgänglig.<br><a href='#'>Ladda om</a> för att använda den nya versionen, eller tryck Esc för att nå ditt innehåll i <b>offline-läge</b>.",
"errorRedirectToHome": "Tryck <em>Esc</em> för att bli omdirigerad till din CryptDrive.",
"errorCopy": " Du kan fortfarande nå innehållet genom att trycka <em>Esc</em>.<br>När du stänger detta fönster kommer du inte längre ha tillgång till det.",
"errorRedirectToHome": "Tryck Esc för att bli omdirigerad till din CryptDrive.",
"errorCopy": " Du kan fortfarande nå innehållet genom att trycka Esc.",
"invalidHashError": "Dokumentet du har begärt har en felaktig URL.",
"chainpadError": "Ett kritiskt fel har uppstått när ditt innehåll uppdaterades. Denna sida är i skrivskyddat läge för att säkerställa att du inte förlorar ditt arbete.<br>Tryck <em>Esc</em> för att fortsätta visa detta dokument, eller ladda om och försök redigera igen.",
"chainpadError": "Ett kritiskt fel har uppstått när ditt innehåll uppdaterades. Denna sida är i skrivskyddat läge för att säkerställa att du inte förlorar ditt arbete.<br>Tryck Esc för att fortsätta visa detta dokument, eller ladda om och försök redigera igen.",
"inactiveError": "Detta dokument har tagits bort på grund av inaktivitet. Vänligen tryck Esc för att skapa ett nytt dokument.",
"deletedError": "Detta dokument har tagits bort av sin ägare och är inte längre tillgängligt.",
"expiredError": "Detta dokument har nått sitt utgångsdatum och är inte längre tillgängligt.",
"padNotPinnedVariable": "Detta dokument kommer gå ut efter {4} dagar av inaktivitet, {0}logga in{1} eller {2}registrera{3} för att bevara det.",
"padNotPinned": "Detta dokument kommer automatiskt gå ut efter 3 månader av inaktivitet, {0}logga in{1} eller {2}registrera{3} för att bevara det.",
"onLogout": "Du är utloggad, {0}klicka här{1} för att logga in<br>eller tryck <em>Escape</em> för att öppna ditt dokument i skrivskyddat läge.",
"onLogout": "Du är utloggad, {0}klicka här{1} för att logga in<br>eller tryck Esc för att öppna ditt dokument i skrivskyddat läge.",
"typeError": "Detta dokument är inte kompatibelt med det valda programmet",
"kanban_working": "Pågående",
"kanban_done": "Färdigt",

View File

@ -101,10 +101,10 @@
"contacts_padTitle": "Бесіда",
"contacts_warning": "Все, що ви пишете, зберігається й стає доступним усім тим, хто переглядає чи згодом переглядатиме документ. Будьте обачні з чутливими даними!",
"contacts_typeHere": "Напишіть повідомлення…",
"contacts_confirmRemove": "Точно вилучити <em>{0]</em> із контактів?",
"contacts_confirmRemove": "Точно вилучити <em>{0}</em> із контактів?",
"contacts_remove": "Вилучити контакт",
"contacts_send": "Надіслати",
"contacts_request": "<em>{0}</em> пропонує вам контакт. <b>Прийняти<b>?",
"contacts_request": "<em>{0}</em> пропонує вам контакт. <b>Прийняти</b>?",
"contacts_rejected": "Запрошення на контакт відхилено",
"contacts_added": "Запрошення на контакт прийнято.",
"contacts_title": "Контакти",
@ -230,7 +230,7 @@
"useTemplateCancel": "Почати наново (Esc)",
"useTemplateOK": "Обрати шаблон (Enter)",
"useTemplate": "Почати з шаблону?",
"selectTemplate": "Оберіть шаблон чи натисніть Escape",
"selectTemplate": "Оберіть шаблон чи натисніть Esc",
"templateSaved": "Шаблон збережено!",
"saveTemplatePrompt": "Оберіть заголовок шаблону",
"saveTemplateButton": "Зберегти як шаблон",
@ -383,17 +383,17 @@
"error": "Помилка",
"loading": "Завантаження...",
"newVersionError": "Доступна нова версія CryptPad.<br><a href='#'>Перезавантажте</a>, щоб скористатись новою версією, або натисніть Esc, щоб переглянути свої файли <b>автономно</b>.",
"errorRedirectToHome": "Натисніть <em>Esc</em>, щоб перейти до свого CryptDrive-каталогу.",
"errorCopy": " Щоб повернутись до поточної версії в режимі читання, натисніть <em>Esc</em>.",
"errorRedirectToHome": "Натисніть Esc, щоб перейти до свого CryptDrive-каталогу.",
"errorCopy": " Щоб повернутись до поточної версії в режимі читання, натисніть Esc.",
"invalidHashError": "Ви спробували переглянути документ за хибною URL-адресою.",
"chainpadError": "При оновленні вашого файлу виникла критична помилка. Сторінку переведено до режиму читання, щоб ви не втратили своєї роботи.<br>Натисніть <em>Esc</em>, щоб переглянути документ, або перезавантажте, щоб продовжити редагування.",
"chainpadError": "При оновленні вашого файлу виникла критична помилка. Сторінку переведено до режиму читання, щоб ви не втратили своєї роботи.<br>Натисніть Esc, щоб переглянути документ, або перезавантажте, щоб продовжити редагування.",
"inactiveError": "Документ видалено через бездіяльність. Натисніть Esc, щоб створити новий.",
"expiredError": "Документ стерто через бездіяльність.",
"deletedError": "Документ видалено.",
"anonymousStoreDisabled": "Адміністрація цього сервера CryptPad вимкнула гостьовий доступ до файлів. Увійдіть, щоб доступитися свого CryptDrive-каталогу.",
"padNotPinnedVariable": "Документ буде стерто через {4} дні бездіяльності. {0}Ввійдіть{1] або {2}зареєструйтесь{3}, щоб зберігати його довше.",
"padNotPinnedVariable": "Документ буде стерто через {4} дні бездіяльності. {0}Ввійдіть{1} або {2}зареєструйтесь{3}, щоб зберігати його довше.",
"padNotPinned": "Документ буде стерто через 3 місяці бездіяльності. {0}Ввійдіть{1} або {2}зареєструйтесь{3}, щоб зберігати його довше.",
"onLogout": "{0}Ввійдіть до облікового запису{1} —<br>або натисніть <em>Escape</em> для доступу в режимі читання.",
"onLogout": "{0}Ввійдіть до облікового запису{1} —<br>або натисніть Esc для доступу в режимі читання.",
"typeError": "Документ несумісний з обраним застосунком",
"common_connectionLost": "<b>Втрачено з'єднання з сервером</b><br>До відновлення з'єднання ви зможете лише читати.",
"type": {
@ -633,7 +633,7 @@
"form_poll_switch": "Обернути осі",
"form_poll_text": "Текст",
"form_type_poll": "Опитування",
"form_sort_hint": "Впорядкуйте від найбільш (1) до найменш (2) пріоритетного.",
"form_sort_hint": "Впорядкуйте від найбільш (1) до найменш ({0}) пріоритетного.",
"form_add_item": "Додати пункт",
"form_defaultItem": "Пункт {0}",
"form_type_multicheck": "Таблиця пташок",
@ -814,14 +814,14 @@
"admin_diskUsageButton": "Згенерувати звіт",
"admin_diskUsageHint": "Кількість простору, спожитого різними ресурсами CryptPad",
"admin_diskUsageTitle": "Використання диска",
"timeoutError": "Втрачено з'єднання з сервером. <br>Натисніть <em>Esc</em>, щоб перезавантажити сторінку.",
"timeoutError": "Втрачено з'єднання з сервером. <br>Натисніть Esc, щоб перезавантажити сторінку.",
"contact_email": "Е-пошта",
"contact_chat": "Бесіда",
"contact_bug": "Звіт про ваду",
"contact_devHint": "Щодо бажаних функцій, удосконалення інтерфейсу чи просто подяки.",
"contact_dev": "Сконтактуйте з командою розробки",
"contact_adminHint": "Щодо будь-яких проблем з обліковим записом, просторовим обмеженням чи доступністю служби.\n",
"contact_admin": "Зв'язатися з адміністрацією",
"contact_admin": "Зв'язатися з адміністрацією: {0}",
"footer_donate": "Пожертвувати",
"admin_flushCacheDone": "Кеш успішно стерто",
"admin_flushCacheButton": "Стерти кеш",

View File

@ -20,7 +20,7 @@
},
"common_connectionLost": "<b>伺服器連線中斷</b><br>現在是唯讀狀態,直到連線恢復正常。",
"typeError": "此文档与所选应用进程不兼容",
"onLogout": "您已退出登录,{0}点击此处{1}登录<br>或按 <em>Escape</em> 以只读模式访问您的文档。",
"onLogout": "您已退出登录,{0}点击此处{1}登录<br>或按 Esc 以只读模式访问您的文档。",
"loading": "載入中...",
"error": "錯誤",
"saved": "儲存",
@ -276,7 +276,7 @@
"contacts_confirmRemove": "确定要从联系人中删除 <em>{0}</em> 吗?",
"contacts_remove": "删除此联系人",
"contacts_send": "发送",
"contacts_request": "<em>{0}</em> 想将您添加为联系人。 <b>接受<b>",
"contacts_request": "<em>{0}</em> 想将您添加为联系人。 <b>接受</b>",
"contacts_rejected": "联系人邀请被拒绝",
"contacts_added": "联系人已接受邀请。",
"contacts_title": "联系人",
@ -368,10 +368,10 @@
"mustLogin": "您必须登录才能访问此页面",
"deletedFromServer": "文档已销毁",
"newVersionError": "有新版本的 CryptPad 可用。<br><a href='#'>重新加载</a>以使用新版本,或按 Esc 键以<b>离线模式</b>访问您的内容。",
"errorRedirectToHome": "按 <em>Esc</em> 重定向到您的 CryptDrive。",
"errorCopy": " 您仍然可以按只读模式使用当前版本 <em>Esc</em> 。",
"errorRedirectToHome": "按 Esc 重定向到您的 CryptDrive。",
"errorCopy": " 您仍然可以按只读模式使用当前版本 Esc 。",
"invalidHashError": "您请求的文档的 URL 无效。",
"chainpadError": "更新内容时出现严重错误。 此页面处于只读模式,以确保您不会丢失您的工作。<br>点击 <em>Esc</em> 以继续查看此文档,或重新加载后再次尝试编辑。",
"chainpadError": "更新内容时出现严重错误。 此页面处于只读模式,以确保您不会丢失您的工作。<br>点击 Esc 以继续查看此文档,或重新加载后再次尝试编辑。",
"inactiveError": "由于缺少活动,此文档已被删除。 按 Esc 创建一个新文档。",
"deletedError": "该文档已被删除,不再可用。",
"expiredError": "此文档已过期,不再可用。",
@ -646,7 +646,7 @@
"admin_diskUsageButton": "生成报告",
"admin_diskUsageHint": "各种 CryptPad 资源占用的存储空间量",
"admin_diskUsageTitle": "磁盘使用情况",
"timeoutError": "一个错误中断了您与服务器的连接。 <br>点击 <em>Esc</em> 重新加载页面。",
"timeoutError": "一个错误中断了您与服务器的连接。 <br>点击 Esc 重新加载页面。",
"contact_email": "电子邮件",
"contact_chat": "聊天",
"contact_bug": "Bug报告",

View File

@ -8,7 +8,7 @@ This file is intended to be used as a log of what third-party source we have ven
* [jscolor v2.0.5](https://jscolor.com/) for providing a consistent color picker across all browsers
* [jquery.ui 1.12.1](https://jqueryui.com/) for its 'autocomplete' extension which is used for our tag picker
* [pdfjs](https://mozilla.github.io/pdf.js/) with some minor modifications to prevent CSP errors
* [mermaid 9.1.6](https://github.com/mermaid-js/mermaid/releases/tag/8.13.4) extends our markdown integration to support a variety of diagram types
* [mermaid 9.1.7](https://github.com/mermaid-js/mermaid/releases/tag/8.13.4) extends our markdown integration to support a variety of diagram types
* [Fabricjs 4.6.0](https://github.com/fabricjs/fabric.js) and [Fabric-history](https://github.com/lyzerk/fabric-history) for the whiteboard app
* [Requirejs optional module plugin](https://stackoverflow.com/a/27422370)
* [asciidoc.js 2.0.0](https://github.com/asciidoctor/codemirror-asciidoc/releases/tag/2.0.0) with slight changes to match the format of other codemirror modes

File diff suppressed because one or more lines are too long

View File

@ -39,7 +39,18 @@ define(['/api/config'], function (ApiConfig) {
}
// CryptPad
src = '/pad/ckeditor-inner.html?' + ApiConfig.requireConf.urlArgs;
/*
As of version 16, Safari (Desktop) and all browsers on iOS cannot load rich text.
Their release notes claim they "Fixed incorrect CORP/COEP check in 304 responses",
and it seems whatever they did interacts poorly with our recent (CryptPad@5.1.0)
changes to caching rules in our example NGINX config. Hardcoding a cache-busting string
which does not include "ver=" lets us treat 'ckeditor-inner.html' as a special case,
so that we don't have to revert our minor caching improvements solely for one terrible
browser engine.
*/
// src = '/pad/ckeditor-inner.html?' + ApiConfig.requireConf.urlArgs;
src = ApiConfig.httpSafeOrigin + '/pad/ckeditor-inner.html?0.0.0';
iframe = CKEDITOR.dom.element.createFromHtml( '<iframe src="' + src + '" frameBorder="0"></iframe>' );
iframe.setStyles( { width: '100%', height: '100%' } );

View File

@ -1704,7 +1704,7 @@ define([
drive: 'fa fa-hdd-o',
cursor: 'fa fa-i-cursor',
code: 'fa fa-file-code-o',
pad: 'fa fa-file-word-o',
pad: 'cptools cptools-richtext',
security: 'fa fa-lock',
subscription: 'fa fa-star-o',
kanban: 'cptools cptools-kanban',

View File

@ -198,7 +198,7 @@ define([
create['form'] = function () {
var key = 'form';
var $div = makeBlock(key, true); // Msg.support_formHint, .support_formTitle, .support_formButton
Pages.documentationLink($div.find('a')[0], 'https://docs.cryptpad.fr/en/user_guide/index.html');
Pages.documentationLink($div.find('a')[0], 'https://docs.cryptpad.org/en/user_guide/index.html');
var form = APP.support.makeForm();

View File

@ -180,7 +180,7 @@ Messages.support_formCategoryError = "Please select a ticket category from the d
return $select;
};
var documentIdDocs = Pages.localizeDocsLink('https://docs.cryptpad.fr/en/user_guide/apps/general.html#properties');
var documentIdDocs = Pages.localizeDocsLink('https://docs.cryptpad.org/en/user_guide/apps/general.html#properties');
var warningLinks = {
account: documentIdDocs,