Merge branch 'staging' into oo2
commit
760f58b74c
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 20 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
Binary file not shown.
After Width: | Height: | Size: 5.0 KiB |
@ -0,0 +1,128 @@
|
|||||||
|
define([
|
||||||
|
'/common/hyperscript.js',
|
||||||
|
'/customize/messages.js',
|
||||||
|
'/customize/pages.js'
|
||||||
|
], function (h, Msg, Pages) {
|
||||||
|
return function () {
|
||||||
|
return h('div#cp-main', [
|
||||||
|
Pages.infopageTopbar(),
|
||||||
|
h('div.container-fluid.cp-about-intro', [
|
||||||
|
h('div.container', [
|
||||||
|
h('center', [
|
||||||
|
h('h1', Msg.about),
|
||||||
|
Pages.setHTML(h('p'), Msg.about_intro),
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
h('div.container.cp-container', [
|
||||||
|
h('div.row', [
|
||||||
|
h('div.cp-develop-about.col-12',[
|
||||||
|
h('div.cp-icon-cent'),
|
||||||
|
h('h2.text-center', Msg.about_core)
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
h('div.row.align-items-center', [
|
||||||
|
h('div.col-12.col-sm-12.col-md-12.col-lg-6.cp-bio-avatar', [
|
||||||
|
h('img.img-fluid', {'src': '/customize/images/CalebJames.jpg'})
|
||||||
|
]),
|
||||||
|
h('div.col-12.col-sm-12.col-md-12.col-lg-6.cp-profile-det', [
|
||||||
|
h('h3', "Caleb James Delisle"),
|
||||||
|
h('hr'),
|
||||||
|
Pages.setHTML(h('div#bioCaleb'), '<p>Caleb is a cryptography developer, Machine Technology graduate of the Franklin County Technical School and lifelong tinkerer.<br/>In 2011, he started the cjdns Open Source project to show that secure networking could be invisible and easily deployed.<br/>After joining XWiki SAS in 2014, he started the CryptPad project with the intent of bringing the same transparent security to collaborative editing.<br/>He\'s always trying to learn from more experienced colleagues and when someone passes through the Research Team office, his favorite words are "Pull up a chair!".</p>'),
|
||||||
|
h('a.cp-soc-media', { href : 'https://twitter.com/cjdelisle'}, [
|
||||||
|
h('i.fa.fa-twitter')
|
||||||
|
]),
|
||||||
|
h('a.cp-soc-media', { href : 'https://github.com/cjdelisle'}, [
|
||||||
|
h('i.fa.fa-github')
|
||||||
|
])
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
h('div.row.align-items-center',[
|
||||||
|
h('div.col-12.col-sm-12.col-md-12.col-lg-6.order-lg-2.cp-bio-avatar.cp-bio-avatar-right', [
|
||||||
|
h('img.img-fluid', {'src': '/customize/images/AaronMacSween.jpg'})
|
||||||
|
]),
|
||||||
|
h('div.col-12.col-sm-12.col-md-12.col-lg-6.order-lg-1.cp-profile-det',[
|
||||||
|
h('h3', "Aaron MacSween"),
|
||||||
|
h('hr'),
|
||||||
|
Pages.setHTML(h('div#bioAaron'), '<p>Aaron transitioned into distributed systems development from a background in jazz and live stage performance. <br/> He appreciates the elegance of biological systems and functional programming, and focused on both as a student at the University of Toronto, where he studied cognitive and computer sciences.<br/>He moved to Paris in 2015 to work as a research engineer at XWiki SAS, after having dedicated significant time to various cryptography-related software projects.<br/>He spends his spare time experimenting with guitars, photography, science fiction, and spicy food.</p>'),
|
||||||
|
h('a.cp-soc-media', { href : 'https://twitter.com/fc00ansuz'}, [
|
||||||
|
h('i.fa.fa-twitter')
|
||||||
|
]),
|
||||||
|
h('a.cp-soc-media', { href : 'https://github.com/ansuz/'}, [
|
||||||
|
h('i.fa.fa-github')
|
||||||
|
])
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
h('div.row.align-items-center', [
|
||||||
|
h('div.col-12.col-sm-12.col-md-12.col-lg-6.cp-bio-avatar', [
|
||||||
|
h('img.img-fluid', {'src': '/customize/images/YannFlory.jpg'})
|
||||||
|
]),
|
||||||
|
h('div.col-12.col-sm-12.col-md-12.col-lg-6.cp-profile-det', [
|
||||||
|
h('h3', "Yann Flory"),
|
||||||
|
h('hr'),
|
||||||
|
Pages.setHTML(h('div#bioYann'), '<p>In 2015, Yann graduated with an engineering degree from Ecole Centrale de Lille majoring in Data Science. In his studies he worked on a project to detect defects in optical fiber using image processing technology.<br/>Upon joining XWiki SAS, Yann developed a Wiki page recommendation system, a common API for accessing data server-side and client-side, and an integrated development environment for development of XWiki applications.<br/>Yann is soft spoken but brutally efficient, he is known to say "It will take 5 minutes".</p>'),
|
||||||
|
h('a.cp-soc-media', { href : 'https://github.com/yflory/'}, [
|
||||||
|
h('i.fa.fa-github')
|
||||||
|
])
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
h('div.row', [
|
||||||
|
h('div.cp-develop-about.col-12.cp-contrib',[
|
||||||
|
h('div.cp-icon-cent'),
|
||||||
|
h('h2.text-center', Msg.about_contributors)
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
h('div.row.align-items-center', [
|
||||||
|
h('div.col-12.col-sm-12.col-md-12.col-lg-6.cp-bio-avatar', [
|
||||||
|
h('img.img-fluid', {'src': '/customize/images/Pierre-new.jpg'})
|
||||||
|
]),
|
||||||
|
h('div.col-12.col-sm-12.col-md-12.col-lg-6.cp-profile-det', [
|
||||||
|
h('h3', "Pierre Bondoerffer"),
|
||||||
|
h('hr'),
|
||||||
|
Pages.setHTML(h('div#bioPierre'), '<p>Resident CSS wizard and emoji extraordinaire, Pierre is passionate about anything related to technology. He loves to hack around computers and put parts together.<br/>He is currently studying at 42, where he learns about algorithms, networking, kernel programming and graphics.<br/>As a part of an internship, he joined XWiki SAS and worked on CryptPad to improve user experience. He also maintains the Spanish translation.</p>'),
|
||||||
|
h('a.cp-soc-media', { href : 'https://twitter.com/pbondoer'}, [
|
||||||
|
h('i.fa.fa-twitter')
|
||||||
|
]),
|
||||||
|
h('a.cp-soc-media', { href : 'https://github.com/pbondoer'}, [
|
||||||
|
h('i.fa.fa-github')
|
||||||
|
])
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
h('div.row.align-items-center',[
|
||||||
|
h('div.col-12.col-sm-12.col-md-12.col-lg-6.order-lg-2.cp-bio-avatar.cp-bio-avatar-right', [
|
||||||
|
h('img.img-fluid', {'src': '/customize/images/Catalin.jpg'})
|
||||||
|
]),
|
||||||
|
h('div.col-12.col-sm-12.col-md-12.col-lg-6.order-lg-1.cp-profile-det',[
|
||||||
|
h('h3', "Catalin Scripcariu"),
|
||||||
|
h('hr'),
|
||||||
|
Pages.setHTML(h('div#bioCatalin'), '<p> Catalin is a Maths majour and has worked in B2B sales for 12 years. Design was always his passion and 3 years ago he started to dedicate himself to web design and front-end.<br/>At the beginning of 2017 he joined the XWiki, where he worked both on the business and the community side of XWiki, including the research team and CryptPad. </p>'),
|
||||||
|
h('a.cp-soc-media', { href : 'https://twitter.com/catalinscr'}, [
|
||||||
|
h('i.fa.fa-twitter')
|
||||||
|
]),
|
||||||
|
h('a.cp-soc-media', { href : 'https://www.linkedin.com/in/catalinscripcariu/'}, [
|
||||||
|
h('i.fa.fa-linkedin')
|
||||||
|
])
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
h('div.row.align-items-center.cp-margin-bot', [
|
||||||
|
h('div.col-12.col-sm-12.col-md-12.col-lg-6.cp-bio-avatar', [
|
||||||
|
h('img.img-fluid', {'src': '/customize/images/LudovicDuboist.jpg'})
|
||||||
|
]),
|
||||||
|
h('div.col-12.col-sm-12.col-md-12.col-lg-6.cp-profile-det', [
|
||||||
|
h('h3', "Ludovic Dubost"),
|
||||||
|
h('hr'),
|
||||||
|
Pages.setHTML(h('div#bioLudovic'), '<p>A graduate of PolyTech (X90) and Telecom School in Paris, Ludovic Dubost started his career as a software architect for Netscape Communications Europe. He then became CTO of NetValue, one of the first French start-ups that went public. He left NetValue after the company was purchased by Nielsen/NetRatings and in 2004 launched XWiki, the next generation wiki.<br/>Since the very beginning, Ludovic has been immensely helpful to the CryptPad project. He believed in the idea when there was nothing more than the collaborative pad and his help with sales strategy for the project.</p>'),
|
||||||
|
h('a.cp-soc-media', { href : 'https://twitter.com/ldubost'}, [
|
||||||
|
h('i.fa.fa-twitter')
|
||||||
|
]),
|
||||||
|
h('a.cp-soc-media', { href : 'https://github.com/ldubost'}, [
|
||||||
|
h('i.fa.fa-github')
|
||||||
|
])
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
Pages.infopageFooter()
|
||||||
|
]);
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
@ -0,0 +1,53 @@
|
|||||||
|
define([
|
||||||
|
'/common/hyperscript.js',
|
||||||
|
'/customize/messages.js',
|
||||||
|
'/customize/pages.js'
|
||||||
|
], function (h, Msg, Pages) {
|
||||||
|
return function () {
|
||||||
|
return h('div#cp-main', [
|
||||||
|
Pages.infopageTopbar(),
|
||||||
|
h('div.container-fluid.cp-contdet', [
|
||||||
|
h('row.col-12.col-sm-12',
|
||||||
|
h('h1.text-center', Msg.contact )
|
||||||
|
)
|
||||||
|
]),
|
||||||
|
h('div.container.cp-container', [
|
||||||
|
h('div.row.cp-iconCont.align-items-center', [
|
||||||
|
h('div.col-12',
|
||||||
|
Pages.setHTML(h('h4.text-center'), Msg.main_about_p26)
|
||||||
|
),
|
||||||
|
h('div.col-12.col-sm-6.col-md-3.col-lg-3',
|
||||||
|
h('a.card', {href : "https://twitter.com/cryptpad"},
|
||||||
|
h('div.card-body',
|
||||||
|
Pages.setHTML(h('p'), Msg.main_about_p22)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
h('div.col-12.col-sm-6.col-md-3.col-lg-3',
|
||||||
|
h('a.card', {href : "https://github.com/xwiki-labs/cryptpad/issues/"},
|
||||||
|
h('div.card-body',
|
||||||
|
Pages.setHTML(h('p'), Msg.main_about_p23)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
h('div.col-12.col-sm-6.col-md-3.col-lg-3',
|
||||||
|
h('a.card', {href : "https://riot.im/app/#/room/#cryptpad:matrix.org"},
|
||||||
|
h('div.card-body',
|
||||||
|
Pages.setHTML(h('p'), Msg.main_about_p24)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
h('div.col-12.col-sm-6.col-md-3.col-lg-3',
|
||||||
|
h('a.card', {href : "mailto:research@xwiki.com"},
|
||||||
|
h('div.card-body',
|
||||||
|
Pages.setHTML(h('p'), Msg.main_about_p25)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
Pages.infopageFooter(),
|
||||||
|
]);
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
@ -0,0 +1,61 @@
|
|||||||
|
define([
|
||||||
|
'jquery',
|
||||||
|
'/common/hyperscript.js',
|
||||||
|
'/customize/messages.js',
|
||||||
|
'/customize/pages.js'
|
||||||
|
], function ($, h, Msg, Pages) {
|
||||||
|
return function () {
|
||||||
|
var categories = [];
|
||||||
|
var faq = Msg.faq;
|
||||||
|
Object.keys(faq).forEach(function (c) {
|
||||||
|
var questions = [];
|
||||||
|
Object.keys(faq[c]).forEach(function (q) {
|
||||||
|
var item = faq[c][q];
|
||||||
|
if (typeof item !== "object") { return; }
|
||||||
|
var answer = h('p.cp-faq-questions-a');
|
||||||
|
var hash = c + '-' + q;
|
||||||
|
var question = h('p.cp-faq-questions-q#' + hash);
|
||||||
|
$(question).click(function () {
|
||||||
|
if ($(answer).is(':visible')) {
|
||||||
|
$(question).toggleClass('cp-active-faq');
|
||||||
|
return void $(answer).slideUp();
|
||||||
|
}
|
||||||
|
$(question).toggleClass('cp-active-faq');
|
||||||
|
$(answer).slideDown();
|
||||||
|
var t = $(window).scrollTop();
|
||||||
|
window.location.hash = hash;
|
||||||
|
$(window).scrollTop(t);
|
||||||
|
});
|
||||||
|
questions.push(h('div.cp-faq-questions-items', [
|
||||||
|
Pages.setHTML(question, item.q),
|
||||||
|
Pages.setHTML(answer, item.a)
|
||||||
|
]));
|
||||||
|
});
|
||||||
|
categories.push(h('div.cp-faq-category', [
|
||||||
|
h('h3', faq[c].title),
|
||||||
|
h('div.cp-faq-category-questions', questions)
|
||||||
|
]));
|
||||||
|
});
|
||||||
|
var hash = window.location.hash;
|
||||||
|
if (hash) {
|
||||||
|
$(categories).find(hash).click();
|
||||||
|
}
|
||||||
|
return h('div#cp-main', [
|
||||||
|
Pages.infopageTopbar(),
|
||||||
|
h('div.container-fluid.cp-faq', [
|
||||||
|
h('div.container',[
|
||||||
|
h('center', h('h1', Msg.faq_title)),
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
h('div.container.cp-faq-ques-det',[
|
||||||
|
h('div.cp-faq-header.text-center', h('a.nav-item.nav-link', {
|
||||||
|
href: '/what-is-cryptpad.html'
|
||||||
|
}, Pages.setHTML(h('h4'),Msg.faq_whatis))),
|
||||||
|
h('div.cp-faq-container', categories)
|
||||||
|
]),
|
||||||
|
Pages.infopageFooter()
|
||||||
|
]);
|
||||||
|
};
|
||||||
|
|
||||||
|
});
|
||||||
|
|
@ -0,0 +1,115 @@
|
|||||||
|
define([
|
||||||
|
'jquery',
|
||||||
|
'/common/hyperscript.js',
|
||||||
|
'/customize/messages.js',
|
||||||
|
'/customize/application_config.js',
|
||||||
|
'/common/outer/local-store.js',
|
||||||
|
'/customize/pages.js'
|
||||||
|
], function ($, h, Msg, AppConfig, LocalStore, Pages) {
|
||||||
|
var origin = encodeURIComponent(window.location.hostname);
|
||||||
|
var accounts = {
|
||||||
|
donateURL: 'https://accounts.cryptpad.fr/#/donate?on=' + origin,
|
||||||
|
upgradeURL: 'https://accounts.cryptpad.fr/#/?on=' + origin,
|
||||||
|
};
|
||||||
|
return function () {
|
||||||
|
Msg.features_f_apps_note = AppConfig.availablePadTypes.map(function (app) {
|
||||||
|
if (AppConfig.registeredOnlyTypes.indexOf(app) !== -1) { return; }
|
||||||
|
return Msg.type[app];
|
||||||
|
}).filter(function (x) { return x; }).join(', ');
|
||||||
|
var premiumButton = h('a', {
|
||||||
|
href: accounts.upgradeURL,
|
||||||
|
target: '_blank',
|
||||||
|
rel: 'noopener noreferrer'
|
||||||
|
}, h('button.cp-features-register-button', Msg.features_f_subscribe));
|
||||||
|
$(premiumButton).click(function (e) {
|
||||||
|
if (LocalStore.isLoggedIn()) { return; }
|
||||||
|
// Not logged in: go to /login with a redirect to this page
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
sessionStorage.redirectTo = '/features.html';
|
||||||
|
window.location.href = '/login/';
|
||||||
|
});
|
||||||
|
return h('div#cp-main', [
|
||||||
|
Pages.infopageTopbar(),
|
||||||
|
h('div.container-fluid.cp_cont_features',[
|
||||||
|
h('div.container',[
|
||||||
|
h('center', h('h1', Msg.features_title)),
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
h('div.container',[
|
||||||
|
h('div.row.cp-container.cp-features-web.justify-content-sm-center',[
|
||||||
|
h('div.col-12.col-sm-4.cp-anon-user',[
|
||||||
|
h('div.card',[
|
||||||
|
h('div.card-body',[
|
||||||
|
h('h3.text-center',Msg.features_anon)
|
||||||
|
]),
|
||||||
|
h('ul.list-group.list-group-flush',
|
||||||
|
['apps', 'core', 'file0', 'cryptdrive0', 'storage0'].map(function (f) {
|
||||||
|
return h('li.list-group-item', [
|
||||||
|
h('div.cp-check'),
|
||||||
|
h('div.cp-content', [
|
||||||
|
h('div.cp-feature', Msg['features_f_' + f]),
|
||||||
|
h('div.cp-note', Msg['features_f_' + f + '_note'])
|
||||||
|
])
|
||||||
|
]);
|
||||||
|
})
|
||||||
|
),
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
h('div.col-12.col-sm-4.cp-regis-user',[
|
||||||
|
h('div.card',[
|
||||||
|
h('div.card-body',[
|
||||||
|
h('h3.text-center',Msg.features_registered)
|
||||||
|
]),
|
||||||
|
h('ul.list-group.list-group-flush', [
|
||||||
|
['anon', 'social', 'file1', 'cryptdrive1', 'devices', 'storage1'].map(function (f) {
|
||||||
|
return h('li.list-group-item', [
|
||||||
|
h('div.cp-check'),
|
||||||
|
h('div.cp-content', [
|
||||||
|
h('div.cp-feature', Msg['features_f_' + f]),
|
||||||
|
h('div.cp-note', Msg['features_f_' + f + '_note'])
|
||||||
|
])
|
||||||
|
]);
|
||||||
|
}),
|
||||||
|
]),
|
||||||
|
h('div.card-body',[
|
||||||
|
h('div.cp-features-register#cp-features-register', [
|
||||||
|
h('a', {
|
||||||
|
href: '/register/'
|
||||||
|
}, h('button.cp-features-register-button', Msg.features_f_register))
|
||||||
|
]),
|
||||||
|
h('div.cp-note', Msg.features_f_register_note)
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
h('div.col-12.col-sm-4.cp-anon-user',[
|
||||||
|
h('div.card',[
|
||||||
|
h('div.card-body',[
|
||||||
|
h('h3.text-center',Msg.features_premium)
|
||||||
|
]),
|
||||||
|
h('ul.list-group.list-group-flush', [
|
||||||
|
['reg', 'storage2', 'support', 'supporter'].map(function (f) {
|
||||||
|
return h('li.list-group-item', [
|
||||||
|
h('div.cp-check'),
|
||||||
|
h('div.cp-content', [
|
||||||
|
h('div.cp-feature', Msg['features_f_' + f]),
|
||||||
|
h('div.cp-note', Msg['features_f_' + f + '_note'])
|
||||||
|
])
|
||||||
|
]);
|
||||||
|
}),
|
||||||
|
]),
|
||||||
|
h('div.card-body',[
|
||||||
|
h('div.cp-features-register#cp-features-subscribe', [
|
||||||
|
premiumButton
|
||||||
|
]),
|
||||||
|
LocalStore.isLoggedIn() ? undefined : h('div.cp-note', Msg.features_f_subscribe_note)
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
Pages.infopageFooter()
|
||||||
|
]);
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
@ -0,0 +1,148 @@
|
|||||||
|
define([
|
||||||
|
'jquery',
|
||||||
|
'/api/config',
|
||||||
|
'/common/hyperscript.js',
|
||||||
|
'/customize/messages.js',
|
||||||
|
'/customize/application_config.js',
|
||||||
|
'/common/outer/local-store.js',
|
||||||
|
'/customize/pages.js'
|
||||||
|
], function ($, Config, h, Msg, AppConfig, LocalStore, Pages) {
|
||||||
|
var urlArgs = Config.requireConf.urlArgs;
|
||||||
|
|
||||||
|
var isAvailableType = function (x) {
|
||||||
|
if (!Array.isArray(AppConfig.availablePadTypes)) { return true; }
|
||||||
|
return AppConfig.availablePadTypes.indexOf(x) !== -1;
|
||||||
|
};
|
||||||
|
|
||||||
|
var checkRegisteredType = function (x) {
|
||||||
|
// Return true if we're registered or if the app is not registeredOnly
|
||||||
|
if (LocalStore.isLoggedIn()) { return true; }
|
||||||
|
if (!Array.isArray(AppConfig.registeredOnlyTypes)) { return true; }
|
||||||
|
return AppConfig.registeredOnlyTypes.indexOf(x) === -1;
|
||||||
|
};
|
||||||
|
|
||||||
|
return function () {
|
||||||
|
var showingMore = false;
|
||||||
|
|
||||||
|
var icons = [
|
||||||
|
[ 'pad', Msg.main_richTextPad],
|
||||||
|
[ 'code', Msg.main_codePad],
|
||||||
|
[ 'slide', Msg.main_slidePad],
|
||||||
|
[ 'poll', Msg.main_pollPad],
|
||||||
|
[ 'kanban', Msg.main_kanbanPad],
|
||||||
|
[ 'whiteboard', Msg.main_whiteboardPad],
|
||||||
|
[ 'drive', LocalStore.isLoggedIn() ? Msg.main_yourCryptDrive : Msg.main_localPads]
|
||||||
|
].filter(function (x) {
|
||||||
|
return isAvailableType(x[0]) && checkRegisteredType(x[0]);
|
||||||
|
})
|
||||||
|
.map(function (x, i) {
|
||||||
|
var s = 'div.bs-callout.cp-callout-' + x[0];
|
||||||
|
if (i > 2) { s += '.cp-more.cp-hidden'; }
|
||||||
|
var icon = AppConfig.applicationsIcon[x[0]];
|
||||||
|
var font = icon.indexOf('cptools') === 0 ? 'cptools' : 'fa';
|
||||||
|
return h('a', [
|
||||||
|
{ href: '/'+ x[0] +'/' },
|
||||||
|
h(s, [
|
||||||
|
h('i.' + font + '.' + icon),
|
||||||
|
h('div.pad-button-text', [ h('h4', x[1]) ])
|
||||||
|
])
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
var more = icons.length < 4? undefined: h('div.bs-callout.cp-callout-more', [
|
||||||
|
h('div.cp-callout-more-lessmsg.cp-hidden', [
|
||||||
|
"see less ",
|
||||||
|
h('i.fa.fa-caret-up')
|
||||||
|
]),
|
||||||
|
h('div.cp-callout-more-moremsg', [
|
||||||
|
"see more ",
|
||||||
|
h('i.fa.fa-caret-down')
|
||||||
|
]),
|
||||||
|
{
|
||||||
|
onclick: function () {
|
||||||
|
if (showingMore) {
|
||||||
|
$('.cp-more, .cp-callout-more-lessmsg').addClass('cp-hidden');
|
||||||
|
$('.cp-callout-more-moremsg').removeClass('cp-hidden');
|
||||||
|
} else {
|
||||||
|
$('.cp-more, .cp-callout-more-lessmsg').removeClass('cp-hidden');
|
||||||
|
$('.cp-callout-more-moremsg').addClass('cp-hidden');
|
||||||
|
}
|
||||||
|
showingMore = !showingMore;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
var _link = h('a', {
|
||||||
|
href: "https://opencollective.com/cryptpad/contribute",
|
||||||
|
target: '_blank',
|
||||||
|
rel: 'noopener',
|
||||||
|
});
|
||||||
|
|
||||||
|
var crowdFunding = AppConfig.disableCrowdfundingMessages ? undefined : h('button', [
|
||||||
|
Msg.crowdfunding_button
|
||||||
|
]);
|
||||||
|
|
||||||
|
$(crowdFunding).click(function () {
|
||||||
|
_link.click();
|
||||||
|
});
|
||||||
|
|
||||||
|
var blocks = h('div.container',[
|
||||||
|
h('div.row.justify-content-sm-center',[
|
||||||
|
h('div.col-12.col-sm-4.cp-index-block.cp-index-block-host', h('div', [
|
||||||
|
Pages.setHTML(h('span'), Msg.home_host),
|
||||||
|
h('div.cp-img-container', [
|
||||||
|
h('img.agpl', {
|
||||||
|
src: "/customize/images/AGPL.png",
|
||||||
|
title: Msg.home_host_agpl
|
||||||
|
}),
|
||||||
|
h('a.img', {
|
||||||
|
href: 'https://blog.cryptpad.fr/2018/11/13/CryptPad-receives-NGI-Startup-Award/',
|
||||||
|
target: '_blank'
|
||||||
|
}, h('img.ngi', {
|
||||||
|
src: "/customize/images/ngi.png",
|
||||||
|
title: Msg.home_ngi
|
||||||
|
}))
|
||||||
|
])
|
||||||
|
])),
|
||||||
|
h('div.col-12.col-sm-4.cp-index-block.cp-index-block-product', h('div', [
|
||||||
|
Msg.home_product
|
||||||
|
])),
|
||||||
|
h('div.col-12.col-sm-4.cp-index-block.cp-index-block-help', h('div', [
|
||||||
|
Msg.crowdfunding_home1,
|
||||||
|
h('br'),
|
||||||
|
Msg.crowdfunding_home2,
|
||||||
|
h('br'),
|
||||||
|
crowdFunding,
|
||||||
|
_link
|
||||||
|
])),
|
||||||
|
])
|
||||||
|
]);
|
||||||
|
|
||||||
|
return [
|
||||||
|
h('div#cp-main', [
|
||||||
|
Pages.infopageTopbar(),
|
||||||
|
h('div.container.cp-container', [
|
||||||
|
h('div.row', [
|
||||||
|
h('div.cp-title.col-12.col-sm-6', [
|
||||||
|
h('img', { src: '/customize/cryptpad-new-logo-colors-logoonly.png?' + urlArgs }),
|
||||||
|
h('h1', 'CryptPad'),
|
||||||
|
h('p', Msg.main_catch_phrase)
|
||||||
|
]),
|
||||||
|
h('div.col-12.col-sm-6', [
|
||||||
|
icons,
|
||||||
|
more
|
||||||
|
])
|
||||||
|
]),
|
||||||
|
blocks,
|
||||||
|
/*h('div.row', [
|
||||||
|
h('div.cp-crowdfunding', [
|
||||||
|
crowdFunding
|
||||||
|
])
|
||||||
|
])*/
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
Pages.infopageFooter(),
|
||||||
|
];
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
@ -0,0 +1,42 @@
|
|||||||
|
define([
|
||||||
|
'/common/hyperscript.js',
|
||||||
|
'/common/common-interface.js',
|
||||||
|
'/customize/messages.js',
|
||||||
|
'/customize/pages.js'
|
||||||
|
], function (h, UI, Msg, Pages) {
|
||||||
|
return function () {
|
||||||
|
return [h('div#cp-main', [
|
||||||
|
Pages.infopageTopbar(),
|
||||||
|
h('div.container.cp-container', [
|
||||||
|
h('div.row.align-items-center', [
|
||||||
|
h('div#data.hidden.col-md-6', Pages.setHTML(h('p.left'), Msg.main_info)),
|
||||||
|
h('div#userForm.form-group.hidden.col-md-6', [
|
||||||
|
h('input.form-control#name', {
|
||||||
|
name: 'name',
|
||||||
|
type: 'text',
|
||||||
|
autocomplete: 'off',
|
||||||
|
autocorrect: 'off',
|
||||||
|
autocapitalize: 'off',
|
||||||
|
spellcheck: false,
|
||||||
|
placeholder: Msg.login_username,
|
||||||
|
autofocus: true,
|
||||||
|
}),
|
||||||
|
h('input.form-control#password', {
|
||||||
|
type: 'password',
|
||||||
|
'name': 'password',
|
||||||
|
placeholder: Msg.login_password,
|
||||||
|
}),
|
||||||
|
h('div.checkbox-container', [
|
||||||
|
UI.createCheckbox('import-recent', Msg.register_importRecent),
|
||||||
|
]),
|
||||||
|
h('div.extra', [
|
||||||
|
h('button.login.first.btn', Msg.login_login)
|
||||||
|
])
|
||||||
|
])
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
Pages.infopageFooter(),
|
||||||
|
])];
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
@ -0,0 +1,46 @@
|
|||||||
|
define([
|
||||||
|
'/common/hyperscript.js',
|
||||||
|
'/customize/messages.js',
|
||||||
|
'/customize/pages.js'
|
||||||
|
], function (h, Msg, Pages) {
|
||||||
|
return function () {
|
||||||
|
return h('div#cp-main', [
|
||||||
|
Pages.infopageTopbar(),
|
||||||
|
h('.container-fluid.cp-privacy-top', [
|
||||||
|
h('div.container',[
|
||||||
|
h('center', h('h1', Msg.policy_title)),
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
h('div.container.cp-container.cp-privacy',[
|
||||||
|
h('h3', Msg.policy_whatweknow),
|
||||||
|
h('hr'),
|
||||||
|
Pages.setHTML(h('p'), Msg.policy_whatweknow_p1),
|
||||||
|
|
||||||
|
h('h3', Msg.policy_howweuse),
|
||||||
|
h('hr'),
|
||||||
|
h('p', Msg.policy_howweuse_p1),
|
||||||
|
h('p', Msg.policy_howweuse_p2),
|
||||||
|
|
||||||
|
h('h3', Msg.policy_whatwetell),
|
||||||
|
h('hr'),
|
||||||
|
h('p', Msg.policy_whatwetell_p1),
|
||||||
|
|
||||||
|
h('h3', Msg.policy_links),
|
||||||
|
h('hr'),
|
||||||
|
h('p', Msg.policy_links_p1),
|
||||||
|
|
||||||
|
h('h3', Msg.policy_ads),
|
||||||
|
h('hr'),
|
||||||
|
h('p', Msg.policy_ads_p1),
|
||||||
|
|
||||||
|
h('h3', Msg.policy_choices),
|
||||||
|
h('hr'),
|
||||||
|
h('p', Msg.policy_choices_open),
|
||||||
|
Pages.setHTML(h('p'), Msg.policy_choices_vpn),
|
||||||
|
]),
|
||||||
|
Pages.infopageFooter()
|
||||||
|
]);
|
||||||
|
};
|
||||||
|
|
||||||
|
});
|
||||||
|
|
@ -0,0 +1,69 @@
|
|||||||
|
define([
|
||||||
|
'jquery',
|
||||||
|
'/common/hyperscript.js',
|
||||||
|
'/common/common-interface.js',
|
||||||
|
'/customize/messages.js',
|
||||||
|
'/customize/pages.js'
|
||||||
|
], function ($, h, UI, Msg, Pages) {
|
||||||
|
return function () {
|
||||||
|
return [h('div#cp-main', [
|
||||||
|
Pages.infopageTopbar(),
|
||||||
|
h('div.container-fluid.cp-register-wel',[
|
||||||
|
h('div.container',[
|
||||||
|
h('div.row',[
|
||||||
|
h('div.col-12',[
|
||||||
|
h('h1.text-center', Msg.register_header)
|
||||||
|
])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
]),
|
||||||
|
h('div.container.cp-container', [
|
||||||
|
h('div.row.cp-register-det', [
|
||||||
|
h('div#data.hidden.col-md-6', [
|
||||||
|
Pages.setHTML(h('p.register-explanation'), Msg.register_explanation)
|
||||||
|
]),
|
||||||
|
h('div#userForm.form-group.hidden.col-md-6', [
|
||||||
|
h('a', {
|
||||||
|
href: '/features.html'
|
||||||
|
}, Msg.register_whyRegister),
|
||||||
|
h('input.form-control#username', {
|
||||||
|
type: 'text',
|
||||||
|
autocomplete: 'off',
|
||||||
|
autocorrect: 'off',
|
||||||
|
autocapitalize: 'off',
|
||||||
|
spellcheck: false,
|
||||||
|
placeholder: Msg.login_username,
|
||||||
|
autofocus: true,
|
||||||
|
}),
|
||||||
|
h('input.form-control#password', {
|
||||||
|
type: 'password',
|
||||||
|
placeholder: Msg.login_password,
|
||||||
|
}),
|
||||||
|
h('input.form-control#password-confirm', {
|
||||||
|
type: 'password',
|
||||||
|
placeholder: Msg.login_confirm,
|
||||||
|
}),
|
||||||
|
h('div.checkbox-container', [
|
||||||
|
UI.createCheckbox('import-recent', Msg.register_importRecent, true)
|
||||||
|
]),
|
||||||
|
h('div.checkbox-container', [
|
||||||
|
$(UI.createCheckbox('accept-terms')).find('.cp-checkmark-label').append(Msg.register_acceptTerms).parent()[0]
|
||||||
|
]),
|
||||||
|
h('button#register.btn.cp-login-register', Msg.login_register)
|
||||||
|
])
|
||||||
|
]),
|
||||||
|
h('div.row.cp-register-test',[
|
||||||
|
h('hr'),
|
||||||
|
h('div.col-12', [
|
||||||
|
Pages.setHTML(h('p.test-details'), " \"Tools like Etherpad and Google Docs [...] all share a weakness, which is that whomever owns the document server can see everything you're typing. Cryptpad is a free/open project that uses some of the ideas behind blockchain to implement a \"zero-knowledge\" version of a collaborative document editor, ensuring that only the people working on a document can see it.\" "),
|
||||||
|
h('a.cp-test-source.pull-right', { href : 'http://boingboing.net/2016/09/26/cryptpad-a-freeopen-end-to.html'}, "Cory Doctorow")
|
||||||
|
])
|
||||||
|
])
|
||||||
|
]),
|
||||||
|
|
||||||
|
Pages.infopageFooter(),
|
||||||
|
])];
|
||||||
|
};
|
||||||
|
|
||||||
|
});
|
||||||
|
|
@ -0,0 +1,21 @@
|
|||||||
|
define([
|
||||||
|
'/common/hyperscript.js',
|
||||||
|
'/customize/messages.js',
|
||||||
|
'/customize/pages.js'
|
||||||
|
], function (h, Msg, Pages) {
|
||||||
|
return function () {
|
||||||
|
return h('div#cp-main', [
|
||||||
|
Pages.infopageTopbar(),
|
||||||
|
h('div.container.cp-container', [
|
||||||
|
h('center', h('h1', Msg.tos_title)),
|
||||||
|
h('p', Msg.tos_legal),
|
||||||
|
h('p', Msg.tos_availability),
|
||||||
|
h('p', Msg.tos_e2ee),
|
||||||
|
h('p', Msg.tos_logs),
|
||||||
|
h('p', Msg.tos_3rdparties),
|
||||||
|
]),
|
||||||
|
Pages.infopageFooter()
|
||||||
|
]);
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
@ -0,0 +1,64 @@
|
|||||||
|
define([
|
||||||
|
'/api/config',
|
||||||
|
'/common/hyperscript.js',
|
||||||
|
'/customize/messages.js',
|
||||||
|
'/customize/pages.js'
|
||||||
|
], function (Config, h, Msg, Pages) {
|
||||||
|
var urlArgs = Config.requireConf.urlArgs;
|
||||||
|
return function () {
|
||||||
|
return h('div#cp-main', [
|
||||||
|
Pages.infopageTopbar(),
|
||||||
|
h('div.container-fluid.cp-what-is',[
|
||||||
|
h('div.container',[
|
||||||
|
h('div.row',[
|
||||||
|
h('div.col-12.text-center', h('h1', Msg.whatis_title)),
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
h('div.container.cp-container', [
|
||||||
|
h('div.row.align-items-center', [
|
||||||
|
h('div.col-12.col-sm-12.col-md-12.col-lg-6', [
|
||||||
|
Pages.setHTML(h('h2'), Msg.whatis_collaboration),
|
||||||
|
Pages.setHTML(h('p'), Msg.whatis_collaboration_p1),
|
||||||
|
Pages.setHTML(h('p'), Msg.whatis_collaboration_p2),
|
||||||
|
Pages.setHTML(h('p'), Msg.whatis_collaboration_p3),
|
||||||
|
]),
|
||||||
|
h('div.col-12.col-sm-12.col-md-12.col-lg-6', [
|
||||||
|
h('img', { src: '/customize/images/pad_screenshot.png?' + urlArgs }),
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
h('div.row.align-items-center', [
|
||||||
|
h('div.col-12.col-sm-12.col-md-12.col-lg-6.order-2', [
|
||||||
|
Pages.setHTML(h('h2'), Msg.whatis_zeroknowledge),
|
||||||
|
Pages.setHTML(h('p'), Msg.whatis_zeroknowledge_p1),
|
||||||
|
Pages.setHTML(h('p'), Msg.whatis_zeroknowledge_p2),
|
||||||
|
Pages.setHTML(h('p'), Msg.whatis_zeroknowledge_p3),
|
||||||
|
]),
|
||||||
|
h('div.col-12.col-sm-12.col-md-12.col-lg-6.order-1', [
|
||||||
|
h('img#zeroknowledge', { src: '/customize/images/zeroknowledge_small.png?' + urlArgs }),
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
h('div.row.align-items-center', [
|
||||||
|
h('div.col-12.col-sm-12.col-md-12.col-lg-6', [
|
||||||
|
Pages.setHTML(h('h2'), Msg.whatis_drive),
|
||||||
|
Pages.setHTML(h('p'), Msg.whatis_drive_p1),
|
||||||
|
Pages.setHTML(h('p'), Msg.whatis_drive_p2),
|
||||||
|
Pages.setHTML(h('p'), Msg.whatis_drive_p3),
|
||||||
|
]),
|
||||||
|
h('div.col-12.col-sm-12.col-md-12.col-lg-6', [
|
||||||
|
h('img', { src: '/customize/images/drive_screenshot.png?' + urlArgs }),
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
h('div.row.align-items-center', [
|
||||||
|
h('div.col-12', [
|
||||||
|
Pages.setHTML(h('h2.text-center'), Msg.whatis_business),
|
||||||
|
Pages.setHTML(h('p'), Msg.whatis_business_p1),
|
||||||
|
Pages.setHTML(h('p'), Msg.whatis_business_p2),
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
Pages.infopageFooter(),
|
||||||
|
]);
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
@ -0,0 +1,34 @@
|
|||||||
|
.cursor_main() {
|
||||||
|
// CodeMirror
|
||||||
|
.cp-codemirror-cursor {
|
||||||
|
cursor: default;
|
||||||
|
background-color: red;
|
||||||
|
background-clip: padding-box;
|
||||||
|
padding: 0 1px;
|
||||||
|
border: 2px solid red;
|
||||||
|
border-right-color: transparent !important;
|
||||||
|
border-left-color: transparent !important;
|
||||||
|
}
|
||||||
|
.cp-codemirror-selection {
|
||||||
|
background-color: rgba(255,0,0,0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tippy
|
||||||
|
.cp-cursor-avatar {
|
||||||
|
@size: 32px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
media-tag {
|
||||||
|
min-height: @size;
|
||||||
|
max-height: @size;
|
||||||
|
min-width: @size;
|
||||||
|
max-width: @size;
|
||||||
|
margin-right: 10px;
|
||||||
|
img {
|
||||||
|
border-radius: 4px;
|
||||||
|
max-height: 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,382 @@
|
|||||||
|
@import (reference) './avatar.less';
|
||||||
|
@import (reference) "./colortheme-all.less";
|
||||||
|
|
||||||
|
.messenger_main() {
|
||||||
|
--LessLoader_require: LessLoader_currentFile();
|
||||||
|
};
|
||||||
|
& {
|
||||||
|
@keyframes example {
|
||||||
|
0% {
|
||||||
|
background: rgba(0,0,0,0.1);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
background: rgba(0,0,0,0.3);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
background: rgba(0,0,0,0.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@button-border: 2px;
|
||||||
|
@bg-color: @colortheme_friends-bg;
|
||||||
|
@color: @colortheme_friends-color;
|
||||||
|
@room-height: 48px;
|
||||||
|
|
||||||
|
#cp-app-contacts-container {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
min-height: 0;
|
||||||
|
&.ready {
|
||||||
|
background-size: cover;
|
||||||
|
background-position: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.cp-app-contacts-spinner {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cp-app-contacts-initializing {
|
||||||
|
.cp-app-contacts-spinner {
|
||||||
|
color: white;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.cp-app-contacts-info {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#cp-app-contacts-friendlist,
|
||||||
|
#cp-app-contacts-messaging {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#cp-app-contacts-friendlist {
|
||||||
|
width: 200px;
|
||||||
|
height: 100%;
|
||||||
|
background-color: lighten(@bg-color, 10%);
|
||||||
|
overflow-y: auto;
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column;
|
||||||
|
.cp-app-contacts-friend {
|
||||||
|
background: rgba(0,0,0,0.1);
|
||||||
|
padding: 5px;
|
||||||
|
margin: 10px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
cursor: pointer;
|
||||||
|
position: relative;
|
||||||
|
height: @room-height;
|
||||||
|
.cp-app-contacts-right-col {
|
||||||
|
margin-left: 5px;
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column;
|
||||||
|
flex: 1;
|
||||||
|
min-width: 0;
|
||||||
|
.cp-app-contacts-name {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&:hover {
|
||||||
|
background-color: rgba(0,0,0,0.3);
|
||||||
|
}
|
||||||
|
&.cp-app-contacts-notify {
|
||||||
|
animation: example 2s ease-in-out infinite;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.cp-app-contacts-remove {
|
||||||
|
cursor: pointer;
|
||||||
|
width: 20px;
|
||||||
|
&:hover {
|
||||||
|
color: darken(@color, 20%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.cp-app-contacts-category {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column;
|
||||||
|
flex-grow: 0;
|
||||||
|
flex-shrink: 0;
|
||||||
|
.cp-app-contacts-category-title {
|
||||||
|
order: 1;
|
||||||
|
font-size: 18px;
|
||||||
|
margin: 0px 5px;
|
||||||
|
text-align: center;
|
||||||
|
background: rgba(0,0,0,0.1);
|
||||||
|
font-weight: bold;
|
||||||
|
height: 22px;
|
||||||
|
line-height: 22px;
|
||||||
|
}
|
||||||
|
.cp-app-contacts-category-content {
|
||||||
|
order: 2;
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column-reverse;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
&:empty {
|
||||||
|
display: none;
|
||||||
|
& ~ .cp-app-contacts-category-title {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#cp-app-contacts-container.cp-app-contacts-inapp {
|
||||||
|
#cp-app-contacts-friendlist {
|
||||||
|
display: none;
|
||||||
|
/*
|
||||||
|
transition: width 0.2s ease-in-out 0.2s;
|
||||||
|
width: 68px;
|
||||||
|
.cp-app-contacts-friend {
|
||||||
|
.cp-app-contacts-right-col {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.cp-app-contacts-category-title {
|
||||||
|
transition: font-size 0.2s ease-in-out 0.2s;
|
||||||
|
margin: 0px 2px;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
&:hover {
|
||||||
|
transition-delay: 1.5s;
|
||||||
|
width: 200px !important;
|
||||||
|
.cp-app-contacts-category-title {
|
||||||
|
transition-delay: 1.5s;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#cp-app-contacts-friendlist .cp-app-contacts-friend, #cp-app-contacts-messaging .cp-avatar {
|
||||||
|
.avatar_main(30px);
|
||||||
|
&.cp-avatar {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
cursor: pointer;
|
||||||
|
color: @color;
|
||||||
|
media-tag {
|
||||||
|
img {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
media-tag, .cp-avatar-default {
|
||||||
|
//margin-right: 5px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
z-index: 1;
|
||||||
|
margin: 4px;
|
||||||
|
}
|
||||||
|
.cp-app-contacts-status {
|
||||||
|
//width: 5px;
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
//right: 0;
|
||||||
|
//top: 0;
|
||||||
|
//bottom: 0;
|
||||||
|
//opacity: 0.7;
|
||||||
|
//background-color: #777;
|
||||||
|
|
||||||
|
/* width: (@room-height - 6px);
|
||||||
|
top: 3px;
|
||||||
|
bottom: 3px;
|
||||||
|
left: 3px;
|
||||||
|
border-radius: 100%;
|
||||||
|
*/
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
border-bottom-left-radius: 100%;
|
||||||
|
|
||||||
|
&.cp-app-contacts-online {
|
||||||
|
//background-color: green;
|
||||||
|
//background-color: white;
|
||||||
|
background-color: #c5ffa8;
|
||||||
|
}
|
||||||
|
&.cp-app-contacts-offline {
|
||||||
|
display: none;
|
||||||
|
//background-color: red;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.placeholder (@color: #bbb) {
|
||||||
|
&::-webkit-input-placeholder { /* WebKit, Blink, Edge */
|
||||||
|
color: @color;
|
||||||
|
}
|
||||||
|
&:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
|
||||||
|
color: @color;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
&::-moz-placeholder { /* Mozilla Firefox 19+ */
|
||||||
|
color: @color;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
&:-ms-input-placeholder { /* Internet Explorer 10-11 */
|
||||||
|
color: @color;
|
||||||
|
}
|
||||||
|
&::-ms-input-placeholder { /* Microsoft Edge */
|
||||||
|
color: @color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#cp-app-contacts-messaging {
|
||||||
|
flex: 1;
|
||||||
|
height: 100%;
|
||||||
|
background-color: lighten(@bg-color, 20%);
|
||||||
|
min-width: 0;
|
||||||
|
|
||||||
|
.cp-app-contacts-info {
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
.cp-app-contacts-header {
|
||||||
|
background-color: lighten(@bg-color, 15%);
|
||||||
|
padding: 0;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
height: 50px;
|
||||||
|
|
||||||
|
.hover () {
|
||||||
|
height: 100%;
|
||||||
|
line-height: 30px;
|
||||||
|
padding: 10px;
|
||||||
|
&:hover {
|
||||||
|
background-color: rgba(50,50,50,0.3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.cp-avatar,
|
||||||
|
.cp-app-contacts-right-col {
|
||||||
|
flex: 1 1 auto;
|
||||||
|
}
|
||||||
|
.cp-app-contacts-remove-history {
|
||||||
|
.hover;
|
||||||
|
}
|
||||||
|
.cp-avatar {
|
||||||
|
margin: 10px;
|
||||||
|
}
|
||||||
|
.cp-app-contacts-more-history {
|
||||||
|
//display: none;
|
||||||
|
.hover;
|
||||||
|
&.cp-app-contacts-faded {
|
||||||
|
color: darken(@bg-color, 5%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.cp-app-contacts-header-title {
|
||||||
|
padding: 10px;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.cp-app-contacts-tips {
|
||||||
|
margin: 1em;
|
||||||
|
background-color: lighten(@bg-color, 15%);
|
||||||
|
font-size: 14px;
|
||||||
|
padding: 10px;
|
||||||
|
position: relative;
|
||||||
|
.cp-app-contacts-tips-close {
|
||||||
|
cursor: pointer;
|
||||||
|
position: absolute;
|
||||||
|
top: 2px;
|
||||||
|
right: 2px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.cp-app-contacts-chat {
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column;
|
||||||
|
.cp-app-contacts-messages {
|
||||||
|
padding: 0 20px;
|
||||||
|
margin: 10px 0;
|
||||||
|
flex: 1;
|
||||||
|
overflow-x: auto;
|
||||||
|
.cp-app-contacts-message {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
& > div {
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
.cp-app-contacts-content {
|
||||||
|
overflow: hidden;
|
||||||
|
word-wrap: break-word;
|
||||||
|
&> * {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
flex: 1;
|
||||||
|
min-width: 70%;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.cp-app-contacts-date {
|
||||||
|
display: none;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
.cp-app-contacts-sender {
|
||||||
|
margin-top: 10px;
|
||||||
|
font-weight: bold;
|
||||||
|
background-color: rgba(0,0,0,0.1);
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.cp-app-contacts-time {
|
||||||
|
display: none;
|
||||||
|
font-size: 0.8em;
|
||||||
|
align-items: center;
|
||||||
|
color: @color;
|
||||||
|
font-weight: bold;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
background: rgba(0,0,0,0.3);
|
||||||
|
border-top-left-radius: 50%;
|
||||||
|
border-bottom-left-radius: 50%;
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
&:hover {
|
||||||
|
.cp-app-contacts-time {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.cp-app-contacts-input {
|
||||||
|
background-color: lighten(@bg-color, 15%);
|
||||||
|
height: auto;
|
||||||
|
min-height: 50px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 0 5%;
|
||||||
|
textarea {
|
||||||
|
margin: 5px 0;
|
||||||
|
padding: 5px 10px;
|
||||||
|
border: none;
|
||||||
|
height: 54px; // 2 lines (22px height) + 2 margins (5px)
|
||||||
|
flex: 1;
|
||||||
|
background-color: darken(@bg-color, 10%);
|
||||||
|
color: @color;
|
||||||
|
resize: none;
|
||||||
|
overflow-y: auto;
|
||||||
|
.placeholder(#bbb);
|
||||||
|
&[disabled="true"] {
|
||||||
|
.placeholder(#999);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
button {
|
||||||
|
height: 54px;
|
||||||
|
border-radius: 0;
|
||||||
|
border: none;
|
||||||
|
background-color: darken(@bg-color, 15%);
|
||||||
|
&:hover {
|
||||||
|
background-color: darken(@bg-color, 20%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
@ -1,578 +1,14 @@
|
|||||||
define(function () {
|
/*
|
||||||
var out = {};
|
* You can override the translation text using this file.
|
||||||
|
* The recommended method is to make a copy of this file (/customize.dist/translations/messages.{LANG}.js)
|
||||||
out._languageName = 'Español';
|
in a 'customize' directory (/customize/translations/messages.{LANG}.js).
|
||||||
|
* If you want to check all the existing translation keys, you can open the internal language file
|
||||||
out.main_title = "Cryptpad: Zero Knowledge, Editor Colaborativo en Tiempo Real";
|
but you should not change it directly (/common/translations/messages.{LANG}.js)
|
||||||
out.main_slogan = "La unidad es la fuerza - la colaboración es la clave";
|
*/
|
||||||
|
define(['/common/translations/messages.es.js'], function (Messages) {
|
||||||
out.type = {};
|
// Replace the existing keys in your copied file here:
|
||||||
out.type.pad = 'Pad';
|
// Messages.button_newpad = "New Rich Text Document";
|
||||||
out.type.code = 'Código';
|
|
||||||
out.type.poll = 'Encuesta';
|
return Messages;
|
||||||
out.type.slide = 'Presentación';
|
|
||||||
out.type.whiteboard = 'Pizarra';
|
|
||||||
out.type.contacts = 'Contactos';
|
|
||||||
|
|
||||||
out.disconnected = "Desconectado";
|
|
||||||
out.synchronizing = "Sincronización";
|
|
||||||
out.reconnecting = "Reconectando...";
|
|
||||||
out.lag = "Retraso";
|
|
||||||
out.readonly = 'Sólo lectura';
|
|
||||||
out.anonymous = 'Anónimo';
|
|
||||||
out.yourself = "Tú mismo";
|
|
||||||
out.anonymousUsers = "usuarios anónimos";
|
|
||||||
out.anonymousUser = "usuario anónimo";
|
|
||||||
out.users = "Usuarios";
|
|
||||||
out.and = "y";
|
|
||||||
out.viewer = "espectador";
|
|
||||||
out.viewers = "espectadores";
|
|
||||||
out.editor = "editor";
|
|
||||||
out.editors = "editores";
|
|
||||||
|
|
||||||
out.greenLight = "Todo funciona bien";
|
|
||||||
out.orangeLight = "La conexión es lenta y podría afectar la experiencia";
|
|
||||||
out.redLight = "Has sido desconectado de la sesión";
|
|
||||||
|
|
||||||
out.importButtonTitle = 'Importar un documento de tus archivos locales';
|
|
||||||
|
|
||||||
out.exportButtonTitle = 'Exportar este documento a un archivo local';
|
|
||||||
out.exportPrompt = '¿Cómo te gustaría llamar a este archivo?';
|
|
||||||
|
|
||||||
out.changeNamePrompt = 'Cambiar tu nombre (dejar vacío para ser anónimo): ';
|
|
||||||
|
|
||||||
out.clickToEdit = "Haz clic para cambiar";
|
|
||||||
|
|
||||||
out.forgetButtonTitle = 'Eliminar este documento de la lista en la pagina de inicio';
|
|
||||||
out.forgetPrompt = 'Pulsar OK eliminará este documento del almacenamiento local (localStorage), ¿estás seguro?';
|
|
||||||
|
|
||||||
out.shareButton = 'Compartir';
|
|
||||||
out.shareSuccess = 'URL copiada al portapapeles';
|
|
||||||
|
|
||||||
out.presentButtonTitle = "Entrar en el modo presentación";
|
|
||||||
|
|
||||||
out.backgroundButtonTitle = 'Cambiar el color de fondo en el modo presentación';
|
|
||||||
out.colorButtonTitle = 'Cambiar el color de texto en el modo presentación';
|
|
||||||
|
|
||||||
out.editShare = "URL de edición compartida";
|
|
||||||
out.editShareTitle = "Copiar la URL de edición al portapapeles";
|
|
||||||
out.viewShare = "Compartir URL de sólo lectura";
|
|
||||||
out.viewShareTitle = "Copiar la URL de sólo lectura al portapapeles";
|
|
||||||
out.viewOpen = "Ver en pestaña nueva";
|
|
||||||
out.viewOpenTitle = "Abrir el documento en sólo lectura en una pestaña nueva";
|
|
||||||
|
|
||||||
out.notifyJoined = "{0} se ha unido a la sesión de colaboración";
|
|
||||||
out.notifyRenamed = "{0} ahora se conoce como {1}";
|
|
||||||
out.notifyLeft = "{0} ha dejado la sesión de colaboración";
|
|
||||||
|
|
||||||
out.tryIt = '¡Pruébalo!';
|
|
||||||
|
|
||||||
out.okButton = 'OK (Enter)';
|
|
||||||
out.cancelButton = 'Cancelar (Esc)';
|
|
||||||
|
|
||||||
// Polls
|
|
||||||
|
|
||||||
out.poll_title = "Selector de fecha Zero Knowledge";
|
|
||||||
out.poll_subtitle = "Agenda en <em>tiempo real</em> Zero Knowledge";
|
|
||||||
|
|
||||||
out.poll_p_save = "Tus configuraciones se actualizan instantáneamente, no es necesario guardar cambios.";
|
|
||||||
out.poll_p_encryption = "Todos los datos entrados son cifrados, sólo las personas que poseen el enlace tienen acceso. Incluso el servidor no puede ver el contenido.";
|
|
||||||
|
|
||||||
out.wizardLog = "Presiona el botón en la parte superior izquierda para volver a la encuesta";
|
|
||||||
out.wizardTitle = "Utiliza el asistente para crear tu encuesta";
|
|
||||||
out.wizardConfirm = "¿Estás realmente seguro de agregar estas opciones a tu encuesta?";
|
|
||||||
|
|
||||||
out.poll_closeWizardButton = "Cerrar el asistente";
|
|
||||||
out.poll_closeWizardButtonTitle = "Cerrar el asistente";
|
|
||||||
out.poll_wizardComputeButton = "Generar opciones";
|
|
||||||
out.poll_wizardClearButton = "Limpiar tabla";
|
|
||||||
out.poll_wizardDescription = "Crear opciones automáticamente ingresando cualquier cantidad de fechas y horas";
|
|
||||||
out.poll_wizardAddDateButton = "+ Fechas";
|
|
||||||
out.poll_wizardAddTimeButton = "+ Horas";
|
|
||||||
|
|
||||||
out.poll_optionPlaceholder = "Opción";
|
|
||||||
out.poll_userPlaceholder = "Tu nombre";
|
|
||||||
out.poll_removeOption = "¿Estás seguro de que quieres eliminar esta opción?";
|
|
||||||
out.poll_removeUser = "¿Estás seguro de que quieres eliminar este usuario?";
|
|
||||||
|
|
||||||
out.poll_titleHint = "Título";
|
|
||||||
out.poll_descriptionHint = "Descripción";
|
|
||||||
|
|
||||||
// index.html
|
|
||||||
|
|
||||||
out.main_p2 = 'Este proyecto utiliza el editor de texto visual <a href="http://ckeditor.com/">CKEditor</a>, <a href="https://codemirror.net/">CodeMirror</a>, y el motor en tiempo real <a href="https://github.com/xwiki-contrib/chainpad">ChainPad</a>.';
|
|
||||||
out.main_howitworks = '¿Cómo funciona?';
|
|
||||||
out.main_howitworks_p1 = "CryptPad utiliza una variante del algoritmo de <a href='https://en.wikipedia.org/wiki/Operational_transformation'>transformación operacional</a> (página en inglés) que es capaz de encontrar un consenso distribuido usando un <a href='https://bitcoin.org/bitcoin.pdf'>Blockchain Nakamoto</a> (página en inglés), popularizado por <a href='https://es.wikipedia.org/wiki/Bitcoin'>Bitcoin</a>. De esta manera el algoritmo puede evitar la necesidad de un servidor central para resolver conflictos de edición de la transformación operacional y sin necesidad de resolver conflictos, el servidor puede mantenerse inconsciente del contenido que se está editando en el pad.";
|
|
||||||
out.main_about_p2 = 'Si tienes preguntas o comentarios, puedes <a href="https://twitter.com/cryptpad"><i class="fa fa-twitter"></i>enviarnos un tweet</a>, abrir un issue <a href="https://github.com/xwiki-labs/cryptpad/issues/" title="nuestro issue tracker">en <i class="fa fa-github"></i>GitHub</a>. saludarnos en <a href="https://riot.im/app/#/room/#cryptpad:matrix.org" title="Matrix">nuestro <i class="fa fa-comment"></i>canal Matrix</a> o en IRC (#cryptpad on irc.freenode.net), o <a href="mailto:research@xwiki.com"><i class="fa fa-envelope"></i>envianos un email</a>.';
|
|
||||||
|
|
||||||
out.button_newpad = 'Crear nuevo pad de texto enriquecido';
|
|
||||||
out.button_newcode = 'Crear nuevo pad de código';
|
|
||||||
out.button_newpoll = 'Crear nueva encuesta';
|
|
||||||
out.button_newslide = 'Crear nueva presentación';
|
|
||||||
|
|
||||||
// privacy.html
|
|
||||||
|
|
||||||
out.policy_title = 'Política de privacidad Cryptpad';
|
|
||||||
out.policy_whatweknow = 'Qué sabemos sobre tí';
|
|
||||||
out.policy_whatweknow_p1 = 'Como cualquier aplicación que está en la red, Cryptpad tiene acceso a los metadatos expuestos por el protocolo HTTP. Esto incluye tu dirección IP, y otros headers HTTP que pueden ser utilizados para identificar a tu navegador propio. Puedes ver la información que comparte tu navegador visitando <a target="_blank" rel="noopener noreferrer" href="https://www.whatismybrowser.com/detect/what-http-headers-is-my-browser-sending" title="Qué headers HTTP esta compartiendo mi navegador">WhatIsMyBrowser.com</a> (página en inglés).';
|
|
||||||
out.policy_whatweknow_p2 = 'Nosotros usamos <a href="https://piwik.org/" target="_blank" rel="noopener noreferrer" title="open source analytics platform">Piwik</a>, una plataforma de analítica de datos abierta, para conocer mejor a nuestros usuarios. Piwik nos dice como encontraste Cryptpad, en entrada manual, por un motor de búsqueda, or por referal de otra página como Reddit o Twitter. También aprendemos cuándo visitas, qué páginas ves en nuestra web, y cuánto tiempo te quedas en cada una.';
|
|
||||||
out.policy_howweuse = 'Cómo usamos lo que aprendemos';
|
|
||||||
out.policy_howweuse_p1 = 'Usamos esta información para tomar mejores decisiones para promocionar Cryptpad, para evaluar cuáles de nuestros esfuerzos han sido exitosos. La información sobre tu ubicación nos permite saber si deberíamos considerar mejor soporte para idiomas diferentes al inglés.';
|
|
||||||
out.policy_howweuse_p2 = "La información sobre tu navegador (en escritorio o móvil) nos ayuda a saber qué características que debemos mejorar. Nuestro equipo de desarrollo es pequeño, e intentamos tomar decisiones que beneficien a la experiencia de la mayoría de nuestros usuarios.";
|
|
||||||
out.policy_whatwetell = 'Lo que decimos a otros sobre tí';
|
|
||||||
out.policy_whatwetell_p1 = 'No suministramos la información que recolectamos a terceros a menos de estar legalmente obligados a hacerlo.';
|
|
||||||
out.policy_links = 'Enlaces a otras páginas';
|
|
||||||
out.policy_links_p1 = 'Esta web contiene enlaces a otros sitios, incluyendo algunos producidos por otras organizaciones. No somos responsables del tratamiento de la privacidad de los datos ni el contenido de páginas externas. Como regla general, los enlaces externos se abren en una nueva pestaña del navegador, para clarificar que estás abandonando a Cryptpad.fr.';
|
|
||||||
out.policy_ads = 'Anuncios';
|
|
||||||
out.policy_ads_p1 = 'Nosotros no mostramos anuncios, pero podemos poner enlaces a las organizaciones que financian nuestro trabajo de investigación.';
|
|
||||||
out.policy_choices = 'Lo que puedes hacer';
|
|
||||||
out.policy_choices_open = 'Nuestro código fuente es abierto para que siempre tengas la opción de desplegar tu propia instancia de Cryptpad.';
|
|
||||||
out.policy_choices_vpn = 'Si deseas utilizar nuestra instancia, pero no deseas exponer tu dirección IP, puedes protegerla utilizando <a href="https://www.torproject.org/projects/torbrowser.html.en" title="descargas Tor project" target="_blank" rel="noopener noreferrer">el navegador Tor</a>, o un <a href="https://riseup.net/en/vpn" title="VPNs por Riseup" target="_blank" rel="noopener noreferrer">VPN</a>.';
|
|
||||||
out.policy_choices_ads = 'Si deseas no ser seguido por nuestra plataforma, puedes utilizar herramientas como <a href="https://www.eff.org/privacybadger" title="descargar a Privacy Badger" target="_blank" rel="noopener noreferrer">Privacy Badger</a>.';
|
|
||||||
|
|
||||||
// terms.html
|
|
||||||
|
|
||||||
out.tos_title = "Condiciones de servicio Cryptpad";
|
|
||||||
out.tos_legal = "Por favor, no seas malicioso, abusivo o hagas algo ilegal.";
|
|
||||||
out.tos_availability = "Esperamos que este servicio te parezca útil, pero nuestra disponibilidad o rendimiento no pueden ser garantizados. Por favor, exporta tus datos regularmente.";
|
|
||||||
out.tos_e2ee = "Los documentos Cryptpad pueden ser leídos o modificados por cualquiera que pueda adivinar o que pueda tener el enlace. Recomendamos que utilices mensajes cifrados de punto a punto (e2ee) para compartir URLs, no asumimos ninguna responsabilidad en el evento de alguna fuga.";
|
|
||||||
out.tos_logs = "Los metadatos entregados por el navegador al servidor pueden ser almacenados para la mantenencia del servicio.";
|
|
||||||
out.tos_3rdparties = "No proveemos datos individualizados a terceros a menos de ser obligados por la ley.";
|
|
||||||
|
|
||||||
// BottomBar.html
|
|
||||||
|
|
||||||
out.bottom_france = '<a href="http://www.xwiki.com/" target="_blank" rel="noopener noreferrer">Hecho con <img class="bottom-bar-heart" src="/customize/heart.png" alt="amor" /> en <img class="bottom-bar-fr" src="/customize/fr.png" alt="Francia" /></a>';
|
|
||||||
out.bottom_support = '<a href="http://labs.xwiki.com/" title="XWiki Labs" target="_blank" rel="noopener noreferrer">Un <img src="/customize/logo-xwiki2.png" alt="XWiki SAS" class="bottom-bar-xwiki"/>Proyecto Labs</a> con el soporte de <a href="http://ng.open-paas.org/" title="OpenPaaS::ng" target="_blank" rel="noopener noreferrer"><img src="/customize/openpaasng.png" alt="OpenPaaS-ng" class="bottom-bar-openpaas" /></a>';
|
|
||||||
|
|
||||||
// Header.html
|
|
||||||
|
|
||||||
out.header_france = '<a href="http://www.xwiki.com/" target="_blank" rel="noopener noreferrer">Con <img class="bottom-bar-heart" src="/customize/heart.png" alt="amor" /> de <img class="bottom-bar-fr" src="/customize/fr.png" title="France" alt="Francia"/> por <img src="/customize/logo-xwiki.png" alt="XWiki SAS" class="bottom-bar-xwiki"/></a>';
|
|
||||||
out.header_support = '<a href="http://ng.open-paas.org/" title="OpenPaaS::ng" target="_blank" rel="noopener noreferre-r"> <img src="/customize/openpaasng.png" alt="OpenPaaS-ng" class="bottom-bar-openpaas" /></a>';
|
|
||||||
out.header_logoTitle = 'Ir a la página principal';
|
|
||||||
|
|
||||||
out.websocketError = "Error al conectarse al servidor WebSocket";
|
|
||||||
out.typeError = "Este documento no es compatible con la aplicación seleccionada";
|
|
||||||
out.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.";
|
|
||||||
out.loading = "Cargando...";
|
|
||||||
out.error = "Error";
|
|
||||||
out.language = "Idioma";
|
|
||||||
out.user_rename = "Cambiar nombre";
|
|
||||||
out.user_displayName = "Nombre visible";
|
|
||||||
out.user_accountName = "Nombre de cuenta";
|
|
||||||
out.newButton = "Nuevo";
|
|
||||||
out.newButtonTitle = "Nuevo documento";
|
|
||||||
out.cancel = "Cancelar";
|
|
||||||
out.poll_publish_button = "Publicar";
|
|
||||||
out.poll_admin_button = "Administrar";
|
|
||||||
out.poll_create_user = "Añadir usuario";
|
|
||||||
out.poll_create_option = "Añadir opción";
|
|
||||||
out.poll_commit = "Validar";
|
|
||||||
out.fm_rootName = "Documentos";
|
|
||||||
out.fm_trashName = "Papelera";
|
|
||||||
out.fm_unsortedName = "Sin organizar";
|
|
||||||
out.fm_filesDataName = "Todos los archivos";
|
|
||||||
out.fm_templateName = "Plantilla";
|
|
||||||
out.fm_newButton = "Nuevo";
|
|
||||||
out.fm_newFolder = "Nueva carpeta";
|
|
||||||
out.fm_folder = "Carpeta";
|
|
||||||
out.fm_folderName = "Nombre de carpeta";
|
|
||||||
out.fm_numberOfFolders = "# de carpetas";
|
|
||||||
out.fm_numberOfFiles = "# de archivos";
|
|
||||||
out.fm_fileName = "Nombre";
|
|
||||||
out.fm_title = "Título";
|
|
||||||
out.fm_lastAccess = "Último acceso";
|
|
||||||
out.fm_creation = "Creación";
|
|
||||||
out.fm_forbidden = "Acción prohibida";
|
|
||||||
out.fm_originalPath = "Enlace original";
|
|
||||||
out.fm_noname = "Documento sin título";
|
|
||||||
out.fm_emptyTrashDialog = "¿Seguro que quieres vaciar la papelera?";
|
|
||||||
out.fm_removeSeveralPermanentlyDialog = "¿Seguro que quieres eliminar estos {0} elementos de la papelera para siempre?";
|
|
||||||
out.fm_removePermanentlyDialog = "¿Seguro que quieres eliminar este elemento para siempre?";
|
|
||||||
out.fm_removeSeveralDialog = "¿Seguro que quieres mover estos {0} elementos a la papelera?";
|
|
||||||
out.fm_removeDialog = "¿Seguro que quieres mover {0} a la papelera?";
|
|
||||||
out.fm_restoreDialog = "¿Seguro que quieres recuperar {0}?";
|
|
||||||
out.fm_unknownFolderError = "La carpeta seleccionada ya no existe. Abriendo la carpeta anterior...";
|
|
||||||
out.fm_contextMenuError = "No se pudo abrir el menú para este elemento. Si persiste el problema, recarga la página.";
|
|
||||||
out.fm_selectError = "No se pudo abrir el elemento. Si persiste el problema, recarga la página.";
|
|
||||||
out.fm_info_root = "Crea carpetas aquí para organizar tus documentos.";
|
|
||||||
out.fm_info_unsorted = "Contiene todos los documentos que has visitado que no están organizados en \"Documentos\" o movidos a la \"Papelera\".";
|
|
||||||
out.fm_info_template = "Contiene todas las plantillas que puedes volver a usar para crear nuevos documentos.";
|
|
||||||
out.fm_info_allFiles = "Contiene todos los archivos de \"Documentos\", \"Sin organizar\" y \"Papelera\". No puedes mover o eliminar archivos aquí.";
|
|
||||||
out.fm_alert_backupUrl = "Enlace de copia de seguridad para este drive. Te recomendamos <strong>encarecidamente</strong> que lo guardes secreto.<br>Lo puedes usar para recuperar todos tus archivos en el caso que la memoria de tu navegador se borre.<br>Cualquiera con este enlace puede editar o eliminar todos los archivos en el explorador.<br>";
|
|
||||||
out.fm_backup_title = "Enlace de copia de seguridad";
|
|
||||||
out.fm_nameFile = "¿Cómo quieres nombrar este archivo?";
|
|
||||||
out.fc_newfolder = "Nueva carpeta";
|
|
||||||
out.fc_rename = "Cambiar nombre";
|
|
||||||
out.fc_open = "Abrir";
|
|
||||||
out.fc_open_ro = "Abrir (sólo lectura)";
|
|
||||||
out.fc_delete = "Eliminar";
|
|
||||||
out.fc_restore = "Recuperar";
|
|
||||||
out.fc_remove = "Eliminar para siempre";
|
|
||||||
out.fc_empty = "Vaciar la papelera";
|
|
||||||
out.fc_prop = "Propiedades";
|
|
||||||
out.fo_moveUnsortedError = "No puedes mover una carpeta en la lista de documentos no organizados";
|
|
||||||
out.fo_existingNameError = "Nombre ya utilizado en esta carpeta. Por favor elige otro.";
|
|
||||||
out.fo_moveFolderToChildError = "No puedes mover una carpeta en una de sus subcarpetas";
|
|
||||||
out.fo_unableToRestore = "No se pudo restaurar este archivo a la localización de origen. Puedes intentar moverlo a otra localización.";
|
|
||||||
out.fo_unavailableName = "Un archivo o carpeta ya tiene este nombre. Cámbialo y vuelve a intentarlo.";
|
|
||||||
out.login_login = "Iniciar sesión";
|
|
||||||
out.login_makeAPad = "Crear documento anónimo";
|
|
||||||
out.login_nologin = "Ver documentos locales";
|
|
||||||
out.login_register = "Registrarse";
|
|
||||||
out.logoutButton = "Cerrar sesión";
|
|
||||||
out.settingsButton = "Preferencias";
|
|
||||||
out.login_username = "Nombre de usuario";
|
|
||||||
out.login_password = "Contraseña";
|
|
||||||
out.login_confirm = "Confirmar contraseña";
|
|
||||||
out.login_remember = "Recuérdame";
|
|
||||||
out.login_hashing = "Generando hash de tu contraseña, esto puede tardar un poco.";
|
|
||||||
out.login_hello = "Hola {0},";
|
|
||||||
out.login_helloNoName = "Hola,";
|
|
||||||
out.login_accessDrive = "Acceder a tu drive";
|
|
||||||
out.login_orNoLogin = "o";
|
|
||||||
out.login_noSuchUser = "Credenciales inválidos. Inténtalo de nuevo, o regístrate";
|
|
||||||
out.login_invalUser = "Nombre de usuario requerido";
|
|
||||||
out.login_invalPass = "Contraseña requerida";
|
|
||||||
out.login_unhandledError = "Ha ocurrido un error inesperado :(";
|
|
||||||
out.register_importRecent = "Importe el historial de tu sesión anónima";
|
|
||||||
|
|
||||||
out.register_acceptTerms = "Acepto los <a href='/terms.html' tabindex='-1'>términos de servicio</a>";
|
|
||||||
out.register_passwordsDontMatch = "Las contraseñas no corresponden";
|
|
||||||
out.register_mustAcceptTerms = "Tienes que aceptar los términos de servicio";
|
|
||||||
out.register_mustRememberPass = "No podemos reiniciar tu contraseña si la olvidas. ¡Es muy importante que la recuerdes! Marca la casilla para confirmarlo.";
|
|
||||||
out.register_header = "Bienvenido a CryptPad";
|
|
||||||
out.register_explanation = ["<p>Vamos a ver algunas cosas antes</p>", "<ul>", "<li>Tu contraseña es tu clave secreta que cifra todos tus documentos. Si la pierdes no podremos recuperar tus datos.</li>", "<li>Puedes importar documentos que has visto recientemente en tu navegador para tenerlos en tu cuenta.</li>", "<li>Si estás usando un ordenador compartido, tienes que cerrar sesión cuando terminas, cerrar la pestaña no es suficiente.</li>", "</ul>"].join('');
|
|
||||||
out.settings_title = "Preferencias";
|
|
||||||
out.settings_save = "Guardar";
|
|
||||||
out.settings_backupTitle = "Copia de seguridad";
|
|
||||||
out.settings_backup = "Copia de seguridad";
|
|
||||||
out.settings_restore = "Recuperar datos";
|
|
||||||
out.settings_reset = "Quita todos los documentos de tu CryptDrive";
|
|
||||||
out.settings_resetPrompt = "Esta acción eliminará todos tus documentos.<br>¿Seguro que quieres continuar?<br>Introduce “<em>I love CryptPad</em>” para confirmar.";
|
|
||||||
out.settings_resetDone = "¡Tu drive ahora está vacio!";
|
|
||||||
out.settings_resetTips = "Consejos en CryptDrive";
|
|
||||||
out.settings_resetTipsButton = "Restaurar consejos";
|
|
||||||
out.settings_resetTipsDone = "Todos los consejos ahora están visibles";
|
|
||||||
out.main_info = "<h1>Colabora con Confianza</h1><br>Cultiva ideas juntos con documentos compartidos con tecnología <strong>Zero Knowledge</strong> que protege tu privacidad.";
|
|
||||||
out.main_zeroKnowledge = "Zero Knowledge";
|
|
||||||
out.main_zeroKnowledge_p = "No tienes que confiar en que <em>no</em> veremos tus documentos, con la tecnología Zero Knowledge de CryptPad <em>no podemos</em>. Aprende más sobre cómo protegemos tu <a href=\"/privacy.html\" title='Privacidad'>Privacidad y Seguridad</a>.";
|
|
||||||
out.main_writeItDown = "Escríbelo";
|
|
||||||
out.main_writeItDown_p = "Los mejores proyectos vienen de las más pequeñas ideas. Escribe tus momentos de inspiración e ideas inesperadas porque nunca sabrás cuál será tu próximo descubrimiento.";
|
|
||||||
out.main_share = "Comparte el enlace, comparte el pad";
|
|
||||||
out.main_share_p = "Cultiva ideas juntos: ten reuniones eficaces, colabora en listas y haz presentaciones rápidas en todos tus dispositivos.";
|
|
||||||
out.main_organize = "Organízate";
|
|
||||||
out.main_organize_p = "Con CryptPad Drive, mantén tu atención en lo más importante. Las carpetas te permiten organizar tus proyectos y tener una visión global de dónde van las cosas.";
|
|
||||||
out.main_richText = "Editor de Texto Enriquecido";
|
|
||||||
out.main_richText_p = "Colabora en texto enriquecido con nuestro editor Zero Knowledge en tiempo real <a href=\"http://ckeditor.com\" target=\"_blank\">CkEditor</a>.";
|
|
||||||
out.main_code = "Editor de código";
|
|
||||||
out.main_code_p = "Edita código fuente para tus programas con nuestro editor Zero Knowledge en tiempo real <a href=\"https://www.codemirror.net\" target=\"_blank\">CodeMirror</a>.";
|
|
||||||
out.main_slide = "Editor de presentación";
|
|
||||||
out.main_slide_p = "Crea presentaciones utilizando Markdown, y visualízalos en tu navegador";
|
|
||||||
out.main_poll = "Encuestas";
|
|
||||||
out.main_poll_p = "Planifica tus reuniones y eventos, o vota para la mejor solución a un problema.";
|
|
||||||
out.main_drive = "CryptDrive";
|
|
||||||
out.footer_applications = "Aplicaciones";
|
|
||||||
out.footer_contact = "Contacto";
|
|
||||||
out.footer_aboutUs = "Acerca de nosotros";
|
|
||||||
out.about = "Acerca de nosotros";
|
|
||||||
out.privacy = "Privacidad";
|
|
||||||
out.contact = "Contacto";
|
|
||||||
out.terms = "Términos de Servicio";
|
|
||||||
|
|
||||||
// 1.1.0 - Bunyip
|
|
||||||
out.movedToTrash = "Este pad fue movido a la papelera.<br><a href\"/drive/\">Acceder a mi Drive</a>";
|
|
||||||
out.fm_newFile = "Nuevo pad";
|
|
||||||
out.fm_type = "Tipo";
|
|
||||||
out.fm_categoryError = "No se pudo abrir la categoría seleccionada, mostrando la raíz.";
|
|
||||||
out.settings_userFeedbackHint1 = "CryptPad suministra informaciones muy básicas al servidor, para ayudarnos a mejorar vuestra experiencia.";
|
|
||||||
out.settings_userFeedbackHint2 = "El contenido de tu pad nunca será compartido con el servidor.";
|
|
||||||
out.settings_userFeedback = "Activar feedback";
|
|
||||||
out.settings_anonymous = "No has iniciado sesión. Tus ajustes se aplicarán sólo a este navegador.";
|
|
||||||
out.blog = "Blog";
|
|
||||||
|
|
||||||
out.initialState = [
|
|
||||||
'<p>',
|
|
||||||
'Esto es <strong>CryptPad</strong>, el editor colaborativo en tiempo real Zero Knowledge. Todo está guardado cuando escribes.',
|
|
||||||
'<br>',
|
|
||||||
'Comparte el enlace a este pad para editar con amigos o utiliza el botón <span class="fa fa-share-alt"></span> para obtener un <em>enlace sólo lectura</em> que permite leer pero no escribir.',
|
|
||||||
'</p>',
|
|
||||||
].join('');
|
|
||||||
|
|
||||||
out.codeInitialState = "/*\n Esto es CryptPad, el editor colaborativo en tiempo real zero knowledge.\n Lo que escribes aquí está cifrado de manera que sólo las personas con el enlace pueden acceder a ello.\n Incluso el servidor no puede ver lo que escribes.\n Lo que ves aquí, lo que escuchas aquí, cuando sales, se queda aquí\n*/";
|
|
||||||
out.slideInitialState = "# CryptSlide\n1. Escribe tu contenido en Markdown\n - Puedes aprender más sobre Markdown [aquí](http://www.markdowntutorial.com/)\n2. Separa tus diapositivas con ---\n3. Haz clic en \"Presentar\" para ver el resultado - Tus diapositivas se actualizan en tiempo real";
|
|
||||||
out.driveReadmeTitle = "¿Qué es CryptPad?";
|
|
||||||
out.readme_welcome = "¡Bienvenido a CryptPad!";
|
|
||||||
out.readme_p1 = "Bienvenido a CryptPad, aquí podrás anotar cosas solo o con otra gente.";
|
|
||||||
out.readme_p2 = "Este pad es una guía rápida para aprender a usar a CryptPad para tomar notas, organizarlas y trabajar con más personas.";
|
|
||||||
out.readme_cat1 = "Conoce tu CryptDrive";
|
|
||||||
out.readme_cat1_l1 = "Crea un pad: En CryptDrive, haz clic en {0} y luego en {1} para crear un pad.";
|
|
||||||
out.readme_cat1_l2 = "Abrir pads desde CryptDrive: haz doble clic en un icono para abrirlo.";
|
|
||||||
out.readme_cat1_l3 = "Organiza tus pads: Cuando has iniciado sesión, cada pad al que accedes se quedará en tu drive en {0}.";
|
|
||||||
out.readme_cat1_l3_l1 = "Puedes hacer clic y arrastrar archivos en carpetas desde {0}, y crear nuevas carpetas.";
|
|
||||||
out.readme_cat1_l3_l2 = "Recuerda hacer clic derecho en los iconos, ya que suele haber menús adicionales.";
|
|
||||||
out.readme_cat1_l4 = "Elimina tus viejos pads: Haz clic y arrastra tus pads en la {0} de la misma manera que lo harías con carpetas.";
|
|
||||||
out.readme_cat2 = "Haz pads como un pro";
|
|
||||||
out.edit = "editar";
|
|
||||||
out.view = "ver";
|
|
||||||
out.readme_cat2_l1 = "El botón {0} en tu pad te permite dar acceso a colaboradores para {1} o {2} el pad.";
|
|
||||||
out.readme_cat2_l2 = "Cambia el título del pad haciendo clic en el lápiz";
|
|
||||||
out.readme_cat3 = "Descubre las apps CryptPad";
|
|
||||||
out.readme_cat3_l1 = "Con el editor de código CryptPad, puedes colaborar en código fuente, como por ejemplo JavaScript y Markdown";
|
|
||||||
out.readme_cat3_l2 = "Con los slides CryptPad, puedes hacer presentaciones rápidas con Markdown";
|
|
||||||
out.readme_cat3_l3 = "Con CryptPoll puedes hacer una encuesta rápida, especialmente útil para programar un horario que conviene a todo el mundo";
|
|
||||||
|
|
||||||
// 1.2.0 - Chupacabra
|
|
||||||
|
|
||||||
out.settings_resetError = "Verificación no válida. Tu CryptDrive no fue cambiado.";
|
|
||||||
out.saved = "Guardado";
|
|
||||||
out.printButton = "Imprimir";
|
|
||||||
out.printButtonTitle = "Imprimir tu presentación o exportar a PDF";
|
|
||||||
out.printOptions = "Opciones de impresión";
|
|
||||||
out.printSlideNumber = "Mostrar el número de diapositiva";
|
|
||||||
out.printDate = "Mostrar la fecha";
|
|
||||||
out.printTitle = "Mostrar el título";
|
|
||||||
out.printCSS = "CSS personalizado:";
|
|
||||||
out.editOpen = "Abrir enlaces de edición en pestaña nueva";
|
|
||||||
out.editOpenTitle = "Abrir en modo edición en pestaña nueva";
|
|
||||||
out.settings_importTitle = "Importar pads recientes locales en CryptDrive";
|
|
||||||
out.settings_import = "Importar";
|
|
||||||
out.settings_importConfirm = "¿Seguro que quieres importar tus pads recientes a tu cuenta CryptDrive?";
|
|
||||||
out.settings_importDone = "Importación terminada";
|
|
||||||
|
|
||||||
out.tips = {};
|
|
||||||
out.tips.lag = "El icono verde en la parte superior derecha muestra la calidad de tu connexión a CryptPad.";
|
|
||||||
out.tips.shortcuts = "`ctrl+b`, `ctrl+i`, y `ctrl+u` son accesos rápidos para negrita, itálica y subrayado.";
|
|
||||||
out.tips.indent = "Cuando editas listas, puedes usar tab o shift+tab para incrementar o decrementar la sangría.";
|
|
||||||
out.tips.title = "Puedes cambiar el título de tus pads en la parte superior de la pantalla.";
|
|
||||||
out.tips.store = "Cada vez que visitas un pad con una sesión iniciada se guardará en tu CryptDrive.";
|
|
||||||
out.tips.marker = "Puedes resaltar texto en un pad utilizando el \"marcador\" en el menú de estílo.";
|
|
||||||
out.tips.driveUpload = "Los usuarios registrados pueden subir archivos cifrados arrastrándolos hacia CryptDrive.";
|
|
||||||
|
|
||||||
out.feedback_about = "Si estas leyendo esto, quizás sientas curiosidad por saber por qué CryptPad solicita páginas cuando realizas algunas acciones";
|
|
||||||
out.feedback_privacy = "Nos importa tu privacidad, y al mismo tiempo queremos que CryptPad sea muy fácil de usar. Utilizamos este archivo para conocer las funcionalidades que importan a nuestros usuarios, pidiéndolo con un parametro que nos dice qué acción fue realizada.";
|
|
||||||
out.feedback_optout = "Si quieres darte de baja, visita <a href='/settings/'>tus preferencias</a>, donde podrás activar o desactivar el feedback";
|
|
||||||
|
|
||||||
out.fm_searchName = "Buscar";
|
|
||||||
out.fm_searchPlaceholder = "Buscar...";
|
|
||||||
out.fm_newButtonTitle = "Crear un nuevo pad o carpeta";
|
|
||||||
out.fm_openParent = "Mostrar en carpeta";
|
|
||||||
out.register_writtenPassword = "He escrito mi usuario y contraseña, continuar";
|
|
||||||
out.register_cancel = "Volver";
|
|
||||||
out.register_warning = "Zero Knowledge significa que no podemos recuperar tus datos si pierdes tu contraseña.";
|
|
||||||
out.register_alreadyRegistered = "Este usuario ya existe, ¿iniciar sesión?";
|
|
||||||
|
|
||||||
// 1.4.0 - Easter Bunny
|
|
||||||
|
|
||||||
out.button_newwhiteboard = "Nueva Pizarra";
|
|
||||||
out.wrongApp = "No se pudo mostrar el contenido de la sesión en tiempo real en tu navegador. Por favor, actualiza la página.";
|
|
||||||
out.synced = "Todo está guardado.";
|
|
||||||
out.saveTemplateButton = "Guardar como plantilla";
|
|
||||||
out.saveTemplatePrompt = "Elige un título para la plantilla";
|
|
||||||
out.templateSaved = "¡Plantilla guardada!";
|
|
||||||
out.selectTemplate = "Elige una plantilla o pulsa ESC";
|
|
||||||
out.slideOptionsTitle = "Personaliza tus diapositivas";
|
|
||||||
out.slideOptionsButton = "Guardar (enter)";
|
|
||||||
out.canvas_clear = "Limpiar";
|
|
||||||
out.canvas_delete = "Borrar selección";
|
|
||||||
out.canvas_disable = "No permitir dibujos";
|
|
||||||
out.canvas_enable = "Permitir dibujos";
|
|
||||||
out.canvas_width = "Talla";
|
|
||||||
out.canvas_opacity = "Opacidad";
|
|
||||||
out.settings_publicSigningKey = "Clave de Firma Pública";
|
|
||||||
out.settings_usage = "Utilización";
|
|
||||||
out.settings_usageTitle = "Ve el uso total de tus pads en MB";
|
|
||||||
out.settings_pinningNotAvailable = "Los pads pegados sólo están disponibles para usuarios registrados.";
|
|
||||||
out.settings_pinningError = "Algo salió mal";
|
|
||||||
out.settings_usageAmount = "Tus pads pegados utilizan {0}MB";
|
|
||||||
out.historyButton = "Mostrar el historial del documento";
|
|
||||||
out.history_next = "Ir a la versión anterior";
|
|
||||||
out.history_prev = "Ir a la versión posterior";
|
|
||||||
out.history_goTo = "Ir a la versión seleccionada";
|
|
||||||
out.history_close = "Volver";
|
|
||||||
out.history_closeTitle = "Cerrar el historial";
|
|
||||||
out.history_restore = "Restaurar";
|
|
||||||
out.history_restoreTitle = "Restaurar la versión seleccionada del documento";
|
|
||||||
out.history_restorePrompt = "¿Estás seguro de que quieres cambiar la versión actual del documento por ésta?";
|
|
||||||
out.history_restoreDone = "Documento restaurado";
|
|
||||||
out.fc_sizeInKilobytes = "Tamaño en Kilobytes";
|
|
||||||
|
|
||||||
// 1.5.0/1.6.0 - Fenrir/Grootslang
|
|
||||||
|
|
||||||
out.deleted = "El pad fue borrado de tu CryptDrive";
|
|
||||||
out.upgrade = "Mejorar";
|
|
||||||
out.upgradeTitle = "Mejora tu cuenta para obtener más espacio";
|
|
||||||
out.upgradeAccount = "Mejorar cuenta";
|
|
||||||
|
|
||||||
out.MB = "MB";
|
|
||||||
out.GB = "GB";
|
|
||||||
out.KB = "KB";
|
|
||||||
out.formattedMB = "{0} MB";
|
|
||||||
out.formattedGB = "{0} GB";
|
|
||||||
out.formattedKB = "{0} KB";
|
|
||||||
|
|
||||||
out.pinLimitReached = "Has llegado al límite de espacio";
|
|
||||||
out.pinLimitNotPinned = "Has llegado al límite de espacio.<br>Este pad no estará presente en tu CryptDrive.";
|
|
||||||
out.pinLimitDrive = "Has llegado al límite de espacio.<br>No puedes crear nuevos pads.";
|
|
||||||
out.printTransition = "Activar transiciones";
|
|
||||||
out.history_version = "Versión: ";
|
|
||||||
out.settings_logoutEverywhereTitle = "Cerrar sesión en todas partes";
|
|
||||||
out.settings_logoutEverywhere = "Cerrar todas las otras sesiones";
|
|
||||||
out.settings_logoutEverywhereConfirm = "¿Estás seguro? Tendrás que volver a iniciar sesión con todos tus dispositivos.";
|
|
||||||
out.upload_serverError = "Error: no se pudo subir tu archivo en este momento.";
|
|
||||||
out.upload_uploadPending = "Ya tienes una subida en progreso. ¿Cancelar y subir el nuevo archivo?";
|
|
||||||
out.upload_success = "Tu archivo ({0}) ha sido subido con éxito y fue añadido a tu drive.";
|
|
||||||
|
|
||||||
// 1.7.0 - Hodag
|
|
||||||
out.comingSoon = "Próximamente...";
|
|
||||||
out.newVersion = ["<b>CryptPad ha sido actualizado!</b>",
|
|
||||||
"Puedes ver lo que ha cambiado aquí (en inglés):",
|
|
||||||
"<a href=\"https://github.com/xwiki-labs/cryptpad/releases/tag/{0}\" target=\"_blank\">Notas de versión para CryptPad {0}</a>"].join("<br>");
|
|
||||||
out.pinLimitReachedAlertNoAccounts = "Has llegado a tu límite de espacio";
|
|
||||||
out.previewButtonTitle = "Mostrar/esconder la vista previa Markdown";
|
|
||||||
out.fm_info_anonymous = "No estás conectado, así que estos pads pueden ser borrados (<a href=\"https://blog.cryptpad.fr/2017/05/17/You-gotta-log-in/\" target=\"_blank\">¿por qué?</a>). <a href=\"/register/\">Regístrate</a> o <a href=\"/login/\">Inicia sesión</a> para asegurarlos.";
|
|
||||||
out.fm_alert_anonymous = "Hola, estás usando CryptPad anónimamente. Está bien, pero tus pads pueden ser borrados después de un périodo de inactividad. Hemos desactivado funciones avanzadas de CryptDrive para usuarios anónimos porque queremos dejar claro que no es un lugar seguro para almacenar cosas. Puedes <a href=\"https://blog.cryptpad.fr/2017/05/17/You-gotta-log-in/\" target=\"_blank\">leer este articulo</a> (en inglés) acerca de por qué hacemos esto y por qué deberías <a href=\"/register/\">Registrarte</a> e <a href=\"/login/\">Iniciar sesión</a>.";
|
|
||||||
out.fm_error_cantPin = "Error del servidor. Por favor, recarga la página e inténtalo de nuevo.";
|
|
||||||
out.upload_notEnoughSpace = "No tienes suficiente espacio para este archivo en tu CryptDrive";
|
|
||||||
out.upload_tooLarge = "Este archivo supera el límite de carga.";
|
|
||||||
out.upload_choose = "Escoge un archivo";
|
|
||||||
out.upload_pending = "Esperando";
|
|
||||||
out.upload_cancelled = "Cancelado";
|
|
||||||
out.upload_name = "Nombre";
|
|
||||||
out.upload_size = "Tamaño";
|
|
||||||
out.upload_progress = "Progreso";
|
|
||||||
out.download_button = "Descifrar y descargar";
|
|
||||||
out.warn_notPinned = "Este pad no está en ningún CryptDrive. Expirará después de 3 meses. <a href='/about.html#pinning'>Acerca de...</a>";
|
|
||||||
|
|
||||||
out.poll_remove = "Quitar";
|
|
||||||
out.poll_edit = "Editar";
|
|
||||||
out.poll_locked = "Cerrado";
|
|
||||||
out.poll_unlocked = "Abierto";
|
|
||||||
|
|
||||||
out.poll_show_help_button = "Mostrar ayuda";
|
|
||||||
out.poll_hide_help_button = "Esconder ayuda";
|
|
||||||
|
|
||||||
// 1.8.0 - Idopogo
|
|
||||||
|
|
||||||
out.common_connectionLost = "<b>Conexión perdida</b><br>El documento está ahora en modo sólo lectura hasta que la conexión vuelva.";
|
|
||||||
out.updated_0_common_connectionLost = out.common_connectionLost;
|
|
||||||
out.supportCryptpad = "Ayudar a CryptPad";
|
|
||||||
out.pinLimitReachedAlert = ["Has llegado a tu límite de espacio. Los nuevos pads no serán guardados en tu CryptDrive.",
|
|
||||||
"Puedes eliminar pads de tu CryptDrive o <a href=\"https://accounts.cryptpad.fr/#!on={0}\" target=\"_blank\">suscribirte a una oferta premium</a> para obtener más espacio."].join("<br>");
|
|
||||||
out.updated_0_pinLimitReachedAlert = out.pinLimitReachedAlert;
|
|
||||||
out.fm_info_trash = "Vacía tu papelera para liberar espacio en tu CryptDrive.";
|
|
||||||
out.updated_0_fm_info_trash = out.fm_info_trash;
|
|
||||||
|
|
||||||
out.fs_migration = "Tu CryptDrive fue actualizado a una nueva versión.<br><strong>Por favor, recarga la página.</strong>";
|
|
||||||
out.login_notRegistered = "¿No estás registrado?";
|
|
||||||
out.upload_mustLogin = "Tienes que estar conectado para subir archivos";
|
|
||||||
|
|
||||||
out.uploadButton = "Subir";
|
|
||||||
out.uploadButtonTitle = "Subir un archivo a la carpeta";
|
|
||||||
out.filePickerButton = "Incrustar un archivo";
|
|
||||||
out.filePicker_close = "Cerrar";
|
|
||||||
out.filePicker_description = "Elige un archivo de tu CryptDrive para incrustarlo o sube uno nuevo";
|
|
||||||
out.filePicker_filter = "Filtrar por nombre";
|
|
||||||
out.or = "o";
|
|
||||||
out.languageButton = "Lenguaje";
|
|
||||||
out.languageButtonTitle = "Elige el lenguaje para resaltado de sintaxis";
|
|
||||||
out.themeButton = "Tema";
|
|
||||||
out.themeButtonTitle = "Selecciona el tema de color para los editores de código y presentación";
|
|
||||||
out.canvas_opacityLabel = "Opacidad: {0}";
|
|
||||||
out.canvas_widthLabel = "Talla: {0}";
|
|
||||||
|
|
||||||
// 1.10.0 - Kraken
|
|
||||||
|
|
||||||
out.moreActions = "Más acciones";
|
|
||||||
out.importButton = "Importar";
|
|
||||||
out.exportButton = "Exportar";
|
|
||||||
out.saveTitle = "Guardar título (enter)";
|
|
||||||
out.forgetButton = "Eliminar";
|
|
||||||
out.printText = "Imprimir";
|
|
||||||
out.slideOptionsText = "Opciones";
|
|
||||||
out.historyText = "Historial";
|
|
||||||
out.openLinkInNewTab = "Abrir enlace en pestaña nueva";
|
|
||||||
out.profileButton = "Perfil";
|
|
||||||
out.profile_urlPlaceholder = "URL";
|
|
||||||
out.profile_namePlaceholder = "Nombre mostrado en su perfil";
|
|
||||||
out.profile_avatar = "Imagen";
|
|
||||||
out.profile_upload = "Subir una imagen";
|
|
||||||
out.profile_error = "Error al crear tu perfil: {0}";
|
|
||||||
out.profile_register = "Tienes que registrarte para crear un perfil";
|
|
||||||
out.profile_create = "Crear perfil";
|
|
||||||
out.profile_description = "Descripción";
|
|
||||||
out.profile_fieldSaved = "Guardado: {0}";
|
|
||||||
out.download_mt_button = "Descargar";
|
|
||||||
out.updated_0_header_logoTitle = "Volver a tu CryptDrive";
|
|
||||||
out.header_logoTitle = out.updated_0_header_logoTitle;
|
|
||||||
|
|
||||||
// 1.11.0 - Lutin
|
|
||||||
|
|
||||||
out.realtime_unrecoverableError = "El motor de tiempo real ha encontrado un error. Haga clic en OK para recargar la página.";
|
|
||||||
out.typing = "Escribiendo";
|
|
||||||
out.profile_inviteButton = "Conectar";
|
|
||||||
out.profile_inviteButtonTitle = "Crear un enlace de invitación para este usuario.";
|
|
||||||
out.profile_inviteExplanation = "Hacer clic en <strong>OK</strong> creará un enlace de mensaje seguro que <em>sólo {0} podrá ver.</em><br><br>El enlace será copiado a tu portapapeles y puede ser compartido públicamente.";
|
|
||||||
out.profile_viewMyProfile = "Ver mi perfil";
|
|
||||||
out.userlist_addAsFriendTitle = 'Agregar "{0}" como contacto';
|
|
||||||
out.userlist_thisIsYou = 'Tú mismo ("{0}")';
|
|
||||||
out.contacts_title = "Contactos";
|
|
||||||
out.contacts_addError = "Error al agregar este contacto a la lista";
|
|
||||||
out.contacts_added = "Invitación aceptada";
|
|
||||||
out.contacts_rejected = "Invitación denegada";
|
|
||||||
out.contacts_request = "<em>{0}</em> quiere agregarte como contacto. ¿<b>Aceptar</b>?";
|
|
||||||
out.contacts_send = "Enviar";
|
|
||||||
out.contacts_remove = "Eliminar este contacto";
|
|
||||||
out.contacts_confirmRemove = "¿Estás seguro de que quieres eliminar <em>{0}</em> de tus contactos?";
|
|
||||||
out.contacts_info1 = "Estos son tus contactos. Desde aquí, puedes:";
|
|
||||||
out.contacts_info2 = "Hacer clic en el icono de tu contacto para chatear";
|
|
||||||
out.contacts_info3 = "Hacer doble-clic para ver su perfil";
|
|
||||||
out.contacts_info4 = "Cualquier participante puede eliminar definitivamente el historial de chat";
|
|
||||||
out.settings_cat_account = "Cuenta";
|
|
||||||
out.settings_cat_drive = "CryptDrive";
|
|
||||||
out.settings_backupCategory = "Copia de seguridad";
|
|
||||||
out.settings_resetNewTitle = "Limpiar CryptDrive";
|
|
||||||
out.settings_resetButton = "Eliminar";
|
|
||||||
out.settings_resetTipsAction = "Reiniciar";
|
|
||||||
out.settings_userFeedbackTitle = "Feedback";
|
|
||||||
out.settings_logoutEverywhereButton = "Cerrar sesión";
|
|
||||||
out.upload_title = "Subir archivo";
|
|
||||||
|
|
||||||
// 1.12.0 - Minotaur
|
|
||||||
out.userlist_pending = "Pendiente...";
|
|
||||||
out.contacts_typeHere = "Escribe un mensaje aquí...";
|
|
||||||
out.contacts_removeHistoryTitle = "Borrar el historial de chat";
|
|
||||||
out.contacts_confirmRemoveHistory = "¿Estás seguro de que quieres borrar el historial de forma permanente? No se podrán recuparar los datos.";
|
|
||||||
out.contacts_removeHistoryServerError = "Hubo un error al borrar el historial. Inténtalo de nuevo más tarde.";
|
|
||||||
out.todo_title = "CryptTodo";
|
|
||||||
out.todo_newTodoNamePlaceholder = "Describe tu tarea...";
|
|
||||||
out.todo_newTodoNameTitle = "Añadir tarea a la lista";
|
|
||||||
out.todo_markAsCompleteTitle = "Marcar esta tarea como completa";
|
|
||||||
out.todo_markAsIncompleteTitle = "Marcar esta tarea como incompleta";
|
|
||||||
out.todo_removeTaskTitle = "Borrar esta tarea de la lista";
|
|
||||||
|
|
||||||
// 1.13.0 - Naiad
|
|
||||||
out.topbar_whatIsCryptpad = "Qué es CryptPad";
|
|
||||||
out.header_homeTitle = "Volver a la página de inicio";
|
|
||||||
out.userListButton = "Lista de usuarios";
|
|
||||||
out.userAccountButton = "Tu cuenta";
|
|
||||||
out.canvas_saveToDrive = "Guardar esta imagen como archivo en tu CryptDrive";
|
|
||||||
out.canvas_currentBrush = "Pincel actual";
|
|
||||||
out.canvas_chooseColor = "Eligir un color";
|
|
||||||
out.fm_viewListButton = "Lista";
|
|
||||||
out.fm_viewGridButton = "Cuadrícula";
|
|
||||||
out.settings_cat_code = "Código";
|
|
||||||
out.settings_codeIndentation = "Indentación del editor de código (espacios)";
|
|
||||||
out.settings_codeUseTabs = "Utilizar tabulaciones en vez de espacios";
|
|
||||||
out.pad_showToolbar = "Mostrar la barra de herramientas";
|
|
||||||
out.pad_hideToolbar = "Esconder la barra de herramientas";
|
|
||||||
out.main_catch_phrase = "El Cloud Zero Knowledge";
|
|
||||||
out.main_richTextPad = "Pad de Texto Enriquecido";
|
|
||||||
out.main_codePad = "Pad de Código";
|
|
||||||
out.main_slidePad = "Presentación Markdown";
|
|
||||||
out.main_pollPad = "Encuesta";
|
|
||||||
out.main_whiteboardPad = "Pizarra";
|
|
||||||
out.main_localPads = "Pad Locales";
|
|
||||||
out.main_yourCryptDrive = "Tu CryptDrive";
|
|
||||||
|
|
||||||
return out;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,162 +1,14 @@
|
|||||||
define(function () {
|
/*
|
||||||
var out = {};
|
* You can override the translation text using this file.
|
||||||
|
* The recommended method is to make a copy of this file (/customize.dist/translations/messages.{LANG}.js)
|
||||||
// translations must set this key for their language to be available in
|
in a 'customize' directory (/customize/translations/messages.{LANG}.js).
|
||||||
// the language dropdowns that are shown throughout Cryptpad's interface
|
* If you want to check all the existing translation keys, you can open the internal language file
|
||||||
out._languageName = 'Polish';
|
but you should not change it directly (/common/translations/messages.{LANG}.js)
|
||||||
|
*/
|
||||||
out.main_title = "Cryptpad: Wspólne edytowanie w czasie rzeczywistym, bez wiedzy specjalistycznej";
|
define(['/common/translations/messages.pl.js'], function (Messages) {
|
||||||
out.main_slogan = "Jedność siłą - Współpraca kluczem";
|
// Replace the existing keys in your copied file here:
|
||||||
|
// Messages.button_newpad = "New Rich Text Document";
|
||||||
out.type = {};
|
|
||||||
out.type.pad = 'Pad';
|
return Messages;
|
||||||
out.type.code = 'Kod';
|
|
||||||
out.type.poll = 'Balot';
|
|
||||||
out.type.slide = 'Prezentacja';
|
|
||||||
|
|
||||||
out.common_connectionLost = 'Przerwano połączenie z serwerem';
|
|
||||||
|
|
||||||
out.disconnected = 'Rozłączony';
|
|
||||||
out.synchronizing = 'Synchronizacja';
|
|
||||||
out.reconnecting = 'Wznawianie połączenia...';
|
|
||||||
out.lag = 'Lag';
|
|
||||||
out.readonly = 'Tylko do odczytu';
|
|
||||||
out.anonymous = "Anonimowy";
|
|
||||||
out.yourself = "Ty";
|
|
||||||
out.anonymousUsers = "użytkownicy anonimowi";
|
|
||||||
out.anonymousUser = "użytkownik anonimowy";
|
|
||||||
out.users = "Użytkownicy";
|
|
||||||
out.and = "i";
|
|
||||||
out.viewer = "czytający";
|
|
||||||
out.viewers = "czytających";
|
|
||||||
out.editor = "edytujący";
|
|
||||||
out.editors = "edytujących";
|
|
||||||
|
|
||||||
out.greenLight = "Wszystkie systemy działają poprawnie";
|
|
||||||
out.orangeLight = "Słabe łącze może wpłynąć na działanie aplikacji";
|
|
||||||
out.redLight = "Zostałeś rozłączony z sesją";
|
|
||||||
|
|
||||||
out.importButtonTitle = 'Importuj dokument z pliku lokalnego';
|
|
||||||
|
|
||||||
out.exportButtonTitle = 'Zapisz ten dokument do pliku';
|
|
||||||
out.exportPrompt = 'Jak chciałbyś nazwać swój plik?';
|
|
||||||
|
|
||||||
out.changeNamePrompt = 'Zmień swoją nazwę (Pozostaw puste, by być anonimowym): ';
|
|
||||||
|
|
||||||
out.clickToEdit = "Naciśnij by edytować";
|
|
||||||
|
|
||||||
out.forgetButtonTitle = 'Usuń ten dokument z listy wyświetlanej na stronie głównej';
|
|
||||||
out.forgetPrompt = 'Wciskając OK usuniesz ten URL z pamięci lokalnej, jesteś tego pewien?';
|
|
||||||
|
|
||||||
out.shareButton = 'Udostępnij';
|
|
||||||
out.shareSuccess = 'Pomyślnie skopiowano URL';
|
|
||||||
|
|
||||||
out.presentButtonTitle = "Otwórz tryb prezentacji";
|
|
||||||
|
|
||||||
out.backgroundButtonTitle = 'Zmień kolor tła dla tej prezentacji';
|
|
||||||
out.colorButtonTitle = 'Zmień kolor tekstu dla tej prezentacji';
|
|
||||||
|
|
||||||
|
|
||||||
out.editShare = "Udostępnij URL do edycji";
|
|
||||||
out.editShareTitle = "Zapisz URL do edycji w schowku";
|
|
||||||
out.viewShare = "Udostępnij URL tylko do odczytu";
|
|
||||||
out.viewShareTitle = "Zapisz URL tylko do odczytu w schowku";
|
|
||||||
out.viewOpen = "Otwórz podgląd w nowej karcie";
|
|
||||||
out.viewOpenTitle = "Otwórz ten dokument w nowej karcie, tylko do odczytu";
|
|
||||||
|
|
||||||
out.notifyJoined = "{0} dołączył do sesji współpracy";
|
|
||||||
out.notifyRenamed = "{0} jest teraz znany jako {1}";
|
|
||||||
out.notifyLeft = "{0} opuścił sesję współpracy";
|
|
||||||
|
|
||||||
out.tryIt = 'Wypróbuj!';
|
|
||||||
|
|
||||||
out.okButton = 'OK (enter)';
|
|
||||||
out.cancelButton = 'Anuluj (esc)';
|
|
||||||
|
|
||||||
// Polls
|
|
||||||
|
|
||||||
out.poll_title = "Prosty koordynator spotkań"; // Choice of "Koordynator" can be discussed
|
|
||||||
out.poll_subtitle = "Proste planowanie spotkań, <em>w czasie rzeczywistym</em>";
|
|
||||||
|
|
||||||
out.poll_p_save = "Twoje ustawienia aktualizowane są na bieżąco. Nie martw się zapisywaniem.";
|
|
||||||
out.poll_p_encryption = "Wszystko co robisz jest szyfrowane, więc tylko osoby z linkiem mają tu dostęp. Nawet serwer nie widzi co kombinujesz.";
|
|
||||||
|
|
||||||
out.wizardLog = "Naciśnij przycisk w lewym-górnym rogu by wrócić do planu";
|
|
||||||
out.wizardTitle = "Uzyj kreatora by stworzyć opcje do głosowania";
|
|
||||||
out.wizardConfirm = "Jesteś pewny, że chcesz dodać te opcje do głosowania?";
|
|
||||||
|
|
||||||
out.poll_closeWizardButton = "Zamknij kreator";
|
|
||||||
out.poll_closeWizardButtonTitle = "Zamyka kreator";
|
|
||||||
out.poll_wizardComputeButton = "Ustawienia kalkulacji";
|
|
||||||
out.poll_wizardClearButton = "Wyczyść tabelę";
|
|
||||||
out.poll_wizardDescription = "Automatycznie stwórz część opcji poprzez wpisanie ilości dat i godzin";
|
|
||||||
out.poll_wizardAddDateButton = "+ Daty";
|
|
||||||
out.poll_wizardAddTimeButton = "+ Godziny";
|
|
||||||
|
|
||||||
out.poll_optionPlaceholder = "Opcja";
|
|
||||||
out.poll_userPlaceholder = "Twoje imię";
|
|
||||||
out.poll_removeOption = "Jesteś pewien, że chcesz usunąć tę opcję?";
|
|
||||||
out.poll_removeUser = "Jesteś pewien, że chcesz usunąć tego użytkownika?";
|
|
||||||
|
|
||||||
out.poll_titleHint = "Tytuł";
|
|
||||||
out.poll_descriptionHint = "Opis";
|
|
||||||
|
|
||||||
// index.html
|
|
||||||
|
|
||||||
out.main_p2 = 'Ten projekt wykorzystuje wizualny edytor <a href="http://ckeditor.com/">CKEditor</a> , <a href="https://codemirror.net/">CodeMirror</a>, oraz silnik czasu rzeczywistego <a href="https://github.com/xwiki-contrib/chainpad">ChainPad</a>.';
|
|
||||||
out.main_howitworks = 'Jak to działa';
|
|
||||||
out.main_howitworks_p1 = 'CryptPad wykorzystuje wariant algorytmu <a href="https://en.wikipedia.org/wiki/Operational_transformation">Transformacji operacyjnej</a> który jest wstanie odnaleźć rozdzielony konsensus wprowadzanych danych. Używa do tego <a href="https://bitcoin.org/bitcoin.pdf">Łańcuch blokowy Nakamoto</a>, twór zpopularyzowany przez <a href="https://en.wikipedia.org/wiki/Bitcoin">Bitcoin</a>. W ten sposób algorytm może pominąć potrzebę centralnego serwera do rozwiązywania Konfliktów Operacji Przekształcania poprzez Edycję. Bez potrzeby rozwiązywania konfliktów, serwer może pozostać w niewiedzy o zawartości która jest edytowana w dokumencie.';
|
|
||||||
|
|
||||||
out.main_about_p2 = 'Jeżeli masz jakieś pytania lub komentarze, możesz napisać na <a href="https://twitter.com/cryptpad">tweeterze</a>, otworzyć problem na <a href="https://github.com/xwiki-labs/cryptpad/issues/" title="our issue tracker">githubie</a>, przywitać się na ircu (<a href="http://webchat.freenode.net?channels=%23cryptpad&uio=MT1mYWxzZSY5PXRydWUmMTE9Mjg3JjE1PXRydWUe7" title="freenode webchat">irc.freenode.net</a>), lub wysłać nam <a href="mailto:research@xwiki.com">email</a>.';
|
|
||||||
|
|
||||||
out.button_newpad = 'STWÓRZ PAD WYSIWYG';
|
|
||||||
out.button_newcode = 'STWÓRZ PAD DO KODU';
|
|
||||||
out.button_newpoll = 'STWÓRZ GŁOSOWANIE';
|
|
||||||
out.button_newslide = 'STWÓRZ PREZENTACJĘ';
|
|
||||||
|
|
||||||
// privacy.html
|
|
||||||
|
|
||||||
out.policy_title = 'Polityka prywatności CryptPad';
|
|
||||||
out.policy_whatweknow = 'Co o tobie wiemy';
|
|
||||||
out.policy_whatweknow_p1 = 'Jako aplikacja udostępniana w internecie, CryptPad ma dostęp do metadanych wystawianych przez protokół HTTP. W skład tych danych wchodzi adres IP oraz różne inne nagłówki HTTP które pozwalają na identyfikację twojej przeglądarki. Możesz podejrzeć jakie informacje udostępnia twoja przeglądarka odwiedzając <a target="_blank" rel="noopener noreferrer" href="https://www.whatismybrowser.com/detect/what-http-headers-is-my-browser-sending" title="what http headers is my browser sending">WhatIsMyBrowser.com</a>.';
|
|
||||||
out.policy_whatweknow_p2 = 'Używamy <a href="https://piwik.org/" target="_blank" rel="noopener noreferrer" title="open source analytics platform">Piwik</a>, Open Sourcowej platformy analitycznej, aby dowiedzieć się czegoś o naszych użytkownikach. Piwik mówi nam, skąd dowiedziałeś się o Cryptpad. Bezpośrednio przez adres, silnik wyszukiwany, czy z polecenia innej usługi internetowej jak Reddit czy Twitter. Uczymy się również gdy nas odwiedzasz, jakie linki odwiedzasz z naszej strony informacyjnej i jak długo pozostajesz na konkretnych stronach.';
|
|
||||||
out.policy_howweuse = 'Jak wykorzystujemy zebraną wiedzę';
|
|
||||||
out.policy_howweuse_p1 = 'Dzieki tym informacjom możemy podejmować lepsze decyzje przy promocji CryptPad, poprzez ocenę które z podjętych przez nas prób okazały się udane. Informacja o twojej lokalizacji daje nam znać, czy powinniśmy zapewnić lepsze wsparcie dla języków poza Angielskim.';
|
|
||||||
out.policy_howweuse_p2 = "Informacje o twojej przeglądarce (czy jest to aplikacja desktopowa, czy działająca na systemie mobilnym) pozwalają nam na decydowanie przy priorytezowaniu ulepszeń funkcji. Nasz zespół deweloperski jest mały, a my staramy się dokonywać wyborów które poprawią doświadczenia jak największej liczby użytkowników.";
|
|
||||||
out.policy_whatwetell = 'Jakie dane przekazujemy innym';
|
|
||||||
out.policy_whatwetell_p1 = 'Nie dostarczamy osobom trzecim żadnych danych które udało się nam zebrać, lub tych które nam przekazałeś sam, dopóki nie jesteśmy do tego zobligowani prawnie.';
|
|
||||||
out.policy_links = 'Adresy innych stron';
|
|
||||||
out.policy_links_p1 = 'Ta witryna zawiera łącza do innych stron, włączając w to te stworzone przez inne organizacje. Nie jesteśmy odpowiedzialni za praktyki dotyczące prywatności oraz zawartość usługodawców poza tą witryną. Jako główną zasadę przyjmujemy, że łącza do stron zewnętrznych uruchamiane są w nowej karcie lub oknie, aby upewnić cię iż opuszczasz Cryptpad.';
|
|
||||||
out.policy_ads = 'Promocja i reklama';
|
|
||||||
out.policy_ads_p1 = 'Nie wyświetlamy żadnej zawartości promocyjnej online, choć możemy udostępniać łącza do podmiotów finansujących nasze badania.';
|
|
||||||
out.policy_choices = 'Co możesz zrobić';
|
|
||||||
out.policy_choices_open = 'Nasz kod jest open source, więc zawsze masz możliwość hostowania swojej własnej wersji Cryptpad.';
|
|
||||||
out.policy_choices_vpn = 'Jeżeli chcesz korzystać z wersji udostępnianej przez nas, lecz nie chcesz pokazywać swojego adresu IP, możesz chronić swój adres wykorzystując <a href="https://www.torproject.org/projects/torbrowser.html.en" title="downloads from the Tor project" target="_blank" rel="noopener noreferrer">przeglądarki Tor</a>, lub <a href="https://riseup.net/en/vpn" title="VPNs provided by Riseup" target="_blank" rel="noopener noreferrer">VPN</a>.';
|
|
||||||
out.policy_choices_ads = 'Masz również możliwość blokady naszej platformy analitycznej wykorzystując narzędzia adblock, takie jak <a href="https://www.eff.org/privacybadger" title="download privacy badger" target="_blank" rel="noopener noreferrer">Privacy Badger</a>.';
|
|
||||||
|
|
||||||
// terms.html
|
|
||||||
|
|
||||||
out.tos_title = "Warunki korzystania z usług Cryptpad";
|
|
||||||
out.tos_legal = "Prosimy abyś nie był złośliwy, obelżywy i nie wykorzystywał tego oprogramowania do celow niezgodnych z prawem.";
|
|
||||||
out.tos_availability = "Mamy nadzieję iż uznasz tę usługę za przydatną, lecz dostępność i wydajność nie mogą być przez nas gwarantowane. Prosimy, abyś eksportował swoje dane regularnie.";
|
|
||||||
out.tos_e2ee = "Dokumenty Cryptpad mogą być odczytywane i modyfikowane przez każdego kto może zgadnąć lub w inny sposób uzyskać identyfikator dokumentu. Polecamy korzystania z oprogramowania szyfrującego end-to-end (e2ee) do udostępniania linków URL. Nie będziesz rościł sobie żadnych wierzytelności w wypadku gdy taki URL dostanie się w niepowołane ręce.";
|
|
||||||
out.tos_logs = "Metadane dostarczane przez twoją przeglądarkę do serwera mogą być zapisywane i przechowywane w celu utrzymywania serwisu.";
|
|
||||||
out.tos_3rdparties = "Nie dostarczamy indywidualizowanych danych do osób trzecich, poza sytuacjami dyktowanymi prawnie.";
|
|
||||||
|
|
||||||
// BottomBar.html
|
|
||||||
|
|
||||||
out.bottom_france = '<a href="http://www.xwiki.com/" target="_blank" rel="noopener noreferrer">Stworzone z <img class="bottom-bar-heart" src="/customize/heart.png" /> we <img class="bottom-bar-fr" src="/customize/fr.png" /></a>';
|
|
||||||
out.bottom_support = '<a href="http://labs.xwiki.com/" title="XWiki Labs" target="_blank" rel="noopener noreferrer">Projekt <img src="/customize/logo-xwiki2.png" alt="XWiki SAS" class="bottom-bar-xwiki"/> Labs </a> we wspolpracy z <a href="http://ng.open-paas.org/" title="OpenPaaS::ng" target="_blank" rel="noopener noreferrer"> <img src="/customize/openpaasng.png" alt="OpenPaaS-ng" class="bottom-bar-openpaas" /></a>';
|
|
||||||
|
|
||||||
// Header.html
|
|
||||||
|
|
||||||
out.header_france = '<a href="http://www.xwiki.com/" target="_blank" rel="noopener noreferrer">Pełne <img class="bottom-bar-heart" src="/customize/heart.png" /> z <img class="bottom-bar-fr" src="/customize/fr.png" title="France" alt="France"/> od <img src="/customize/logo-xwiki.png" alt="XWiki SAS" class="bottom-bar-xwiki"/></a>';
|
|
||||||
|
|
||||||
|
|
||||||
// TODO Hardcode cause YOLO
|
|
||||||
//out.header_xwiki = '<a href="http://www.xwiki.com/" target="_blank" rel="noopener noreferrer"><img src="/customize/logo-xwiki.png" alt="XWiki SAS" class="bottom-bar-xwiki"/></a>';
|
|
||||||
out.header_support = '<a href="http://ng.open-paas.org/" title="OpenPaaS::ng" target="_blank" rel="noopener noreferrer"> <img src="/customize/openpaasng.png" alt="OpenPaaS-ng" class="bottom-bar-openpaas" /></a>';
|
|
||||||
out.header_logoTitle = 'Przejdź na stronę główną';
|
|
||||||
|
|
||||||
return out;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1,360 +1,14 @@
|
|||||||
define(function () {
|
/*
|
||||||
var out = {};
|
* You can override the translation text using this file.
|
||||||
|
* The recommended method is to make a copy of this file (/customize.dist/translations/messages.{LANG}.js)
|
||||||
out.main_title = "CryptPad: Zero Knowledge, Colaborare în timp real";
|
in a 'customize' directory (/customize/translations/messages.{LANG}.js).
|
||||||
out.main_slogan = "Puterea stă în cooperare - Colaborarea este cheia";
|
* If you want to check all the existing translation keys, you can open the internal language file
|
||||||
|
but you should not change it directly (/common/translations/messages.{LANG}.js)
|
||||||
out.button_newpad = "Filă Text Nouă";
|
*/
|
||||||
out.button_newcode = "Filă Cod Nouă";
|
define(['/common/translations/messages.ro.js'], function (Messages) {
|
||||||
out.button_newpoll = "Sondaj Nou";
|
// Replace the existing keys in your copied file here:
|
||||||
out.button_newslide = "Prezentare Nouă";
|
// Messages.button_newpad = "New Rich Text Document";
|
||||||
out.button_newwhiteboard = "Fila Desen Nouă";
|
|
||||||
out.updated_0_common_connectionLost = "<b>Conexiunea la server este pierdută</b><br>Până la revenirea conexiunii, vei fi în modul citire";
|
return Messages;
|
||||||
out.common_connectionLost = out.updated_0_common_connectionLost;
|
|
||||||
out.websocketError = "Conexiune inexistentă către serverul websocket...";
|
|
||||||
out.typeError = "Această filă nu este compatibilă cu aplicația aleasă";
|
|
||||||
out.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.";
|
|
||||||
out.wrongApp = "Momentan nu putem arăta conținutul sesiunii în timp real în fereastra ta. Te rugăm reîncarcă pagina.";
|
|
||||||
out.loading = "Încarcă...";
|
|
||||||
out.error = "Eroare";
|
|
||||||
|
|
||||||
out.saved = "Salvat";
|
|
||||||
out.synced = "Totul a fost salvat";
|
|
||||||
out.deleted = "Pad șters din CryptDrive-ul tău";
|
|
||||||
out.disconnected = "Deconectat";
|
|
||||||
out.synchronizing = "Se sincronizează";
|
|
||||||
out.reconnecting = "Reconectare...";
|
|
||||||
out.lag = "Decalaj";
|
|
||||||
out.readonly = "Mod citire";
|
|
||||||
out.anonymous = "Anonim";
|
|
||||||
out.yourself = "Tu";
|
|
||||||
out.anonymousUsers = "editori anonimi";
|
|
||||||
out.anonymousUser = "editor anonim";
|
|
||||||
out.users = "Utilizatori";
|
|
||||||
out.and = "Și";
|
|
||||||
out.viewer = "privitor";
|
|
||||||
out.viewers = "privitori";
|
|
||||||
out.editor = "editor";
|
|
||||||
out.editors = "editori";
|
|
||||||
out.language = "Limbă";
|
|
||||||
out.upgrade = "Actualizare";
|
|
||||||
out.upgradeTitle = "Actualizează-ți contul pentru a mări limita de stocare";
|
|
||||||
out.MB = "MB";
|
|
||||||
out.greenLight = "Totul funcționează corespunzător";
|
|
||||||
out.orangeLight = "Conexiunea lentă la internet îți poate afecta experiența";
|
|
||||||
out.redLight = "Ai fost deconectat de la sesiune";
|
|
||||||
out.pinLimitReached = "Ai atins limita de stocare";
|
|
||||||
out.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.";
|
|
||||||
out.pinLimitNotPinned = "Ai atins limita de stocare.<br>Acest pad nu va fi stocat n CryptDrive-ul tău.";
|
|
||||||
out.pinLimitDrive = "Ai atins limita de stocare.<br>Nu poți să creezi alte pad-uri.";
|
|
||||||
out.importButtonTitle = "Importă un pad dintr-un fișier local";
|
|
||||||
out.exportButtonTitle = "Exportă pad-ul acesta către un fișier local";
|
|
||||||
out.exportPrompt = "Cum ai vrea să îți denumești fișierul?";
|
|
||||||
out.changeNamePrompt = "Schimbă-ți numele (lasă necompletat dacă vrei să fii anonim): ";
|
|
||||||
out.user_rename = "Schimbă numele afișat";
|
|
||||||
out.user_displayName = "Nume afișat";
|
|
||||||
out.user_accountName = "Nume cont";
|
|
||||||
out.clickToEdit = "Click pentru editare";
|
|
||||||
out.forgetButtonTitle = "Mută acest pad la gunoi";
|
|
||||||
out.forgetPrompt = "Click-ul pe OK va muta acest pad la gunoi. Ești sigur?";
|
|
||||||
out.movedToTrash = "Acest pad a fost mutat la gunoi.<br><a href=\"/drive/\">Acesează-mi Drive-ul</a>";
|
|
||||||
out.shareButton = "Distribuie";
|
|
||||||
out.shareSuccess = "Link copiat în clipboard";
|
|
||||||
out.newButton = "Nou";
|
|
||||||
out.newButtonTitle = "Crează un nou pad";
|
|
||||||
out.saveTemplateButton = "Salvează ca șablon";
|
|
||||||
out.saveTemplatePrompt = "Alege un titlu pentru șablon";
|
|
||||||
out.templateSaved = "Șablon salvat!";
|
|
||||||
out.selectTemplate = "Selectează un șablon sau apasă escape";
|
|
||||||
out.presentButtonTitle = "Intră în modul de prezentare";
|
|
||||||
out.backgroundButtonTitle = "Schimbă culoarea de fundal din prezentare";
|
|
||||||
out.colorButtonTitle = "Schimbă culoarea textului în modul de prezentare";
|
|
||||||
out.printButton = "Printează (enter)";
|
|
||||||
out.printButtonTitle = "Printează-ți slide-urile sau exportă-le ca fișier PDF";
|
|
||||||
out.printOptions = "Opțiuni schemă";
|
|
||||||
out.printSlideNumber = "Afișează numărul slide-ului";
|
|
||||||
out.printDate = "Afișează data";
|
|
||||||
out.printTitle = "Afișează titlul pad-ului";
|
|
||||||
out.printCSS = "Reguli de stil personalizate (CSS):";
|
|
||||||
out.printTransition = "Permite tranziția animațiilor";
|
|
||||||
out.slideOptionsTitle = "Personalizează-ți slide-urile";
|
|
||||||
out.slideOptionsButton = "Salvează (enter)";
|
|
||||||
out.editShare = "Editează link-ul";
|
|
||||||
out.editShareTitle = "Copiază link-ul de editare în clipboard";
|
|
||||||
out.editOpen = "Deschide link-ul de editare într-o nouă filă";
|
|
||||||
out.editOpenTitle = "Deschide acest pad în modul de editare într-o nouă filă";
|
|
||||||
out.viewShare = "Link în modul citire";
|
|
||||||
out.viewShareTitle = "Copiază link-ul în modul de citire în clipboard";
|
|
||||||
out.viewOpen = "Deschide link-ul în modul de citire într-o filă nouă";
|
|
||||||
out.viewOpenTitle = "Deschide acest pad în modul de citire într-o nouă filă";
|
|
||||||
out.notifyJoined = "{0} s-au alăturat sesiunii colaborative";
|
|
||||||
out.notifyRenamed = "{0} e cunoscut ca {1}";
|
|
||||||
out.notifyLeft = "{0} au părăsit sesiunea colaborativă";
|
|
||||||
out.okButton = "OK (enter)";
|
|
||||||
out.cancel = "Anulează";
|
|
||||||
out.cancelButton = "Anulează (esc)";
|
|
||||||
out.historyButton = "Afișează istoricul documentului";
|
|
||||||
out.history_next = "Mergi la versiunea următoare";
|
|
||||||
out.history_prev = "Mergi la versiunea trecută";
|
|
||||||
out.history_goTo = "Mergi la sesiunea selectată";
|
|
||||||
out.history_close = "Înapoi";
|
|
||||||
out.history_closeTitle = "Închide istoricul";
|
|
||||||
out.history_restore = "Restabilește";
|
|
||||||
out.history_restoreTitle = "Restabilește versiunea selectată a documentului";
|
|
||||||
out.history_restorePrompt = "Ești sigur că vrei să înlocuiești versiunea curentă a documentului cu cea afișată?";
|
|
||||||
out.history_restoreDone = "Document restabilit";
|
|
||||||
out.history_version = "Versiune:";
|
|
||||||
out.poll_title = "Zero Knowledge Selector Dată";
|
|
||||||
out.poll_subtitle = "Zero Knowledge, <em>realtime</em> programare";
|
|
||||||
out.poll_p_save = "Setările tale sunt actualizate instant, așa că tu nu trebuie să salvezi.";
|
|
||||||
out.poll_p_encryption = "Tot conținutul tău este criptat ca doar persoanele cărora tu le dai link-ul să aibă acces. Nici serverul nu poate să vadă ce modifici.";
|
|
||||||
out.wizardLog = "Click pe butonul din dreapta sus pentru a te ntoarce la sondajul tău";
|
|
||||||
out.wizardTitle = "Folosește wizard-ul pentru a crea sondajul tău";
|
|
||||||
out.wizardConfirm = "Ești pregătit să adaugi aceste opțiuni la sondajul tău?";
|
|
||||||
out.poll_publish_button = "Publică";
|
|
||||||
out.poll_admin_button = "Admin";
|
|
||||||
out.poll_create_user = "Adaugă un nou utilizator";
|
|
||||||
out.poll_create_option = "Adaugă o nouă opțiune";
|
|
||||||
out.poll_commit = "Comite";
|
|
||||||
out.poll_closeWizardButton = "Închide wizard-ul";
|
|
||||||
out.poll_closeWizardButtonTitle = "Închide wizard-ul";
|
|
||||||
out.poll_wizardComputeButton = "Calculează Opțiunile";
|
|
||||||
out.poll_wizardClearButton = "Curăță Tabelul";
|
|
||||||
out.poll_wizardDescription = "Crează automat un număr de opțiuni întroducând orice număr de zile sau intervale orare";
|
|
||||||
|
|
||||||
out.poll_wizardAddDateButton = "+ Zi";
|
|
||||||
out.poll_wizardAddTimeButton = "+ Ore";
|
|
||||||
out.poll_optionPlaceholder = "Opțiune";
|
|
||||||
out.poll_userPlaceholder = "Numele tău";
|
|
||||||
out.poll_removeOption = "Ești sigur că vrei să îndepărtezi această opțiune?";
|
|
||||||
out.poll_removeUser = "Ești sigur că vrei să îndepărtezi aceast utilizator?";
|
|
||||||
out.poll_titleHint = "Titlu";
|
|
||||||
out.poll_descriptionHint = "Descrie sondajul, și apoi folosește butonul 'publică' când ai terminat. Orice utilizator care are link-ul poate modifica descrierea, dar descurajăm această practică.";
|
|
||||||
out.canvas_clear = "Curăță";
|
|
||||||
out.canvas_delete = "Curăță selecția";
|
|
||||||
out.canvas_disable = "Dezactivează modul desen";
|
|
||||||
out.canvas_enable = "Activează modul desen";
|
|
||||||
out.canvas_width = "Lățime";
|
|
||||||
out.canvas_opacity = "Opacitate";
|
|
||||||
out.fm_rootName = "Documente";
|
|
||||||
out.fm_trashName = "Gunoi";
|
|
||||||
out.fm_unsortedName = "Fișiere nesortate";
|
|
||||||
out.fm_filesDataName = "Toate fișierele";
|
|
||||||
out.fm_templateName = "Șabloane";
|
|
||||||
out.fm_searchName = "Caută";
|
|
||||||
out.fm_searchPlaceholder = "Caută...";
|
|
||||||
out.fm_newButton = "Nou";
|
|
||||||
out.fm_newButtonTitle = "Crează un nou pad sau folder";
|
|
||||||
out.fm_newFolder = "Folder nou";
|
|
||||||
out.fm_newFile = "Pad nou";
|
|
||||||
out.fm_folder = "Folder";
|
|
||||||
out.fm_folderName = "Numele folderului";
|
|
||||||
out.fm_numberOfFolders = "# de foldere";
|
|
||||||
out.fm_numberOfFiles = "# of files";
|
|
||||||
out.fm_fileName = "Nume filă";
|
|
||||||
out.fm_title = "Titlu";
|
|
||||||
out.fm_type = "Tip";
|
|
||||||
out.fm_lastAccess = "Ultima accesare";
|
|
||||||
out.fm_creation = "Creare";
|
|
||||||
out.fm_forbidden = "Acțiune interzisă";
|
|
||||||
out.fm_originalPath = "Ruta inițială";
|
|
||||||
out.fm_openParent = "Arată în folder";
|
|
||||||
out.fm_noname = "Document nedenumit";
|
|
||||||
out.fm_emptyTrashDialog = "Ești sigur că vrei să golești coșul de gunoi?";
|
|
||||||
out.fm_removeSeveralPermanentlyDialog = "Ești sigur că vrei să ștergi pentru totdeauna aceste {0} elemente din coșul de gunoi?";
|
|
||||||
out.fm_removePermanentlyDialog = "Ești sigur că vrei să ștergi acest element pentru totdeauna?";
|
|
||||||
out.fm_removeSeveralDialog = "Ești sigur că vrei să muți aceste {0} elemente la coșul de gunoi?";
|
|
||||||
out.fm_removeDialog = "Ești sigur că vrei să muți {0} la gunoi?";
|
|
||||||
out.fm_restoreDialog = "Ești sigur că vrei să restabilești {0} în locația trecută?";
|
|
||||||
out.fm_unknownFolderError = "Ultima locație vizitată sau cea selectată nu mai există. Deschidem fișierul părinte...";
|
|
||||||
out.fm_contextMenuError = "Nu putem deschide meniul de context pentru acest element. Dacă problema persistă, reîncarcă pagina.";
|
|
||||||
out.fm_selectError = "Nu putem selecta elementul vizat. Dacă problema persistă, reîncarcă pagina.";
|
|
||||||
out.fm_categoryError = "Nu putem deschide categoria selectată, afișează sursa.";
|
|
||||||
out.fm_info_root = "Crează câte foldere tip cuib ai nevoie pentru a-ți sorta fișierele.";
|
|
||||||
out.fm_info_unsorted = "Conține toate fișierele pe care le-ai vizitat și nu sunt sortate în \"Documente\" sau mutate în \"Gunoi\".";
|
|
||||||
out.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.";
|
|
||||||
out.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.";
|
|
||||||
out.fm_info_allFiles = "Conține toate fișierele din \"Documente\", \"Nesortate\" și \"Gunoi\". Poți să muți sau să ștergi fișierele aici.";
|
|
||||||
out.fm_info_login = "Loghează-te";
|
|
||||||
out.fm_info_register = "Înscrie-te";
|
|
||||||
out.fm_info_anonymous = "Nu ești logat cu un cont valid așa că aceste pad-uri vor fi șterse (<a href=\"https://blog.cryptpad.fr/2017/05/17/You-gotta-log-in/\" target=\"_blank\">află de ce</a>). <a href=\"/register/\">Înscrie-te</a> sau <a href=\"/login/\">Loghează-te</a> pentru a le salva.";
|
|
||||||
out.fm_alert_backupUrl = "Link copie de rezervă pentru acest drive.<br> Este <strong>foarte recomandat</strong> să o păstrezi pentru tine.<br>Poți să o folosești pentru a recupera toate fișierele în cazul în care memoria browserului tău este șterge..<br>Oricine are linkul poate să editeze sau să îndepărteze toate fișierele din managerul tău de documente.<br>";
|
|
||||||
out.fm_alert_anonymous = "Salut, momentan folosești CryptPad în mod anonim. Este ok, doar că fișierele tale vor fi șterse după o perioadă de inactivitate. Am dezactivat caracteristicile avansate ale drive-ului pentru utilizatorii anonimi pentru a face clar faptul că stocare documentelor acolo nu este o metodă sigură. Poți să <a href=\"https://blog.cryptpad.fr/2017/05/17/You-gotta-log-in/\" target=\"_blank\">citești mai multe</a> despre motivarea noastră și despre ce de trebuie să te <a href=\"/register/\">Înregistrezi</a> si sa te <a href=\"/login/\">Loghezi</a>.";
|
|
||||||
out.fm_backup_title = "Link de backup";
|
|
||||||
out.fm_nameFile = "Cum ai vrea să numești fișierul?";
|
|
||||||
out.fc_newfolder = "Folder nou";
|
|
||||||
out.fc_rename = "Redenumește";
|
|
||||||
out.fc_open = "Deschide";
|
|
||||||
out.fc_open_ro = "Deschide (modul citire)";
|
|
||||||
out.fc_delete = "Șterge";
|
|
||||||
out.fc_restore = "Restaurează";
|
|
||||||
out.fc_remove = "Șterge permanent";
|
|
||||||
out.fc_empty = "Curăță coșul";
|
|
||||||
out.fc_prop = "Proprietăți";
|
|
||||||
out.fc_sizeInKilobytes = "Dimensiune n Kilobytes";
|
|
||||||
out.fo_moveUnsortedError = "Nu poți să muți un folder la lista de pad-uri nesortate";
|
|
||||||
out.fo_existingNameError = "Numele ales este deja folosit în acest director. Te rugăm să alegi altul.";
|
|
||||||
out.fo_moveFolderToChildError = "Nu poți să muți un folder într-unul dintre descendenții săi";
|
|
||||||
out.fo_unableToRestore = "Nu am reușit să restaurăm fișierul în locația de origine. Poți să ncerci să îl muți într-o nouă locație.";
|
|
||||||
out.fo_unavailableName = "Un fișier sau un folder cu același nume există deja în locația nouă. Redenumește elementul și încearcă din nou.";
|
|
||||||
out.login_login = "Loghează-te";
|
|
||||||
out.login_makeAPad = "Crează un pad în modul anonim";
|
|
||||||
out.login_nologin = "Răsfoiește pad-urile locale";
|
|
||||||
out.login_register = "Înscrie-te";
|
|
||||||
out.logoutButton = "Deloghează-te";
|
|
||||||
out.settingsButton = "Setări";
|
|
||||||
out.login_username = "Nume utilizator";
|
|
||||||
out.login_password = "Parolă";
|
|
||||||
out.login_confirm = "Confirmă parola";
|
|
||||||
out.login_remember = "Ține-mă minte";
|
|
||||||
out.login_hashing = "Încriptăm parola, o să mai dureze.";
|
|
||||||
out.login_hello = "Salut {0},";
|
|
||||||
out.login_helloNoName = "Salut,";
|
|
||||||
out.login_accessDrive = "Acesează-ți drive-ul";
|
|
||||||
out.login_orNoLogin = "sau";
|
|
||||||
out.login_noSuchUser = "Nume de utilizator sau parolă invalide. Încearcă din nou sau înscrie-te.";
|
|
||||||
out.login_invalUser = "Nume utilizator cerut";
|
|
||||||
out.login_invalPass = "Parolă cerută";
|
|
||||||
out.login_unhandledError = "O eroare neașteptată a avut loc emoticon_unhappy";
|
|
||||||
out.register_importRecent = "Importă istoricul pad-ului (Recomandat)";
|
|
||||||
out.register_acceptTerms = "Accept <a href='/terms.html'>termenii serviciului</a>";
|
|
||||||
out.register_passwordsDontMatch = "Parolele nu se potrivesc!";
|
|
||||||
out.register_mustAcceptTerms = "Trebuie să accepți termenii serviciului";
|
|
||||||
out.register_mustRememberPass = "Nu putem să îți resetăm parola dacă o uiți. Este foarte important să o ții minte! Bifează căsuța pentru a confirma.";
|
|
||||||
out.register_header = "Bine ai venit în CryptPad";
|
|
||||||
out.register_explanation = "<p>Hai să stabilim câteva lucruri, mai întâi</p><ul><li>Parola ta este cheia secretă care criptează toate pad-urile tale. Dacă pierzi/uiți parola nu există nici-o metodă prin care îți putem recupera datele.</li><li>Poți importa pad-uri care au fost vizionate recent în browser pentru a le avea în cont.</li><li>Dacă folosești un computer împărțit, trebuie să te deloghezi, închiderea taburilor nu este de ajuns.</li></ul>";
|
|
||||||
out.register_writtenPassword = "Mi-am notat numele de utilizator și parola, înaintează.";
|
|
||||||
out.register_cancel = "Întoarce-te";
|
|
||||||
out.register_warning = "Zero Knowledge înseamnă că noi nu îți putem recupera datele dacă îți pierzi parola.";
|
|
||||||
out.register_alreadyRegistered = "Acest user există deja, vrei să te loghezi?";
|
|
||||||
out.settings_title = "Setări";
|
|
||||||
out.settings_save = "Salvează";
|
|
||||||
out.settings_backupTitle = "Fă o copie de rezervă sau restaurează toate datele";
|
|
||||||
out.settings_backup = "Copie de rezervă";
|
|
||||||
out.settings_restore = "Restaurează";
|
|
||||||
out.settings_resetTitle = "Curăță-ți drive-ul";
|
|
||||||
out.settings_reset = "Îndepărtează toate fișierele și folderele din CryptPad-ul tău.";
|
|
||||||
out.settings_resetPrompt = "Această acțiune va indepărta toate pad-urile din drive-ul tău.<br>Ești sigur că vrei să continui?<br>Tastează “<em>Iubesc CryptPad</em>” pentru a confirma.";
|
|
||||||
out.settings_resetDone = "Drive-ul tău este acum gol!";
|
|
||||||
out.settings_resetError = "Text de verificare incorect. CryptPad-ul tău nu a fost schimbat.";
|
|
||||||
out.settings_resetTips = "Sfaturi în CryptDrive";
|
|
||||||
out.settings_resetTipsButton = "Resetează sfaturile disponibile în CryptDrive";
|
|
||||||
out.settings_resetTipsDone = "Toate sfaturile sunt vizibile din nou.";
|
|
||||||
out.settings_importTitle = "Importă pad-urile recente ale acestui browser n CryptDrive-ul meu";
|
|
||||||
out.settings_import = "Importă";
|
|
||||||
out.settings_importConfirm = "Ești sigur că vrei să imporți pad-urile recente ale acestui browser în contul tău de CryptDrive?";
|
|
||||||
out.settings_importDone = "Import complet";
|
|
||||||
out.settings_userFeedbackHint1 = "CryptPad oferă niște feedback foarte simplu serverului, pentru a ne informa cum putem să îți îmbunătățim experiența voastră.";
|
|
||||||
out.settings_userFeedbackHint2 = "Conținutul pad-ului tău nu va fi împărțit cu serverele.";
|
|
||||||
out.settings_userFeedback = "Activează feedback";
|
|
||||||
out.settings_anonymous = "Nu ești logat. Setările sunt specifice browser-ului.";
|
|
||||||
out.settings_publicSigningKey = "Cheia de semnătură publică";
|
|
||||||
out.settings_usage = "Uzaj";
|
|
||||||
out.settings_usageTitle = "Vezi dimensiunea totală a pad-urilor fixate în MB";
|
|
||||||
out.settings_pinningNotAvailable = "Pad-urile fixate sunt disponibile doar utilizatorilor înregistrați.";
|
|
||||||
out.settings_pinningError = "Ceva nu a funcționat";
|
|
||||||
out.settings_usageAmount = "Pad-urile tale fixate ocupă {0}MB";
|
|
||||||
out.settings_logoutEverywhereTitle = "Deloghează-te peste tot";
|
|
||||||
out.settings_logoutEverywhere = "Deloghează-te din toate sesiunile web";
|
|
||||||
out.settings_logoutEverywhereConfirm = "Ești sigur? Va trebui să te loghezi, din nou, pe toate device-urile tale.";
|
|
||||||
out.upload_serverError = "Eroare de server: fișierele tale nu pot fi încărcate la momentul acesta.";
|
|
||||||
out.upload_uploadPending = "Ai deja o încărcare în desfășurare. Anulezi și încarci noul fișier?";
|
|
||||||
out.upload_success = "Fișierul tău ({0}) a fost ncărcat și adăugat la drive-ul tău cu succes.";
|
|
||||||
out.main_p2 = "Acest proiect folosește <a href=\"http://ckeditor.com/\">CKEditor</a> Visual Editor, <a href=\"https://codemirror.net/\">CodeMirror</a>, și <a href=\"https://github.com/xwiki-contrib/chainpad\">ChainPad</a> un motor în timp real.";
|
|
||||||
out.main_howitworks_p1 = "CryptPad folosește o variantă a algoritmului de <a href=\"https://en.wikipedia.org/wiki/Operational_transformation\">Operational transformation</a> care este capabil să găsescă consens distribuit folosind <a href=\"https://bitcoin.org/bitcoin.pdf\">Nakamoto Blockchain</a>, o construcție popularizată de <a href=\"https://en.wikipedia.org/wiki/Bitcoin\">Bitcoin</a>. Astfel algoritmul poate evita nevoia ca serverul central să rezove conflicte, iar serverul nu este interesat de conținutul care este editat în pad.";
|
|
||||||
out.main_about_p2 = "Dacă ai orice fel de întrebare sau comentariu, poți să ne <a href=\"https://twitter.com/cryptpad\">dai un tweet</a>, semnalezi o problemă <a href=\"https://github.com/xwiki-labs/cryptpad/issues/\" title=\"index de probleme\">on github</a>, spui salut pe IRC (<a href=\"http://webchat.freenode.net?channels=%23cryptpad&uio=MT1mYWxzZSY5PXRydWUmMTE9Mjg3JjE1PXRydWUe7\" title=\"freenode webchat\">irc.freenode.net</a>), sau <a href=\"research@xwiki.com\">trimiți un email</a>.";
|
|
||||||
out.main_info = "<h1>Colaborează în siguranță</h1><br> Dezvoltă-ți ideile împreună cu documentele partajate în timp ce tehnologia <strong>Zero Knowledge</strong> îți păstrează securitatea; chiar și de noi.";
|
|
||||||
out.main_howitworks = "Cum funcționează";
|
|
||||||
out.main_zeroKnowledge = "Zero Knowledge";
|
|
||||||
out.main_zeroKnowledge_p = "Nu trebuie să ne crezi că <em>nu ne uităm</em> la pad-urile tale, cu tehnologia revoluționară Zero Knowledge a CryptPad <em>nu putem</em>. Învață mai multe despre cum îți protejăm <a href=\"/privacy.html\" title='Intimitatea'>Intimitate și Securitate</a>.";
|
|
||||||
out.main_writeItDown = "Notează";
|
|
||||||
out.main_writeItDown_p = "Cele mai importante proiecte vin din idei mici. Notează-ți momentele de inspirație și ideile neașteptate pentru că nu știi niciodată care ar putea fi noua mare descoperire.";
|
|
||||||
out.main_share = "Partajează link-ul, partajează pad-ul";
|
|
||||||
out.main_share_p = "Dezvoltă-ți ideile împreună: organizează întâlniri eficiente, colaborează pe liste TODO și fă prezentări scurte cu toți prietenii tăi și device-urile tale.";
|
|
||||||
out.main_organize = "Organizează-te";
|
|
||||||
out.main_organize_p = "Cu CryptPad Drive, poți să stai cu ochii pe ce este important. Folderele îți permit să ții evidența proiectelor tale și să ai o viziune globală asupra evoluției lucrurilor.";
|
|
||||||
out.tryIt = "Testează!";
|
|
||||||
out.main_richText = "Rich Text editor";
|
|
||||||
out.main_richText_p = "Editează texte complexe în mod colaborativ cu Zero Knowledge în timp real. <a href=\"http://ckeditor.com\" target=\"_blank\">CkEditor</a> application.";
|
|
||||||
out.main_code = "Editor cod";
|
|
||||||
out.main_code_p = "Editează cod din softul tău, în mod colaborativ, cu Zero Knowledge în timp real.<a href=\"https://www.codemirror.net\" target=\"_blank\">CodeMirror</a> application.";
|
|
||||||
out.main_slide = "Editor slide-uri";
|
|
||||||
out.main_slide_p = "Crează-ți prezentări folosind sintaxa Markdown, și afișează-le în browser-ul tău.";
|
|
||||||
out.main_poll = "Sondaj";
|
|
||||||
out.main_poll_p = "Plănuiește întâlniri sau evenimente, sau votează pentru cea mai bună soluție pentru problema ta.";
|
|
||||||
out.main_drive = "CryptDrive";
|
|
||||||
out.footer_applications = "Aplicații";
|
|
||||||
out.footer_contact = "Contact";
|
|
||||||
out.footer_aboutUs = "Despre noi";
|
|
||||||
out.about = "Despre";
|
|
||||||
out.privacy = "Privacy";
|
|
||||||
out.contact = "Contact";
|
|
||||||
out.terms = "ToS";
|
|
||||||
out.blog = "Blog";
|
|
||||||
out.policy_title = "Politica de confidențialitate CryptPad";
|
|
||||||
out.policy_whatweknow = "Ce știm despre tine";
|
|
||||||
out.policy_whatweknow_p1 = "Ca o aplicație care este găzduită online, CryptPad are acces la metadatele expuse de protocolul HTTP. Asta include adresa IP-ului tău, și alte titluri HTTP care pot fi folosite ca să identifice un browser. Poți să vezi ce informații împărtășește browser-ul tău vizitând <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.whatismybrowser.com/detect/what-http-headers-is-my-browser-sending\" title=\"what http headers is my browser sending\">WhatIsMyBrowser.com</a>.";
|
|
||||||
out.policy_whatweknow_p2 = "Folosim <a href=\"https://www.elastic.co/products/kibana\" target=\"_blank\" rel=\"noopener noreferrer\" title=\"platforma de analiză open source\">Kibana</a>, o platformă open source, pentru a afla mai multe despre utilizatorii noștri. Kibana ne spune despre cum ai găsit CryptPad, căutare directă, printr-un motor de căutare, sau prin recomandare de la un alt serviciu online ca Reddit sau Twitter.";
|
|
||||||
out.policy_howweuse = "Cum folosim ce aflăm";
|
|
||||||
out.policy_howweuse_p1 = "Folosim aceste informații pentru a lua decizii mai bune în promovarea CryptPad, prin evaluarea eforturilor trecute care au fost de succes. Informațiile despre locația ta ne ajută să aflăm dacă ar trebui să oferim suport pentru alte limbi, pe lângă engleză.";
|
|
||||||
out.policy_howweuse_p2 = "Informațiile despre browser-ul tău (dacă este bazat pe un sistem de operare desktop sau mobil) ne ajută să luăm decizii când prioritizăm viitoarele îmbunătățiri. Echipa noastră de dezvoltare este mică, și încercăm să facem alegeri care să îmbunătățească experiența câtor mai mulți utilizatori.";
|
|
||||||
|
|
||||||
out.policy_whatwetell = "Ce le spunem altora despre tine";
|
|
||||||
out.policy_whatwetell_p1 = "Nu furnizăm informațiile obținute terților, decât dacă ne este cerut în mod legal.";
|
|
||||||
out.policy_links = "Link-uri către alte site-uri";
|
|
||||||
out.policy_links_p1 = "Acest site conține link-uri către alte site-uri, incluzându-le pe cele produse de alte organizații. Nu suntem responsabili pentru practicile de intimitate sau pentru conținutul site-urilor externe. Ca regulă generală, link-urile către site-uri externe sunt deschise ntr-o fereastră noup, pentru a face clar faptul că părăsiți CryptPad.fr.";
|
|
||||||
out.policy_ads = "Reclame";
|
|
||||||
out.policy_ads_p1 = "Nu afișăm nici o formă de publicitate online, dar s-ar putea să atașăm link-uri către instituțiile care ne finanțează cerecetarea.";
|
|
||||||
out.policy_choices = "Ce alegeri ai";
|
|
||||||
out.policy_choices_open = "Codul nostru este open source, așa că tu ai mereu posibilitatea de a-ți găzdui propria instanță de CryptPad.";
|
|
||||||
out.policy_choices_vpn = "Dacă vrei să folosești instanța găzduită de noi, dar nu vrei să îți expui IP-ul, poți să îl protejezi folosind <a href=\"https://www.torproject.org/projects/torbrowser.html.en\" title=\"downloads from the Tor project\" target=\"_blank\" rel=\"noopener noreferrer\">Tor browser bundle</a>, sau <a href=\"https://riseup.net/en/vpn\" title=\"VPNs provided by Riseup\" target=\"_blank\" rel=\"noopener noreferrer\">VPN</a>.";
|
|
||||||
out.policy_choices_ads = "Dacă vrei doar să blochezi platforma noastră de analiză, poți folosi soluții de adblocking ca <a href=\"https://www.eff.org/privacybadger\" title=\"download privacy badger\" target=\"_blank\" rel=\"noopener noreferrer\">Privacy Badger</a>.";
|
|
||||||
out.tos_title = "CryptPad Termeni de Utilizare";
|
|
||||||
out.tos_legal = "Te rugăm să nu fii rău intenționat, abuziv, sau să faci orice ilegal.";
|
|
||||||
out.tos_availability = "Sperăm că o să găsești acest serviciu util, dar disponibilitatea sau performanța nu poate fi garantată. Te rugăm să îți exporți datele n mod regulat.";
|
|
||||||
out.tos_e2ee = "Conținutul CryptPad poate fi citit sau modificat de oricine care poate ghici sau obține fragmentul identificator al pad-ului. Recomandăm să folosești soluții de comunicare criptate end-to-end-encrypted (e2ee) pentru a partaja link-uri, evitând orice risc în cazul unei scurgeri de informații.";
|
|
||||||
out.tos_logs = "Metadatele oferite de browser-ul tău serverului ar putea fi înscrise în scopul de a menține serviciul.";
|
|
||||||
out.tos_3rdparties = "Nu oferim date personale terților, decât dacă ne sunt solicitate prin lege.";
|
|
||||||
out.bottom_france = "<a href=\"http://www.xwiki.com/\" target=\"_blank\" rel=\"noopener noreferrer\">Realizat cu <img class=\"bottom-bar-heart\" src=\"/customize/heart.png\" alt=\"love\" /> n <img class=\"bottom-bar-fr\" src=\"/customize/fr.png\" alt=\"Franța\" /></a>";
|
|
||||||
out.bottom_support = "<a href=\"http://labs.xwiki.com/\" title=\"XWiki Labs\" target=\"_blank\" rel=\"noopener noreferrer\">Un proiect al <img src=\"/customize/logo-xwiki2.png\" alt=\"XWiki SAS\" class=\"bottom-bar-xwiki\"/> Labs Project </a> cu susținerea <a href=\"http://ng.open-paas.org/\" title=\"OpenPaaS::ng\" target=\"_blank\" rel=\"noopener noreferrer\"> <img src=\"/customize/openpaasng.png\" alt=\"OpenPaaS-ng\" class=\"bottom-bar-openpaas\" /></a>";
|
|
||||||
out.header_france = "<a href=\"http://www.xwiki.com/\" target=\"_blank\" rel=\"noopener noreferrer\">With <img class=\"bottom-bar-heart\" src=\"/customize/heart.png\" alt=\"love\" /> from <img class=\"bottom-bar-fr\" src=\"/customize/fr.png\" title=\"Franța\" alt=\"Franța\"/> by <img src=\"/customize/logo-xwiki.png\" alt=\"XWiki SAS\" class=\"bottom-bar-xwiki\"/></a>";
|
|
||||||
out.header_support = "<a href=\"http://ng.open-paas.org/\" title=\"OpenPaaS::ng\" target=\"_blank\" rel=\"noopener noreferrer\"> <img src=\"/customize/openpaasng.png\" alt=\"OpenPaaS-ng\" class=\"bottom-bar-openpaas\" /></a>";
|
|
||||||
out.header_logoTitle = "Mergi la pagina principală";
|
|
||||||
out.initialState = "<p>Acesta este <strong>CryptPad</strong>, editorul colaborativ bazat pe tehnologia Zero Knowledge în timp real. Totul este salvat pe măsură ce scrii.<br>Partajează link-ul către acest pad pentru a edita cu prieteni sau folosește <span class=\"fa fa-share-alt\"></span> butonul pentru a partaja <em>read-only link</em> permițând vizualizarea dar nu și editarea.</p>";
|
|
||||||
out.codeInitialState = "/*\n Acesta este editorul colaborativ de cod bazat pe tehnologia Zero Knowledge CryptPad.\n Ce scrii aici este criptat, așa că doar oamenii care au link-ul pot să-l acceseze.\n Poți să alegi ce limbaj de programare pus n evidență și schema de culori UI n dreapta sus.\n*/";
|
|
||||||
out.slideInitialState = "# CryptSlide\n1. Scrie-ți conținutul slide-urilor folosind sintaxa markdown\n - Află mai multe despre sintaxa markdown [aici](http://www.markdowntutorial.com/)\n2. Separă-ți slide-urile cu ---\n3. Click pe butonul \"Play\" pentru a vedea rezultatele - Slide-urile tale sunt actualizate în timp real.";
|
|
||||||
out.driveReadmeTitle = "Ce este CryptPad?";
|
|
||||||
out.readme_welcome = "Bine ai venit n CryptPad !";
|
|
||||||
out.readme_p1 = "Bine ai venit în CryptPad, acesta este locul unde îți poți lua notițe, singur sau cu prietenii.";
|
|
||||||
out.readme_p2 = "Acest pad o să îți ofere un scurt ghid în cum poți să folosești CryptPad pentru a lua notițe, a le ține organizate și a colabora pe ele.";
|
|
||||||
out.readme_cat1 = "Descoperă-ți CryptDrive-ul";
|
|
||||||
out.readme_cat1_l1 = "Crează un pad: În CryptDrive-ul tău, dă click {0} apoi {1} și poți să creezi un pad.";
|
|
||||||
out.readme_cat1_l2 = "Deschide pad-urile din CryptDrive-ul tău: doublu-click pe iconița unui pad pentru a-l deschide.";
|
|
||||||
out.readme_cat1_l3 = "Organizează-ți pad-urile: Când ești logat, orice pad accesezi va fi afișat ca în secțiunea {0} a drive-ului tău.";
|
|
||||||
out.readme_cat1_l3_l1 = "Poți să folosești funcția click and drag pentru a muta fișierele în folderele secțiunii {0} a drive-ului tău și pentru a crea noi foldere.";
|
|
||||||
out.readme_cat1_l3_l2 = "Ține minte să încerci click-dreapta pe iconițe pentru că există și meniuri adiționale.";
|
|
||||||
out.readme_cat1_l4 = "Pune pad-urile vechi în gunoi. Poți să folosești funcția click and drag pe pad-uri în categoria {0} la fel ca și în cazul folderelor.";
|
|
||||||
out.readme_cat2 = "Crează pad-uri ca un profesionist";
|
|
||||||
out.edit = "editează";
|
|
||||||
out.view = "vezi";
|
|
||||||
out.readme_cat2_l1 = "Butonul {0} din pad-ul tău dă accesul colaboratorilor tăi să {1} sau să {2} pad-ul.";
|
|
||||||
out.readme_cat2_l2 = "Schimbă titlul pad-ului dând click pe creion";
|
|
||||||
out.readme_cat3 = "Descoperă aplicațiile CryptPad";
|
|
||||||
out.readme_cat3_l1 = "Cu editorul de cod CryptPad, poți colabora pe cod ca Javascript și markdown ca HTML și Markdown";
|
|
||||||
out.readme_cat3_l2 = "Cu editorul de slide-uri CryptPad, poți să faci prezentări scurte folosind Markdown";
|
|
||||||
out.readme_cat3_l3 = "Cu CryptPoll poți să organizezi votări rapide, mai ales pentru a programa ntâlniri care se potrivesc calendarelor tuturor";
|
|
||||||
|
|
||||||
out.tips = { };
|
|
||||||
out.tips.lag = "Iconița verde din dreapta-sus arată calitatea conexiunii internetului tău la serverele CryptPad.";
|
|
||||||
out.tips.shortcuts = "`ctrl+b`, `ctrl+i` and `ctrl+u` sunt scurtături pentru bold, italic și underline.";
|
|
||||||
out.tips.indentare = "În listele cu bulină sau cele numerotate, poți folosi tab sau shift+tab pentru a mări sau micșora indentarea.";
|
|
||||||
out.tips.titlu = "Poți seta titlul pad-urilor tale prin click pe centru sus.";
|
|
||||||
out.tips.stocare = "De fiecare dată când vizitezi un pad, dacă ești logat va fi salvat pe CryptDrive-ul tău.";
|
|
||||||
out.tips.marker = "Poți sublinia text într-un pad folosind itemul \"marker\" n meniul de stiluri.";
|
|
||||||
|
|
||||||
out.feedback_about = "Dacă citești asta, probabil că ești curios de ce CryptPad cere pagini web atunci când întreprinzi anumite acțiuni";
|
|
||||||
out.feedback_privacy = "Ne pasă de intimitatea ta, si în același timp vrem să păstrăm CryptPad ușor de folosit. Folosim acest fișier pentru a ne da seama care beneficii UI contează cel mai mult pentru utilizatori, cerându-l alături de un parametru specific atunci când acțiunea se desfășoară";
|
|
||||||
out.feedback_optout = "Dacă vrei să ieși, vizitează <a href='/settings/'>setările de pe pagina ta de user</a>, unde vei găsi o căsuță pentru a activa sau dezactiva feedback-ul de la user";
|
|
||||||
|
|
||||||
return out;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -0,0 +1,17 @@
|
|||||||
|
// This file is used when a user tries to export the entire CryptDrive.
|
||||||
|
// Pads from the code app will be exported using this format instead of plain text.
|
||||||
|
define([
|
||||||
|
'/common/sframe-common-codemirror.js',
|
||||||
|
], function (SFCodeMirror) {
|
||||||
|
var module = {};
|
||||||
|
|
||||||
|
module.main = function (userDoc, cb) {
|
||||||
|
var mode = userDoc.highlightMode || 'gfm';
|
||||||
|
var content = userDoc.content;
|
||||||
|
module.type = SFCodeMirror.getContentExtension(mode);
|
||||||
|
cb(SFCodeMirror.fileExporter(content));
|
||||||
|
};
|
||||||
|
|
||||||
|
return module;
|
||||||
|
});
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -0,0 +1,99 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
Original highlight.js style (c) Ivan Sagalaev <maniac@softwaremaniacs.org>
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
.hljs {
|
||||||
|
display: block;
|
||||||
|
overflow-x: auto;
|
||||||
|
padding: 0.5em;
|
||||||
|
background: #F0F0F0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Base color: saturation 0; */
|
||||||
|
|
||||||
|
.hljs,
|
||||||
|
.hljs-subst {
|
||||||
|
color: #444;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-comment {
|
||||||
|
color: #888888;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-keyword,
|
||||||
|
.hljs-attribute,
|
||||||
|
.hljs-selector-tag,
|
||||||
|
.hljs-meta-keyword,
|
||||||
|
.hljs-doctag,
|
||||||
|
.hljs-name {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* User color: hue: 0 */
|
||||||
|
|
||||||
|
.hljs-type,
|
||||||
|
.hljs-string,
|
||||||
|
.hljs-number,
|
||||||
|
.hljs-selector-id,
|
||||||
|
.hljs-selector-class,
|
||||||
|
.hljs-quote,
|
||||||
|
.hljs-template-tag,
|
||||||
|
.hljs-deletion {
|
||||||
|
color: #880000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-title,
|
||||||
|
.hljs-section {
|
||||||
|
color: #880000;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-regexp,
|
||||||
|
.hljs-symbol,
|
||||||
|
.hljs-variable,
|
||||||
|
.hljs-template-variable,
|
||||||
|
.hljs-link,
|
||||||
|
.hljs-selector-attr,
|
||||||
|
.hljs-selector-pseudo {
|
||||||
|
color: #BC6060;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Language color: hue: 90; */
|
||||||
|
|
||||||
|
.hljs-literal {
|
||||||
|
color: #78A960;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-built_in,
|
||||||
|
.hljs-bullet,
|
||||||
|
.hljs-code,
|
||||||
|
.hljs-addition {
|
||||||
|
color: #397300;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Meta color: hue: 200 */
|
||||||
|
|
||||||
|
.hljs-meta {
|
||||||
|
color: #1f7199;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-meta-string {
|
||||||
|
color: #4d99bf;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Misc effects */
|
||||||
|
|
||||||
|
.hljs-emphasis {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-strong {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
@ -0,0 +1,99 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
github.com style (c) Vasily Polovnyov <vast@whiteants.net>
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
.hljs {
|
||||||
|
display: block;
|
||||||
|
overflow-x: auto;
|
||||||
|
padding: 0.5em;
|
||||||
|
color: #333;
|
||||||
|
background: #f8f8f8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-comment,
|
||||||
|
.hljs-quote {
|
||||||
|
color: #998;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-keyword,
|
||||||
|
.hljs-selector-tag,
|
||||||
|
.hljs-subst {
|
||||||
|
color: #333;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-number,
|
||||||
|
.hljs-literal,
|
||||||
|
.hljs-variable,
|
||||||
|
.hljs-template-variable,
|
||||||
|
.hljs-tag .hljs-attr {
|
||||||
|
color: #008080;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-string,
|
||||||
|
.hljs-doctag {
|
||||||
|
color: #d14;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-title,
|
||||||
|
.hljs-section,
|
||||||
|
.hljs-selector-id {
|
||||||
|
color: #900;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-subst {
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-type,
|
||||||
|
.hljs-class .hljs-title {
|
||||||
|
color: #458;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-tag,
|
||||||
|
.hljs-name,
|
||||||
|
.hljs-attribute {
|
||||||
|
color: #000080;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-regexp,
|
||||||
|
.hljs-link {
|
||||||
|
color: #009926;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-symbol,
|
||||||
|
.hljs-bullet {
|
||||||
|
color: #990073;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-built_in,
|
||||||
|
.hljs-builtin-name {
|
||||||
|
color: #0086b3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-meta {
|
||||||
|
color: #999;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-deletion {
|
||||||
|
background: #fdd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-addition {
|
||||||
|
background: #dfd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-emphasis {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-strong {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
@ -0,0 +1,243 @@
|
|||||||
|
define([
|
||||||
|
'/common/common-util.js',
|
||||||
|
'/common/common-constants.js',
|
||||||
|
'/customize/messages.js',
|
||||||
|
'/bower_components/chainpad-crypto/crypto.js',
|
||||||
|
], function (Util, Constants, Messages, Crypto) {
|
||||||
|
var Cursor = {};
|
||||||
|
|
||||||
|
var convertToUint8 = function (obj) {
|
||||||
|
var l = Object.keys(obj).length;
|
||||||
|
var u = new Uint8Array(l);
|
||||||
|
for (var i = 0; i<l; i++) {
|
||||||
|
u[i] = obj[i];
|
||||||
|
}
|
||||||
|
return u;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Send the client's cursor to their channel when we receive an update
|
||||||
|
var sendMyCursor = function (ctx, clientId) {
|
||||||
|
var client = ctx.clients[clientId];
|
||||||
|
if (!client || !client.cursor) { return; }
|
||||||
|
var chan = ctx.channels[client.channel];
|
||||||
|
if (!chan) { return; }
|
||||||
|
var data = {
|
||||||
|
id: client.id,
|
||||||
|
cursor: client.cursor
|
||||||
|
};
|
||||||
|
chan.sendMsg(JSON.stringify(data));
|
||||||
|
ctx.emit('MESSAGE', data, chan.clients.filter(function (cl) {
|
||||||
|
return cl !== clientId;
|
||||||
|
}));
|
||||||
|
};
|
||||||
|
|
||||||
|
// Send all our cursors data when someone remote joins the channel
|
||||||
|
var sendOurCursors = function (ctx, chan) {
|
||||||
|
chan.clients.forEach(function (c) {
|
||||||
|
var client = ctx.clients[c];
|
||||||
|
if (!client) { return; }
|
||||||
|
var data = {
|
||||||
|
id: client.id,
|
||||||
|
cursor: client.cursor
|
||||||
|
};
|
||||||
|
// Send our data to the other users (NOT including the other tabs of the same worker)
|
||||||
|
chan.sendMsg(JSON.stringify(data));
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
var initCursor = function (ctx, obj, client, cb) {
|
||||||
|
var channel = obj.channel;
|
||||||
|
var secret = obj.secret;
|
||||||
|
if (secret.keys.cryptKey) {
|
||||||
|
secret.keys.cryptKey = convertToUint8(secret.keys.cryptKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
var padChan = secret.channel;
|
||||||
|
var network = ctx.store.network;
|
||||||
|
var first = true;
|
||||||
|
|
||||||
|
var c = ctx.clients[client];
|
||||||
|
if (!c) {
|
||||||
|
c = ctx.clients[client] = {
|
||||||
|
channel: channel,
|
||||||
|
padChan: padChan,
|
||||||
|
cursor: {}
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
return void cb();
|
||||||
|
}
|
||||||
|
|
||||||
|
var chan = ctx.channels[channel];
|
||||||
|
if (chan) {
|
||||||
|
// This channel is already open in another tab
|
||||||
|
|
||||||
|
// ==> Set the ID to our client object
|
||||||
|
if (!c.id) { c.id = chan.wc.myID + '-' + client; }
|
||||||
|
|
||||||
|
// ==> Send the cursor position of the other tabs
|
||||||
|
chan.clients.forEach(function (cl) {
|
||||||
|
var clientObj = ctx.clients[cl];
|
||||||
|
if (!clientObj) { return; }
|
||||||
|
ctx.emit('MESSAGE', {
|
||||||
|
id: clientObj.id,
|
||||||
|
cursor: clientObj.cursor
|
||||||
|
}, [client]);
|
||||||
|
});
|
||||||
|
chan.sendMsg(JSON.stringify({join: true, id: c.id}));
|
||||||
|
|
||||||
|
// ==> And push the new tab to the list
|
||||||
|
chan.clients.push(client);
|
||||||
|
return void cb();
|
||||||
|
}
|
||||||
|
|
||||||
|
var onOpen = function (wc) {
|
||||||
|
|
||||||
|
ctx.channels[channel] = ctx.channels[channel] || {};
|
||||||
|
|
||||||
|
var chan = ctx.channels[channel];
|
||||||
|
if (!c.id) { c.id = wc.myID + '-' + client; }
|
||||||
|
if (chan.clients) {
|
||||||
|
// If 2 tabs from the same worker have been opened at the same time,
|
||||||
|
// we have to fix both of them
|
||||||
|
chan.clients.forEach(function (cl) {
|
||||||
|
if (ctx.clients[cl] && !ctx.clients[cl].id) {
|
||||||
|
ctx.clients[cl].id = wc.myID + '-' + cl;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (!chan.encryptor) { chan.encryptor = Crypto.createEncryptor(secret.keys); }
|
||||||
|
|
||||||
|
wc.on('join', function () {
|
||||||
|
sendOurCursors(ctx, chan);
|
||||||
|
});
|
||||||
|
wc.on('leave', function (peer) {
|
||||||
|
ctx.emit('MESSAGE', {leave: true, id: peer}, chan.clients);
|
||||||
|
});
|
||||||
|
wc.on('message', function (cryptMsg) {
|
||||||
|
var msg = chan.encryptor.decrypt(cryptMsg, secret.keys && secret.keys.validateKey);
|
||||||
|
var parsed;
|
||||||
|
try {
|
||||||
|
parsed = JSON.parse(msg);
|
||||||
|
if (parsed && parsed.join) {
|
||||||
|
return void sendOurCursors(ctx, chan);
|
||||||
|
}
|
||||||
|
ctx.emit('MESSAGE', parsed, chan.clients);
|
||||||
|
} catch (e) { console.error(e); }
|
||||||
|
});
|
||||||
|
|
||||||
|
chan.wc = wc;
|
||||||
|
chan.sendMsg = function (msg, cb) {
|
||||||
|
cb = cb || function () {};
|
||||||
|
var cmsg = chan.encryptor.encrypt(msg);
|
||||||
|
wc.bcast(cmsg).then(function () {
|
||||||
|
cb();
|
||||||
|
}, function (err) {
|
||||||
|
cb({error: err});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!first) { return; }
|
||||||
|
chan.clients = [client];
|
||||||
|
first = false;
|
||||||
|
cb();
|
||||||
|
};
|
||||||
|
|
||||||
|
network.join(channel).then(onOpen, function (err) {
|
||||||
|
return void cb({error: err});
|
||||||
|
});
|
||||||
|
|
||||||
|
network.on('reconnect', function () {
|
||||||
|
if (!ctx.channels[channel]) { console.log("cant reconnect", channel); return; }
|
||||||
|
network.join(channel).then(onOpen, function (err) {
|
||||||
|
console.error(err);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
var updateCursor = function (ctx, data, client, cb) {
|
||||||
|
var c = ctx.clients[client];
|
||||||
|
if (!c) { return void cb({error: 'NO_CLIENT'}); }
|
||||||
|
data.color = Util.find(ctx.store.proxy, ['settings', 'general', 'cursor', 'color']);
|
||||||
|
data.name = ctx.store.proxy[Constants.displayNameKey] || Messages.anonymous;
|
||||||
|
data.avatar = Util.find(ctx.store.proxy, ['profile', 'avatar']);
|
||||||
|
c.cursor = data;
|
||||||
|
sendMyCursor(ctx, client);
|
||||||
|
cb();
|
||||||
|
};
|
||||||
|
|
||||||
|
var leaveChannel = function (ctx, padChan) {
|
||||||
|
// Leave channel and prevent reconnect when we leave a pad
|
||||||
|
Object.keys(ctx.channels).some(function (cursorChan) {
|
||||||
|
var channel = ctx.channels[cursorChan];
|
||||||
|
if (channel.padChan !== padChan) { return; }
|
||||||
|
if (channel.wc) { channel.wc.leave(); }
|
||||||
|
delete ctx.channels[cursorChan];
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
// Remove the client from all its channels when a tab is closed
|
||||||
|
var removeClient = function (ctx, clientId) {
|
||||||
|
var filter = function (c) {
|
||||||
|
return c !== clientId;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Remove the client from our channels
|
||||||
|
var chan;
|
||||||
|
for (var k in ctx.channels) {
|
||||||
|
chan = ctx.channels[k];
|
||||||
|
chan.clients = chan.clients.filter(filter);
|
||||||
|
if (chan.clients.length === 0) {
|
||||||
|
if (chan.wc) { chan.wc.leave(); }
|
||||||
|
delete ctx.channels[k];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Send the leave message to the channel we were in
|
||||||
|
if (ctx.clients[clientId]) {
|
||||||
|
var leaveMsg = {
|
||||||
|
leave: true,
|
||||||
|
id: ctx.clients[clientId].id
|
||||||
|
};
|
||||||
|
chan = ctx.channels[ctx.clients[clientId].channel];
|
||||||
|
if (chan) {
|
||||||
|
chan.sendMsg(JSON.stringify(leaveMsg));
|
||||||
|
ctx.emit('MESSAGE', leaveMsg, chan.clients);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
delete ctx.clients[clientId];
|
||||||
|
};
|
||||||
|
|
||||||
|
Cursor.init = function (store, emit) {
|
||||||
|
var cursor = {};
|
||||||
|
var ctx = {
|
||||||
|
store: store,
|
||||||
|
emit: emit,
|
||||||
|
channels: {},
|
||||||
|
clients: {}
|
||||||
|
};
|
||||||
|
|
||||||
|
cursor.removeClient = function (clientId) {
|
||||||
|
removeClient(ctx, clientId);
|
||||||
|
};
|
||||||
|
cursor.leavePad = function (padChan) {
|
||||||
|
leaveChannel(ctx, padChan);
|
||||||
|
};
|
||||||
|
cursor.execCommand = function (clientId, obj, cb) {
|
||||||
|
var cmd = obj.cmd;
|
||||||
|
var data = obj.data;
|
||||||
|
if (cmd === 'INIT_CURSOR') {
|
||||||
|
return void initCursor(ctx, data, clientId, cb);
|
||||||
|
}
|
||||||
|
if (cmd === 'UPDATE') {
|
||||||
|
return void updateCursor(ctx, data, clientId, cb);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return cursor;
|
||||||
|
};
|
||||||
|
|
||||||
|
return Cursor;
|
||||||
|
});
|
@ -0,0 +1,59 @@
|
|||||||
|
define([
|
||||||
|
'/common/common-util.js',
|
||||||
|
], function (Util) {
|
||||||
|
var module = {};
|
||||||
|
|
||||||
|
module.create = function (Common) {
|
||||||
|
var exp = {};
|
||||||
|
var sframeChan = Common.getSframeChannel();
|
||||||
|
var metadataMgr = Common.getMetadataMgr();
|
||||||
|
var privateData = metadataMgr.getPrivateData();
|
||||||
|
var share = Util.find(privateData, ['settings', 'general', 'cursor', 'share']);
|
||||||
|
var show = Util.find(privateData, ['settings', 'general', 'cursor', 'show']);
|
||||||
|
|
||||||
|
var execCommand = function (cmd, data, cb) {
|
||||||
|
sframeChan.query('Q_CURSOR_COMMAND', {cmd: cmd, data: data}, function (err, obj) {
|
||||||
|
if (err || (obj && obj.error)) { return void cb(err || (obj && obj.error)); }
|
||||||
|
cb(void 0, obj);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
exp.updateCursor = function (obj) {
|
||||||
|
if (share === false) { return; }
|
||||||
|
execCommand('UPDATE', obj, function (err) {
|
||||||
|
if (err) { console.error(err); }
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
var messageHandlers = [];
|
||||||
|
exp.onCursorUpdate = function (handler) {
|
||||||
|
messageHandlers.push(handler);
|
||||||
|
};
|
||||||
|
var onMessage = function (data) {
|
||||||
|
if (show === false) { return; }
|
||||||
|
messageHandlers.forEach(function (h) {
|
||||||
|
try {
|
||||||
|
h(data);
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
sframeChan.on('EV_CURSOR_EVENT', function (obj) {
|
||||||
|
var cmd = obj.ev;
|
||||||
|
var data = obj.data;
|
||||||
|
if (cmd === 'MESSAGE') {
|
||||||
|
onMessage(data);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return exp;
|
||||||
|
};
|
||||||
|
|
||||||
|
return module;
|
||||||
|
});
|
||||||
|
|
||||||
|
|
@ -1,121 +0,0 @@
|
|||||||
define([], function () {
|
|
||||||
var MI = {};
|
|
||||||
|
|
||||||
MI.create = function (sFrameChan) {
|
|
||||||
var messenger = {};
|
|
||||||
|
|
||||||
var _handlers = {
|
|
||||||
message: [],
|
|
||||||
join: [],
|
|
||||||
leave: [],
|
|
||||||
update: [],
|
|
||||||
friend: [],
|
|
||||||
unfriend: []
|
|
||||||
};
|
|
||||||
|
|
||||||
messenger.on = function (key, f) {
|
|
||||||
if (!_handlers[key]) { throw new Error('invalid event'); }
|
|
||||||
_handlers[key].push(f);
|
|
||||||
};
|
|
||||||
|
|
||||||
sFrameChan.on('EV_CONTACTS_MESSAGE', function (data) {
|
|
||||||
_handlers.message.forEach(function (f) {
|
|
||||||
f(data);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
sFrameChan.on('EV_CONTACTS_JOIN', function (data) {
|
|
||||||
_handlers.join.forEach(function (f) {
|
|
||||||
f(data.curvePublic, data.channel);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
sFrameChan.on('EV_CONTACTS_LEAVE', function (data) {
|
|
||||||
_handlers.leave.forEach(function (f) {
|
|
||||||
f(data.curvePublic, data.channel);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
sFrameChan.on('EV_CONTACTS_UPDATE', function (data) {
|
|
||||||
_handlers.update.forEach(function (f) {
|
|
||||||
f(data.info, data.curvePublic);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
sFrameChan.on('EV_CONTACTS_FRIEND', function (data) {
|
|
||||||
_handlers.friend.forEach(function (f) {
|
|
||||||
f(data.curvePublic);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
sFrameChan.on('EV_CONTACTS_UNFRIEND', function (data) {
|
|
||||||
_handlers.unfriend.forEach(function (f) {
|
|
||||||
f(data.curvePublic);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
/*** QUERIES ***/
|
|
||||||
messenger.getFriendList = function (cb) {
|
|
||||||
sFrameChan.query('Q_CONTACTS_GET_FRIEND_LIST', null, function (err, data) {
|
|
||||||
cb(err || data.error, data.data);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
messenger.getMyInfo = function (cb) {
|
|
||||||
sFrameChan.query('Q_CONTACTS_GET_MY_INFO', null, function (err, data) {
|
|
||||||
cb(err || data.error, data.data);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
messenger.getFriendInfo = function (curvePublic, cb) {
|
|
||||||
sFrameChan.query('Q_CONTACTS_GET_FRIEND_INFO', curvePublic, function (err, data) {
|
|
||||||
cb(err || data.error, data.data);
|
|
||||||
//cb({ error: err, data: data, });
|
|
||||||
});
|
|
||||||
};
|
|
||||||
messenger.removeFriend = function (curvePublic, cb) {
|
|
||||||
sFrameChan.query('Q_CONTACTS_REMOVE_FRIEND', curvePublic, function (err, data) {
|
|
||||||
cb(err || data.error, data.data);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
messenger.openFriendChannel = function (curvePublic, cb) {
|
|
||||||
sFrameChan.query('Q_CONTACTS_OPEN_FRIEND_CHANNEL', curvePublic, function (err, data) {
|
|
||||||
cb(err || data.error);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
messenger.getStatus = function (curvePublic, cb) {
|
|
||||||
sFrameChan.query('Q_CONTACTS_GET_STATUS', curvePublic, function (err, data) {
|
|
||||||
cb(err || data.error, data.data);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
messenger.getMoreHistory = function (curvePublic, sig, count, cb) {
|
|
||||||
sFrameChan.query('Q_CONTACTS_GET_MORE_HISTORY', {
|
|
||||||
curvePublic: curvePublic,
|
|
||||||
sig: sig,
|
|
||||||
count: count
|
|
||||||
}, function (err, data) {
|
|
||||||
cb(err || data.error, data.data);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
messenger.sendMessage = function (curvePublic, content, cb) {
|
|
||||||
sFrameChan.query('Q_CONTACTS_SEND_MESSAGE', {
|
|
||||||
content: content,
|
|
||||||
curvePublic: curvePublic,
|
|
||||||
}, function (err, data) {
|
|
||||||
cb(err || data.error);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
messenger.setChannelHead = function (curvePublic, sig, cb) {
|
|
||||||
sFrameChan.query('Q_CONTACTS_SET_CHANNEL_HEAD', {
|
|
||||||
curvePublic: curvePublic,
|
|
||||||
sig: sig,
|
|
||||||
}, function (e, data) {
|
|
||||||
cb(e || data.error);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
messenger.clearOwnedChannel = function (channel, cb) {
|
|
||||||
sFrameChan.query('Q_CONTACTS_CLEAR_OWNED_CHANNEL', channel, function (e) {
|
|
||||||
cb(e);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
return messenger;
|
|
||||||
};
|
|
||||||
|
|
||||||
return MI;
|
|
||||||
});
|
|
@ -0,0 +1,129 @@
|
|||||||
|
# Adding Translations
|
||||||
|
|
||||||
|
To illustrate the process of translating, this guide will make an english-pirate translation of Cryptpad.
|
||||||
|
We'll assume that you have a work locally-installed, properly functioning installation of Cryptpad.
|
||||||
|
If you don't have Cryptpad installed locally, start by following the steps in the main readme.
|
||||||
|
|
||||||
|
## Getting started
|
||||||
|
|
||||||
|
Once everything is working, copy the default (English) source file (`/www/common/translations/messages.js`) to a file named according to your language's [ISO 639-1 Code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes), like `/www/common/translations/messages.fr.js`.
|
||||||
|
There is no ISO 639-1 language code for _English-pirate_, so we'll just call it `messages.pirate.js`.
|
||||||
|
|
||||||
|
```Bash
|
||||||
|
cd www/common/translations/
|
||||||
|
cp messages.js messages.pirate.js
|
||||||
|
```
|
||||||
|
|
||||||
|
## Including your translation
|
||||||
|
|
||||||
|
To include your translation in the list, you'll need to add it to `/customize.dist/messages.js`.
|
||||||
|
There are comments indicating what to modify in three places:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
(function () {
|
||||||
|
// add your module to this map so it gets used
|
||||||
|
// please use the translated name of your language ("Français" and not "French")
|
||||||
|
var map = {
|
||||||
|
'fr': 'Français',
|
||||||
|
'es': 'Español',
|
||||||
|
'pl': 'Polski',
|
||||||
|
'de': 'Deutsch',
|
||||||
|
'pt-br': 'Português do Brasil',
|
||||||
|
'ro': 'Română',
|
||||||
|
'zh': '繁體中文',
|
||||||
|
'el': 'Ελληνικά',
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
We need to modify that map to include our translation:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
(function () {
|
||||||
|
// add your module to this map so it gets used
|
||||||
|
// please use the translated name of your language ("Français" and not "French")
|
||||||
|
var map = {
|
||||||
|
'fr': 'Français',
|
||||||
|
'es': 'Español',
|
||||||
|
'pl': 'Polski',
|
||||||
|
'de': 'Deutsch',
|
||||||
|
'pt-br': 'Português do Brasil',
|
||||||
|
'ro': 'Română',
|
||||||
|
'zh': '繁體中文',
|
||||||
|
'el': 'Ελληνικά',
|
||||||
|
'pirate': 'English Pirate', // add our module to the map of languages
|
||||||
|
};
|
||||||
|
```
|
||||||
|
Just add your module in a similar fashion to the existing translations, save your changes, and close `/customize.dist/messages.js`.
|
||||||
|
|
||||||
|
|
||||||
|
You also need to add a customizable version of you translation. To do so, make a copy of the file `/customize.dist/translations/messages.js` with your translation name (`messages.pirate.js` in our case), and change its content to load the correct language file:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
/*
|
||||||
|
* You can override the translation text using this file.
|
||||||
|
* The recommended method is to make a copy of this file (/customize.dist/translations/messages.{LANG}.js)
|
||||||
|
in a 'customize' directory (/customize/translations/messages.{LANG}.js).
|
||||||
|
* If you want to check all the existing translation keys, you can open the internal language file
|
||||||
|
but you should not change it directly (/common/translations/messages.{LANG}.js)
|
||||||
|
*/
|
||||||
|
define(['/common/translations/messages.pirate.js'], function (Messages) { // Change the file name here
|
||||||
|
// Replace the existing keys (in your copied file) here:
|
||||||
|
// Messages.button_newpad = "New Rich Text Document";
|
||||||
|
return Messages;
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
That's all!
|
||||||
|
|
||||||
|
## Actually translating content
|
||||||
|
|
||||||
|
Now we can go back to our file, `/www/common/translations/messages.pirate.js` and start to add our Pirate-language customizations.
|
||||||
|
|
||||||
|
Open the translation file you created in `/customize.dist/translations/`.
|
||||||
|
You should see something like:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
define(function () {
|
||||||
|
var out = {};
|
||||||
|
|
||||||
|
out.main_title = "Cryptpad: Zero Knowledge, Collaborative Real Time Editing";
|
||||||
|
```
|
||||||
|
|
||||||
|
Now you just need to work through this file, updating the strings like so:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
define(function () {
|
||||||
|
var out = {};
|
||||||
|
|
||||||
|
out.main_title = "Cryptpad: Knowledge lost at sea while ye scribble with yer mateys";
|
||||||
|
```
|
||||||
|
|
||||||
|
It's important that you modify just the string, and not the variable name which is used to access its content.
|
||||||
|
For instance, changing `main_title` to `mainTitle` would make the translated string inaccessible to the rest of the codebase.
|
||||||
|
|
||||||
|
If a key is not found in your translation, the default English version of that key will be used.
|
||||||
|
This is to make sure that buttons and other interface elements are not empty, but it's obviously not ideal.
|
||||||
|
|
||||||
|
## Verifying Your Translations
|
||||||
|
|
||||||
|
It's advisable to save your translation file frequently, and reload Cryptpad in your browser to check that there are no errors in your translation file.
|
||||||
|
If there are any errors in your code, the file will fail to parse, and the page will no load correctly.
|
||||||
|
|
||||||
|
Checking frequently will make it easier to know which change caused the error.
|
||||||
|
|
||||||
|
Additionally, we advise using the apps and visiting the various pages, to make sure that your translations make sense in context.
|
||||||
|
|
||||||
|
When you're happy with your translation file, you can visit http://localhost:3000/assert/translations/ to view Cryptpad's tests.
|
||||||
|
These tests will check to make sure that your translation has an entry for every entry in the default English translation.
|
||||||
|
|
||||||
|
## Getting Help
|
||||||
|
|
||||||
|
If you have any issues, reach out via any of the methods listed in the readme under **Contacting Us**.
|
||||||
|
We're happy to help.
|
||||||
|
|
||||||
|
## Deleting a translation
|
||||||
|
When a key is nolonger used (such as presentSuccess) you can delete it using this bash one-liner.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
( export KEY=presentSuccess && grep -nr "$KEY" ./www/common/translations/ | sed 's/:.*$//' | while read x; do sed -i -e "/out\.$KEY =/d" $x; done )
|
||||||
|
```
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,583 @@
|
|||||||
|
/*
|
||||||
|
* This is an internal language file.
|
||||||
|
* If you want to change some translations in your CryptPad instance, use the '/customize/translations/messages.{LANG}.js'
|
||||||
|
* file (make a copy from /customize.dist/translations/messages.{LANG}.js)
|
||||||
|
*/
|
||||||
|
define(function () {
|
||||||
|
var out = {};
|
||||||
|
|
||||||
|
out._languageName = 'Español';
|
||||||
|
|
||||||
|
out.main_title = "Cryptpad: Zero Knowledge, Editor Colaborativo en Tiempo Real";
|
||||||
|
out.main_slogan = "La unidad es la fuerza - la colaboración es la clave";
|
||||||
|
|
||||||
|
out.type = {};
|
||||||
|
out.type.pad = 'Pad';
|
||||||
|
out.type.code = 'Código';
|
||||||
|
out.type.poll = 'Encuesta';
|
||||||
|
out.type.slide = 'Presentación';
|
||||||
|
out.type.whiteboard = 'Pizarra';
|
||||||
|
out.type.contacts = 'Contactos';
|
||||||
|
|
||||||
|
out.disconnected = "Desconectado";
|
||||||
|
out.synchronizing = "Sincronización";
|
||||||
|
out.reconnecting = "Reconectando...";
|
||||||
|
out.lag = "Retraso";
|
||||||
|
out.readonly = 'Sólo lectura';
|
||||||
|
out.anonymous = 'Anónimo';
|
||||||
|
out.yourself = "Tú mismo";
|
||||||
|
out.anonymousUsers = "usuarios anónimos";
|
||||||
|
out.anonymousUser = "usuario anónimo";
|
||||||
|
out.users = "Usuarios";
|
||||||
|
out.and = "y";
|
||||||
|
out.viewer = "espectador";
|
||||||
|
out.viewers = "espectadores";
|
||||||
|
out.editor = "editor";
|
||||||
|
out.editors = "editores";
|
||||||
|
|
||||||
|
out.greenLight = "Todo funciona bien";
|
||||||
|
out.orangeLight = "La conexión es lenta y podría afectar la experiencia";
|
||||||
|
out.redLight = "Has sido desconectado de la sesión";
|
||||||
|
|
||||||
|
out.importButtonTitle = 'Importar un documento de tus archivos locales';
|
||||||
|
|
||||||
|
out.exportButtonTitle = 'Exportar este documento a un archivo local';
|
||||||
|
out.exportPrompt = '¿Cómo te gustaría llamar a este archivo?';
|
||||||
|
|
||||||
|
out.changeNamePrompt = 'Cambiar tu nombre (dejar vacío para ser anónimo): ';
|
||||||
|
|
||||||
|
out.clickToEdit = "Haz clic para cambiar";
|
||||||
|
|
||||||
|
out.forgetButtonTitle = 'Eliminar este documento de la lista en la pagina de inicio';
|
||||||
|
out.forgetPrompt = 'Pulsar OK eliminará este documento del almacenamiento local (localStorage), ¿estás seguro?';
|
||||||
|
|
||||||
|
out.shareButton = 'Compartir';
|
||||||
|
out.shareSuccess = 'URL copiada al portapapeles';
|
||||||
|
|
||||||
|
out.presentButtonTitle = "Entrar en el modo presentación";
|
||||||
|
|
||||||
|
out.backgroundButtonTitle = 'Cambiar el color de fondo en el modo presentación';
|
||||||
|
out.colorButtonTitle = 'Cambiar el color de texto en el modo presentación';
|
||||||
|
|
||||||
|
out.editShare = "URL de edición compartida";
|
||||||
|
out.editShareTitle = "Copiar la URL de edición al portapapeles";
|
||||||
|
out.viewShare = "Compartir URL de sólo lectura";
|
||||||
|
out.viewShareTitle = "Copiar la URL de sólo lectura al portapapeles";
|
||||||
|
out.viewOpen = "Ver en pestaña nueva";
|
||||||
|
out.viewOpenTitle = "Abrir el documento en sólo lectura en una pestaña nueva";
|
||||||
|
|
||||||
|
out.notifyJoined = "{0} se ha unido a la sesión de colaboración";
|
||||||
|
out.notifyRenamed = "{0} ahora se conoce como {1}";
|
||||||
|
out.notifyLeft = "{0} ha dejado la sesión de colaboración";
|
||||||
|
|
||||||
|
out.tryIt = '¡Pruébalo!';
|
||||||
|
|
||||||
|
out.okButton = 'OK (Enter)';
|
||||||
|
out.cancelButton = 'Cancelar (Esc)';
|
||||||
|
|
||||||
|
// Polls
|
||||||
|
|
||||||
|
out.poll_title = "Selector de fecha Zero Knowledge";
|
||||||
|
out.poll_subtitle = "Agenda en <em>tiempo real</em> Zero Knowledge";
|
||||||
|
|
||||||
|
out.poll_p_save = "Tus configuraciones se actualizan instantáneamente, no es necesario guardar cambios.";
|
||||||
|
out.poll_p_encryption = "Todos los datos entrados son cifrados, sólo las personas que poseen el enlace tienen acceso. Incluso el servidor no puede ver el contenido.";
|
||||||
|
|
||||||
|
out.wizardLog = "Presiona el botón en la parte superior izquierda para volver a la encuesta";
|
||||||
|
out.wizardTitle = "Utiliza el asistente para crear tu encuesta";
|
||||||
|
out.wizardConfirm = "¿Estás realmente seguro de agregar estas opciones a tu encuesta?";
|
||||||
|
|
||||||
|
out.poll_closeWizardButton = "Cerrar el asistente";
|
||||||
|
out.poll_closeWizardButtonTitle = "Cerrar el asistente";
|
||||||
|
out.poll_wizardComputeButton = "Generar opciones";
|
||||||
|
out.poll_wizardClearButton = "Limpiar tabla";
|
||||||
|
out.poll_wizardDescription = "Crear opciones automáticamente ingresando cualquier cantidad de fechas y horas";
|
||||||
|
out.poll_wizardAddDateButton = "+ Fechas";
|
||||||
|
out.poll_wizardAddTimeButton = "+ Horas";
|
||||||
|
|
||||||
|
out.poll_optionPlaceholder = "Opción";
|
||||||
|
out.poll_userPlaceholder = "Tu nombre";
|
||||||
|
out.poll_removeOption = "¿Estás seguro de que quieres eliminar esta opción?";
|
||||||
|
out.poll_removeUser = "¿Estás seguro de que quieres eliminar este usuario?";
|
||||||
|
|
||||||
|
out.poll_titleHint = "Título";
|
||||||
|
out.poll_descriptionHint = "Descripción";
|
||||||
|
|
||||||
|
// index.html
|
||||||
|
|
||||||
|
out.main_p2 = 'Este proyecto utiliza el editor de texto visual <a href="http://ckeditor.com/">CKEditor</a>, <a href="https://codemirror.net/">CodeMirror</a>, y el motor en tiempo real <a href="https://github.com/xwiki-contrib/chainpad">ChainPad</a>.';
|
||||||
|
out.main_howitworks = '¿Cómo funciona?';
|
||||||
|
out.main_howitworks_p1 = "CryptPad utiliza una variante del algoritmo de <a href='https://en.wikipedia.org/wiki/Operational_transformation'>transformación operacional</a> (página en inglés) que es capaz de encontrar un consenso distribuido usando un <a href='https://bitcoin.org/bitcoin.pdf'>Blockchain Nakamoto</a> (página en inglés), popularizado por <a href='https://es.wikipedia.org/wiki/Bitcoin'>Bitcoin</a>. De esta manera el algoritmo puede evitar la necesidad de un servidor central para resolver conflictos de edición de la transformación operacional y sin necesidad de resolver conflictos, el servidor puede mantenerse inconsciente del contenido que se está editando en el pad.";
|
||||||
|
out.main_about_p2 = 'Si tienes preguntas o comentarios, puedes <a href="https://twitter.com/cryptpad"><i class="fa fa-twitter"></i>enviarnos un tweet</a>, abrir un issue <a href="https://github.com/xwiki-labs/cryptpad/issues/" title="nuestro issue tracker">en <i class="fa fa-github"></i>GitHub</a>. saludarnos en <a href="https://riot.im/app/#/room/#cryptpad:matrix.org" title="Matrix">nuestro <i class="fa fa-comment"></i>canal Matrix</a> o en IRC (#cryptpad on irc.freenode.net), o <a href="mailto:research@xwiki.com"><i class="fa fa-envelope"></i>envianos un email</a>.';
|
||||||
|
|
||||||
|
out.button_newpad = 'Crear nuevo pad de texto enriquecido';
|
||||||
|
out.button_newcode = 'Crear nuevo pad de código';
|
||||||
|
out.button_newpoll = 'Crear nueva encuesta';
|
||||||
|
out.button_newslide = 'Crear nueva presentación';
|
||||||
|
|
||||||
|
// privacy.html
|
||||||
|
|
||||||
|
out.policy_title = 'Política de privacidad Cryptpad';
|
||||||
|
out.policy_whatweknow = 'Qué sabemos sobre tí';
|
||||||
|
out.policy_whatweknow_p1 = 'Como cualquier aplicación que está en la red, Cryptpad tiene acceso a los metadatos expuestos por el protocolo HTTP. Esto incluye tu dirección IP, y otros headers HTTP que pueden ser utilizados para identificar a tu navegador propio. Puedes ver la información que comparte tu navegador visitando <a target="_blank" rel="noopener noreferrer" href="https://www.whatismybrowser.com/detect/what-http-headers-is-my-browser-sending" title="Qué headers HTTP esta compartiendo mi navegador">WhatIsMyBrowser.com</a> (página en inglés).';
|
||||||
|
out.policy_whatweknow_p2 = 'Nosotros usamos <a href="https://piwik.org/" target="_blank" rel="noopener noreferrer" title="open source analytics platform">Piwik</a>, una plataforma de analítica de datos abierta, para conocer mejor a nuestros usuarios. Piwik nos dice como encontraste Cryptpad, en entrada manual, por un motor de búsqueda, or por referal de otra página como Reddit o Twitter. También aprendemos cuándo visitas, qué páginas ves en nuestra web, y cuánto tiempo te quedas en cada una.';
|
||||||
|
out.policy_howweuse = 'Cómo usamos lo que aprendemos';
|
||||||
|
out.policy_howweuse_p1 = 'Usamos esta información para tomar mejores decisiones para promocionar Cryptpad, para evaluar cuáles de nuestros esfuerzos han sido exitosos. La información sobre tu ubicación nos permite saber si deberíamos considerar mejor soporte para idiomas diferentes al inglés.';
|
||||||
|
out.policy_howweuse_p2 = "La información sobre tu navegador (en escritorio o móvil) nos ayuda a saber qué características que debemos mejorar. Nuestro equipo de desarrollo es pequeño, e intentamos tomar decisiones que beneficien a la experiencia de la mayoría de nuestros usuarios.";
|
||||||
|
out.policy_whatwetell = 'Lo que decimos a otros sobre tí';
|
||||||
|
out.policy_whatwetell_p1 = 'No suministramos la información que recolectamos a terceros a menos de estar legalmente obligados a hacerlo.';
|
||||||
|
out.policy_links = 'Enlaces a otras páginas';
|
||||||
|
out.policy_links_p1 = 'Esta web contiene enlaces a otros sitios, incluyendo algunos producidos por otras organizaciones. No somos responsables del tratamiento de la privacidad de los datos ni el contenido de páginas externas. Como regla general, los enlaces externos se abren en una nueva pestaña del navegador, para clarificar que estás abandonando a Cryptpad.fr.';
|
||||||
|
out.policy_ads = 'Anuncios';
|
||||||
|
out.policy_ads_p1 = 'Nosotros no mostramos anuncios, pero podemos poner enlaces a las organizaciones que financian nuestro trabajo de investigación.';
|
||||||
|
out.policy_choices = 'Lo que puedes hacer';
|
||||||
|
out.policy_choices_open = 'Nuestro código fuente es abierto para que siempre tengas la opción de desplegar tu propia instancia de Cryptpad.';
|
||||||
|
out.policy_choices_vpn = 'Si deseas utilizar nuestra instancia, pero no deseas exponer tu dirección IP, puedes protegerla utilizando <a href="https://www.torproject.org/projects/torbrowser.html.en" title="descargas Tor project" target="_blank" rel="noopener noreferrer">el navegador Tor</a>, o un <a href="https://riseup.net/en/vpn" title="VPNs por Riseup" target="_blank" rel="noopener noreferrer">VPN</a>.';
|
||||||
|
out.policy_choices_ads = 'Si deseas no ser seguido por nuestra plataforma, puedes utilizar herramientas como <a href="https://www.eff.org/privacybadger" title="descargar a Privacy Badger" target="_blank" rel="noopener noreferrer">Privacy Badger</a>.';
|
||||||
|
|
||||||
|
// terms.html
|
||||||
|
|
||||||
|
out.tos_title = "Condiciones de servicio Cryptpad";
|
||||||
|
out.tos_legal = "Por favor, no seas malicioso, abusivo o hagas algo ilegal.";
|
||||||
|
out.tos_availability = "Esperamos que este servicio te parezca útil, pero nuestra disponibilidad o rendimiento no pueden ser garantizados. Por favor, exporta tus datos regularmente.";
|
||||||
|
out.tos_e2ee = "Los documentos Cryptpad pueden ser leídos o modificados por cualquiera que pueda adivinar o que pueda tener el enlace. Recomendamos que utilices mensajes cifrados de punto a punto (e2ee) para compartir URLs, no asumimos ninguna responsabilidad en el evento de alguna fuga.";
|
||||||
|
out.tos_logs = "Los metadatos entregados por el navegador al servidor pueden ser almacenados para la mantenencia del servicio.";
|
||||||
|
out.tos_3rdparties = "No proveemos datos individualizados a terceros a menos de ser obligados por la ley.";
|
||||||
|
|
||||||
|
// BottomBar.html
|
||||||
|
|
||||||
|
out.bottom_france = '<a href="http://www.xwiki.com/" target="_blank" rel="noopener noreferrer">Hecho con <img class="bottom-bar-heart" src="/customize/heart.png" alt="amor" /> en <img class="bottom-bar-fr" src="/customize/fr.png" alt="Francia" /></a>';
|
||||||
|
out.bottom_support = '<a href="http://labs.xwiki.com/" title="XWiki Labs" target="_blank" rel="noopener noreferrer">Un <img src="/customize/logo-xwiki2.png" alt="XWiki SAS" class="bottom-bar-xwiki"/>Proyecto Labs</a> con el soporte de <a href="http://ng.open-paas.org/" title="OpenPaaS::ng" target="_blank" rel="noopener noreferrer"><img src="/customize/openpaasng.png" alt="OpenPaaS-ng" class="bottom-bar-openpaas" /></a>';
|
||||||
|
|
||||||
|
// Header.html
|
||||||
|
|
||||||
|
out.header_france = '<a href="http://www.xwiki.com/" target="_blank" rel="noopener noreferrer">Con <img class="bottom-bar-heart" src="/customize/heart.png" alt="amor" /> de <img class="bottom-bar-fr" src="/customize/fr.png" title="France" alt="Francia"/> por <img src="/customize/logo-xwiki.png" alt="XWiki SAS" class="bottom-bar-xwiki"/></a>';
|
||||||
|
out.header_support = '<a href="http://ng.open-paas.org/" title="OpenPaaS::ng" target="_blank" rel="noopener noreferre-r"> <img src="/customize/openpaasng.png" alt="OpenPaaS-ng" class="bottom-bar-openpaas" /></a>';
|
||||||
|
out.header_logoTitle = 'Ir a la página principal';
|
||||||
|
|
||||||
|
out.websocketError = "Error al conectarse al servidor WebSocket";
|
||||||
|
out.typeError = "Este documento no es compatible con la aplicación seleccionada";
|
||||||
|
out.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.";
|
||||||
|
out.loading = "Cargando...";
|
||||||
|
out.error = "Error";
|
||||||
|
out.language = "Idioma";
|
||||||
|
out.user_rename = "Cambiar nombre";
|
||||||
|
out.user_displayName = "Nombre visible";
|
||||||
|
out.user_accountName = "Nombre de cuenta";
|
||||||
|
out.newButton = "Nuevo";
|
||||||
|
out.newButtonTitle = "Nuevo documento";
|
||||||
|
out.cancel = "Cancelar";
|
||||||
|
out.poll_publish_button = "Publicar";
|
||||||
|
out.poll_admin_button = "Administrar";
|
||||||
|
out.poll_create_user = "Añadir usuario";
|
||||||
|
out.poll_create_option = "Añadir opción";
|
||||||
|
out.poll_commit = "Validar";
|
||||||
|
out.fm_rootName = "Documentos";
|
||||||
|
out.fm_trashName = "Papelera";
|
||||||
|
out.fm_unsortedName = "Sin organizar";
|
||||||
|
out.fm_filesDataName = "Todos los archivos";
|
||||||
|
out.fm_templateName = "Plantilla";
|
||||||
|
out.fm_newButton = "Nuevo";
|
||||||
|
out.fm_newFolder = "Nueva carpeta";
|
||||||
|
out.fm_folder = "Carpeta";
|
||||||
|
out.fm_folderName = "Nombre de carpeta";
|
||||||
|
out.fm_numberOfFolders = "# de carpetas";
|
||||||
|
out.fm_numberOfFiles = "# de archivos";
|
||||||
|
out.fm_fileName = "Nombre";
|
||||||
|
out.fm_title = "Título";
|
||||||
|
out.fm_lastAccess = "Último acceso";
|
||||||
|
out.fm_creation = "Creación";
|
||||||
|
out.fm_forbidden = "Acción prohibida";
|
||||||
|
out.fm_originalPath = "Enlace original";
|
||||||
|
out.fm_noname = "Documento sin título";
|
||||||
|
out.fm_emptyTrashDialog = "¿Seguro que quieres vaciar la papelera?";
|
||||||
|
out.fm_removeSeveralPermanentlyDialog = "¿Seguro que quieres eliminar estos {0} elementos de la papelera para siempre?";
|
||||||
|
out.fm_removePermanentlyDialog = "¿Seguro que quieres eliminar este elemento para siempre?";
|
||||||
|
out.fm_removeSeveralDialog = "¿Seguro que quieres mover estos {0} elementos a la papelera?";
|
||||||
|
out.fm_removeDialog = "¿Seguro que quieres mover {0} a la papelera?";
|
||||||
|
out.fm_restoreDialog = "¿Seguro que quieres recuperar {0}?";
|
||||||
|
out.fm_unknownFolderError = "La carpeta seleccionada ya no existe. Abriendo la carpeta anterior...";
|
||||||
|
out.fm_contextMenuError = "No se pudo abrir el menú para este elemento. Si persiste el problema, recarga la página.";
|
||||||
|
out.fm_selectError = "No se pudo abrir el elemento. Si persiste el problema, recarga la página.";
|
||||||
|
out.fm_info_root = "Crea carpetas aquí para organizar tus documentos.";
|
||||||
|
out.fm_info_unsorted = "Contiene todos los documentos que has visitado que no están organizados en \"Documentos\" o movidos a la \"Papelera\".";
|
||||||
|
out.fm_info_template = "Contiene todas las plantillas que puedes volver a usar para crear nuevos documentos.";
|
||||||
|
out.fm_info_allFiles = "Contiene todos los archivos de \"Documentos\", \"Sin organizar\" y \"Papelera\". No puedes mover o eliminar archivos aquí.";
|
||||||
|
out.fm_alert_backupUrl = "Enlace de copia de seguridad para este drive. Te recomendamos <strong>encarecidamente</strong> que lo guardes secreto.<br>Lo puedes usar para recuperar todos tus archivos en el caso que la memoria de tu navegador se borre.<br>Cualquiera con este enlace puede editar o eliminar todos los archivos en el explorador.<br>";
|
||||||
|
out.fm_backup_title = "Enlace de copia de seguridad";
|
||||||
|
out.fm_nameFile = "¿Cómo quieres nombrar este archivo?";
|
||||||
|
out.fc_newfolder = "Nueva carpeta";
|
||||||
|
out.fc_rename = "Cambiar nombre";
|
||||||
|
out.fc_open = "Abrir";
|
||||||
|
out.fc_open_ro = "Abrir (sólo lectura)";
|
||||||
|
out.fc_delete = "Eliminar";
|
||||||
|
out.fc_restore = "Recuperar";
|
||||||
|
out.fc_remove = "Eliminar para siempre";
|
||||||
|
out.fc_empty = "Vaciar la papelera";
|
||||||
|
out.fc_prop = "Propiedades";
|
||||||
|
out.fo_moveUnsortedError = "No puedes mover una carpeta en la lista de documentos no organizados";
|
||||||
|
out.fo_existingNameError = "Nombre ya utilizado en esta carpeta. Por favor elige otro.";
|
||||||
|
out.fo_moveFolderToChildError = "No puedes mover una carpeta en una de sus subcarpetas";
|
||||||
|
out.fo_unableToRestore = "No se pudo restaurar este archivo a la localización de origen. Puedes intentar moverlo a otra localización.";
|
||||||
|
out.fo_unavailableName = "Un archivo o carpeta ya tiene este nombre. Cámbialo y vuelve a intentarlo.";
|
||||||
|
out.login_login = "Iniciar sesión";
|
||||||
|
out.login_makeAPad = "Crear documento anónimo";
|
||||||
|
out.login_nologin = "Ver documentos locales";
|
||||||
|
out.login_register = "Registrarse";
|
||||||
|
out.logoutButton = "Cerrar sesión";
|
||||||
|
out.settingsButton = "Preferencias";
|
||||||
|
out.login_username = "Nombre de usuario";
|
||||||
|
out.login_password = "Contraseña";
|
||||||
|
out.login_confirm = "Confirmar contraseña";
|
||||||
|
out.login_remember = "Recuérdame";
|
||||||
|
out.login_hashing = "Generando hash de tu contraseña, esto puede tardar un poco.";
|
||||||
|
out.login_hello = "Hola {0},";
|
||||||
|
out.login_helloNoName = "Hola,";
|
||||||
|
out.login_accessDrive = "Acceder a tu drive";
|
||||||
|
out.login_orNoLogin = "o";
|
||||||
|
out.login_noSuchUser = "Credenciales inválidos. Inténtalo de nuevo, o regístrate";
|
||||||
|
out.login_invalUser = "Nombre de usuario requerido";
|
||||||
|
out.login_invalPass = "Contraseña requerida";
|
||||||
|
out.login_unhandledError = "Ha ocurrido un error inesperado :(";
|
||||||
|
out.register_importRecent = "Importe el historial de tu sesión anónima";
|
||||||
|
|
||||||
|
out.register_acceptTerms = "Acepto los <a href='/terms.html' tabindex='-1'>términos de servicio</a>";
|
||||||
|
out.register_passwordsDontMatch = "Las contraseñas no corresponden";
|
||||||
|
out.register_mustAcceptTerms = "Tienes que aceptar los términos de servicio";
|
||||||
|
out.register_mustRememberPass = "No podemos reiniciar tu contraseña si la olvidas. ¡Es muy importante que la recuerdes! Marca la casilla para confirmarlo.";
|
||||||
|
out.register_header = "Bienvenido a CryptPad";
|
||||||
|
out.register_explanation = ["<p>Vamos a ver algunas cosas antes</p>", "<ul>", "<li>Tu contraseña es tu clave secreta que cifra todos tus documentos. Si la pierdes no podremos recuperar tus datos.</li>", "<li>Puedes importar documentos que has visto recientemente en tu navegador para tenerlos en tu cuenta.</li>", "<li>Si estás usando un ordenador compartido, tienes que cerrar sesión cuando terminas, cerrar la pestaña no es suficiente.</li>", "</ul>"].join('');
|
||||||
|
out.settings_title = "Preferencias";
|
||||||
|
out.settings_save = "Guardar";
|
||||||
|
out.settings_backupTitle = "Copia de seguridad";
|
||||||
|
out.settings_backup = "Copia de seguridad";
|
||||||
|
out.settings_restore = "Recuperar datos";
|
||||||
|
out.settings_reset = "Quita todos los documentos de tu CryptDrive";
|
||||||
|
out.settings_resetPrompt = "Esta acción eliminará todos tus documentos.<br>¿Seguro que quieres continuar?<br>Introduce “<em>I love CryptPad</em>” para confirmar.";
|
||||||
|
out.settings_resetDone = "¡Tu drive ahora está vacio!";
|
||||||
|
out.settings_resetTips = "Consejos en CryptDrive";
|
||||||
|
out.settings_resetTipsButton = "Restaurar consejos";
|
||||||
|
out.settings_resetTipsDone = "Todos los consejos ahora están visibles";
|
||||||
|
out.main_info = "<h1>Colabora con Confianza</h1><br>Cultiva ideas juntos con documentos compartidos con tecnología <strong>Zero Knowledge</strong> que protege tu privacidad.";
|
||||||
|
out.main_zeroKnowledge = "Zero Knowledge";
|
||||||
|
out.main_zeroKnowledge_p = "No tienes que confiar en que <em>no</em> veremos tus documentos, con la tecnología Zero Knowledge de CryptPad <em>no podemos</em>. Aprende más sobre cómo protegemos tu <a href=\"/privacy.html\" title='Privacidad'>Privacidad y Seguridad</a>.";
|
||||||
|
out.main_writeItDown = "Escríbelo";
|
||||||
|
out.main_writeItDown_p = "Los mejores proyectos vienen de las más pequeñas ideas. Escribe tus momentos de inspiración e ideas inesperadas porque nunca sabrás cuál será tu próximo descubrimiento.";
|
||||||
|
out.main_share = "Comparte el enlace, comparte el pad";
|
||||||
|
out.main_share_p = "Cultiva ideas juntos: ten reuniones eficaces, colabora en listas y haz presentaciones rápidas en todos tus dispositivos.";
|
||||||
|
out.main_organize = "Organízate";
|
||||||
|
out.main_organize_p = "Con CryptPad Drive, mantén tu atención en lo más importante. Las carpetas te permiten organizar tus proyectos y tener una visión global de dónde van las cosas.";
|
||||||
|
out.main_richText = "Editor de Texto Enriquecido";
|
||||||
|
out.main_richText_p = "Colabora en texto enriquecido con nuestro editor Zero Knowledge en tiempo real <a href=\"http://ckeditor.com\" target=\"_blank\">CkEditor</a>.";
|
||||||
|
out.main_code = "Editor de código";
|
||||||
|
out.main_code_p = "Edita código fuente para tus programas con nuestro editor Zero Knowledge en tiempo real <a href=\"https://www.codemirror.net\" target=\"_blank\">CodeMirror</a>.";
|
||||||
|
out.main_slide = "Editor de presentación";
|
||||||
|
out.main_slide_p = "Crea presentaciones utilizando Markdown, y visualízalos en tu navegador";
|
||||||
|
out.main_poll = "Encuestas";
|
||||||
|
out.main_poll_p = "Planifica tus reuniones y eventos, o vota para la mejor solución a un problema.";
|
||||||
|
out.main_drive = "CryptDrive";
|
||||||
|
out.footer_applications = "Aplicaciones";
|
||||||
|
out.footer_contact = "Contacto";
|
||||||
|
out.footer_aboutUs = "Acerca de nosotros";
|
||||||
|
out.about = "Acerca de nosotros";
|
||||||
|
out.privacy = "Privacidad";
|
||||||
|
out.contact = "Contacto";
|
||||||
|
out.terms = "Términos de Servicio";
|
||||||
|
|
||||||
|
// 1.1.0 - Bunyip
|
||||||
|
out.movedToTrash = "Este pad fue movido a la papelera.<br><a href\"/drive/\">Acceder a mi Drive</a>";
|
||||||
|
out.fm_newFile = "Nuevo pad";
|
||||||
|
out.fm_type = "Tipo";
|
||||||
|
out.fm_categoryError = "No se pudo abrir la categoría seleccionada, mostrando la raíz.";
|
||||||
|
out.settings_userFeedbackHint1 = "CryptPad suministra informaciones muy básicas al servidor, para ayudarnos a mejorar vuestra experiencia.";
|
||||||
|
out.settings_userFeedbackHint2 = "El contenido de tu pad nunca será compartido con el servidor.";
|
||||||
|
out.settings_userFeedback = "Activar feedback";
|
||||||
|
out.settings_anonymous = "No has iniciado sesión. Tus ajustes se aplicarán sólo a este navegador.";
|
||||||
|
out.blog = "Blog";
|
||||||
|
|
||||||
|
out.initialState = [
|
||||||
|
'<p>',
|
||||||
|
'Esto es <strong>CryptPad</strong>, el editor colaborativo en tiempo real Zero Knowledge. Todo está guardado cuando escribes.',
|
||||||
|
'<br>',
|
||||||
|
'Comparte el enlace a este pad para editar con amigos o utiliza el botón <span class="fa fa-share-alt"></span> para obtener un <em>enlace sólo lectura</em> que permite leer pero no escribir.',
|
||||||
|
'</p>',
|
||||||
|
].join('');
|
||||||
|
|
||||||
|
out.codeInitialState = "/*\n Esto es CryptPad, el editor colaborativo en tiempo real zero knowledge.\n Lo que escribes aquí está cifrado de manera que sólo las personas con el enlace pueden acceder a ello.\n Incluso el servidor no puede ver lo que escribes.\n Lo que ves aquí, lo que escuchas aquí, cuando sales, se queda aquí\n*/";
|
||||||
|
out.slideInitialState = "# CryptSlide\n1. Escribe tu contenido en Markdown\n - Puedes aprender más sobre Markdown [aquí](http://www.markdowntutorial.com/)\n2. Separa tus diapositivas con ---\n3. Haz clic en \"Presentar\" para ver el resultado - Tus diapositivas se actualizan en tiempo real";
|
||||||
|
out.driveReadmeTitle = "¿Qué es CryptPad?";
|
||||||
|
out.readme_welcome = "¡Bienvenido a CryptPad!";
|
||||||
|
out.readme_p1 = "Bienvenido a CryptPad, aquí podrás anotar cosas solo o con otra gente.";
|
||||||
|
out.readme_p2 = "Este pad es una guía rápida para aprender a usar a CryptPad para tomar notas, organizarlas y trabajar con más personas.";
|
||||||
|
out.readme_cat1 = "Conoce tu CryptDrive";
|
||||||
|
out.readme_cat1_l1 = "Crea un pad: En CryptDrive, haz clic en {0} y luego en {1} para crear un pad.";
|
||||||
|
out.readme_cat1_l2 = "Abrir pads desde CryptDrive: haz doble clic en un icono para abrirlo.";
|
||||||
|
out.readme_cat1_l3 = "Organiza tus pads: Cuando has iniciado sesión, cada pad al que accedes se quedará en tu drive en {0}.";
|
||||||
|
out.readme_cat1_l3_l1 = "Puedes hacer clic y arrastrar archivos en carpetas desde {0}, y crear nuevas carpetas.";
|
||||||
|
out.readme_cat1_l3_l2 = "Recuerda hacer clic derecho en los iconos, ya que suele haber menús adicionales.";
|
||||||
|
out.readme_cat1_l4 = "Elimina tus viejos pads: Haz clic y arrastra tus pads en la {0} de la misma manera que lo harías con carpetas.";
|
||||||
|
out.readme_cat2 = "Haz pads como un pro";
|
||||||
|
out.edit = "editar";
|
||||||
|
out.view = "ver";
|
||||||
|
out.readme_cat2_l1 = "El botón {0} en tu pad te permite dar acceso a colaboradores para {1} o {2} el pad.";
|
||||||
|
out.readme_cat2_l2 = "Cambia el título del pad haciendo clic en el lápiz";
|
||||||
|
out.readme_cat3 = "Descubre las apps CryptPad";
|
||||||
|
out.readme_cat3_l1 = "Con el editor de código CryptPad, puedes colaborar en código fuente, como por ejemplo JavaScript y Markdown";
|
||||||
|
out.readme_cat3_l2 = "Con los slides CryptPad, puedes hacer presentaciones rápidas con Markdown";
|
||||||
|
out.readme_cat3_l3 = "Con CryptPoll puedes hacer una encuesta rápida, especialmente útil para programar un horario que conviene a todo el mundo";
|
||||||
|
|
||||||
|
// 1.2.0 - Chupacabra
|
||||||
|
|
||||||
|
out.settings_resetError = "Verificación no válida. Tu CryptDrive no fue cambiado.";
|
||||||
|
out.saved = "Guardado";
|
||||||
|
out.printButton = "Imprimir";
|
||||||
|
out.printButtonTitle = "Imprimir tu presentación o exportar a PDF";
|
||||||
|
out.printOptions = "Opciones de impresión";
|
||||||
|
out.printSlideNumber = "Mostrar el número de diapositiva";
|
||||||
|
out.printDate = "Mostrar la fecha";
|
||||||
|
out.printTitle = "Mostrar el título";
|
||||||
|
out.printCSS = "CSS personalizado:";
|
||||||
|
out.editOpen = "Abrir enlaces de edición en pestaña nueva";
|
||||||
|
out.editOpenTitle = "Abrir en modo edición en pestaña nueva";
|
||||||
|
out.settings_importTitle = "Importar pads recientes locales en CryptDrive";
|
||||||
|
out.settings_import = "Importar";
|
||||||
|
out.settings_importConfirm = "¿Seguro que quieres importar tus pads recientes a tu cuenta CryptDrive?";
|
||||||
|
out.settings_importDone = "Importación terminada";
|
||||||
|
|
||||||
|
out.tips = {};
|
||||||
|
out.tips.lag = "El icono verde en la parte superior derecha muestra la calidad de tu connexión a CryptPad.";
|
||||||
|
out.tips.shortcuts = "`ctrl+b`, `ctrl+i`, y `ctrl+u` son accesos rápidos para negrita, itálica y subrayado.";
|
||||||
|
out.tips.indent = "Cuando editas listas, puedes usar tab o shift+tab para incrementar o decrementar la sangría.";
|
||||||
|
out.tips.title = "Puedes cambiar el título de tus pads en la parte superior de la pantalla.";
|
||||||
|
out.tips.store = "Cada vez que visitas un pad con una sesión iniciada se guardará en tu CryptDrive.";
|
||||||
|
out.tips.marker = "Puedes resaltar texto en un pad utilizando el \"marcador\" en el menú de estílo.";
|
||||||
|
out.tips.driveUpload = "Los usuarios registrados pueden subir archivos cifrados arrastrándolos hacia CryptDrive.";
|
||||||
|
|
||||||
|
out.feedback_about = "Si estas leyendo esto, quizás sientas curiosidad por saber por qué CryptPad solicita páginas cuando realizas algunas acciones";
|
||||||
|
out.feedback_privacy = "Nos importa tu privacidad, y al mismo tiempo queremos que CryptPad sea muy fácil de usar. Utilizamos este archivo para conocer las funcionalidades que importan a nuestros usuarios, pidiéndolo con un parametro que nos dice qué acción fue realizada.";
|
||||||
|
out.feedback_optout = "Si quieres darte de baja, visita <a href='/settings/'>tus preferencias</a>, donde podrás activar o desactivar el feedback";
|
||||||
|
|
||||||
|
out.fm_searchName = "Buscar";
|
||||||
|
out.fm_searchPlaceholder = "Buscar...";
|
||||||
|
out.fm_newButtonTitle = "Crear un nuevo pad o carpeta";
|
||||||
|
out.fm_openParent = "Mostrar en carpeta";
|
||||||
|
out.register_writtenPassword = "He escrito mi usuario y contraseña, continuar";
|
||||||
|
out.register_cancel = "Volver";
|
||||||
|
out.register_warning = "Zero Knowledge significa que no podemos recuperar tus datos si pierdes tu contraseña.";
|
||||||
|
out.register_alreadyRegistered = "Este usuario ya existe, ¿iniciar sesión?";
|
||||||
|
|
||||||
|
// 1.4.0 - Easter Bunny
|
||||||
|
|
||||||
|
out.button_newwhiteboard = "Nueva Pizarra";
|
||||||
|
out.wrongApp = "No se pudo mostrar el contenido de la sesión en tiempo real en tu navegador. Por favor, actualiza la página.";
|
||||||
|
out.synced = "Todo está guardado.";
|
||||||
|
out.saveTemplateButton = "Guardar como plantilla";
|
||||||
|
out.saveTemplatePrompt = "Elige un título para la plantilla";
|
||||||
|
out.templateSaved = "¡Plantilla guardada!";
|
||||||
|
out.selectTemplate = "Elige una plantilla o pulsa ESC";
|
||||||
|
out.slideOptionsTitle = "Personaliza tus diapositivas";
|
||||||
|
out.slideOptionsButton = "Guardar (enter)";
|
||||||
|
out.canvas_clear = "Limpiar";
|
||||||
|
out.canvas_delete = "Borrar selección";
|
||||||
|
out.canvas_disable = "No permitir dibujos";
|
||||||
|
out.canvas_enable = "Permitir dibujos";
|
||||||
|
out.canvas_width = "Talla";
|
||||||
|
out.canvas_opacity = "Opacidad";
|
||||||
|
out.settings_publicSigningKey = "Clave de Firma Pública";
|
||||||
|
out.settings_usage = "Utilización";
|
||||||
|
out.settings_usageTitle = "Ve el uso total de tus pads en MB";
|
||||||
|
out.settings_pinningNotAvailable = "Los pads pegados sólo están disponibles para usuarios registrados.";
|
||||||
|
out.settings_pinningError = "Algo salió mal";
|
||||||
|
out.settings_usageAmount = "Tus pads pegados utilizan {0}MB";
|
||||||
|
out.historyButton = "Mostrar el historial del documento";
|
||||||
|
out.history_next = "Ir a la versión anterior";
|
||||||
|
out.history_prev = "Ir a la versión posterior";
|
||||||
|
out.history_goTo = "Ir a la versión seleccionada";
|
||||||
|
out.history_close = "Volver";
|
||||||
|
out.history_closeTitle = "Cerrar el historial";
|
||||||
|
out.history_restore = "Restaurar";
|
||||||
|
out.history_restoreTitle = "Restaurar la versión seleccionada del documento";
|
||||||
|
out.history_restorePrompt = "¿Estás seguro de que quieres cambiar la versión actual del documento por ésta?";
|
||||||
|
out.history_restoreDone = "Documento restaurado";
|
||||||
|
out.fc_sizeInKilobytes = "Tamaño en Kilobytes";
|
||||||
|
|
||||||
|
// 1.5.0/1.6.0 - Fenrir/Grootslang
|
||||||
|
|
||||||
|
out.deleted = "El pad fue borrado de tu CryptDrive";
|
||||||
|
out.upgrade = "Mejorar";
|
||||||
|
out.upgradeTitle = "Mejora tu cuenta para obtener más espacio";
|
||||||
|
out.upgradeAccount = "Mejorar cuenta";
|
||||||
|
|
||||||
|
out.MB = "MB";
|
||||||
|
out.GB = "GB";
|
||||||
|
out.KB = "KB";
|
||||||
|
out.formattedMB = "{0} MB";
|
||||||
|
out.formattedGB = "{0} GB";
|
||||||
|
out.formattedKB = "{0} KB";
|
||||||
|
|
||||||
|
out.pinLimitReached = "Has llegado al límite de espacio";
|
||||||
|
out.pinLimitNotPinned = "Has llegado al límite de espacio.<br>Este pad no estará presente en tu CryptDrive.";
|
||||||
|
out.pinLimitDrive = "Has llegado al límite de espacio.<br>No puedes crear nuevos pads.";
|
||||||
|
out.printTransition = "Activar transiciones";
|
||||||
|
out.history_version = "Versión: ";
|
||||||
|
out.settings_logoutEverywhereTitle = "Cerrar sesión en todas partes";
|
||||||
|
out.settings_logoutEverywhere = "Cerrar todas las otras sesiones";
|
||||||
|
out.settings_logoutEverywhereConfirm = "¿Estás seguro? Tendrás que volver a iniciar sesión con todos tus dispositivos.";
|
||||||
|
out.upload_serverError = "Error: no se pudo subir tu archivo en este momento.";
|
||||||
|
out.upload_uploadPending = "Ya tienes una subida en progreso. ¿Cancelar y subir el nuevo archivo?";
|
||||||
|
out.upload_success = "Tu archivo ({0}) ha sido subido con éxito y fue añadido a tu drive.";
|
||||||
|
|
||||||
|
// 1.7.0 - Hodag
|
||||||
|
out.comingSoon = "Próximamente...";
|
||||||
|
out.newVersion = ["<b>CryptPad ha sido actualizado!</b>",
|
||||||
|
"Puedes ver lo que ha cambiado aquí (en inglés):",
|
||||||
|
"<a href=\"https://github.com/xwiki-labs/cryptpad/releases/tag/{0}\" target=\"_blank\">Notas de versión para CryptPad {0}</a>"].join("<br>");
|
||||||
|
out.pinLimitReachedAlertNoAccounts = "Has llegado a tu límite de espacio";
|
||||||
|
out.previewButtonTitle = "Mostrar/esconder la vista previa Markdown";
|
||||||
|
out.fm_info_anonymous = "No estás conectado, así que estos pads pueden ser borrados (<a href=\"https://blog.cryptpad.fr/2017/05/17/You-gotta-log-in/\" target=\"_blank\">¿por qué?</a>). <a href=\"/register/\">Regístrate</a> o <a href=\"/login/\">Inicia sesión</a> para asegurarlos.";
|
||||||
|
out.fm_alert_anonymous = "Hola, estás usando CryptPad anónimamente. Está bien, pero tus pads pueden ser borrados después de un périodo de inactividad. Hemos desactivado funciones avanzadas de CryptDrive para usuarios anónimos porque queremos dejar claro que no es un lugar seguro para almacenar cosas. Puedes <a href=\"https://blog.cryptpad.fr/2017/05/17/You-gotta-log-in/\" target=\"_blank\">leer este articulo</a> (en inglés) acerca de por qué hacemos esto y por qué deberías <a href=\"/register/\">Registrarte</a> e <a href=\"/login/\">Iniciar sesión</a>.";
|
||||||
|
out.fm_error_cantPin = "Error del servidor. Por favor, recarga la página e inténtalo de nuevo.";
|
||||||
|
out.upload_notEnoughSpace = "No tienes suficiente espacio para este archivo en tu CryptDrive";
|
||||||
|
out.upload_tooLarge = "Este archivo supera el límite de carga.";
|
||||||
|
out.upload_choose = "Escoge un archivo";
|
||||||
|
out.upload_pending = "Esperando";
|
||||||
|
out.upload_cancelled = "Cancelado";
|
||||||
|
out.upload_name = "Nombre";
|
||||||
|
out.upload_size = "Tamaño";
|
||||||
|
out.upload_progress = "Progreso";
|
||||||
|
out.download_button = "Descifrar y descargar";
|
||||||
|
out.warn_notPinned = "Este pad no está en ningún CryptDrive. Expirará después de 3 meses. <a href='/about.html#pinning'>Acerca de...</a>";
|
||||||
|
|
||||||
|
out.poll_remove = "Quitar";
|
||||||
|
out.poll_edit = "Editar";
|
||||||
|
out.poll_locked = "Cerrado";
|
||||||
|
out.poll_unlocked = "Abierto";
|
||||||
|
|
||||||
|
out.poll_show_help_button = "Mostrar ayuda";
|
||||||
|
out.poll_hide_help_button = "Esconder ayuda";
|
||||||
|
|
||||||
|
// 1.8.0 - Idopogo
|
||||||
|
|
||||||
|
out.common_connectionLost = "<b>Conexión perdida</b><br>El documento está ahora en modo sólo lectura hasta que la conexión vuelva.";
|
||||||
|
out.updated_0_common_connectionLost = out.common_connectionLost;
|
||||||
|
out.supportCryptpad = "Ayudar a CryptPad";
|
||||||
|
out.pinLimitReachedAlert = ["Has llegado a tu límite de espacio. Los nuevos pads no serán guardados en tu CryptDrive.",
|
||||||
|
"Puedes eliminar pads de tu CryptDrive o <a href=\"https://accounts.cryptpad.fr/#!on={0}\" target=\"_blank\">suscribirte a una oferta premium</a> para obtener más espacio."].join("<br>");
|
||||||
|
out.updated_0_pinLimitReachedAlert = out.pinLimitReachedAlert;
|
||||||
|
out.fm_info_trash = "Vacía tu papelera para liberar espacio en tu CryptDrive.";
|
||||||
|
out.updated_0_fm_info_trash = out.fm_info_trash;
|
||||||
|
|
||||||
|
out.fs_migration = "Tu CryptDrive fue actualizado a una nueva versión.<br><strong>Por favor, recarga la página.</strong>";
|
||||||
|
out.login_notRegistered = "¿No estás registrado?";
|
||||||
|
out.upload_mustLogin = "Tienes que estar conectado para subir archivos";
|
||||||
|
|
||||||
|
out.uploadButton = "Subir";
|
||||||
|
out.uploadButtonTitle = "Subir un archivo a la carpeta";
|
||||||
|
out.filePickerButton = "Incrustar un archivo";
|
||||||
|
out.filePicker_close = "Cerrar";
|
||||||
|
out.filePicker_description = "Elige un archivo de tu CryptDrive para incrustarlo o sube uno nuevo";
|
||||||
|
out.filePicker_filter = "Filtrar por nombre";
|
||||||
|
out.or = "o";
|
||||||
|
out.languageButton = "Lenguaje";
|
||||||
|
out.languageButtonTitle = "Elige el lenguaje para resaltado de sintaxis";
|
||||||
|
out.themeButton = "Tema";
|
||||||
|
out.themeButtonTitle = "Selecciona el tema de color para los editores de código y presentación";
|
||||||
|
out.canvas_opacityLabel = "Opacidad: {0}";
|
||||||
|
out.canvas_widthLabel = "Talla: {0}";
|
||||||
|
|
||||||
|
// 1.10.0 - Kraken
|
||||||
|
|
||||||
|
out.moreActions = "Más acciones";
|
||||||
|
out.importButton = "Importar";
|
||||||
|
out.exportButton = "Exportar";
|
||||||
|
out.saveTitle = "Guardar título (enter)";
|
||||||
|
out.forgetButton = "Eliminar";
|
||||||
|
out.printText = "Imprimir";
|
||||||
|
out.slideOptionsText = "Opciones";
|
||||||
|
out.historyText = "Historial";
|
||||||
|
out.openLinkInNewTab = "Abrir enlace en pestaña nueva";
|
||||||
|
out.profileButton = "Perfil";
|
||||||
|
out.profile_urlPlaceholder = "URL";
|
||||||
|
out.profile_namePlaceholder = "Nombre mostrado en su perfil";
|
||||||
|
out.profile_avatar = "Imagen";
|
||||||
|
out.profile_upload = "Subir una imagen";
|
||||||
|
out.profile_error = "Error al crear tu perfil: {0}";
|
||||||
|
out.profile_register = "Tienes que registrarte para crear un perfil";
|
||||||
|
out.profile_create = "Crear perfil";
|
||||||
|
out.profile_description = "Descripción";
|
||||||
|
out.profile_fieldSaved = "Guardado: {0}";
|
||||||
|
out.download_mt_button = "Descargar";
|
||||||
|
out.updated_0_header_logoTitle = "Volver a tu CryptDrive";
|
||||||
|
out.header_logoTitle = out.updated_0_header_logoTitle;
|
||||||
|
|
||||||
|
// 1.11.0 - Lutin
|
||||||
|
|
||||||
|
out.realtime_unrecoverableError = "El motor de tiempo real ha encontrado un error. Haga clic en OK para recargar la página.";
|
||||||
|
out.typing = "Escribiendo";
|
||||||
|
out.profile_inviteButton = "Conectar";
|
||||||
|
out.profile_inviteButtonTitle = "Crear un enlace de invitación para este usuario.";
|
||||||
|
out.profile_inviteExplanation = "Hacer clic en <strong>OK</strong> creará un enlace de mensaje seguro que <em>sólo {0} podrá ver.</em><br><br>El enlace será copiado a tu portapapeles y puede ser compartido públicamente.";
|
||||||
|
out.profile_viewMyProfile = "Ver mi perfil";
|
||||||
|
out.userlist_addAsFriendTitle = 'Agregar "{0}" como contacto';
|
||||||
|
out.userlist_thisIsYou = 'Tú mismo ("{0}")';
|
||||||
|
out.contacts_title = "Contactos";
|
||||||
|
out.contacts_addError = "Error al agregar este contacto a la lista";
|
||||||
|
out.contacts_added = "Invitación aceptada";
|
||||||
|
out.contacts_rejected = "Invitación denegada";
|
||||||
|
out.contacts_request = "<em>{0}</em> quiere agregarte como contacto. ¿<b>Aceptar</b>?";
|
||||||
|
out.contacts_send = "Enviar";
|
||||||
|
out.contacts_remove = "Eliminar este contacto";
|
||||||
|
out.contacts_confirmRemove = "¿Estás seguro de que quieres eliminar <em>{0}</em> de tus contactos?";
|
||||||
|
out.contacts_info1 = "Estos son tus contactos. Desde aquí, puedes:";
|
||||||
|
out.contacts_info2 = "Hacer clic en el icono de tu contacto para chatear";
|
||||||
|
out.contacts_info3 = "Hacer doble-clic para ver su perfil";
|
||||||
|
out.contacts_info4 = "Cualquier participante puede eliminar definitivamente el historial de chat";
|
||||||
|
out.settings_cat_account = "Cuenta";
|
||||||
|
out.settings_cat_drive = "CryptDrive";
|
||||||
|
out.settings_backupCategory = "Copia de seguridad";
|
||||||
|
out.settings_resetNewTitle = "Limpiar CryptDrive";
|
||||||
|
out.settings_resetButton = "Eliminar";
|
||||||
|
out.settings_resetTipsAction = "Reiniciar";
|
||||||
|
out.settings_userFeedbackTitle = "Feedback";
|
||||||
|
out.settings_logoutEverywhereButton = "Cerrar sesión";
|
||||||
|
out.upload_title = "Subir archivo";
|
||||||
|
|
||||||
|
// 1.12.0 - Minotaur
|
||||||
|
out.userlist_pending = "Pendiente...";
|
||||||
|
out.contacts_typeHere = "Escribe un mensaje aquí...";
|
||||||
|
out.contacts_removeHistoryTitle = "Borrar el historial de chat";
|
||||||
|
out.contacts_confirmRemoveHistory = "¿Estás seguro de que quieres borrar el historial de forma permanente? No se podrán recuparar los datos.";
|
||||||
|
out.contacts_removeHistoryServerError = "Hubo un error al borrar el historial. Inténtalo de nuevo más tarde.";
|
||||||
|
out.todo_title = "CryptTodo";
|
||||||
|
out.todo_newTodoNamePlaceholder = "Describe tu tarea...";
|
||||||
|
out.todo_newTodoNameTitle = "Añadir tarea a la lista";
|
||||||
|
out.todo_markAsCompleteTitle = "Marcar esta tarea como completa";
|
||||||
|
out.todo_markAsIncompleteTitle = "Marcar esta tarea como incompleta";
|
||||||
|
out.todo_removeTaskTitle = "Borrar esta tarea de la lista";
|
||||||
|
|
||||||
|
// 1.13.0 - Naiad
|
||||||
|
out.topbar_whatIsCryptpad = "Qué es CryptPad";
|
||||||
|
out.header_homeTitle = "Volver a la página de inicio";
|
||||||
|
out.userListButton = "Lista de usuarios";
|
||||||
|
out.userAccountButton = "Tu cuenta";
|
||||||
|
out.canvas_saveToDrive = "Guardar esta imagen como archivo en tu CryptDrive";
|
||||||
|
out.canvas_currentBrush = "Pincel actual";
|
||||||
|
out.canvas_chooseColor = "Eligir un color";
|
||||||
|
out.fm_viewListButton = "Lista";
|
||||||
|
out.fm_viewGridButton = "Cuadrícula";
|
||||||
|
out.settings_cat_code = "Código";
|
||||||
|
out.settings_codeIndentation = "Indentación del editor de código (espacios)";
|
||||||
|
out.settings_codeUseTabs = "Utilizar tabulaciones en vez de espacios";
|
||||||
|
out.pad_showToolbar = "Mostrar la barra de herramientas";
|
||||||
|
out.pad_hideToolbar = "Esconder la barra de herramientas";
|
||||||
|
out.main_catch_phrase = "El Cloud Zero Knowledge";
|
||||||
|
out.main_richTextPad = "Pad de Texto Enriquecido";
|
||||||
|
out.main_codePad = "Pad de Código";
|
||||||
|
out.main_slidePad = "Presentación Markdown";
|
||||||
|
out.main_pollPad = "Encuesta";
|
||||||
|
out.main_whiteboardPad = "Pizarra";
|
||||||
|
out.main_localPads = "Pad Locales";
|
||||||
|
out.main_yourCryptDrive = "Tu CryptDrive";
|
||||||
|
|
||||||
|
return out;
|
||||||
|
});
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue