Merge branch 'soon' into drive-history-fixes

pull/1/head^2
ansuz 3 years ago
commit d9d3859a30

@ -45,21 +45,13 @@ module.exports = {
* In such a case this should be also handled by NGINX, as documented in * In such a case this should be also handled by NGINX, as documented in
* cryptpad/docs/example.nginx.conf (see the $main_domain variable) * cryptpad/docs/example.nginx.conf (see the $main_domain variable)
* *
* Note: you may provide multiple origins for the purpose of accessing
* a development instance via different URLs, like so:
* httpUnsafeOrigin: 'http://127.0.0.1:3000/ http://localhost:3000/',
*
* Such configuration is not recommended for production instances,
* as the development team does not actively test such configuration
* and it may have unintended consequences in practice.
*
*/ */
httpUnsafeOrigin: 'http://localhost:3000', httpUnsafeOrigin: 'http://localhost:3000',
/* httpSafeOrigin is the URL that is used for the 'sandbox' described above. /* httpSafeOrigin is the URL that is used for the 'sandbox' described above.
* If you're testing or developing with CryptPad on your local machine then * If you're testing or developing with CryptPad on your local machine then
* it is appropriate to leave this blank. The default behaviour is to serve * it is appropriate to leave this blank. The default behaviour is to serve
* the main domain over port 3000 and to serve the content over port 3001. * the main domain over port 3000 and to serve the sandbox content over port 3001.
* *
* This is not appropriate in a production environment where invasive networks * This is not appropriate in a production environment where invasive networks
* may filter traffic going over abnormal ports. * may filter traffic going over abnormal ports.
@ -70,6 +62,9 @@ module.exports = {
* This value corresponds to the $sandbox_domain variable * This value corresponds to the $sandbox_domain variable
* in the example nginx file. * in the example nginx file.
* *
* Note that in order for the sandboxing system to be effective
* httpSafeOrigin must be different from httpUnsafeOrigin.
*
* CUSTOMIZE AND UNCOMMENT THIS FOR PRODUCTION INSTALLATIONS. * CUSTOMIZE AND UNCOMMENT THIS FOR PRODUCTION INSTALLATIONS.
*/ */
// httpSafeOrigin: "https://some-other-domain.xyz", // httpSafeOrigin: "https://some-other-domain.xyz",

@ -13,14 +13,15 @@ var map = {
'it': 'Italiano', 'it': 'Italiano',
'ja': '日本語', 'ja': '日本語',
'nb': 'Norwegian Bokmål', 'nb': 'Norwegian Bokmål',
//'nl': 'Nederlands'
//'pl': 'Polski', //'pl': 'Polski',
'pt-br': 'Português do Brasil', 'pt-br': 'Português do Brasil',
'ro': 'Română', 'ro': 'Română',
'ru': 'Русский', 'ru': 'Русский',
//'sv': 'Svenska', //'sv': 'Svenska',
//'te': 'తెలుగు', //'te': 'తెలుగు',
//'uk': 'украї́нська мо́ва',
'zh': '繁體中文', 'zh': '繁體中文',
//'nl': 'Nederlands'
}; };
var messages = {}; var messages = {};

