diff --git a/customize.dist/translations/messages.pt-br.js b/customize.dist/translations/messages.pt-br.js
index 1014e362b..7fe99d229 100644
--- a/customize.dist/translations/messages.pt-br.js
+++ b/customize.dist/translations/messages.pt-br.js
@@ -9,8 +9,6 @@
define(function () {
var out = {};
- // translations must set this key for their language to be available in
- // the language dropdowns that are shown throughout Cryptpad's interface
out._languageName = 'Brazilian Portuguese';
out.main_title = "Cryptpad: Zero Knowledge, Edição Colaborativa em Tempo Real";
@@ -21,14 +19,32 @@ define(function () {
out.type.code = 'Código';
out.type.poll = 'votação';
out.type.slide = 'Apresentação';
-
- out.errorBox_errorType_disconnected = 'Coneção perdida';
- out.errorBox_errorExplanation_disconnected = [
- 'Coneção perdida com o servidor, você pode se reconectar recarregando a página ou revisando seu código ',
- 'clicando fora desta caixa.'
- ].join('');
-
- out.common_connectionLost = 'Conexão Perdida com o servidor';
+ out.type.drive = 'Drive';
+ out.type.whiteboard = 'Whiteboard';
+ out.type.file = 'File';
+ out.type.media = 'Media';
+
+ out.button_newpad = 'New Rich Text pad';
+ out.button_newcode = 'New Code pad';
+ out.button_newpoll = 'New Poll';
+ out.button_newslide = 'New Presentation';
+ out.button_newwhiteboard = 'New Whiteboard';
+
+ // NOTE: We want to update the 'common_connectionLost' key.
+ // Please do not add a new 'updated_common_connectionLostAndInfo' but change directly the value of 'common_connectionLost'
+ out.updated_0_common_connectionLost = "Server Connection Lost
You're now in read-only mode until the connection is back.";
+ out.common_connectionLost = out.updated_0_common_connectionLost;
+
+ out.websocketError = 'Unable to connect to the websocket server...';
+ out.typeError = "This pad is not compatible with the selected application";
+ out.onLogout = 'You are logged out, click here to log in
or press Escape to access your pad in read-only mode.';
+ out.wrongApp = "Unable to display the content of that realtime session in your browser. Please try to reload that page.";
+
+ out.loading = "Loading...";
+ out.error = "Error";
+ out.saved = "Saved";
+ out.synced = "Everything is saved";
+ out.deleted = "Pad deleted from your CryptDrive";
out.disconnected = 'Desconectado';
out.synchronizing = 'Sincronizando';
@@ -39,8 +55,6 @@ define(function () {
out.yourself = "Você";
out.anonymousUsers = "Usuários anônimos";
out.anonymousUser = "Usuário anônimo";
- out.shareView = "Endereço Somente Leitura";
- out.shareEdit = "Editar Endereço";
out.users = "Usuários";
out.and = "e";
out.viewer = "vizualizações";
@@ -48,80 +62,114 @@ define(function () {
out.editor = "editor";
out.editors = "editores";
+ out.language = "Language";
+
+ out.comingSoon = "Coming soon...";
+
+ out.newVersion = 'CryptPad has been updated!
' +
+ 'Check out what\'s new in the latest version:
'+
+ 'Release notes for CryptPad {0}';
+
+ out.upgrade = "Upgrade";
+ out.upgradeTitle = "Upgrade your account to increase the storage limit";
+ out.MB = "MB";
+ out.GB = "GB";
+ out.KB = "KB";
+
+ out.formattedMB = "{0} MB";
+ out.formattedGB = "{0} GB";
+ out.formattedKB = "{0} KB";
+
out.greenLight = "Tudo está funcionando bem";
out.orangeLight = "Sua conexão longa pode impactar sua experiência";
out.redLight = "Você está desconectado da sua sessão";
- out.importButton = 'IMPORTAR';
+ out.pinLimitReached = "You've reached your storage limit";
+ out.updated_0_pinLimitReachedAlert = "You've reached your storage limit. New pads won't be stored in your CryptDrive.
" +
+ 'You can either remove pads from your CryptDrive or subscribe to a premium offer to increase your limit.';
+ out.pinLimitReachedAlert = out.updated_0_pinLimitReachedAlert;
+ out.pinAboveLimitAlert = 'As of this release, we are imposing a 50MB limit on free data storage and you are currently using {0}. You will need to either delete some pads or subscribe on accounts.cryptpad.fr. Your contribution will help us improve CryptPad and spread Zero Knowledge. Please contact support if you have any other questions.';
+ out.pinLimitNotPinned = "You've reached your storage limit.
"+
+ "This pad is not stored in your CryptDrive.";
+ out.pinLimitDrive = "You've reached your storage limit.
" +
+ "You can't create new pads.";
+
out.importButtonTitle = 'Importar um documento de um arquivo local';
- out.exportButton = 'EXPORTAR';
out.exportButtonTitle = 'Exportar esta sesão para um arquivo local';
out.exportPrompt = 'Como deseja nomeear seu arquivo?';
- out.back = '⇐ Voltar';
- out.backToCryptpad = '⇐ Voltar ao Cryptpad';
-
- out.userButton = 'USUÁRIO';
- out.userButtonTitle = 'Mude seu usuário';
out.changeNamePrompt = 'Mude seu nome (deixe em branco para se manter anônimo): ';
+ out.user_rename = "Change display name";
+ out.user_displayName = "Display name";
+ out.user_accountName = "Account name";
- out.renameButton = 'RENOMEAR';
- out.renameButtonTitle = 'Mudar o título no qual este documento está listado na sua página principal';
- out.renamePrompt = 'Você gostaria de nomear este blco de notas?';
- out.renameConflict = 'Outro bloco de notas já tem este título';
out.clickToEdit = "Clique para Editar";
- out.forgetButton = 'ESQUECER';
out.forgetButtonTitle = 'Remova este documento da listagem da sua página';
out.forgetPrompt = 'Clicando OK você irá remover o endereço deste bloco de notas do armazenamento local, você tem certeza?';
+ out.movedToTrash = 'That pad has been moved to the trash.
Access my Drive';
out.shareButton = 'Compartilhar';
- out.shareButtonTitle = "Copiar endereço do clipboard";
out.shareSuccess = 'Endereço copiado para o clipboard';
- out.shareFailed = "Falhou ao copiar para o clipboard";
- out.presentButton = 'PRESENTE';
+ out.newButton = 'New';
+ out.newButtonTitle = 'Create a new pad';
+
+ out.saveTemplateButton = "Save as template";
+ out.saveTemplatePrompt = "Choose a title for the template";
+ out.templateSaved = "Template saved!";
+ out.selectTemplate = "Select a template or press escape";
+
+ out.previewButtonTitle = "Display or hide the Markdown preview mode";
+
out.presentButtonTitle = "Entrar no modo apresentação";
out.presentSuccess = 'Pressione ESC para sair do modo de apresentação';
- out.sourceButton = 'VER CÓDIGO';
- out.sourceButtonTitle = "Sair do modo apresentação";
- out.backgroundButton = 'COR DE FUNDO';
- out.backgroundButtonTitle = 'Mudar a cor de fundo da apresentação';
- out.colorButton = 'COR DO TEXTO';
+ out.backgroundButtonTitle = 'Change the background color in the presentation';
out.colorButtonTitle = 'Mudar a cor do texto no modo apresentação';
- out.commitButton = 'ENVIAR';
+ out.printButton = "Print (enter)";
+ out.printButtonTitle = "Print your slides or export them as a PDF file";
+ out.printOptions = "Layout options";
+ out.printSlideNumber = "Display the slide number";
+ out.printDate = "Display the date";
+ out.printTitle = "Display the pad title";
+ out.printCSS = "Custom style rules (CSS):";
+ out.printTransition = "Enable transition animations";
+
+ out.slideOptionsTitle = "Customize your slides";
+ out.slideOptionsButton = "Save (enter)";
- out.getViewButton = 'ENDEREÇO SOMENTE LEITURA';
- out.getViewButtonTitle = 'Obter endereó somente leitura para este documento';
- out.readonlyUrl = 'Documento somente leitura';
- out.copyReadOnly = "Copiar endereço";
- out.openReadOnly = "Abrir em nova aba";
out.editShare = "Compartilhar endereço editável";
out.editShareTitle = "Copiar endereço editável";
+ out.editOpen = "Open editing link in a new tab";
+ out.editOpenTitle = "Open this pad in editing mode in a new tab";
out.viewShare = "Compartilhar endereó de visualização";
out.viewShareTitle = "Copiar o endereço somente leitura";
- out.viewOpen = "Ver em nova aba";
- out.viewOpenTitle = "Abrir o documento em modo somente leitura em nova aba";
+ out.editOpen = "Open editing link in a new tab";
+ out.editOpenTitle = "Open this pad in editing mode in a new tab";
out.notifyJoined = "{0} entraram na sessão colaborativa";
out.notifyRenamed = "{0} agora é conhecido como {1}";
out.notifyLeft = "{0} deixou essa sessão colaborativa";
- out.disconnectAlert = 'Conexão de rede perdida!';
-
- out.tryIt = 'Experimente!';
- out.recentPads = 'Seu bloco de nota recente (armazenado em seu navegador)';
-
out.okButton = 'OK (enter)';
- out.cancelButton = 'Cancelar (esc)';
- out.loginText = '
Seu usuário e senha são usados para gerar uma chave única que nunca será do conhecimento do nosso servidor.
\n' + - 'Cuidado para não esquecer suas credenciais, pois é impossível para nós restaurá-las
'; + out.cancel = "Cancelar"; + out.cancelButton = 'Cancelar (esc)'; - out.forget = "Esquercer"; + out.historyButton = "Display the document history"; + out.history_next = "Go to the next version"; + out.history_prev = "Go to the previous version"; + out.history_goTo = "Go to the selected version"; + out.history_close = "Back"; + out.history_closeTitle = "Close the history"; + out.history_restore = "Restore"; + out.history_restoreTitle = "Restore the selected version of the document"; + out.history_restorePrompt = "Are you sure you want to replace the current version of the document by the displayed one?"; + out.history_restoreDone = "Document restored"; + out.history_version = "Version:"; // Polls @@ -130,15 +178,17 @@ define(function () { out.poll_p_save = "Suas configurações são atualizadas instantaneamente, assim você nunca terá de salvá-las"; out.poll_p_encryption = "Tudo que der entrada é encriptado para que apenas as pessoas com o link possam acessá-las. Nem mesmo o servidor pode ver suas mudanças."; - out.poll_p_howtouse = "Entre com seu nome no cambo abaixo e confirme no checkbox quando você estiver disponível"; - out.promptName = "Qual é o seu nome?"; - - out.wizardButton = 'ASSISTENTE'; out.wizardLog = "Clique no botão no topo esquerdo para voltar para sua enquete"; out.wizardTitle = "Use o assistente para criar sua enquete"; out.wizardConfirm = "Você está realmente pronto para adicionar estas opções em sua enquete?"; + out.poll_publish_button = "Publish"; + out.poll_admin_button = "Admin"; + out.poll_create_user = "Add a new user"; + out.poll_create_option = "Add a new option"; + out.poll_commit = "Commit"; + out.poll_closeWizardButton = "Fechar assistente"; out.poll_closeWizardButtonTitle = "Fechar assistente"; out.poll_wizardComputeButton = "Computar opções"; @@ -147,46 +197,238 @@ define(function () { out.poll_wizardAddDateButton = "+ Datas"; out.poll_wizardAddTimeButton = "+ Horários"; - out.poll_addUserButton = "+ Usuários"; - out.poll_addUserButtonTitle = "Clique para adicionar usuário"; - out.poll_addOptionButton = "+ Opções"; - out.poll_addOptionButtonTitle = "Clique para adicionar uma opção"; - out.poll_addOption = "Propor uma alternativa"; out.poll_optionPlaceholder = "Alternativa"; - out.poll_addUser = "Introduza um nome"; out.poll_userPlaceholder = "Seu nome"; - out.poll_removeOption = "Você tem certeza que quer remover essa alternativa?"; - out.poll_removeOptionTitle = "Remova a linha"; + out.poll_removeOption = "Are you sure you'd like to remove this option?"; out.poll_removeUser = "Você tem certeza que quer remover este usuário?"; - out.poll_removeUserTitle = "Remova a coluna"; - out.poll_editOption = "Você tem certeza que quer editar esta alternativa?"; - out.poll_editOptionTitle = "Editar esta linha"; - out.poll_editUser = "Você tem certeza que quer editar este usuário?"; - out.poll_editUserTitle = "Editar a coluna"; out.poll_titleHint = "Título"; out.poll_descriptionHint = "Descrição"; - // index.html - - out.main_p1 = 'CryptPad é um editor colaborativo baseado na metodologia zero knowledge. A encriptação do servidor impede qualquer tipo de acesso não autorizado seja de indivíduos ou da NSA. A chave secreta de entriptação é armazenada no fragmento identificador do endereço, que em momento algum é enviado para o servidor, porém é disponibilizada para o javascript ao compartilhar o link com outros com quem você deseja compartilhar acesso.'; - out.main_p2 = 'Este projeto utiliza os Editores visuais CKEditor e CodeMirror, e a engine de tempo real ChainPad.'; - out.main_howitworks = 'Como funciona'; - out.main_howitworks_p1 = 'CryptPad usa uma variante do algorítmo de Transformação Operacional, que é capaz de encontrar consenso distribuido usando o Blockchain de Nakamoto, um constructo popularizado pela Criptomoeda Bitcoin. Desta forma o algorítmo pode evitar a necessidade de um servidor central para resolver conflitos de edição operacional sem a necessidade do servidor armazenar o conteúdo que está sendo editado pelos colaboradores.'; - out.main_about = 'Sobre'; - out.main_about_p1 = 'Você pode ler mais sobre em nossa política de privacidade e nos nossos termos de serviço.'; - - out.main_about_p2 = 'Se você tem alguma questão ou comentário, você pode nos mandar um tweet ou abrir uma requisição no github. Venha também nos dar um Oi no IRC (irc.freenode.net), ou até mesmo via e-mail.'; + // Canvas + out.canvas_clear = "Clear"; + out.canvas_delete = "Delete selection"; + out.canvas_disable = "Disable draw"; + out.canvas_enable = "Enable draw"; + out.canvas_width = "Width"; + out.canvas_opacity = "Opacity"; + + // File manager + + out.fm_rootName = "Documents"; + out.fm_trashName = "Trash"; + out.fm_unsortedName = "Unsorted files"; + out.fm_filesDataName = "All files"; + out.fm_templateName = "Templates"; + out.fm_searchName = "Search"; + out.fm_searchPlaceholder = "Search..."; + out.fm_newButton = "New"; + out.fm_newButtonTitle = "Create a new pad or folder"; + out.fm_newFolder = "New folder"; + out.fm_newFile = "New pad"; + out.fm_folder = "Folder"; + out.fm_folderName = "Folder name"; + out.fm_numberOfFolders = "# of folders"; + out.fm_numberOfFiles = "# of files"; + out.fm_fileName = "File name"; + out.fm_title = "Title"; + out.fm_type = "Type"; + out.fm_lastAccess = "Last access"; + out.fm_creation = "Creation"; + out.fm_forbidden = "Forbidden action"; + out.fm_originalPath = "Original path"; + out.fm_openParent = "Show in folder"; + out.fm_noname = "Untitled Document"; + out.fm_emptyTrashDialog = "Are you sure you want to empty the trash?"; + out.fm_removeSeveralPermanentlyDialog = "Are you sure you want to remove these {0} elements from the trash permanently?"; + out.fm_removePermanentlyDialog = "Are you sure you want to remove that element permanently?"; + out.fm_removeSeveralDialog = "Are you sure you want to move these {0} elements to the trash?"; + out.fm_removeDialog = "Are you sure you want to move {0} to the trash?"; + out.fm_restoreDialog = "Are you sure you want to restore {0} to its previous location?"; + out.fm_unknownFolderError = "The selected or last visited directory no longer exist. Opening the parent folder..."; + out.fm_contextMenuError = "Unable to open the context menu for that element. If the problem persist, try to reload the page."; + out.fm_selectError = "Unable to select the targetted element. If the problem persist, try to reload the page."; + out.fm_categoryError = "Unable to open the selected category, displaying root."; + out.fm_info_root = "Create as many nested folders here as you want to sort your files."; + out.fm_info_unsorted = 'Contains all the files you\'ve visited that are not yet sorted in "Documents" or moved to the "Trash".'; // "My Documents" should match with the "out.fm_rootName" key, and "Trash" with "out.fm_trashName" + out.fm_info_template = 'Contains all the pads stored as templates and that you can re-use when you create a new pad.'; + out.updated_0_fm_info_trash = 'Empty your trash to free space in your CryptDrive.'; + out.fm_info_trash = out.updated_0_fm_info_trash; + out.fm_info_allFiles = 'Contains all the files from "Documents", "Unsorted" and "Trash". You can\'t move or remove files from here.'; // Same here + out.fm_info_anonymous = 'You are not logged in so these pads may be deleted (find out why). ' + + 'Sign up or Log in to keep them alive.'; + out.fm_alert_backupUrl = "Backup link for this drive.Lets go over a couple things first
", + "',
+ 'This is CryptPad, the Zero Knowledge realtime collaborative editor. Everything is saved as you type.',
+ '
',
+ 'Share the link to this pad to edit with friends or use the Share button to share a read-only link which allows viewing but not editing.',
+ '
', + 'Go ahead, just start typing...', + '
', + '