@ -7,6 +7,7 @@ define([
], function (Config, h, Msg, Pages, LocalStore) { ], function (Config, h, Msg, Pages, LocalStore) {
return function () { return function () {
document.title = Msg.contact;
var developerEmail = "contact@cryptpad.fr"; var developerEmail = "contact@cryptpad.fr";
var adminEmail = Config.adminEmail && [ var adminEmail = Config.adminEmail && [
'i.did.not.read.my.config@cryptpad.fr', 'i.did.not.read.my.config@cryptpad.fr',

@ -12,6 +12,7 @@ define([
var accounts = Pages.accounts; var accounts = Pages.accounts;
return function () { return function () {
document.title = Msg.features;
Msg.features_f_apps_note = AppConfig.availablePadTypes.map(function (app) { Msg.features_f_apps_note = AppConfig.availablePadTypes.map(function (app) {
if (AppConfig.registeredOnlyTypes.indexOf(app) !== -1) { return; } if (AppConfig.registeredOnlyTypes.indexOf(app) !== -1) { return; }
if (AppConfig.premiumTypes && AppConfig.premiumTypes.includes(app)) { return; } if (AppConfig.premiumTypes && AppConfig.premiumTypes.includes(app)) { return; }

@ -6,6 +6,7 @@ define([
'/api/config', '/api/config',
], function (h, UI, Msg, Pages, Config) { ], function (h, UI, Msg, Pages, Config) {
return function () { return function () {
document.title = Msg.login_login;
return [h('div#cp-main', [ return [h('div#cp-main', [
Pages.infopageTopbar(), Pages.infopageTopbar(),
h('div.container.cp-container', [ h('div.container.cp-container', [

@ -7,6 +7,7 @@ define([
'/customize/pages.js' '/customize/pages.js'
], function (Config, $, h, UI, Msg, Pages) { ], function (Config, $, h, UI, Msg, Pages) {
return function () { return function () {
document.title = Msg.register_header;
var urlArgs = Config.requireConf.urlArgs; var urlArgs = Config.requireConf.urlArgs;
var tos = $(UI.createCheckbox('accept-terms')).find('.cp-checkmark-label').append(Msg.register_acceptTerms).parent()[0]; var tos = $(UI.createCheckbox('accept-terms')).find('.cp-checkmark-label').append(Msg.register_acceptTerms).parent()[0];

@ -4,6 +4,7 @@ define([
'/customize/pages.js' '/customize/pages.js'
], function (h, Msg, Pages) { ], function (h, Msg, Pages) {
return function () { return function () {
document.title = Msg.footer_tos;
return h('div#cp-main', [ return h('div#cp-main', [
Pages.infopageTopbar(), Pages.infopageTopbar(),
h('div.container.cp-container', [ h('div.container.cp-container', [

1627
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -59,6 +59,15 @@ define(['/api/config'], function (ApiConfig) {
// Local URLs don't require any warning and can navigate directly without user input. // Local URLs don't require any warning and can navigate directly without user input.
if (target.host === host.host) { return void go(); } if (target.host === host.host) { return void go(); }
// It's annoying to be prompted that you are leaving the platform to visit its docs
// but marking the docs domain as trusted undermines third-party admins' autonomy.
// 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)) {
return void go();
}
// Everything else requires user input, so we load the platform's translations. // Everything else requires user input, so we load the platform's translations.
// FIXME: this seems to infer language preferences from the browser instead of the user's account preferences // FIXME: this seems to infer language preferences from the browser instead of the user's account preferences
require([ require([

@ -201,7 +201,7 @@ define([
renderer.code = function (code, language) { renderer.code = function (code, language) {
if (!code || typeof(code) !== 'string' || !code.trim()) { return defaultCode.apply(renderer, arguments); } if (!code || typeof(code) !== 'string' || !code.trim()) { return defaultCode.apply(renderer, arguments); }
if (language === 'mermaid' && code.match(/^(flowchart|graph|pie|gantt|sequenceDiagram|classDiagram|gitGraph|stateDiagram|erDiagram|journey|requirementDiagram)/)) { if (language === 'mermaid' && code.match(/^(flowchart|graph|pie|gantt|sequenceDiagram|classDiagram|gitGraph|stateDiagram|erDiagram|journey|requirementDiagram|GitGraph)/)) {
return '<pre class="mermaid" data-plugin="mermaid">'+Util.fixHTML(code)+'</pre>'; return '<pre class="mermaid" data-plugin="mermaid">'+Util.fixHTML(code)+'</pre>';
} else if (language === 'markmap') { } else if (language === 'markmap') {
return '<pre class="markmap" data-plugin="markmap">'+Util.fixHTML(code)+'</pre>'; return '<pre class="markmap" data-plugin="markmap">'+Util.fixHTML(code)+'</pre>';

@ -1462,5 +1462,6 @@
"support_debuggingDataTitle": "Informations pour le diagnostic du compte", "support_debuggingDataTitle": "Informations pour le diagnostic du compte",
"support_cat_debugging": "Diagnostic", "support_cat_debugging": "Diagnostic",
"ui_openDirectly": "Cette fonctionnalité n'est pas disponible lorsque CryptPad est intégré dans un autre site. Ouvrir ce document dans un nouvel onglet ?", "ui_openDirectly": "Cette fonctionnalité n'est pas disponible lorsque CryptPad est intégré dans un autre site. Ouvrir ce document dans un nouvel onglet ?",
"error_evalPermitted": "Abandon car eval ne devrait pas être autorisé.\n\nCette erreur est liée aux headers Content-Security-Policy, elle peut être due à : un navigateur obsolète qui ne les prend pas en charge, des extensions de navigateur qui interfèrent avec leur fonctionnement, ou une configuration incorrecte de cette instance CryptPad." "error_evalPermitted": "Abandon car eval ne devrait pas être autorisé.\n\nCette erreur est liée aux headers Content-Security-Policy, elle peut être due à : un navigateur obsolète qui ne les prend pas en charge, des extensions de navigateur qui interfèrent avec leur fonctionnement, ou une configuration incorrecte de cette instance CryptPad.",
"ui_experimental": "Cette fonctionnalité est considérée comme expérimentale."
} }

@ -1462,5 +1462,6 @@
"error_embeddingDisabled": "Embedding is disabled for this CryptPad instance", "error_embeddingDisabled": "Embedding is disabled for this CryptPad instance",
"error_embeddingDisabledSpecific": "Embedding is disabled for this CryptPad application.", "error_embeddingDisabledSpecific": "Embedding is disabled for this CryptPad application.",
"error_incorrectAccess": "This page can only be accessed via {0}.", "error_incorrectAccess": "This page can only be accessed via {0}.",
"error_evalPermitted": "Aborting because eval should not be permitted.\n\nThis error is linked to Content-Security-Policy headers, it could be due to: an outdated browser that does not support them, browser extensions that interfere with their correct behaviour, or an incorrect configuration of this CryptPad instance." "error_evalPermitted": "Aborting because eval should not be permitted.\n\nThis error is linked to Content-Security-Policy headers, it could be due to: an outdated browser that does not support them, browser extensions that interfere with their correct behaviour, or an incorrect configuration of this CryptPad instance.",
"ui_experimental": "This feature is considered experimental."
} }

@ -45,7 +45,7 @@
"pinLimitReached": "Você alcançou o limite de armazenamento", "pinLimitReached": "Você alcançou o limite de armazenamento",
"pinLimitReachedAlert": "Você atingiu seu limite de armazenamento. Novos documentos não serão armazenados em seu CryptDrive.<br> Você pode remover documentos de seu CryptDrive ou <a>se inscrever como premium</a> para aumentar seu limite.", "pinLimitReachedAlert": "Você atingiu seu limite de armazenamento. Novos documentos não serão armazenados em seu CryptDrive.<br> Você pode remover documentos de seu CryptDrive ou <a>se inscrever como premium</a> para aumentar seu limite.",
"pinLimitNotPinned": "Você atingiu seu limite de armazenamento.<br>Este documento não está armazenado em seu CryptDrive.", "pinLimitNotPinned": "Você atingiu seu limite de armazenamento.<br>Este documento não está armazenado em seu CryptDrive.",
"pinLimitDrive": "Você alcançou o limite de armazenamento.<br>Você não pode criar novos documentos.", "pinLimitDrive": "Você atingiu o limite de armazenamento.<br>Você não pode criar novos documentos.",
"importButtonTitle": "Importar um documento de um arquivo local", "importButtonTitle": "Importar um documento de um arquivo local",
"exportButtonTitle": "Exportar este documento para um arquivo local", "exportButtonTitle": "Exportar este documento para um arquivo local",
"exportPrompt": "Como deseja nomear seu arquivo?", "exportPrompt": "Como deseja nomear seu arquivo?",
@ -176,7 +176,7 @@
"settings_backup": "Backup", "settings_backup": "Backup",
"settings_restore": "Restaurar", "settings_restore": "Restaurar",
"settings_reset": "Remover todos os arquivos e pastas do seu CryptDrive", "settings_reset": "Remover todos os arquivos e pastas do seu CryptDrive",
"settings_resetPrompt": "Esta ação removerá todos os documentos de sua unidade.<br>Você tem certeza que quer continuar?<br>Digite \"<em>Eu amo o CryptPad</em>\" para confirmar.", "settings_resetPrompt": "Esta ação removerá todos os documentos do seu disco.<br>Você tem certeza que quer continuar?<br>Digite \"<em>Eu amo o CryptPad</em>\" para confirmar.",
"settings_resetDone": "Seu disco está vazio!", "settings_resetDone": "Seu disco está vazio!",
"settings_resetError": "Incorrect verification text. Your CryptDrive has not been changed.", "settings_resetError": "Incorrect verification text. Your CryptDrive has not been changed.",
"settings_resetTips": "Tips in CryptDrive", "settings_resetTips": "Tips in CryptDrive",
@ -221,7 +221,7 @@
"feedback_about": "Se você está lendo isso, provavelmente está curioso para saber por que o CryptPad está solicitando páginas da web quando você executa certas ações.", "feedback_about": "Se você está lendo isso, provavelmente está curioso para saber por que o CryptPad está solicitando páginas da web quando você executa certas ações.",
"feedback_privacy": "We care about your privacy, and at the same time we want CryptPad to be very easy to use. We use this file to figure out which UI features matter to our users, by requesting it along with a parameter specifying which action was taken.", "feedback_privacy": "We care about your privacy, and at the same time we want CryptPad to be very easy to use. We use this file to figure out which UI features matter to our users, by requesting it along with a parameter specifying which action was taken.",
"feedback_optout": "If you would like to opt out, visit <a>your user settings page</a>, where you'll find a checkbox to enable or disable user feedback.", "feedback_optout": "If you would like to opt out, visit <a>your user settings page</a>, where you'll find a checkbox to enable or disable user feedback.",
"padNotPinned": "Esse documento vai expirar depois de 3 meses de inatividade. Faça {0}login{1} ou clique em {2}registrar-se{3} para preservá-lo.", "padNotPinned": "Este documento vai expirar depois de 3 meses de inatividade. Faça {0}login{1} ou clique em {2}registrar-se{3} para preservá-lo.",
"anonymousStoreDisabled": "O administrador desta instância do CryptPad desabilitou o armazenamento para usuários anônimos. Faça login para acessar seu próprio CryptDrive.", "anonymousStoreDisabled": "O administrador desta instância do CryptPad desabilitou o armazenamento para usuários anônimos. Faça login para acessar seu próprio CryptDrive.",
"expiredError": "Este documento atingiu seu tempo de validade e não está mais disponível.", "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.", "deletedError": "Este documento foi apagado e não está mais disponível.",
@ -234,7 +234,7 @@
"deletedFromServer": "Documento destruído", "deletedFromServer": "Documento destruído",
"mustLogin": "Você precisa estar logado para acessar esta página", "mustLogin": "Você precisa estar logado para acessar esta página",
"disabledApp": "Esta aplicação foi desabilitada. Contate o administrador deste CryptPad para mais informações.", "disabledApp": "Esta aplicação foi desabilitada. Contate o administrador deste CryptPad para mais informações.",
"realtime_unrecoverableError": "Um erro irrecuperável ocorreu. Click em OK para recarregar.", "realtime_unrecoverableError": "Ocorreu um erro irrecuperável. Clique em OK para recarregar.",
"typing": "Editando", "typing": "Editando",
"initializing": "Inicializando...", "initializing": "Inicializando...",
"forgotten": "Movido para a lixeira", "forgotten": "Movido para a lixeira",
@ -243,7 +243,7 @@
"pinLimitReachedAlertNoAccounts": "Você atingiu o seu limite de armazenamento", "pinLimitReachedAlertNoAccounts": "Você atingiu o seu limite de armazenamento",
"importButton": "Importar", "importButton": "Importar",
"exportButton": "Exportar", "exportButton": "Exportar",
"saveTitle": "Salve o título (enter)", "saveTitle": "Salvar o título (enter)",
"forgetButton": "Apagar", "forgetButton": "Apagar",
"userListButton": "Lista de usuários", "userListButton": "Lista de usuários",
"chatButton": "Bate-papo", "chatButton": "Bate-papo",
@ -300,7 +300,7 @@
"kanban_todo": "A fazer", "kanban_todo": "A fazer",
"kanban_done": "Feito", "kanban_done": "Feito",
"kanban_working": "Em progresso", "kanban_working": "Em progresso",
"kanban_addBoard": "Adicionar uma board", "kanban_addBoard": "Adicionar um quadro",
"poll_remove": "Remover", "poll_remove": "Remover",
"poll_edit": "Editar", "poll_edit": "Editar",
"poll_locked": "Bloqueado", "poll_locked": "Bloqueado",
@ -319,7 +319,7 @@
"canvas_widthLabel": "Largura: {0}", "canvas_widthLabel": "Largura: {0}",
"storageStatus": "Armazenamento:<br><b>{0}</b> usados do total <b>{1}</b>", "storageStatus": "Armazenamento:<br><b>{0}</b> usados do total <b>{1}</b>",
"upgradeAccount": "Atualizar conta", "upgradeAccount": "Atualizar conta",
"padNotPinnedVariable": "Este pad vai expirar depois de {4} dias de inatividade, {0} faça login{1} ou {2}registre-se{3} para preserva-lo.", "padNotPinnedVariable": "Este documento vai expirar depois de {4} dias de inatividade, {0} faça login{1} ou {2}registre-se{3} para preservá-lo.",
"settings_cursorColorTitle": "Cor do cursor", "settings_cursorColorTitle": "Cor do cursor",
"settings_changePasswordNewPasswordSameAsOld": "Sua nova senha precisa ser diferente da sua senha atual.", "settings_changePasswordNewPasswordSameAsOld": "Sua nova senha precisa ser diferente da sua senha atual.",
"settings_changePasswordPending": "Sua senha está sendo atualizada. Por favor, não feche ou recarregue esta página enquanto o processo não termina.", "settings_changePasswordPending": "Sua senha está sendo atualizada. Por favor, não feche ou recarregue esta página enquanto o processo não termina.",
@ -351,9 +351,9 @@
"settings_logoutEverywhereButton": "Sair", "settings_logoutEverywhereButton": "Sair",
"settings_deleted": "Sua conta foi deletada. Tecle OK para ir para a página inicial.", "settings_deleted": "Sua conta foi deletada. Tecle OK para ir para a página inicial.",
"settings_deleteModal": "Compartilhe a seguinte informação com o administrador do seu CryptPad para que os dados sejam removidos do servidor deles.", "settings_deleteModal": "Compartilhe a seguinte informação com o administrador do seu CryptPad para que os dados sejam removidos do servidor deles.",
"settings_deleteButton": "Deletar sua conta", "settings_deleteButton": "Apagar sua conta",
"settings_deleteHint": "Deletar a conta é uma ação permanente. Seu CryptDrive e sua lista de documentos serão deletados do servidor. O restante de seus documentos será deletado em 90 dias caso ninguém mais os tiver armazenado em seus CryptDrives.", "settings_deleteHint": "Deletar a conta é uma ação permanente. Seu CryptDrive e sua lista de documentos serão deletados do servidor. O restante de seus documentos será deletado em 90 dias caso ninguém mais os tiver armazenado em seus CryptDrives.",
"settings_deleteTitle": "Deletar conta", "settings_deleteTitle": "Remover a conta",
"settings_userFeedbackTitle": "Comentário", "settings_userFeedbackTitle": "Comentário",
"settings_autostoreNo": "Manual (nunca perguntar)", "settings_autostoreNo": "Manual (nunca perguntar)",
"settings_autostoreMaybe": "Manual (sempre perguntar)", "settings_autostoreMaybe": "Manual (sempre perguntar)",
@ -370,10 +370,10 @@
"settings_resetButton": "Remover", "settings_resetButton": "Remover",
"settings_resetNewTitle": "Limpar o CryptDrive", "settings_resetNewTitle": "Limpar o CryptDrive",
"settings_exportErrorOther": "Ocorreu um erro durante a exportação deste documento: {0}", "settings_exportErrorOther": "Ocorreu um erro durante a exportação deste documento: {0}",
"settings_exportErrorMissing": "Este documento não foi encontrado em nossos servidores (expirou ou foi deletado pelo dono)", "settings_exportErrorMissing": "Este documento não foi encontrado em nossos servidores (expirou ou foi removido pelo dono)",
"settings_exportErrorEmpty": "Este documento não pode ser exportado (vazio ou conteúdo inválido).", "settings_exportErrorEmpty": "Este documento não pode ser exportado (vazio ou conteúdo inválido).",
"settings_exportErrorDescription": "Nós não conseguimos adicionar os seguintes documentos para exportar:", "settings_exportErrorDescription": "Não conseguimos adicionar os seguintes documentos para exportar:",
"settings_exportError": "Visualizar erros", "settings_exportError": "Ver erros",
"settings_export_done": "Pronto para baixar!", "settings_export_done": "Pronto para baixar!",
"settings_export_compressing": "Compactando dados...", "settings_export_compressing": "Compactando dados...",
"settings_export_download": "Baixando e desencriptando seus documentos...", "settings_export_download": "Baixando e desencriptando seus documentos...",
@ -408,7 +408,7 @@
"fc_color": "Alterar cor", "fc_color": "Alterar cor",
"fc_newsharedfolder": "Nova pasta compartilhada", "fc_newsharedfolder": "Nova pasta compartilhada",
"fm_passwordProtected": "Protegido por senha", "fm_passwordProtected": "Protegido por senha",
"fm_moveNestedSF": "Você não pode colocar uma pasta compartilhada com outra. A pasta {0} não foi movida.", "fm_moveNestedSF": "Você não pode colocar uma pasta compartilhada dentro de outra. A pasta {0} não foi movida.",
"fm_restoreDrive": "Restaurando seu disco para um estado anterior. Para melhores resultados, não faça alterações no seu disco enquanto este processo está em andamento.", "fm_restoreDrive": "Restaurando seu disco para um estado anterior. Para melhores resultados, não faça alterações no seu disco enquanto este processo está em andamento.",
"fm_tags_used": "Número de usos", "fm_tags_used": "Número de usos",
"fm_tags_name": "Nome da etiqueta", "fm_tags_name": "Nome da etiqueta",
@ -416,7 +416,7 @@
"fm_burnThisDrive": "Você tem certeza que deseja remover tudo que foi armazenado pelo CryptPad no seu navegador?<br>Isto removerá seu CryptDrive e seu histórico presente no navegador, mas seus documentos continuarão existindo (encriptados) no seu servidor.", "fm_burnThisDrive": "Você tem certeza que deseja remover tudo que foi armazenado pelo CryptPad no seu navegador?<br>Isto removerá seu CryptDrive e seu histórico presente no navegador, mas seus documentos continuarão existindo (encriptados) no seu servidor.",
"fm_padIsOwnedOther": "Este documento pertence a outro usuário", "fm_padIsOwnedOther": "Este documento pertence a outro usuário",
"fm_padIsOwned": "Você é o dono deste documento", "fm_padIsOwned": "Você é o dono deste documento",
"fm_burnThisDriveButton": "Apague todas as informações guardadas CryptPad pelo no seu navegador", "fm_burnThisDriveButton": "Apague todas as informações guardadas pelo CryptPad no seu navegador",
"fm_prop_tagsList": "Etiquetas", "fm_prop_tagsList": "Etiquetas",
"fm_canBeShared": "Esta pasta pode ser compartilhada", "fm_canBeShared": "Esta pasta pode ser compartilhada",
"fm_renamedPad": "Você deu um nome customizado para este documento. O título compartilhado é:<br><b>{0}</b>", "fm_renamedPad": "Você deu um nome customizado para este documento. O título compartilhado é:<br><b>{0}</b>",
@ -425,7 +425,7 @@
"fm_info_owned": "Você é o dono dos documentos aqui mostrados. Isto quer dizer que você pode removê-los permanentemente do servidor quando quiser. Se você o fizer, outros usuários não conseguirão acessá-los.", "fm_info_owned": "Você é o dono dos documentos aqui mostrados. Isto quer dizer que você pode removê-los permanentemente do servidor quando quiser. Se você o fizer, outros usuários não conseguirão acessá-los.",
"fm_info_sharedFolder": "Esta é uma pasta compartilhada. Você não está logado, então só pode acessar no modo somente leitura.<br><a href=\"/register/\">Registre-se</a> ou <a href=\"/login/\">Faça login</a> para habilitar a importação para seu CryptDrive ou poder modifica-la.", "fm_info_sharedFolder": "Esta é uma pasta compartilhada. Você não está logado, então só pode acessar no modo somente leitura.<br><a href=\"/register/\">Registre-se</a> ou <a href=\"/login/\">Faça login</a> para habilitar a importação para seu CryptDrive ou poder modifica-la.",
"fm_info_recent": "Estes documentos foram recentemente abertos ou modificados por você ou colaboradores.", "fm_info_recent": "Estes documentos foram recentemente abertos ou modificados por você ou colaboradores.",
"fm_info_template": "Esses documentos são guardados como modelos e você pode reutilizá-los quando for criar novos.", "fm_info_template": "Esses documentos são guardados como modelos. Eles podem ser reutilizados na criação de novos.",
"fm_deleteOwnedPads": "Você tem certeza de que quer remover permanentemente estes documentos?", "fm_deleteOwnedPads": "Você tem certeza de que quer remover permanentemente estes documentos?",
"fm_deleteOwnedPad": "Você tem certeza de que quer remover permanentemente este documento?", "fm_deleteOwnedPad": "Você tem certeza de que quer remover permanentemente este documento?",
"fm_sharedFolder": "Pasta compartilhada", "fm_sharedFolder": "Pasta compartilhada",
@ -946,7 +946,7 @@
"contacts_mute": "Mudo", "contacts_mute": "Mudo",
"share_noContactsNotLoggedIn": "Faça login ou registre-se para ver seus contatos existentes e adicionar novos.", "share_noContactsNotLoggedIn": "Faça login ou registre-se para ver seus contatos existentes e adicionar novos.",
"share_copyProfileLink": "Copiar link do perfil", "share_copyProfileLink": "Copiar link do perfil",
"settings_padOpenLinkTitle": "Forma", "settings_padOpenLinkTitle": "Abra links no primeiro clique",
"settings_padOpenLinkHint": "Com esta opção, você pode abrir links incorporados com um clique, sem o pop-up de visualização", "settings_padOpenLinkHint": "Com esta opção, você pode abrir links incorporados com um clique, sem o pop-up de visualização",
"settings_padOpenLinkLabel": "Habilitar abertura de link direto", "settings_padOpenLinkLabel": "Habilitar abertura de link direto",
"settings_padNotifHint": "Ignorar notificações quando alguém responder a um de seus comentários", "settings_padNotifHint": "Ignorar notificações quando alguém responder a um de seus comentários",

@ -0,0 +1,558 @@
{
"login_confirm": "Підтвердьте пароль",
"login_password": "Пароль",
"login_username": "Псевдонім",
"settingsButton": "Параметри",
"logoutButton": "Вийти",
"login_register": "Зареєструватися",
"login_login": "Ввійти",
"fo_unavailableName": "Файл чи каталог із такою ж назвою вже є за новою адресою. Перейменуйте його й повторіть спробу.",
"fo_moveFolderToChildError": "Посунути каталог до вкладеного в нього ж каталогу неможливо",
"fo_existingNameError": "Назву вже використано в цьому каталозі. Оберіть іншу.",
"fo_moveUnsortedError": "Зробити каталог шаблоном неможливо",
"fc_hashtag": "Мітки",
"fc_prop": "Властивості",
"fc_empty": "Спорожнити смітник",
"fc_remove_sharedfolder": "Вилучити",
"fc_remove": "Вилучити",
"fc_restore": "Відновити",
"fc_delete_owned": "Знищити",
"fc_delete": "Посунути до смітника",
"fc_collapseAll": "Згорнути все",
"fc_expandAll": "Розгорнути все",
"fc_open_ro": "Відкрити (лише читання)",
"fc_open": "Відкрити",
"fc_color": "Змінити колір",
"fc_rename": "Перейменувати",
"fc_newsharedfolder": "Створити спільний каталог",
"fc_newfolder": "Створити каталог",
"fm_passwordProtected": "Захищено паролем",
"fm_moveNestedSF": "Вкласти один спільний каталог до іншого неможливо. Каталог {0} залишився на місці.",
"fm_restoreDrive": "Каталог відновлюється до раннього стану. Не вносьте змін до каталогу, доки цей процес не завершиться.",
"fm_tags_used": "Кількість використань",
"fm_tags_name": "Назва мітки",
"fm_deletedPads": "Цих документів більше нема на сервері, їх вилучено з вашого CryptDrive-каталогу: {0}",
"fm_padIsOwnedOther": "Документ у власності іншого облікового запису",
"fm_padIsOwned": "Документ у вашій власності",
"fm_burnThisDrive": "Точно стерти все, що CryptPad зберігає у вашому переглядачі?<br>Це вилучить із переглядача ваш CryptDrive-каталог і його історію, але ваші зашифровані документи все ще зберігатимуться на нашому сервері.",
"fm_burnThisDriveButton": "Стерти всі дані, які CryptPad зберігає в цьому переглядачі",
"fm_prop_tagsList": "Мітки",
"fm_canBeShared": "Каталог можна поширити",
"fm_renamedPad": "Ви зазначили власну назву для цього документа. Спільна назва:<br><b>{0}</b>",
"fm_viewGridButton": "Сітка",
"fm_viewListButton": "Перелік",
"fm_error_cantPin": "Внутрішня помилка сервера. Перезавантажте сторінку й повторіть спробу.",
"fm_info_owned": "Тут показано документи у вашій власності. Це означає, що ви можете назовсім вилучити їх із сервера, коли забажаєте. Якщо ви це зробите, інші більше не зможуть їх доступатися.",
"fm_info_sharedFolder": "Це спільний каталог. Ви не ввійшли, тож можете переглядати його лише в режимі читання.<br><a href=\"/register/\">Зареєструйтесь</a> чи <a href=\"/login/\">ввійдіть</a>, щоб імпортувати його до свого CryptDrive-каталогу й почати редагування.",
"fm_info_anonymous": "Ви не ввійшли, тож ваші документи буде стерто через {0} днів. Очищення історії переглядача може їх видалити.<br><a href=\"/register/\">Зареєструйтесь</a> (особових даних не потрібно) чи <a href=\"/login/\">ввійдіть</a>, щоб зберегти їх до свого каталогу на довільний термін. <a href=\"#docs\">Докладніше про реєстрацію облікових записів</a>.",
"fm_info_trash": "Спорожніть смітник, щоб звільнити простір у своєму CryptDrive-каталозі.",
"fm_info_recent": "Ви чи хтось, із ким ви працюєте, нещодавно відкривали чи редагували ці документи.",
"fm_info_template": "Ці документи збережено як шаблони. Може брати їх за основу при створенні нових.",
"fm_info_root": "Можете створювати вкладені каталоги, якщо вам так зручніше впорядковувати файли.",
"fm_categoryError": "Не вдалося відкрити обрану категорію. Показано корінь.",
"fm_selectError": "Не вдалося обрати вказаний файл. Якщо проблема повторюється, спробуйте перезавантажити сторінку.",
"fm_contextMenuError": "Не вдалося відкрити контекстне меню цього файлу. Якщо проблема повторюється, спробуйте перезавантажити сторінку.",
"fm_unknownFolderError": "Обраного чи востаннє відвіданого каталогу більше не існує. Відкриття вищого каталогу…",
"fm_restoreDialog": "Точно відновити {0} за попередньою адресою?",
"fm_deleteOwnedPads": "Точно назовсім знищити ці документи?",
"fm_deleteOwnedPad": "Точно назовсім знищити цей документ?",
"fm_removePermanentlyDialog": "Точно вилучити цей файл із вашого каталогу? Він залишиться в каталогах тих, хто собі його зберегли.",
"fm_removeSeveralPermanentlyDialog": "Точно вилучити файли ({0} шт.) із вашого каталогу? Вони залишаться в каталогах тих, хто собі їх зберегли.",
"fm_emptyTrashDialog": "Точно спорожнити смітник?",
"fm_noname": "Документ без назви",
"fm_openParent": "Показати в каталозі",
"fm_originalPath": "Початковий шлях",
"fm_forbidden": "Дію заборонено",
"fm_creation": "Створення",
"fm_lastAccess": "Останній доступ",
"fm_type": "Тип",
"fm_fileName": "Назва файлу",
"fm_numberOfFiles": "Кількість файлів",
"fm_numberOfFolders": "Кількість каталогів",
"fm_folderName": "Назва каталогу",
"fm_sharedFolder": "Спільний каталог",
"fm_folder": "Каталог",
"ui_more": "Більше",
"fm_newFile": "Створити документ",
"fm_newFolder": "Створити каталог",
"fm_newButtonTitle": "Створити документ чи каталог — або імпортувати файл до поточного каталогу.",
"fm_newButton": "Створити",
"fm_searchPlaceholder": "Пошук…",
"fm_sharedFolderName": "Спільний каталог",
"fm_tagsName": "Мітки",
"fm_ownedPadsName": "Власні",
"fm_recentPadsName": "Нещодавні",
"fm_searchName": "Пошук",
"fm_templateName": "Шаблони",
"fm_filesDataName": "Усі файли",
"fm_trashName": "Смітник",
"fm_rootName": "Каталог",
"contacts_online": "Ще хтось у цій кімнаті зараз у мережі",
"contacts_leaveRoom": "Вийти з кімнати",
"contacts_rooms": "Кімнати",
"contacts_fetchHistory": "Отримати старішу історію",
"contacts_removeHistoryServerError": "Виникла помилка вилучення історії розмови. Повторіть спробу згодом",
"contacts_confirmRemoveHistory": "Точно назовсім стерти історію розмови? Відновити дані буде неможливо",
"contacts_removeHistoryTitle": "Стерти історію розмови",
"contacts_info4": "Будь-який бік може назовсім стерти історію розмови",
"contacts_info3": "Двічі натиснути зображення, щоб переглянути профіль",
"contacts_info2": "Натиснути чиєсь зображення, щоб поговорити з ними",
"contacts_info1": "Це ваші контакти. Тут ви можете:",
"contacts_padTitle": "Розмова",
"contacts_warning": "Все, що ви пишете, зберігається й стає доступним усім тим, хто переглядає чи згодом переглядатиме документ. Будьте обачні з чутливими даними!",
"contacts_typeHere": "Напишіть повідомлення…",
"contacts_confirmRemove": "Точно вилучити <em>{0]</em> із контактів?",
"contacts_remove": "Вилучити контакт",
"contacts_send": "Надіслати",
"contacts_request": "<em>{0}</em> пропонує вам контакт. <b>Прийняти<b>?",
"contacts_rejected": "Запрошення на контакт відхилено",
"contacts_added": "Запрошення на контакт прийнято.",
"contacts_title": "Контакти",
"userlist_addAsFriendTitle": "Запропонувати «{0}» контакт",
"profile_viewMyProfile": "Мій профіль",
"profile_register": "Зареєструйтесь, щоб створити профіль!",
"profile_error": "Помилка створення профілю: {0}",
"profile_uploadTypeError": "Помилка: тип аватару не підтримується. Дозволені типи: {0}",
"profile_uploadSizeError": "Помилка: аватар мусить бути меншим, ніж {0}",
"profile_upload": " Вивантажити новий аватар",
"profileButton": "Профіль",
"canvas_imageEmbed": "Вбудувати зображення з комп'ютера",
"canvas_currentBrush": "Поточний пензель",
"canvas_saveToDrive": "Зберегти файл зображення до вашого CryptDrive-каталогу",
"canvas_widthLabel": "Ширина: {0}",
"canvas_opacityLabel": "Непрозорість: {0}",
"canvas_opacity": "Непрозорість",
"canvas_width": "Ширина",
"canvas_delete": "Видалити обране",
"canvas_clear": "Стерти",
"oo_uploaded": "Вивантаження завершено. Сторінку буде перезавантажено — або скасуйте перезавантаження й продовжуйте в режимі читання.",
"oo_cantUpload": "Вивантажити не можна, доки інші не вийдуть.",
"oo_reconnect": "З'єднання з сервером відновлено. Файл буде перезавантажено, щоб ви змогли продовжити редагування.",
"poll_comment_disabled": "Оприлюдніть опитування кнопкою ✓, щоб дозволити коментування.",
"poll_comment_placeholder": "Ваш коментар",
"poll_comment_remove": "Видалити коментар",
"poll_comment_submit": "Надіслати",
"poll_comment_add": "Додати коментар",
"poll_comment_list": "Коментарі",
"poll_total": "ВСЬОГО",
"poll_bookmarked_col": "Ви додали цю колонку в закладки. Для вас її завжди буде розблоковано й показано на початку.",
"poll_bookmark_col": "Додайте колонку в закладки, щоб для вас її завжди було розблоковано й показано на початку",
"poll_unlocked": "Розблоковано",
"poll_locked": "Заблоковано",
"poll_edit": "Редагувати",
"poll_remove": "Вилучити",
"poll_descriptionHint": "Опишіть своє опитування й натисніть кнопку ✓ (оприлюднити).\nМожете використати синтаксис Markdown і вбудувати медіафайли зі свого CryptDrive-каталогу.\nЗмінити опис за посиланням може будь-хто, але так робити не рекомендується.",
"poll_removeUser": "Точно вилучити цей обліковий запис?",
"poll_removeOption": "Точно вилучити цей варіант?",
"poll_userPlaceholder": "Ваше ім'я",
"poll_optionPlaceholder": "Варіант",
"poll_commit": "Надіслати",
"poll_create_option": "Додати варіант",
"poll_create_user": "Додати обліковий запис",
"poll_publish_button": "Оприлюднити",
"kanban_addBoard": "Додати дошку",
"kanban_working": "В роботі",
"kanban_done": "Готово",
"kanban_todo": "План",
"kanban_item": "Пункт {0}",
"kanban_newBoard": "Створити дошку",
"pad_mediatagOptions": "Властивості зображення",
"pad_mediatagImport": "Зберегти до CryptDrive-каталогу",
"pad_mediatagPreview": "Переглянути",
"pad_mediatagBorder": "Ширина рамки (пікс.)",
"pad_mediatagRatio": "Дотримувати пропорцію",
"pad_mediatagHeight": "Висота (пікс.)",
"pad_mediatagWidth": "Ширина (пікс.)",
"pad_mediatagTitle": "Параметри тегу «media»",
"openLinkInNewTab": "Відкрити посилання в новій вкладці",
"history_restoreDone": "Документ відновлено",
"history_restorePrompt": "Точно замінити поточну версію документа показаною версією?",
"history_restoreTitle": "Відновити обрану версію документа",
"history_closeTitle": "Закрити історію",
"history_loadMore": "Більше історії",
"history_prev": "Попередня версія",
"history_next": "Наступна версія",
"historyButton": "Показати історію документа",
"historyText": "Історія",
"help_button": "Довідка",
"show_help_button": "Показати довідку",
"cancel": "Скасувати",
"cancelButton": "Скасувати (Esc)",
"okButton": "Гаразд (Enter)",
"ok": "Гаразд",
"notifyLeft": "{0} виходить зі спільного сеансу",
"notifyRenamed": "{0} змінює ім'я на {1}",
"notifyJoined": "{0} приєднується до спільного сеансу",
"fileEmbedTag": "Тоді додайте цей тег «media» в те місце сторінки, куди бажаєте вбудувати файл:",
"fileEmbedScript": "Щоб вбудувати файл, додайте цей скрипт завантаження тегу «media» на сторінку:",
"viewEmbedTag": "Щоб вбудувати документ, додайте цей iframe у бажане місце сторінки. Можете змінити його стиль за допомогою CSS чи атрибутів HTML.",
"viewShare": "Лише читання",
"editShare": "Редагування посилання",
"themeButtonTitle": "Обрати палітру для редагування коду й слайдів",
"themeButton": "Тема",
"languageButtonTitle": "Обрати мову для підсвітки синтаксису",
"languageButton": "Мова",
"slide_invalidLess": "Хибний власний стиль",
"slideOptionsTitle": "Налаштувати слайди",
"slideOptionsText": "Параметри",
"tags_noentry": "Додати мітку видаленому документу неможливо",
"tags_duplicate": "Мітка вже є: {0}",
"tags_notShared": "Ваших міток іншим не видно",
"tags_add": "Оновити мітки обраних документів",
"tags_title": "Мітки (лише для вас)",
"filePicker_filter": "Фільтрувати файли за назвою",
"filePicker_description": "Оберіть файл зі свого CryptDrive-каталогу чи вивантажте новий файл для вбудування",
"filePicker_close": "Закрити",
"filePickerButton": "Вбудувати файл із CryptDrive-каталогу",
"printBackgroundRemove": "Вилучити це зображення тла",
"printBackgroundNoValue": "<em>Зображення тла відсутнє</em>",
"printBackgroundValue": "<b>Поточне тло:</b> <em>{0}</em>",
"printBackgroundButton": "Обрати зображення",
"printBackground": "Використати зображення тла",
"printTransition": "Анімувати переходи",
"printCSS": "Власні стильові правила (CSS):",
"printTitle": "Показати заголовок документа",
"printDate": "Показати дату",
"printSlideNumber": "Показати номер слайду",
"printOptions": "Параметри розмітки",
"printButtonTitle2": "Роздрукувати документ чи експортувати його до PDF-файлу",
"printButton": "Друкувати (Enter)",
"printText": "Друкувати",
"propertiesButtonTitle": "Переглянути властивості документа",
"propertiesButton": "Властивості",
"colorButtonTitle": "Змінити колір тексту презентації",
"backgroundButtonTitle": "Змінити колір тла презентації",
"presentButtonTitle": "Запустити режим презентації",
"previewButtonTitle": "Перемкнути режим перегляду Markdown",
"template_empty": "Шаблонів іще нема",
"template_import": "Імпортувати шаблон",
"saveTitle": "Зберегти заголовок (Enter)",
"useTemplateCancel": "Почати наново (Esc)",
"useTemplateOK": "Обрати шаблон (Enter)",
"useTemplate": "Почати з шаблону?",
"selectTemplate": "Оберіть шаблон чи натисніть Escape",
"templateSaved": "Шаблон збережено!",
"saveTemplatePrompt": "Оберіть заголовок шаблону",
"saveTemplateButton": "Зберегти як шаблон",
"uploadButtonTitle": "Вивантажити новий файл у свій CryptDrive-каталог",
"uploadFolderButton": "Вивантажити каталог",
"uploadButton": "Вивантажити файли",
"newButtonTitle": "Створити документ",
"newButton": "Створити",
"userAccountButton": "Користувацьке меню",
"chatButton": "Розмова",
"userListButton": "Перелік облікових записів",
"shareSuccess": "Посилання скопійовано в буфер",
"shareButton": "Поширити",
"movedToTrash": "Документ посунуто до смітника.<br><a>Перейти до CryptDrive-каталогу</a>",
"forgetPrompt": "Точно посунути документ до смітника?",
"forgetButton": "Видалити",
"clickToEdit": "Натисніть, щоб редагувати",
"user_accountName": "Назва облікового запису",
"user_displayName": "Видима назва",
"user_rename": "Змінити видиму назву",
"exportPrompt": "Як назвати файл?",
"exportButtonTitle": "Експортувати цей документ до локального файлу",
"exportButton": "Експорт",
"importButtonTitle": "Імпортувати документ із локального файлу",
"importButton": "Імпорт",
"pinLimitDrive": "Вага вашого каталогу досягла межі.<br>Ви не можете створювати нових документів.",
"pinLimitNotPinned": "Вага вашого каталогу досягла межі.<br>Документ не потрапить до вашого CryptDrive-каталогу.",
"pinLimitReachedAlertNoAccounts": "Вага вашого каталогу досягла межі",
"pinLimitReachedAlert": "Вага вашого каталогу досягла межі. Нові документи не потраплятимуть до вашого CryptDrive-каталогу.<br>Можете вилучити документи зі свого CryptDrive-каталогу — чи підвищити межу <a>платною підпискою</a>.",
"pinLimitReached": "Вага вашого каталогу досягла межі",
"formattedKB": "{0} кБ",
"formattedGB": "{0} ГБ",
"formattedMB": "{0} МБ",
"KB": "кБ",
"GB": "ГБ",
"MB": "МБ",
"storageStatus": "Каталог:<br>використано <b>{0}</b> з <b>{1}</b>",
"upgradeAccount": "Поліпшити обліковий запис",
"upgrade": "Поліпшити",
"language": "Мова",
"userlist_offline": "Поки ви поза мережею, список облікових записів недоступний.",
"editor": "редагує",
"viewers": "читають",
"viewer": "читає",
"users": "Облікові записи",
"anonymous": "Анонімно",
"readonly": "Лише читання",
"errorState": "Критична помилка: {0}",
"forgotten": "Посунуто до смітника",
"initializing": "Запуск…",
"typing": "Редагування",
"reconnecting": "Під'єднання",
"synchronizing": "Синхронізація",
"disconnected": "Від'єднано",
"realtime_unrecoverableError": "Виникла помилка, відновитись після якої неможливо. Сторінку буде перезавантажено.",
"disabledApp": "Застосунок вимкнено. Напишіть адміністрації цього сервера CryptPad, щоб дізнатися більше.",
"mustLogin": "Ввійдіть, щоб переглянути цю сторінку",
"deletedFromServer": "Документ знищено",
"settings_logoutEverywhereConfirm": "Точно? Вам доведеться ввійти заново на всіх пристроях.",
"settings_logoutEverywhere": "Примусово вийти з усіх інших вебсеансів",
"settings_logoutEverywhereTitle": "Припинити віддалені сеанси",
"settings_logoutEverywhereButton": "Вийти",
"settings_publicSigningKey": "Відкритий ключ підпису",
"settings_anonymous": "Ви не ввійшли. Параметри стосуватимуться лише цього переглядача.",
"settings_deleted": "Обліковий запис видалено. Буде відкрито сторінку домівки.",
"settings_deleteModal": "Передайте наступне адміністрації свого сервера CryptPad, щоб вони вилучили ваші дані з сервера.",
"settings_deleteButton": "Видалити обліковий запис",
"settings_deleteHint": "Обліковий запис видаляється назовсім. Ваш CryptDrive-каталог і перелік ваших документів буде видалено з сервера. Решту ваших документів буде видалено через 90 днів, якщо більше ніхто не зберігали їх до своїх CryptDrive-каталогів.",
"settings_deleteTitle": "Видалення облікового запису",
"settings_userFeedback": "Ввімкнути зворотний зв'язок",
"settings_userFeedbackHint2": "Вміст ваших документів ніколи не передаватиметься серверу.",
"settings_userFeedbackHint1": "CryptPad може надсилати серверу мінімальний зворотний відгук, щоб ми розуміли, як слід удосконалити інтерфейс. ",
"settings_userFeedbackTitle": "Зворотний зв'язок",
"settings_autostoreMaybe": "Вручну",
"settings_autostoreNo": "Запитувати",
"settings_autostoreYes": "Автоматично",
"settings_autostoreHint": "<b>Автоматично</b> Всі відкриті документи зберігатимуться до вашого CryptDrive-каталогу.<br><b>Запитувати</b> Якщо ваш CryptDrive-каталог ще не містить документа, вам буде запропоновано його туди зберегти.<br><b>Вручну</b> Жодних документів не буде автоматично збережено до CryptDrive-каталогу. Пропозицію їх зберегти буде сховано.",
"settings_autostoreTitle": "Зберігати до CryptDrive-каталогу",
"settings_importDone": "Імпорт завершено",
"settings_importConfirm": "Точно імпортувати нещодавні документи цього переглядача до CryptDrive-каталогу вашого облікового запису?",
"settings_import": "Імпорт",
"settings_importTitle": "Імпорт нещодавніх документів переглядача до CryptDrive-каталогу",
"settings_resetThumbnailsDone": "Всі мініатюри стерто.",
"settings_resetThumbnailsDescription": "Стерти всі мініатюри документів, збережені у вашому переглядачі.",
"settings_resetThumbnailsAction": "Стерти",
"settings_disableThumbnailsDescription": "Мініатюри автоматично створюються й зберігаються у вашому переглядачі, коли ви переглядаєте той чи інший документ. Цю функцію можна вимкнути.",
"settings_disableThumbnailsAction": "Вимкнути створення мініатюр у CryptDrive-каталозі",
"settings_thumbnails": "Мініатюри",
"settings_resetTipsDone": "Всі поради буде показано ще раз.",
"settings_resetTipsButton": "Відновити доступні поради щодо CryptDrive-каталогу",
"settings_resetTipsAction": "Відновити",
"settings_resetTips": "Поради",
"settings_resetError": "Хибний текст підтвердження. Ваш CryptDrive-каталог залишивсь недоторканим.",
"settings_resetDone": "Ваш каталог знов порожній!",
"settings_resetPrompt": "З вашого каталогу буде вилучено всі документи.<br>Точно продовжити?<br>Щоб підтвердити, напишіть: «<em>I love CryptPad</em>».",
"settings_reset": "Вилучити всі файли й каталоги з вашого CryptDrive-каталогу",
"settings_resetButton": "Вилучити",
"settings_resetNewTitle": "Стерти CryptDrive-каталог",
"settings_exportErrorOther": "Виникла помилка експорту документа: {0}",
"settings_exportErrorMissing": "Документ стерто через бездіяльність (чи видалено тими, в чиїй власності він був)",
"settings_exportErrorEmpty": "Документ неможливо експортувати, бо він порожній чи пошкоджений.",
"settings_exportErrorDescription": "Не вдалося експортувати наступні документи:",
"settings_exportError": "Переглянути помилки",
"settings_export_done": "Завантаження готове!",
"settings_export_compressing": "Стиснення даних…",
"settings_export_download": "Завантаження й розшифрування документів…",
"settings_export_reading": "Читання CryptDrive-каталогу…",
"settings_exportCancel": "Точно скасувати експорт? Наступного разу вам доведеться почати заново.",
"settings_exportWarning": "Увага: розробка засобу ще триває. Можливі проблеми залежно від обсягу. Щоб це спрацювало швидше, не перемикайте вкладки.",
"settings_exportFailed": "Експорт документів, що завантажуються понад хвилину, буде припинено. Замість них буде показано посилання на кожен документ, який не вдалося експортувати.",
"settings_exportDescription": "Зачекайте, поки ми завантажуємо й розшифровуємо ваші документи. Це може тривати кілька хвилин. Закриття вкладки припинить процес.",
"settings_exportTitle": "Експорт CryptDrive-каталогу",
"settings_backup2Confirm": "Це завантажить усі документи й файли вашого CryptDrive-каталогу. Щоб продовжити, оберіть назву",
"settings_backup2": "Завантажити CryptDrive-каталог",
"settings_backupHint2": "Завантажити всі документи каталогу. Всі документи, формат яких можуть читати інші застосунки, буде збережено саме в такому форматі. Документи, в яких такого формату нема, буде завантажено в форматі, читати який може CryptPad.",
"settings_restore": "Імпорт",
"settings_backup": "Експорт",
"settings_backupHint": "Експортуйте й імпортуйте резервні копії всього вашого CryptDrive-каталогу. Вони міститимуть не вміст ваших документів, а лише ключі до них.",
"settings_backupCategory": "Резерв",
"settings_save": "Зберегти",
"settings_title": "Параметри",
"settings_cat_subscription": "Підписка",
"settings_cat_pad": "Гіпертекст",
"settings_cat_code": "Код",
"settings_cat_cursor": "Курсор",
"settings_cat_drive": "CryptDrive-каталог",
"settings_cat_account": "Обліковий запис",
"register_emailWarning3": "Продовжуйте лише в тому разі, якщо розумієте це й усе одно бажаєте використати е-пошту як псевдонім.",
"register_emailWarning2": "Ви не зможете скинути пароль за допомогою е-пошти, як на деяких інших службах.",
"register_emailWarning1": "Це дозволено, але її не буде надіслано на наш сервер.",
"register_emailWarning0": "Схоже, ви зазначили адресу е-пошти як псевдонім.",
"register_alreadyRegistered": "Обліковий запис уже існує, бажаєте ввійти?",
"register_warning": "Увага",
"register_cancel": "Скасувати",
"register_writtenPassword": "Підтвердити, що псевдонім і пароль занотовано",
"register_header": "Зареєструватись",
"register_whyRegister": "Навіщо реєструватись?",
"register_mustAcceptTerms": "Ви мусите прийняти умови надання послуг.",
"register_passwordTooShort": "Паролі мусять містити не менше, ніж {0} символів.",
"register_passwordsDontMatch": "Паролі не збіжні!",
"register_acceptTerms": "Приймаю <a>умови надання послуг</a>",
"register_importRecent": "Імпортувати документи з гостьового сеансу",
"login_unhandledError": "Виникла неочікувана помилка :(",
"login_invalPass": "Пароль обов'язковий",
"login_invalUser": "Псевдонім обов'язковий",
"login_noSuchUser": "Хибний псевдонім чи пароль. Повторіть спробу чи зареєструйтесь",
"login_hashing": "Триває хешування паролю, просимо зачекати.",
"deleted": "Видалено",
"saved": "Збережено",
"error": "Помилка",
"loading": "Завантаження...",
"newVersionError": "Доступна нова версія CryptPad.<br><a href='#'>Перезавантажте</a>, щоб скористатись новою версією, або натисніть Esc, щоб переглянути свої файли <b>автономно</b>.",
"errorRedirectToHome": "Натисніть <em>Esc</em>, щоб перейти до свого CryptDrive-каталогу.",
"errorCopy": " Щоб повернутись до поточної версії в режимі читання, натисніть <em>Esc</em>.",
"invalidHashError": "Ви спробували переглянути документ за хибною URL-адресою.",
"chainpadError": "При оновленні вашого файлу виникла критична помилка. Сторінку переведено до режиму читання, щоб ви не втратили своєї роботи.<br>Натисніть <em>Esc</em>, щоб переглянути документ, або перезавантажте, щоб продовжити редагування.",
"inactiveError": "Документ видалено через бездіяльність. Натисніть Esc, щоб створити новий.",
"expiredError": "Документ стерто через бездіяльність.",
"deletedError": "Документ видалено.",
"anonymousStoreDisabled": "Адміністрація цього сервера CryptPad вимкнула гостьовий доступ до файлів. Увійдіть, щоб доступитися свого CryptDrive-каталогу.",
"padNotPinnedVariable": "Документ буде стерто через {4} дні бездіяльності. {0}Ввійдіть{1] або {2}зареєструйтесь{3}, щоб зберігати його довше.",
"padNotPinned": "Документ буде стерто через 3 місяці бездіяльності. {0}Ввійдіть{1} або {2}зареєструйтесь{3}, щоб зберігати його довше.",
"onLogout": "{0}Ввійдіть до облікового запису{1} —<br>або натисніть <em>Escape</em> для доступу в режимі читання.",
"typeError": "Документ несумісний з обраним застосунком",
"common_connectionLost": "<b>Втрачено з'єднання з сервером</b><br>До відновлення з'єднання ви зможете лише читати.",
"type": {
"presentation": "Презентація",
"doc": "Документ",
"form": "Форма",
"teams": "Команди",
"sheet": "Таблиця",
"contacts": "Контакти",
"todo": "План",
"media": "Медіафайл",
"file": "Файл",
"whiteboard": "Дошка",
"drive": "CryptDrive-каталог",
"slide": "Markdown-презентація",
"kanban": "Канбан",
"poll": "Опитування",
"code": "Код",
"pad": "Гіпертекст"
},
"main_title": "CryptPad: спільне редагування наживо — це просто",
"upload_modal_owner": "Власний файл",
"upload_modal_filename": "Назва файлу (суфікс <em>{0}</em> додається автоматично)",
"upload_modal_title": "Параметри вивантаження",
"upload_title": "Вивантажити файл",
"settings_cursorShowLabel": "Показувати курсори",
"settings_cursorShowHint": "Оберіть, чи бажаєте бачити, де в спільних документах зараз працюють інші.",
"settings_cursorShowTitle": "Показувати курсори інших облікових записів",
"settings_cursorShareLabel": "Поширювати курсор",
"settings_cursorShareHint": "Визначте, чи слід іншим бачити, де в спільних документах зараз ваш курсор.",
"settings_cursorShareTitle": "Поширити, де мій курсор",
"settings_cursorColorHint": "Змініть колір позначення свого облікового запису в спільних документах.",
"settings_cursorColorTitle": "Колір курсору",
"settings_changePasswordNewPasswordSameAsOld": "Новий пароль мусить відрізнятись від поточного.",
"settings_changePasswordPending": "Пароль оновлюється. Не закривайте й не перезавантажуйте цієї сторінки до завершення.",
"settings_changePasswordError": "Виникла несподівана помилка. Якщо вам не вдається ввійти чи змінити пароль, напишіть адміністрації свого сервера CryptPad.",
"settings_changePasswordConfirm": "Точно змінити пароль? Вам доведеться ввійти на всі пристрої заново.",
"settings_changePasswordNewConfirm": "Підтвердьте новий пароль",
"settings_changePasswordNew": "Новий пароль",
"settings_changePasswordCurrent": "Поточний пароль",
"settings_changePasswordButton": "Змінити пароль",
"settings_changePasswordHint": "Змініть пароль облікового запису: введіть поточний пароль і підтвердьте його ще раз.<br><b>Скинути забутий пароль буде неможливо, тож будьте обачні!</b>",
"settings_changePasswordTitle": "Змінити пароль",
"settings_ownDrivePending": "Ваш обліковий запис поліпшується. Не закривайте й не перезавантажуйте цієї сторінки до завершення.",
"settings_ownDriveConfirm": "Поліпшення облікового запису відносно повільне. Вам доведеться ввійти на всіх пристроях заново. Точно поліпшити?",
"settings_ownDriveButton": "Поліпшити обліковий запис",
"settings_ownDriveHint": "Старим обліковим записам найновіші функції недоступні з технічних причин. Безкоштовне оновлення ввімкне поточні функції й підготує ваш CryptDrive-каталог до майбутніх оновлень.",
"settings_ownDriveTitle": "Оновити обліковий запис",
"settings_padOpenLinkLabel": "Відкривати посилання одразу",
"settings_padOpenLinkHint": "Дає змогу відкривати вбудовані посилання натиском без спливного попереднього перегляду",
"settings_padOpenLinkTitle": "Відкривати посилання одним натиском",
"settings_padSpellcheckLabel": "Перевіряти правопис у гіпертекстових документах",
"settings_padSpellcheckHint": "Дає змогу вмикати перевірку правопису в гіпертекстових документах. Орфографічні помилки буде підкреслено червоним, а щоб побачити варіанти виправлень, затискайте клавішу Ctrl чи Meta.",
"settings_padSpellcheckTitle": "Правопис",
"settings_padWidthLabel": "Звузити редактор",
"settings_padWidthHint": "Перемикайтесь між сторінковим режимом (усталеним), який обмежує ширину текстового редактора, й повноекранним режимом.",
"settings_padWidth": "Максимальна ширина редактора",
"settings_codeFontSize": "Розмір шрифта в редакторі коду",
"settings_codeUseTabs": "Відступати табуляцією (замість пробілів)",
"settings_codeIndentation": "Відступи редактора коду (пробіли)",
"settings_driveDuplicateLabel": "Ховати дублі",
"settings_driveDuplicateHint": "Коли ви посуваєте власні документи до спільного каталогу, ваш CryptDrive-каталог зберігає копію, щоб забезпечити вам над нею контроль. Можна ховати такі дублі файлів. Лише спільну версію буде показано, доки її не видалять, після чого оригінал знов стане видно за попередньою адресою.",
"settings_driveDuplicateTitle": "Дублі власних документів",
"features_f_storage1_note": "Збережені в CryptDrive-каталозі документи не стираються через бездіяльність",
"features_f_storage1": "Особистий простір ({0})",
"features_f_file1_note": "Збереження файлів до CryptDrive-каталогу: зображень, PDF, відео тощо. Поширення їх контактам і вбудова їх у документи (до {0}МБ)",
"features_f_file1": "Вивантаження й поширення файлів",
"features_f_social_note": "Додання контактів і захищена спільна робота, створення профілю, налаштування доступу",
"features_f_social": "Функції для спільнот",
"features_f_devices_note": "Доступ до CryptDrive-каталогу будь-де, звідки ви входите до облікового запису",
"features_f_devices": "Документи одразу на всіх ваших пристроях",
"features_f_cryptdrive1_note": "Підкаталоги, спільні каталоги, шаблони, мітки",
"features_f_cryptdrive1": "Повний функціонал CryptDrive-каталогу",
"features_f_anon_note": "Й додатковий функціонал",
"features_f_anon": "Всі анонімні функції",
"features_f_storage0_note": "Документи буде стерто через {0} днів бездіяльності",
"features_f_storage0": "Обмежений термін зберігання",
"features_f_cryptdrive0_note": "Можливість зберегти відвідані документи в переглядачі й відкрити їх згодом",
"features_f_cryptdrive0": "Обмежений доступ до CryptDrive-каталогу",
"features_f_file0_note": "Перегляд і завантаження документів, поширених іншими",
"features_f_file0": "Відкриття документів",
"features_f_core_note": "Редагування, імпорт-експорт, історія, перелік облікових записів, розмови",
"features_f_core": "Загальнодоступні функції",
"features_f_apps": "Доступ до всіх застосунків",
"features_premium": "Платно",
"features_registered": "З обліковим записом",
"features_anon": "Анонімно",
"features_title": "Функції",
"features": "Функції",
"whatis_drive": "Структурований CryptDrive-каталог",
"whatis_collaboration": "Приватне спільне редагування",
"whatis_title": "Що таке CryptPad?",
"topbar_whatIsCryptpad": "Що таке CryptPad",
"blog": "Блог",
"terms": "Умови",
"contact": "Зв'язок",
"privacy": "Політика приватності",
"about": "Про застосунок",
"footer_aboutUs": "Про нас",
"main_catch_phrase": "Спільне редагування<br>вільна програма з наскрізним шифруванням",
"home_host": "Це незалежний громадський сервер CryptPad.",
"mdToolbar_toc": "Зміст",
"mdToolbar_code": "Код",
"mdToolbar_check": "Завдання",
"mdToolbar_list": "Перелік",
"mdToolbar_nlist": "Нумерація",
"mdToolbar_quote": "Цитата",
"mdToolbar_link": "Посилання",
"mdToolbar_heading": "Заголовок",
"mdToolbar_strikethrough": "Закреслення",
"mdToolbar_italic": "Курсив",
"mdToolbar_bold": "Грубий",
"mdToolbar_help": "Довідка",
"mdToolbar_defaultText": "Ваш текст",
"mdToolbar_button": "Перемкнути показ панелі Markdown",
"pad_base64": "Документ містить неоптимізовані зображення. Ці зображення зроблять документ у вашому CryptDrive-каталозі значно важчим, і його завантаження сповільняться. Виокремити ці файли до CryptDrive-каталогу в оптимізованому форматі?",
"todo_removeTaskTitle": "Вилучити завдання з плану",
"todo_markAsIncompleteTitle": "Позначити завдання незавершеним",
"todo_markAsCompleteTitle": "Позначити завдання завершеним",
"todo_title": "CryptTodo-план",
"download_step2": "Розшифрування",
"download_step1": "Завантаження",
"download_dl": "Завантажити",
"download_mt_button": "Завантажити",
"upload_up": "Вивантажити",
"upload_mustLogin": "Ввійдіть, щоб вивантажити файли",
"upload_size": "Вага",
"upload_cancelled": "Скасовано",
"upload_pending": "Очікування",
"upload_choose": "Обрати файл",
"upload_tooLargeBrief": "Файл перевищує межу: {0}МБ",
"upload_tooLarge": "Файл важить більше, ніж дозволено вивантажувати вашим обліковим записом.",
"upload_notEnoughSpaceBrief": "Бракує простору",
"upload_notEnoughSpace": "Простору в CryptDrive-каталозі недостатньо для цього файлу.",
"upload_success": "Файл {0} успішно вивантажено й додано до вашого каталогу.",
"upload_uploadPending": "Ви вже щось вивантажуєте. Скасувати це й вивантажити новий файл?",
"upload_serverError": "Помилка сервера: поки що вивантажити файл неможливо.",
"uploadFolder_modal_forceSave": "Зберегти файли до CryptDrive-каталогу",
"uploadFolder_modal_owner": "Власні файли",
"uploadFolder_modal_filesPassword": "Пароль до файлів",
"uploadFolder_modal_title": "Параметри вивантаження",
"header_homeTitle": "Перейти до головної сторінки CryptPad",
"header_logoTitle": "Перейти до свого CryptDrive-каталогу",
"four04_pageNotFound": "Не вдалося знайти шукану вами сторінку.",
"tos_3rdparties": "Ми не надаємо персоналізованих даних стороннім особам, коли законодавство нас до цього не зобов'язує.",
"tos_logs": "Метадані, надані серверу переглядачем, можуть журналюватися для супроводу служби.",
"tos_e2ee": "Прочитати чи змінити CryptPad-документ може будь-хто, кому вдасться вгадати чи іншим чином отримати ідентифікатор того чи іншого фрагменту. Радимо поширювати посилання лише за допомогою технологій наскрізно зашифрованого листування — й не несемо відповідальності за наслідки можливого витоку таких посилань.",
"tos_availability": "Сподіваємось, що ця служба принесе вам користь, але не можемо гарантувати доступність чи швидкодію. Будь ласка, регулярно експортуйте дані.",
"tos_legal": "Не зловживайте й не робіть нічого зловмисного чи протизаконного.",
"tos_title": "Умови надання послуг CryptPad",
"features_f_subscribe_note": "Щоб підписатись, потрібно зареєструвати обліковий запис",
"features_f_subscribe": "Підписатись",
"features_f_supporter_note": "Допомагайте CryptPad покривати витрати й просувайте нову норму — добровільну підтримку дружніх до приватності програм власним коштом",
"features_f_supporter": "Підтримка приватності",
"features_f_support_note": "Пріоритетна відповідь команди адміністрування поштою й через вбудовану систему заявок",
"features_f_support": "Швидша підтримка",
"features_f_storage2_note": "Від 5 до 50 ГБ залежно від плану, й можна вивантажувати більші файли — до {0} МБ",
"features_f_storage2": "Більше простору",
"features_f_reg_note": "Із додатковими перевагами",
"features_f_reg": "Весь функціонал облікових записів",
"features_f_register": "Безкоштовна реєстрація"
}

@ -55,17 +55,8 @@ define([
APP.toolbar.$rightside.hide(); APP.toolbar.$rightside.hide();
MessengerUI.create($(appElement), common); MessengerUI.create($(appElement), common);
common.setTabTitle(Messages.contacts);
UI.removeLoadingScreen(); UI.removeLoadingScreen();
/*
sFrameChan.query('Q_HEY_BUDDY', null, function (err, data) {
if (!data) { return; }
if (data.error) {
UI.warn(data.error);
} else {
UI.log(data.response);
}
});*/
}); });
}); });

@ -156,6 +156,7 @@ define([
return; return;
} }
common.setTabTitle(Messages.uploadButton);
// we're in upload mode // we're in upload mode
if (!common.isLoggedIn()) { if (!common.isLoggedIn()) {
UI.removeLoadingScreen(); UI.removeLoadingScreen();

@ -8,6 +8,6 @@ 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 * [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 * [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 * [pdfjs](https://mozilla.github.io/pdf.js/) with some minor modifications to prevent CSP errors
* [mermaid 8.13.10](https://github.com/mermaid-js/mermaid/releases/tag/8.13.4) extends our markdown integration to support a variety of diagram types * [mermaid 9.0.0](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 * [Fabricjs 4.6.0](https://github.com/fabricjs/fabric.js) and [Fabric-history](https://github.com/lyzerk/fabric-history) for the whiteboard app

File diff suppressed because one or more lines are too long

@ -607,6 +607,7 @@ define([
APP.origin = privateData.origin; APP.origin = privateData.origin;
APP.readOnly = privateData.readOnly; APP.readOnly = privateData.readOnly;
common.setTabTitle(Messages.profileButton);
// If not logged in, you can only view other users's profile // If not logged in, you can only view other users's profile
if (!privateData.readOnly && !common.isLoggedIn()) { if (!privateData.readOnly && !common.isLoggedIn()) {
UI.removeLoadingScreen(); UI.removeLoadingScreen();

@ -1811,6 +1811,7 @@ define([
createLeftside(); createLeftside();
createUsageButton(); createUsageButton();
common.setTabTitle(Messages.settings_title);
UI.removeLoadingScreen(); UI.removeLoadingScreen();
}); });
}); });

Loading…
Cancel
Save