From 5fecfb99a5c4d5c80ed3b2ab0e12ccce4fac64d8 Mon Sep 17 00:00:00 2001 From: Michael Achmann Date: Sat, 19 Nov 2016 01:23:59 +0100 Subject: [PATCH 1/9] Added German Translation --- customize.dist/translations/messages.de.js | 229 +++++++++++++++++++++ 1 file changed, 229 insertions(+) create mode 100644 customize.dist/translations/messages.de.js diff --git a/customize.dist/translations/messages.de.js b/customize.dist/translations/messages.de.js new file mode 100644 index 000000000..2738e04e3 --- /dev/null +++ b/customize.dist/translations/messages.de.js @@ -0,0 +1,229 @@ +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 = 'German'; + + out.main_title = "Cryptpad: Echtzeitzusammenarbeit, ohne Vorwissen"; + out.main_slogan = "Einigkeit macht stark - Zusammenarbeit ist der Schlüssel"; // Der Slogan sollte evtl. besser englisch bleiben. + + out.type = {}; + out.type.pad = 'Pad'; + out.type.code = 'Code'; + out.type.poll = 'Umfrage'; + out.type.slide = 'Präsentation'; + + out.errorBox_errorType_disconnected = 'Verbindung verloren'; + out.errorBox_errorExplanation_disconnected = [ + 'Verbindung zum Server verloren. Zum Wiederverbinden Seite neu laden oder außerhalb dieser Box ', + 'klicken, um deine Arbeit einzusehen.' + ].join(''); + + out.common_connectionLost = 'Serververbindung verloren'; + + out.disconnected = 'Getrennt'; + out.synchronizing = 'Synchronisiert'; + out.reconnecting = 'Verbindung wird neu aufgebaut...'; + out.lag = 'Lag'; + out.readonly = 'Nur-Lesen'; + out.anonymous = "Anonymous"; + out.yourself = "Du"; + out.anonymousUsers = "anonyme Nutzer*innen"; + out.anonymousUser = "anonyme Nutzer*in"; + out.shareView = "Nur-Lesen URL"; + out.shareEdit = "Bearbeitungs URL"; + out.users = "Nutzer*innen"; + out.and = "Und"; + out.viewer = "Betrachter*in"; + out.viewers = "Betrachter*innen"; + out.editor = "Bearbeiter*in"; + out.editors = "Bearbeiter*innen"; + + out.greenLight = "Alles funktioniert bestens"; + out.orangeLight = "Deine langsame Verbindung kann deine Erfahrung beinträchtigen"; + out.redLight = "Du wurdest von diesr Sitzung getrennt"; + + out.importButton = 'IMPORTIEREN'; + out.importButtonTitle = 'Importiere eine lokale Datei in dieses Dokument'; + + out.exportButton = 'EXPORTIEREN'; + out.exportButtonTitle = 'Exportiere dieses Dokument in eine lokale Datei'; + out.exportPrompt = 'Wie möchtest du die Datei nennen?'; + + out.back = '⇐ Zurück'; + out.backToCryptpad = '⇐ Zurück zu Cryptpad'; + + out.userButton = 'NUTZER*IN'; + out.userButtonTitle = 'Ändere deinen Namen'; + out.changeNamePrompt = 'Ändere deinen Namen (oder lasse dieses Feld leer um anonym mitzuarbeiten): '; + + out.renameButton = 'UMBENENNEN'; + out.renameButtonTitle = 'Change the title under which this document is listed on your home page'; + out.renamePrompt = 'How would you like to title this pad?'; + out.renameConflict = 'Another pad already has that title'; + out.clickToEdit = "Click to edit"; + + out.forgetButton = 'VERGESSEN'; + out.forgetButtonTitle = 'Entferne dieses Dokumnt von deiner Startseitenliste'; + out.forgetPrompt = 'Mit dem Klick auf OK wird das Dokument aus deinem lokalen Speicher gelöscht. Fortfahren?'; + + out.shareButton = 'Teilen'; + out.shareButtonTitle = "URL in die Zwischenablage kopieren"; + out.shareSuccess = 'URL wurde in die Zwischenablage kopiert'; + out.shareFailed = "URL in die Zwischenablage kopieren fehlgeschlagen"; + + out.presentButton = 'PRÄSENTATION'; + out.presentButtonTitle = "Präsentationsmodus starten"; + out.presentSuccess = 'Hit ESC to exit presentation mode'; + out.sourceButton = 'VIEW SOURCE'; + out.sourceButtonTitle = "Leave presentation mode"; + + out.backgroundButton = 'BACKGROUND COLOR'; + out.backgroundButtonTitle = 'Change the background color in the presentation'; + out.colorButton = 'TEXT COLOR'; + out.colorButtonTitle = 'Change the text color in presentation mode'; + + out.commitButton = 'COMMIT'; + + out.getViewButton = 'READ-ONLY URL'; + out.getViewButtonTitle = 'Get the read-only URL for this document'; + out.readonlyUrl = 'Read only document'; + out.copyReadOnly = "Copy URL to clipboard"; + out.openReadOnly = "Open in a new tab"; + out.editShare = "Share edit URL"; + out.editShareTitle = "Copy the edit URL to clipboard"; + out.viewShare = "Share view URL"; + out.viewShareTitle = "Copy the read-only URL to clipboard"; + out.viewOpen = "View in new tab"; + out.viewOpenTitle = "Open the document in read-only mode in a new tab"; + + out.notifyJoined = "{0} has joined the collaborative session"; + out.notifyRenamed = "{0} is now known as {1}"; + out.notifyLeft = "{0} has left the collaborative session"; + + out.disconnectAlert = 'Network connection lost!'; + + out.tryIt = 'Try it out!'; + out.recentPads = 'Your recent pads (stored only in your browser)'; + + out.okButton = 'OK (enter)'; + out.cancelButton = 'Cancel (esc)'; + + out.loginText = '

Your username and password are used to generate a unique key which is never known by our server.

\n' + + '

Be careful not to forget your credentials, as they are impossible to recover

'; + + out.forget = "Forget"; + + // Polls + + out.poll_title = "Zero Knowledge Date Picker"; + out.poll_subtitle = "Zero Knowledge, realtime scheduling"; + + out.poll_p_save = "Your settings are updated instantly, so you never need to save."; + out.poll_p_encryption = "All your input is encrypted so only people who have the link can access it. Even the server cannot see what you change."; + out.poll_p_howtouse = "Enter your name in the input field below and check the box for times when you are available"; + + out.promptName = "What is you name ?"; + + out.wizardButton = 'WIZARD'; + out.wizardLog = "Click the button in the top left to return to your poll"; + out.wizardTitle = "Use the wizard to create your poll"; + out.wizardConfirm = "Are you really ready to add these options to your poll?"; + + out.poll_closeWizardButton = "Close wizard"; + out.poll_closeWizardButtonTitle = "Close wizard"; + out.poll_wizardComputeButton = "Compute Options"; + out.poll_wizardClearButton = "Clear Table"; + out.poll_wizardDescription = "Automatically create a number of options by entering any number of dates and times segments"; + out.poll_wizardAddDateButton = "+ Dates"; + out.poll_wizardAddTimeButton = "+ Times"; + + out.poll_addUserButton = "+ Users"; + out.poll_addUserButtonTitle = "Click to add a user"; + out.poll_addOptionButton = "+ Options"; + out.poll_addOptionButtonTitle = "Click to add an option"; + out.poll_addOption = "Propose an option"; + out.poll_optionPlaceholder = "Option"; + out.poll_addUser = "Enter a name"; + out.poll_userPlaceholder = "Your name"; + out.poll_removeOption = "Are you sure you'd like to remove this option?"; + out.poll_removeOptionTitle = "Remove the row"; + out.poll_removeUser = "Are you sure you'd like to remove this user?"; + out.poll_removeUserTitle = "Remove the column"; + out.poll_editOption = "Are you sure you'd like to edit this option?"; + out.poll_editOptionTitle = "Edit the row"; + out.poll_editUser = "Are you sure you'd like to edit this user?"; + out.poll_editUserTitle = "Edit the column"; + + out.poll_titleHint = "Title"; + out.poll_descriptionHint = "Description"; + + // index.html + + out.main_p1 = 'CryptPad is the zero knowledge realtime collaborative editor. Encryption carried out in your web browser protects the data from the server, the cloud, and the NSA. The secret encryption key is stored in the URL fragment identifier which is never sent to the server but is available to javascript so by sharing the URL, you give authorization to others who want to participate.'; + out.main_p2 = 'This project uses the CKEditor Visual Editor, CodeMirror, and the ChainPad realtime engine.'; + out.main_howitworks = 'How It Works'; + out.main_howitworks_p1 = 'CryptPad uses a variant of the Operational transformation algorithm which is able to find distributed consensus using a Nakamoto Blockchain, a construct popularized by Bitcoin. This way the algorithm can avoid the need for a central server to resolve Operational Transform Edit Conflicts and without the need for resolving conflicts, the server can be kept unaware of the content which is being edited on the pad.'; + out.main_about = 'About'; + out.main_about_p1 = 'You can read more about our privacy policy and terms of service.'; + + out.main_about_p2 = 'If you have any questions or comments, you can tweet us, open an issue on github, come say hi on irc (irc.freenode.net), or send us an email.'; + + out.table_type = 'Type'; + out.table_link = 'Link'; + out.table_created = 'Created'; + out.table_last = 'Last Accessed'; + + out.button_newpad = 'CREATE NEW WYSIWYG PAD'; + out.button_newcode = 'CREATE NEW CODE PAD'; + out.button_newpoll = 'CREATE NEW POLL'; + out.button_newslide = 'CREATE NEW PRESENTATION'; + + // privacy.html + + out.policy_title = 'Cryptpad Privacy Policy'; + out.policy_whatweknow = 'What we know about you'; + out.policy_whatweknow_p1 = 'As an application that is hosted on the web, Cryptpad has access to metadata exposed by the HTTP protocol. This includes your IP address, and various other HTTP headers that can be used to identify your particular browser. You can see what information your browser is sharing by visiting WhatIsMyBrowser.com.'; + out.policy_whatweknow_p2 = 'We use Piwik, an open source analytics platform, to learn more about our users. Piwik tells us about how you found Cryptpad, via direct entry, through a search engine, or via a referral from another web service like Reddit or Twitter. We also learn when you visit, what links you click while on our informational pages, and how long you stay on a particular page.'; + out.policy_whatweknow_p3 = 'These analytics tools are only used on informational pages. We do not collect any information about your usage of our zero-knowledge applications.'; + out.policy_howweuse = 'How we use what we learn'; + out.policy_howweuse_p1 = 'We use this information to make better decisions about promoting Cryptpad, by evaluating which of our past efforts were successful. Information about your location lets us know whether we should consider providing better support for languages other than English.'; + out.policy_howweuse_p2 = "Information about your browser (whether it's a desktop or mobile operating system) helps us make decisions when prioritizing feature improvements. Our development team is small, and we try to make choices that will improve as many users' experience as possible."; + out.policy_whatwetell = 'What we tell others about you'; + out.policy_whatwetell_p1 = 'We do not furnish to third parties the information that we gather or that you provide to us unless we are legally required to do so.'; + out.policy_links = 'Links to other sites'; + out.policy_links_p1 = 'This site contains links to other sites, including those produced by other organizations. We are not responsible for the privacy practices or the contents of any outside sites. As a general rule, links to outside sites are launched in a new browser window, to make clear that you are leaving Cryptpad.fr.'; + out.policy_ads = 'Advertisement'; + out.policy_ads_p1 = 'We do not display any online advertising, though we may link to the bodies which are financing our research.'; + out.policy_choices = 'Choices you have'; + out.policy_choices_open = 'Our code is open source, so you always have the option of hosting your own instance of Cryptpad.'; + out.policy_choices_vpn = 'If you want to use our hosted instance, but don\'t want to expose your IP address, you can protect your IP using the Tor browser bundle, or a VPN.'; + out.policy_choices_ads = 'If you just want to block our analytics platform, you can use adblocking tools like Privacy Badger.'; + + // terms.html + + out.tos_title = "Cryptpad Terms of Service"; + out.tos_legal = "Please don't be malicious, abusive, or do anything illegal."; + out.tos_availability = "We hope you find this service useful, but availability or performance cannot be guaranteed. Please export your data regularly."; + out.tos_e2ee = "Cryptpad documents can be read or modified by anyone who can guess or otherwise obtain the document's fragment identifier. We recommend that you use end-to-end-encrypted (e2ee) messaging technology to share URLs, and assume no liability in the event that such a URL is leaked."; + out.tos_logs = "Metadata provided by your browser to the server may be logged for the purpose of maintaining the service."; + out.tos_3rdparties = "We do not provide individualized data to third parties unless required to by law."; + + // BottomBar.html + + out.bottom_france = 'Made with in '; + out.bottom_support = 'An XWiki SAS Labs Project with the support of OpenPaaS-ng'; + + // Header.html + + out.header_france = 'With from France by XWiki SAS'; + + + // TODO Hardcode cause YOLO + //out.header_xwiki = 'XWiki SAS'; + out.header_support = ' OpenPaaS-ng'; + out.header_logoTitle = 'Go to the main page'; + + return out; +}); From 6eb29a696200b300c1ea00e0c6592f469010181f Mon Sep 17 00:00:00 2001 From: Michael Achmann Date: Sat, 19 Nov 2016 01:24:23 +0100 Subject: [PATCH 2/9] Added German Translation --- customize.dist/messages.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/customize.dist/messages.js b/customize.dist/messages.js index fdd11d3d6..0740d53a9 100644 --- a/customize.dist/messages.js +++ b/customize.dist/messages.js @@ -2,19 +2,21 @@ define(['/customize/languageSelector.js', '/customize/translations/messages.js', '/customize/translations/messages.es.js', '/customize/translations/messages.fr.js', + '/customize/translations/messages.de.js', // 1) additional translation files can be added here... '/bower_components/jquery/dist/jquery.min.js'], // 2) name your language module here... - function(LS, Default, Spanish, French) { + function(LS, Default, Spanish, French, German) { var $ = window.jQuery; // 3) add your module to this map so it gets used var map = { 'fr': French, 'es': Spanish, + 'de': German, }; var defaultLanguage = 'en'; From 0b459890fd7118ac665811d6ce2f8205db468b84 Mon Sep 17 00:00:00 2001 From: pojebunny Date: Tue, 6 Dec 2016 18:01:41 +0100 Subject: [PATCH 3/9] Added polish translation --- customize.dist/translations/messages.pl.js | 229 +++++++++++++++++++++ 1 file changed, 229 insertions(+) create mode 100644 customize.dist/translations/messages.pl.js diff --git a/customize.dist/translations/messages.pl.js b/customize.dist/translations/messages.pl.js new file mode 100644 index 000000000..f6d59142e --- /dev/null +++ b/customize.dist/translations/messages.pl.js @@ -0,0 +1,229 @@ +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 = 'Polish'; + + out.main_title = "Cryptpad: Wspólne edytowanie w czasie rzeczywistym, bez wiedzy specjalistycznej"; + out.main_slogan = "Jedność siłą - Współpraca kluczem"; + + out.type = {}; + out.type.pad = 'Pad'; + out.type.code = 'Kod'; + out.type.poll = 'Balot'; + out.type.slide = 'Prezentacja'; + + out.errorBox_errorType_disconnected = 'Utracono połączenie'; + out.errorBox_errorExplanation_disconnected = [ + 'Połączenie z serwerem zostało zerwane, możesz odświeżyć połączenie przeładowując stronę lub kontynuować przeglądanie dokumentu ', + 'klikając poza obszar komunikatu.' + ].join(''); + + 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.shareView = "URL tylko do odczytu"; + out.shareEdit = "URL do edycji"; + out.users = "Użytkownicy"; + out.and = "i"; + out.viewer = "czytający"; + out.viewers = "osoby czytające"; + out.editor = "edytujący"; + out.editors = "osoby edytujące"; + + 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.importButton = 'IMPORTUJ'; + out.importButtonTitle = 'Importuj dokument z pliku lokalnego'; + + out.exportButton = 'EXPORTUJ'; + out.exportButtonTitle = 'Zapisz ten dokument do pliku'; + out.exportPrompt = 'Jak chciałbyś nazwać swój plik?'; + + out.back = '⇐ Wróć'; + out.backToCryptpad = '⇐ Wróć do Cryptpad'; + + out.userButton = 'UŻYTKOWNIK'; + out.userButtonTitle = 'Zmień swoją nazwę użytkownika'; + out.changeNamePrompt = 'Zmień swoją nazwę (Pozostaw puste, by być anonimowym): '; + + out.renameButton = 'PRZEMIANUJ'; //Can be changed to "Zmień nazwę" + out.renameButtonTitle = 'Zmień nazwę pod którą plik wyświetli się na stronie głównej'; + out.renamePrompt = 'Jak chciałbyś nazwać ten pad?'; + out.renameConflict = 'Inny pad już ma taką nazwę'; + out.clickToEdit = "Naciśnij by edytować"; + + out.forgetButton = 'ZAPOMNIJ'; + 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.shareButtonTitle = "Kopiuj URL do schowka"; + out.shareSuccess = 'Pomyślnie skopiowano URL'; + out.shareFailed = "Wystąpił błąd przy kopiowaniu"; + + out.presentButton = 'PREZENTUJ'; + out.presentButtonTitle = "Otwórz tryb prezentacji"; + out.presentSuccess = 'Naciśnij ESC aby wyjść z trybu prezentacji'; + out.sourceButton = 'POKAŻ ŹRÓDŁO'; + out.sourceButtonTitle = "Opuść tryb prezentacji"; + + out.backgroundButton = 'KOLOR TŁA'; + out.backgroundButtonTitle = 'Zmień kolor tła dla tej prezentacji'; + out.colorButton = 'KOLOR TEKSTU'; + out.colorButtonTitle = 'Zmień kolor tekstu dla tej prezentacji'; + + out.commitButton = 'ZAPISZ'; //Can be discussed + + out.getViewButton = 'URL tylko do odczytu'; + out.getViewButtonTitle = 'Kopiuj URL dokumentu tylko do odczytu'; + out.readonlyUrl = 'Dokument tylko do odczytu'; + out.copyReadOnly = "Kopiuj URL do schowka"; + out.openReadOnly = "Otwórz w nowej karcie"; + 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.disconnectAlert = 'Utracono połączenie sieciowe!'; + + out.tryIt = 'Wypróbuj!'; + out.recentPads = 'Ostatnio otwarte dokumenty (przechowywane jedynie w twojej przeglądarce)'; + + out.okButton = 'OK (enter)'; + out.cancelButton = 'Anuluj (esc)'; + + out.loginText = '

Twoja nazwa użytkownika i hasło są użyte do wygenerowania unikalnego klucza nie zapisanego na serwerze.

\n' + + '

Uważaj by nie zapomnieć swoich danych, odzyskanie ich jest niemożliwe.

'; + + out.forget = "Zapomnij"; + + // Polls + + out.poll_title = "Prosty koordynator planu dnia"; // Choice of "Koordynator" can be discussed + out.poll_subtitle = "Proste planowanie tygodnia, w czasie rzeczywistym"; + + out.poll_p_save = "Twoje ustawienia aktualizowane są na bierząco. Nie martw się o zapisywanie."; + 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.poll_p_howtouse = "Wpisz swoje imię w polu poniżej i zaznacz kiedy będziesz dostępny."; + + out.promptName = "Jak się nazywasz ?"; + + out.wizardButton = 'KREATOR'; + out.wizardLog = "Naciśnij przycisk w lewym-górnym rogu by wrócić do planu"; + out.wizardTitle = "Uzyj kreatora by stworzyć opcje do głosowanie"; + 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_addUserButton = "+ Użytkownik"; + out.poll_addUserButtonTitle = "Naciśnij, by dodać użytkownika"; + out.poll_addOptionButton = "+ Opcja"; + out.poll_addOptionButtonTitle = "Naciśnij, by dodać opcję"; + out.poll_addOption = "Zaproponuj opcję"; + out.poll_optionPlaceholder = "Opcja"; + out.poll_addUser = "Podaj imię"; + out.poll_userPlaceholder = "Twoje imię"; + out.poll_removeOption = "Jesteś pewien, że chcesz usunąć tę opcję?"; + out.poll_removeOptionTitle = "Usuń wiersz"; + out.poll_removeUser = "Jesteś pewien, że chcesz usunąć tego użytkownika?"; + out.poll_removeUserTitle = "Usuń kolumnę"; + out.poll_editOption = "Jesteś pewien, że chcesz edytować tę opcję?"; + out.poll_editOptionTitle = "Edytuj wiersz"; + out.poll_editUser = "Jesteś pewien, że chcesz edytować tego uzytkownika?"; + out.poll_editUserTitle = "Edytuj kolumnę"; + + out.poll_titleHint = "Tytuł"; + out.poll_descriptionHint = "Opis"; + + // index.html + + out.main_p1 = 'CryptPad to edytor czasu rzeczywistego stawiający na wspólpracę i prostotę użytkowania. Szyfrowanie w twojej przeglądarce, chroni twoje dane przed serwerem, chmurą i ABW. Tajny klucz jest przechowywany w adresie strony identyfikator fragmentu w URI którego nigdy nie przekazujemy serwerowi, a dostępny jest dla javascript. Udostępniając URL(link), przekazujesz innym upoważnienie do uczestnictwa.'; + out.main_p2 = 'Ten projekt wykorzystuje wizualny edytor CKEditor , CodeMirror, oraz silnik czasu rzeczywistego ChainPad.'; + out.main_howitworks = 'Jak to działa'; + out.main_howitworks_p1 = 'CryptPad wykorzystuje wariant algorytmu Transformacji operacyjnej który jest wstanie odnaleźć rozdzielony konsensus wprowadzanych danych. Używa do tego Łańcuch blokowy Nakamoto, twór zpopularyzowany przez Bitcoin. 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 = 'O projekcie'; + out.main_about_p1 = 'Możesz przeczytać więcej o naszej polityce prywatności oraz warunkach korzystania z usług.'; + + out.main_about_p2 = 'Jeżeli masz jakieś pytania lub komentarze, możesz napisać na tweeterze, otworzyć problem na githubie, przywitać się na ircu (irc.freenode.net), lub wysłać nam email.'; + + out.table_type = 'Typ'; + out.table_link = 'Link'; + out.table_created = 'Stworzone'; + out.table_last = 'Ostatnio otwarte'; + + out.button_newpad = 'STWÓRZ NOWY PAD WYSIWYG'; + out.button_newcode = 'STWÓRZ NOWY PAD DO KODU'; + out.button_newpoll = 'STWÓRZ NOWE GŁOSOWANIE'; + out.button_newslide = 'STWÓRZ NOWĄ 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 WhatIsMyBrowser.com.'; + out.policy_whatweknow_p2 = 'Używamy Piwik, 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_whatweknow_p3 = 'Te narzędzia analityczne wykorzystywane są wyłącznie na strona informacyjncyh. Nie zbieramy informacji o twoim użytkowaniu naszej aplikacji.'; + 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 przeglądarki Tor, lub VPN.'; + out.policy_choices_ads = 'Masz również możliwość blokady naszej platformy analitycznej wykorzystując narzędzia adblock, takie jak Privacy Badger.'; + + // terms.html + + out.tos_title = "Warunki korzystania z usług Cryptpad"; + out.tos_legal = "Prosimy nie bądź złośliwy, obelżywy i nie wykorzystuj tego oprogramowania do cełow 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 gwarantwane. Prosimy, eksportuj 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. Zalecamy abyś korzystał z oprogramowania do szyfrowania końcowego (e2ee) wiadomości sieciowych i 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 = 'Stworzone z we '; + out.bottom_support = 'Projekt XWiki SAS Labs we wspolpracy z OpenPaaS-ng'; + + // Header.html + + out.header_france = 'Pełne z France od XWiki SAS'; + + + // TODO Hardcode cause YOLO + //out.header_xwiki = 'XWiki SAS'; + out.header_support = ' OpenPaaS-ng'; + out.header_logoTitle = 'Przejdź na stronę główną'; + + return out; +}); From f6f1bc09bbcec5580e7f4df98fe50003d4131449 Mon Sep 17 00:00:00 2001 From: pojebunny Date: Tue, 6 Dec 2016 18:02:43 +0100 Subject: [PATCH 4/9] Added options to choose Polish language --- customize.dist/messages.js | 253 +++++++++++++++++++------------------ 1 file changed, 127 insertions(+), 126 deletions(-) diff --git a/customize.dist/messages.js b/customize.dist/messages.js index fdd11d3d6..32635fee7 100644 --- a/customize.dist/messages.js +++ b/customize.dist/messages.js @@ -1,126 +1,127 @@ -define(['/customize/languageSelector.js', - '/customize/translations/messages.js', - '/customize/translations/messages.es.js', - '/customize/translations/messages.fr.js', - - // 1) additional translation files can be added here... - - '/bower_components/jquery/dist/jquery.min.js'], - - // 2) name your language module here... - function(LS, Default, Spanish, French) { - var $ = window.jQuery; - - // 3) add your module to this map so it gets used - var map = { - 'fr': French, - 'es': Spanish, - }; - - var defaultLanguage = 'en'; - - var language = LS.getLanguage(); - - var messages; - - if (!language || language === defaultLanguage || language === 'default' || !map[language]) { - messages = Default; - } - else { - // Add the translated keys to the returned object - messages = $.extend(true, {}, Default, map[language]); - } - - // messages_languages return the available translations and their name in an object : - // { "en": "English", "fr": "French", ... } - messages._languages = { - 'en': Default._languageName - }; - for (var l in map) { - messages._languages[l] = map[l]._languageName || l; - } - - messages._initSelector = LS.main; - messages._checkTranslationState = function () { - var missing = []; - Object.keys(map).forEach(function (code) { - var translation = map[code]; - Object.keys(Default).forEach(function (k) { - if (/^_/.test(k) || /nitialState$/.test(k)) { return; } - if (!translation[k]) { - var warning = "key [" + k + "] is missing from translation [" + code + "]"; - missing.push(warning); - } - }); - if (typeof(translation._languageName) !== 'string') { - var warning = 'key [_languageName] is missing from translation [' + code + ']'; - missing.push(warning); - } - }); - return missing; - }; - - // Get keys with parameters - messages._getKey = function (key, argArray) { - if (!messages[key]) { return '?'; } - var text = messages[key]; - return text.replace(/\{(\d+)\}/g, function (str, p1) { - return argArray[p1] || null; - }); - }; - - messages._applyTranslation = function () { - $('[data-localization]').each(function (i, e) { - var $el = $(this); - var key = $el.data('localization'); - $el.html(messages[key]); - }); - $('[data-localization-title]').each(function (i, e) { - var $el = $(this); - var key = $el.data('localization-title'); - $el.attr('title', messages[key]); - }); - }; - - // Non translatable keys - messages.initialState = [ - '

', - 'This is CryptPad, the zero knowledge realtime collaborative editor.', - '
', - 'What you type here is encrypted so only people who have the link can access it.', - '
', - 'Even the server cannot see what you type.', - '

', - '

', - '', - 'What you see here, what you hear here, when you leave here, let it stay here', - '', - '

', - ].join(''); - - messages.codeInitialState = [ - '/*\n', - ' This is CryptPad, the zero knowledge realtime collaborative editor.\n', - ' What you type here is encrypted so only people who have the link can access it.\n', - ' Even the server cannot see what you type.\n', - ' What you see here, what you hear here, when you leave here, let it stay here.\n', - '*/' - ].join(''); - - messages.slideInitialState = [ - '# CryptSlide\n', - '* This is a zero knowledge realtime collaborative editor.\n', - '* What you type here is encrypted so only people who have the link can access it.\n', - '* Even the server cannot see what you type.\n', - '* What you see here, what you hear here, when you leave here, let it stay here.\n', - '\n', - '---', - '\n', - '# How to use\n', - '1. Write your slides content using markdown syntax\n', - '2. Separate your slides with ---\n', - '3. Click on the "Play" button to see the result' - ].join(''); - - return messages; -}); +define(['/customize/languageSelector.js', + '/customize/translations/messages.js', + '/customize/translations/messages.es.js', + '/customize/translations/messages.fr.js', + + // 1) additional translation files can be added here... + '/customize/translations/messages.pl.js', + '/bower_components/jquery/dist/jquery.min.js'], + + // 2) name your language module here... + function(LS, Default, Spanish, French, Polish) { + var $ = window.jQuery; + + // 3) add your module to this map so it gets used + var map = { + 'fr': French, + 'es': Spanish, + 'pl': Polish, + }; + + var defaultLanguage = 'en'; + + var language = LS.getLanguage(); + + var messages; + + if (!language || language === defaultLanguage || language === 'default' || !map[language]) { + messages = Default; + } + else { + // Add the translated keys to the returned object + messages = $.extend(true, {}, Default, map[language]); + } + + // messages_languages return the available translations and their name in an object : + // { "en": "English", "fr": "French", ... } + messages._languages = { + 'en': Default._languageName + }; + for (var l in map) { + messages._languages[l] = map[l]._languageName || l; + } + + messages._initSelector = LS.main; + messages._checkTranslationState = function () { + var missing = []; + Object.keys(map).forEach(function (code) { + var translation = map[code]; + Object.keys(Default).forEach(function (k) { + if (/^_/.test(k) || /nitialState$/.test(k)) { return; } + if (!translation[k]) { + var warning = "key [" + k + "] is missing from translation [" + code + "]"; + missing.push(warning); + } + }); + if (typeof(translation._languageName) !== 'string') { + var warning = 'key [_languageName] is missing from translation [' + code + ']'; + missing.push(warning); + } + }); + return missing; + }; + + // Get keys with parameters + messages._getKey = function (key, argArray) { + if (!messages[key]) { return '?'; } + var text = messages[key]; + return text.replace(/\{(\d+)\}/g, function (str, p1) { + return argArray[p1] || null; + }); + }; + + messages._applyTranslation = function () { + $('[data-localization]').each(function (i, e) { + var $el = $(this); + var key = $el.data('localization'); + $el.html(messages[key]); + }); + $('[data-localization-title]').each(function (i, e) { + var $el = $(this); + var key = $el.data('localization-title'); + $el.attr('title', messages[key]); + }); + }; + + // Non translatable keys + messages.initialState = [ + '

', + 'This is CryptPad, the zero knowledge realtime collaborative editor.', + '
', + 'What you type here is encrypted so only people who have the link can access it.', + '
', + 'Even the server cannot see what you type.', + '

', + '

', + '', + 'What you see here, what you hear here, when you leave here, let it stay here', + '', + '

', + ].join(''); + + messages.codeInitialState = [ + '/*\n', + ' This is CryptPad, the zero knowledge realtime collaborative editor.\n', + ' What you type here is encrypted so only people who have the link can access it.\n', + ' Even the server cannot see what you type.\n', + ' What you see here, what you hear here, when you leave here, let it stay here.\n', + '*/' + ].join(''); + + messages.slideInitialState = [ + '# CryptSlide\n', + '* This is a zero knowledge realtime collaborative editor.\n', + '* What you type here is encrypted so only people who have the link can access it.\n', + '* Even the server cannot see what you type.\n', + '* What you see here, what you hear here, when you leave here, let it stay here.\n', + '\n', + '---', + '\n', + '# How to use\n', + '1. Write your slides content using markdown syntax\n', + '2. Separate your slides with ---\n', + '3. Click on the "Play" button to see the result' + ].join(''); + + return messages; +}); From 5979b03794e8d4bbb257a7e2c3c095c957275a51 Mon Sep 17 00:00:00 2001 From: pojebunny Date: Wed, 7 Dec 2016 12:20:31 +0100 Subject: [PATCH 5/9] Shortened translation for Create New buttons --- customize.dist/translations/messages.pl.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/customize.dist/translations/messages.pl.js b/customize.dist/translations/messages.pl.js index f6d59142e..9765f8fa8 100644 --- a/customize.dist/translations/messages.pl.js +++ b/customize.dist/translations/messages.pl.js @@ -175,10 +175,10 @@ define(function () { out.table_created = 'Stworzone'; out.table_last = 'Ostatnio otwarte'; - out.button_newpad = 'STWÓRZ NOWY PAD WYSIWYG'; - out.button_newcode = 'STWÓRZ NOWY PAD DO KODU'; - out.button_newpoll = 'STWÓRZ NOWE GŁOSOWANIE'; - out.button_newslide = 'STWÓRZ NOWĄ PREZENTACJĘ'; + 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 From 3ee7f4e96b291c432a7ab07a3141b93f7872c7b9 Mon Sep 17 00:00:00 2001 From: Michael Achmann Date: Tue, 13 Dec 2016 20:14:22 +0100 Subject: [PATCH 6/9] Added German translation --- customize.dist/translations/messages.de.js | 459 +++++++++++---------- 1 file changed, 230 insertions(+), 229 deletions(-) diff --git a/customize.dist/translations/messages.de.js b/customize.dist/translations/messages.de.js index 2738e04e3..c922b9fa9 100644 --- a/customize.dist/translations/messages.de.js +++ b/customize.dist/translations/messages.de.js @@ -1,229 +1,230 @@ -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 = 'German'; - - out.main_title = "Cryptpad: Echtzeitzusammenarbeit, ohne Vorwissen"; - out.main_slogan = "Einigkeit macht stark - Zusammenarbeit ist der Schlüssel"; // Der Slogan sollte evtl. besser englisch bleiben. - - out.type = {}; - out.type.pad = 'Pad'; - out.type.code = 'Code'; - out.type.poll = 'Umfrage'; - out.type.slide = 'Präsentation'; - - out.errorBox_errorType_disconnected = 'Verbindung verloren'; - out.errorBox_errorExplanation_disconnected = [ - 'Verbindung zum Server verloren. Zum Wiederverbinden Seite neu laden oder außerhalb dieser Box ', - 'klicken, um deine Arbeit einzusehen.' - ].join(''); - - out.common_connectionLost = 'Serververbindung verloren'; - - out.disconnected = 'Getrennt'; - out.synchronizing = 'Synchronisiert'; - out.reconnecting = 'Verbindung wird neu aufgebaut...'; - out.lag = 'Lag'; - out.readonly = 'Nur-Lesen'; - out.anonymous = "Anonymous"; - out.yourself = "Du"; - out.anonymousUsers = "anonyme Nutzer*innen"; - out.anonymousUser = "anonyme Nutzer*in"; - out.shareView = "Nur-Lesen URL"; - out.shareEdit = "Bearbeitungs URL"; - out.users = "Nutzer*innen"; - out.and = "Und"; - out.viewer = "Betrachter*in"; - out.viewers = "Betrachter*innen"; - out.editor = "Bearbeiter*in"; - out.editors = "Bearbeiter*innen"; - - out.greenLight = "Alles funktioniert bestens"; - out.orangeLight = "Deine langsame Verbindung kann deine Erfahrung beinträchtigen"; - out.redLight = "Du wurdest von diesr Sitzung getrennt"; - - out.importButton = 'IMPORTIEREN'; - out.importButtonTitle = 'Importiere eine lokale Datei in dieses Dokument'; - - out.exportButton = 'EXPORTIEREN'; - out.exportButtonTitle = 'Exportiere dieses Dokument in eine lokale Datei'; - out.exportPrompt = 'Wie möchtest du die Datei nennen?'; - - out.back = '⇐ Zurück'; - out.backToCryptpad = '⇐ Zurück zu Cryptpad'; - - out.userButton = 'NUTZER*IN'; - out.userButtonTitle = 'Ändere deinen Namen'; - out.changeNamePrompt = 'Ändere deinen Namen (oder lasse dieses Feld leer um anonym mitzuarbeiten): '; - - out.renameButton = 'UMBENENNEN'; - out.renameButtonTitle = 'Change the title under which this document is listed on your home page'; - out.renamePrompt = 'How would you like to title this pad?'; - out.renameConflict = 'Another pad already has that title'; - out.clickToEdit = "Click to edit"; - - out.forgetButton = 'VERGESSEN'; - out.forgetButtonTitle = 'Entferne dieses Dokumnt von deiner Startseitenliste'; - out.forgetPrompt = 'Mit dem Klick auf OK wird das Dokument aus deinem lokalen Speicher gelöscht. Fortfahren?'; - - out.shareButton = 'Teilen'; - out.shareButtonTitle = "URL in die Zwischenablage kopieren"; - out.shareSuccess = 'URL wurde in die Zwischenablage kopiert'; - out.shareFailed = "URL in die Zwischenablage kopieren fehlgeschlagen"; - - out.presentButton = 'PRÄSENTATION'; - out.presentButtonTitle = "Präsentationsmodus starten"; - out.presentSuccess = 'Hit ESC to exit presentation mode'; - out.sourceButton = 'VIEW SOURCE'; - out.sourceButtonTitle = "Leave presentation mode"; - - out.backgroundButton = 'BACKGROUND COLOR'; - out.backgroundButtonTitle = 'Change the background color in the presentation'; - out.colorButton = 'TEXT COLOR'; - out.colorButtonTitle = 'Change the text color in presentation mode'; - - out.commitButton = 'COMMIT'; - - out.getViewButton = 'READ-ONLY URL'; - out.getViewButtonTitle = 'Get the read-only URL for this document'; - out.readonlyUrl = 'Read only document'; - out.copyReadOnly = "Copy URL to clipboard"; - out.openReadOnly = "Open in a new tab"; - out.editShare = "Share edit URL"; - out.editShareTitle = "Copy the edit URL to clipboard"; - out.viewShare = "Share view URL"; - out.viewShareTitle = "Copy the read-only URL to clipboard"; - out.viewOpen = "View in new tab"; - out.viewOpenTitle = "Open the document in read-only mode in a new tab"; - - out.notifyJoined = "{0} has joined the collaborative session"; - out.notifyRenamed = "{0} is now known as {1}"; - out.notifyLeft = "{0} has left the collaborative session"; - - out.disconnectAlert = 'Network connection lost!'; - - out.tryIt = 'Try it out!'; - out.recentPads = 'Your recent pads (stored only in your browser)'; - - out.okButton = 'OK (enter)'; - out.cancelButton = 'Cancel (esc)'; - - out.loginText = '

Your username and password are used to generate a unique key which is never known by our server.

\n' + - '

Be careful not to forget your credentials, as they are impossible to recover

'; - - out.forget = "Forget"; - - // Polls - - out.poll_title = "Zero Knowledge Date Picker"; - out.poll_subtitle = "Zero Knowledge, realtime scheduling"; - - out.poll_p_save = "Your settings are updated instantly, so you never need to save."; - out.poll_p_encryption = "All your input is encrypted so only people who have the link can access it. Even the server cannot see what you change."; - out.poll_p_howtouse = "Enter your name in the input field below and check the box for times when you are available"; - - out.promptName = "What is you name ?"; - - out.wizardButton = 'WIZARD'; - out.wizardLog = "Click the button in the top left to return to your poll"; - out.wizardTitle = "Use the wizard to create your poll"; - out.wizardConfirm = "Are you really ready to add these options to your poll?"; - - out.poll_closeWizardButton = "Close wizard"; - out.poll_closeWizardButtonTitle = "Close wizard"; - out.poll_wizardComputeButton = "Compute Options"; - out.poll_wizardClearButton = "Clear Table"; - out.poll_wizardDescription = "Automatically create a number of options by entering any number of dates and times segments"; - out.poll_wizardAddDateButton = "+ Dates"; - out.poll_wizardAddTimeButton = "+ Times"; - - out.poll_addUserButton = "+ Users"; - out.poll_addUserButtonTitle = "Click to add a user"; - out.poll_addOptionButton = "+ Options"; - out.poll_addOptionButtonTitle = "Click to add an option"; - out.poll_addOption = "Propose an option"; - out.poll_optionPlaceholder = "Option"; - out.poll_addUser = "Enter a name"; - out.poll_userPlaceholder = "Your name"; - out.poll_removeOption = "Are you sure you'd like to remove this option?"; - out.poll_removeOptionTitle = "Remove the row"; - out.poll_removeUser = "Are you sure you'd like to remove this user?"; - out.poll_removeUserTitle = "Remove the column"; - out.poll_editOption = "Are you sure you'd like to edit this option?"; - out.poll_editOptionTitle = "Edit the row"; - out.poll_editUser = "Are you sure you'd like to edit this user?"; - out.poll_editUserTitle = "Edit the column"; - - out.poll_titleHint = "Title"; - out.poll_descriptionHint = "Description"; - - // index.html - - out.main_p1 = 'CryptPad is the zero knowledge realtime collaborative editor. Encryption carried out in your web browser protects the data from the server, the cloud, and the NSA. The secret encryption key is stored in the URL fragment identifier which is never sent to the server but is available to javascript so by sharing the URL, you give authorization to others who want to participate.'; - out.main_p2 = 'This project uses the CKEditor Visual Editor, CodeMirror, and the ChainPad realtime engine.'; - out.main_howitworks = 'How It Works'; - out.main_howitworks_p1 = 'CryptPad uses a variant of the Operational transformation algorithm which is able to find distributed consensus using a Nakamoto Blockchain, a construct popularized by Bitcoin. This way the algorithm can avoid the need for a central server to resolve Operational Transform Edit Conflicts and without the need for resolving conflicts, the server can be kept unaware of the content which is being edited on the pad.'; - out.main_about = 'About'; - out.main_about_p1 = 'You can read more about our privacy policy and terms of service.'; - - out.main_about_p2 = 'If you have any questions or comments, you can tweet us, open an issue on github, come say hi on irc (irc.freenode.net), or send us an email.'; - - out.table_type = 'Type'; - out.table_link = 'Link'; - out.table_created = 'Created'; - out.table_last = 'Last Accessed'; - - out.button_newpad = 'CREATE NEW WYSIWYG PAD'; - out.button_newcode = 'CREATE NEW CODE PAD'; - out.button_newpoll = 'CREATE NEW POLL'; - out.button_newslide = 'CREATE NEW PRESENTATION'; - - // privacy.html - - out.policy_title = 'Cryptpad Privacy Policy'; - out.policy_whatweknow = 'What we know about you'; - out.policy_whatweknow_p1 = 'As an application that is hosted on the web, Cryptpad has access to metadata exposed by the HTTP protocol. This includes your IP address, and various other HTTP headers that can be used to identify your particular browser. You can see what information your browser is sharing by visiting WhatIsMyBrowser.com.'; - out.policy_whatweknow_p2 = 'We use Piwik, an open source analytics platform, to learn more about our users. Piwik tells us about how you found Cryptpad, via direct entry, through a search engine, or via a referral from another web service like Reddit or Twitter. We also learn when you visit, what links you click while on our informational pages, and how long you stay on a particular page.'; - out.policy_whatweknow_p3 = 'These analytics tools are only used on informational pages. We do not collect any information about your usage of our zero-knowledge applications.'; - out.policy_howweuse = 'How we use what we learn'; - out.policy_howweuse_p1 = 'We use this information to make better decisions about promoting Cryptpad, by evaluating which of our past efforts were successful. Information about your location lets us know whether we should consider providing better support for languages other than English.'; - out.policy_howweuse_p2 = "Information about your browser (whether it's a desktop or mobile operating system) helps us make decisions when prioritizing feature improvements. Our development team is small, and we try to make choices that will improve as many users' experience as possible."; - out.policy_whatwetell = 'What we tell others about you'; - out.policy_whatwetell_p1 = 'We do not furnish to third parties the information that we gather or that you provide to us unless we are legally required to do so.'; - out.policy_links = 'Links to other sites'; - out.policy_links_p1 = 'This site contains links to other sites, including those produced by other organizations. We are not responsible for the privacy practices or the contents of any outside sites. As a general rule, links to outside sites are launched in a new browser window, to make clear that you are leaving Cryptpad.fr.'; - out.policy_ads = 'Advertisement'; - out.policy_ads_p1 = 'We do not display any online advertising, though we may link to the bodies which are financing our research.'; - out.policy_choices = 'Choices you have'; - out.policy_choices_open = 'Our code is open source, so you always have the option of hosting your own instance of Cryptpad.'; - out.policy_choices_vpn = 'If you want to use our hosted instance, but don\'t want to expose your IP address, you can protect your IP using the Tor browser bundle, or a VPN.'; - out.policy_choices_ads = 'If you just want to block our analytics platform, you can use adblocking tools like Privacy Badger.'; - - // terms.html - - out.tos_title = "Cryptpad Terms of Service"; - out.tos_legal = "Please don't be malicious, abusive, or do anything illegal."; - out.tos_availability = "We hope you find this service useful, but availability or performance cannot be guaranteed. Please export your data regularly."; - out.tos_e2ee = "Cryptpad documents can be read or modified by anyone who can guess or otherwise obtain the document's fragment identifier. We recommend that you use end-to-end-encrypted (e2ee) messaging technology to share URLs, and assume no liability in the event that such a URL is leaked."; - out.tos_logs = "Metadata provided by your browser to the server may be logged for the purpose of maintaining the service."; - out.tos_3rdparties = "We do not provide individualized data to third parties unless required to by law."; - - // BottomBar.html - - out.bottom_france = 'Made with in '; - out.bottom_support = 'An XWiki SAS Labs Project with the support of OpenPaaS-ng'; - - // Header.html - - out.header_france = 'With from France by XWiki SAS'; - - - // TODO Hardcode cause YOLO - //out.header_xwiki = 'XWiki SAS'; - out.header_support = ' OpenPaaS-ng'; - out.header_logoTitle = 'Go to the main page'; - - return out; -}); + 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 = 'German'; + + out.main_title = "Cryptpad: Echtzeitzusammenarbeit, ohne Vorwissen"; + out.main_slogan = "Einigkeit macht stark - Zusammenarbeit ist der Schlüssel"; // Der Slogan sollte evtl. besser englisch bleiben. + + out.type = {}; + out.type.pad = 'Pad'; + out.type.code = 'Code'; + out.type.poll = 'Umfrage'; + out.type.slide = 'Präsentation'; + + out.errorBox_errorType_disconnected = 'Verbindung verloren'; + out.errorBox_errorExplanation_disconnected = [ + 'Verbindung zum Server verloren. Zum Wiederverbinden Seite neu laden oder außerhalb dieser Box ', + 'klicken, um deine Arbeit einzusehen.' + ].join(''); + + out.common_connectionLost = 'Serververbindung verloren'; + + out.disconnected = 'Getrennt'; + out.synchronizing = 'Synchronisiert'; + out.reconnecting = 'Verbindung wird neu aufgebaut...'; + out.lag = 'Lag'; + out.readonly = 'Nur-Lesen'; + out.anonymous = "Anonymous"; + out.yourself = "Du"; + out.anonymousUsers = "anonyme Nutzer*innen"; + out.anonymousUser = "anonyme Nutzer*in"; + out.shareView = "Nur-Lesen URL"; + out.shareEdit = "Mitarbeits-URL"; + out.users = "Nutzer*innen"; + out.and = "Und"; + out.viewer = "Betrachter*in"; + out.viewers = "Betrachter*innen"; + out.editor = "Bearbeiter*in"; + out.editors = "Bearbeiter*innen"; + + out.greenLight = "Alles funktioniert bestens"; + out.orangeLight = "Deine langsame Verbindung kann die Nutzung beinträchtigen"; + out.redLight = "Du wurdest von dieser Sitzung getrennt"; + + out.importButton = 'IMPORTIEREN'; + out.importButtonTitle = 'Importiere eine lokale Datei in dieses Dokument'; + + out.exportButton = 'EXPORTIEREN'; + out.exportButtonTitle = 'Exportiere dieses Dokument in eine lokale Datei'; + out.exportPrompt = 'Wie möchtest du die Datei nennen?'; + + out.back = '⇐ Zurück'; + out.backToCryptpad = '⇐ Zurück zu Cryptpad'; + + out.userButton = 'NUTZER*IN'; + out.userButtonTitle = 'Ändere deinen Namen'; + out.changeNamePrompt = 'Ändere deinen Namen (oder lasse dieses Feld leer um anonym mitzuarbeiten): '; + + out.renameButton = 'UMBENENNEN'; + out.renameButtonTitle = 'Ändere den Titel welcher für dieses Dokument auf der Homepage gelistet wird.'; + out.renamePrompt = 'Wie möchtest du dieses Pad nennen?'; + out.renameConflict = 'Ein anderes Pad hat bereits diesen Namen'; + out.clickToEdit = "Zum bearbeiten klicken"; + + out.forgetButton = 'VERGESSEN'; + out.forgetButtonTitle = 'Entferne dieses Dokumnt von deiner Startseitenliste'; + out.forgetPrompt = 'Mit dem Klick auf OK wird das Dokument aus deinem lokalen Speicher gelöscht. Fortfahren?'; + + out.shareButton = 'Teilen'; + out.shareButtonTitle = "URL in die Zwischenablage kopieren"; + out.shareSuccess = 'URL wurde in die Zwischenablage kopiert'; + out.shareFailed = "URL in die Zwischenablage kopieren fehlgeschlagen"; + + out.presentButton = 'PRÄSENTATION'; + out.presentButtonTitle = "Präsentationsmodus starten"; + out.presentSuccess = 'Hit ESC to exit presentation mode'; + out.sourceButton = 'VIEW SOURCE'; + out.sourceButtonTitle = "Leave presentation mode"; + + out.backgroundButton = 'HINTERGRUNDFARBE'; + out.backgroundButtonTitle = 'Die Hintergrundfarbe der Präsentation ändern'; + out.colorButton = 'TEXTFARBE'; + out.colorButtonTitle = 'Die Textfarbe im Präsentationsmodus ändern'; + + // Hierfür fehlt eine passende Übersetzung... + out.commitButton = 'COMMIT'; + + out.getViewButton = 'NUR-LESEN URL'; + out.getViewButtonTitle = 'Nur-Lesen URL für dieses Dokument abrufen'; + out.readonlyUrl = 'Nur-Lesen Dokument'; + out.copyReadOnly = "URL in die Zwischenablage kopieren"; + out.openReadOnly = "In neuem Tab öffnen"; + out.editShare = "Mitarbeits-URL teilen"; + out.editShareTitle = "Mitarbeits-URL in die Zwischenablage kopieren"; + out.viewShare = "Nur-Lesen-URL teilen"; + out.viewShareTitle = "Nur-Lesen-URL in die Zwischenablage kopieren"; + out.viewOpen = "In neuem Tab anzeigen"; + out.viewOpenTitle = "Dokument im Nur-Lesen-Modus in neuem Tab öffnen."; + + out.notifyJoined = "{0} ist der gemeinsamen Sitzung beigetreten"; + out.notifyRenamed = "{0} heißt nun {1}"; + out.notifyLeft = "{0} hat die gemeinsame Sitzung verlassen"; + + out.disconnectAlert = 'Netzwerkverbindung verloren!'; + + out.tryIt = 'Probier\'s aus!'; + out.recentPads = 'Deine letzten Pads (diese Liste ist nur in deinem Browser gespeichert))'; + + out.okButton = 'OK (enter)'; + out.cancelButton = 'Abbrechen (esc)'; + + out.loginText = '

Dein Nutzername und Passwort wird verwendet um einen einzigartigen Schlüssel zu generieren, den unser Server nicht kennt.

\n' + + '

Bemühe dich also darum deine Nutzerdaten nicht zu vergessen, da es unmöglich ist sie wiederherzustellen.

'; + + out.forget = "Vergessen"; + + // Polls + + out.poll_title = "Kenntnisfreier Datumsplaner"; + out.poll_subtitle = "Kenntnisfreies, echtzeit planen"; + + out.poll_p_save = "Deine Einstellungen werden sofort automatisch gesichtert."; + out.poll_p_encryption = "Alle Eingaben sind verschlüsselt, deshalb haben nur Leute im Besitz des Links Zugriff. Selbst der Server sieht nicht was du änderst."; + out.poll_p_howtouse = "Gib deinen Namen in das Eingabefeld unten ein und wähle die Felder für die Zeiten aus, zu welchen verfügbar bist."; + + out.promptName = "Wie heißt du?"; + + out.wizardButton = 'Assistent'; + out.wizardLog = "Klicke auf den Button links oben um zur Umfrage zurückzukehren."; + out.wizardTitle = "Nutze den Assistenten um deine Umfrage zu erstellen."; + out.wizardConfirm = "Bist du wirklich bereit die angegebenen Optionen bereits zu deiner Umfrage hinzuzufügen?"; + + out.poll_closeWizardButton = "Assistenten schließen"; + out.poll_closeWizardButtonTitle = "Assistenten schließen"; + out.poll_wizardComputeButton = "Optionen übernehmen"; + out.poll_wizardClearButton = "Tabelle leeren"; + out.poll_wizardDescription = "Erstellt automatisch die Optionen indem eine beliebige Anzahl von Daten und Zeiten eingegeben wird."; + out.poll_wizardAddDateButton = "+ Daten"; + out.poll_wizardAddTimeButton = "+ Zeiten"; + + out.poll_addUserButton = "+ Nutzer*innen"; + out.poll_addUserButtonTitle = "Zum Hinzufügen einer Nutzer*in klicken"; + out.poll_addOptionButton = "+ Optionen"; + out.poll_addOptionButtonTitle = "Zum Hinzufügen einer Option klicken"; + out.poll_addOption = "Eine Option vorschlagen"; + out.poll_optionPlaceholder = "Option"; + out.poll_addUser = "Einen Namen eingeben"; + out.poll_userPlaceholder = "Dein Name"; + out.poll_removeOption = "Bist du sicher, dass du diese Option entfernen möchtest?"; + out.poll_removeOptionTitle = "Zeile entfernen"; + out.poll_removeUser = "Bist du sicher, dass du diese Nutzer*in entfernen möchtest?"; + out.poll_removeUserTitle = "Spalte entfernen"; + out.poll_editOption = "Bist du sicher, dass du diese Option bearbeiten möchtest?"; + out.poll_editOptionTitle = "Zeile bearbeiten"; + out.poll_editUser = "Bist du sicher, dass du diese Nutzer*in bearbeiten möchtest?"; + out.poll_editUserTitle = "Spalte bearbeiten"; + + out.poll_titleHint = "Titel"; + out.poll_descriptionHint = "Beschreibung"; + + // index.html + + out.main_p1 = 'CryptPad ist ein kenntnisfreier, kollaborativer Texteditor, der in Echtzeit arbeitet. Durch Verschlüsselung, die in deinem Browser geschieht, werden deine Daten vorm Server, der Cloud und der NSA geschützt. Der geheime Schlüssel ist im sogenannten Fragmentbezeichner der URL gespeichert. Dieser ist dem Server nicht zugänglich, wohl aber deinem Browser und damit javascript. Durch Teilen der URL autorisierst du andere und ermöglichst ihnen die Mitarbeit.'; + out.main_howitworks = 'Wie es funktioniert'; + out.main_p2 = 'Dieses Projekt nutzt den CKEditor visuellen Editor, CodeMirror, und die ChainPad realtime engine.'; + out.main_howitworks_p1 = 'CryptPad nutzt eine Variante des Operational transformation Algorithmus. Dieser kann mit Hilfe der Nakamoto Blockchain, einem Konstrukt, das durch das Bitcoin-Projekt Bekanntheit erlangte, verteilten Konsens (distributed consensus) finden. Damit ist der Algorithmus nicht auf einen zentralen Server angewiesen um Konflikte zu lösen — der Server muss also nichts vom Inhalt der Pads wissen.'; + out.main_about = 'Weitere Informationen'; + out.main_about_p1 = 'Du kannst mehr über unsere Datenschutzbestimmungen und unsere Nutzungsbedingungen lesen.'; + + out.main_about_p2 = 'Für Fragen und Kommentare kannst du uns tweeten, ein Ticket auf Github öffnen, hi auf irc sagen (irc.freenode.net), oder eine Mail zukommen lassen.'; + + out.table_type = 'Typ'; + out.table_link = 'Link'; + out.table_created = 'Erstellt'; + out.table_last = 'Letzter Zugriff'; + + out.button_newpad = 'NEUES WYSIWYG-PAD ERSTELLEN'; + out.button_newcode = 'NEUES CODE-PAD ERSTELLEN'; + out.button_newpoll = 'NEUE ABSTIMMUNG ERSTELLEN'; + out.button_newslide = 'NEUE PRÄSENTATION ERSTELLEN'; + + // privacy.html + + out.policy_title = 'Cryptpad Datenschutzbestimmungen'; + out.policy_whatweknow = 'Was wir über dich wissen'; + out.policy_whatweknow_p1 = 'Als Programm, das im Web gehostet wird, hat Cryptpad Zugriff auf die Metadaten, die vom HTTP-Protokoll exponiert werden. Inbegriffen ist deine IP-Adresse und diverse andere HTTP-Header, die es ermöglichen deinen Browser zu identifizieren. Um zu sehen welche Daten dein Browser preis gibt kanst du die Seite WhatIsMyBrowser.com besuchen.'; + out.policy_whatweknow_p2 = 'Wir nutzen Piwik, eine open source Analyseplatform um mehr über unsere Nutzer*innen zu lernen. Piwik teilt uns mit, wie du Cryptpad gefunden hast — durch direkten Zugriff, mit Hilfe eine Suchmaschine oder über einen Link auf einer anderen Seite wie z.B. Reddit oder Twitter. Außerdem lernen wir mehr über deinen Besuch, welchen Link du auf den Informationsseiten klickst und wie lange du auf diesen Seiten verweilst.'; + out.policy_whatweknow_p3 = 'Diese Analysesoftware wird nur auf den Informationsseiten genutzt. Wir sammeln keinerlei Nutzungsinformationen zu den Kenntnisfreien Apps.'; + out.policy_howweuse = 'Wie wir das Wissen anwenden'; + out.policy_howweuse_p1 = 'Wir nutzen diese Informationen um besser entscheiden zu können wie Cryptpad beworben werden kann und um genutzte Strategien zu evaluieren. Informationen über deinen Standort helfen uns abzuschätzen welche Sprachen wir besser unterstützen sollten.'; + out.policy_howweuse_p2 = "Informationen zu deinem Browser (ob du auf einem Desktop oder Smartphone arbeitest) hilft uns außerdem dabei zu entscheiden, welche Features priorisiert werden sollen. Unser Entwicklerteam ist klein, deshalb ist es uns wichtig Entscheidungen derart zu treffen, dass die Erfahrung der größten Zahl von Nutzer*innen verbessert wird."; + out.policy_whatwetell = 'Was wir anderen über die erzählen'; + out.policy_whatwetell_p1 = 'Wir reichen keine von uns gesammelten Daten weiter, außer im Falle einer gerichtlichen Anordnung.'; + out.policy_links = 'Links zu anderen Seiten'; + out.policy_links_p1 = 'Diese Seite beinhaltet Links zu anderen Seiten, teilweise werden diese von anderen Organisationen verwaltet. Wir sind nicht für den Umgang mit der Privatsphäre und die Inhalte der anderen Seiten verantwortlich. Generell werden Links zu externen Seiten in einem neuem Fenster geöffnet, um zu verdeutlichen, dass du Cryptpad.fr verlässt.'; + out.policy_ads = 'Werbung'; + out.policy_ads_p1 = 'Wir zeigen keine Onlinewerbung, können aber zu Organisationen verlinken, die unsere Forschung finanzieren.'; + out.policy_choices = 'Deine Möglichkeiten'; + out.policy_choices_open = 'Unser Code ist open source, deshalb kannst du jederzeit deine eigene Cryptpad-Instanz hosten.'; + out.policy_choices_vpn = 'Wenn du unsere gehostete Instanz nutzen möchtest bitten wir dich darum IP-Adresse zu verschleiern, das geht zum Beispiel mit dem Tor browser bundle, oder einem VPN-Zugang.'; + out.policy_choices_ads = 'Wenn du unsere Analysesoftware blockieren möchtest kannst du Adblock-Software wie Privacy Badger verwenden.'; + + // terms.html + + out.tos_title = "Cryptpad Nutzungsbedingungen"; + out.tos_legal = "Sei nicht bösartig, missbrauchend und mach nichts illegales."; + out.tos_availability = "Wir hoffen, dass dir dieser Service nützt, aber Erreichbarkeit und Performanz können nicht garantiert werden. Bitte exportiere deine Daten regelmäßig."; + out.tos_e2ee = "Cryptpad Dokumente können von allen gelesen oder bearbeitet werden, die den \"fragment identifier\" des Dokuments erraten oder auf eine andere Art davon erfahren. Wir empfehlen dir Ende-Zu-Ende verschlüsselte Nachrichtentechnik (e2ee) zum Versenden der URLs zu nutzen. Wir übernehmen keine Haftung falls eine URL erschlichen oder abgegriffen wird."; + out.tos_logs = "Metadaten, die dein Browser bereitstellt, können geloggt werden, um den Service aufrechtzuerahlten."; + out.tos_3rdparties = "Wir geben keine Individualdaten an dritte Weiter, außer auf richterliche Anordnung."; + + // BottomBar.html + + out.bottom_france = 'Mit in gemacht'; + out.bottom_support = 'Ein XWiki SAS Labs Project mit Hilfe von OpenPaaS-ng'; + + // Header.html + + out.header_france = 'Mit von France und XWiki SAS'; + + + // TODO Hardcode cause YOLO + //out.header_xwiki = 'XWiki SAS'; + out.header_support = ' OpenPaaS-ng'; + out.header_logoTitle = 'Zur Hauptseite'; + + return out; + }); From 308db7fa79beb59360e696f2a2d5fc86ea3d4539 Mon Sep 17 00:00:00 2001 From: ansuz Date: Fri, 16 Dec 2016 15:25:06 +0100 Subject: [PATCH 7/9] fix uncolored /pad/ content in IE --- www/pad/main.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/www/pad/main.js b/www/pad/main.js index 457913cb5..74130b860 100644 --- a/www/pad/main.js +++ b/www/pad/main.js @@ -124,8 +124,7 @@ define([ // hide all content until the realtime doc is ready $(inner).css({ - color: 'white', - 'background-color': 'white', + color: '#333', }); documentBody.innerHTML = Messages.initialState; @@ -134,8 +133,7 @@ define([ var setEditable = module.setEditable = function (bool) { if (bool) { $(inner).css({ - color: 'unset', - 'background-color': 'unset', + color: '#fff', }); $(module.spinner.get().el).fadeOut(750); } else { From a220742f68fa83075d30910f9a8ccda2341ba1b9 Mon Sep 17 00:00:00 2001 From: ansuz Date: Fri, 16 Dec 2016 15:31:22 +0100 Subject: [PATCH 8/9] fix reversed color settings --- www/pad/main.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/www/pad/main.js b/www/pad/main.js index 74130b860..46888a935 100644 --- a/www/pad/main.js +++ b/www/pad/main.js @@ -124,7 +124,7 @@ define([ // hide all content until the realtime doc is ready $(inner).css({ - color: '#333', + color: '#fff', }); documentBody.innerHTML = Messages.initialState; @@ -133,7 +133,7 @@ define([ var setEditable = module.setEditable = function (bool) { if (bool) { $(inner).css({ - color: '#fff', + color: '#333', }); $(module.spinner.get().el).fadeOut(750); } else { From d09983ac92d85e0ed1d74b7d148d81a87f39598e Mon Sep 17 00:00:00 2001 From: ansuz Date: Fri, 16 Dec 2016 17:54:50 +0100 Subject: [PATCH 9/9] s/kenntnisfreier/zero knowledge --- customize.dist/translations/messages.de.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/customize.dist/translations/messages.de.js b/customize.dist/translations/messages.de.js index c922b9fa9..8b1139836 100644 --- a/customize.dist/translations/messages.de.js +++ b/customize.dist/translations/messages.de.js @@ -162,7 +162,7 @@ // index.html - out.main_p1 = 'CryptPad ist ein kenntnisfreier, kollaborativer Texteditor, der in Echtzeit arbeitet. Durch Verschlüsselung, die in deinem Browser geschieht, werden deine Daten vorm Server, der Cloud und der NSA geschützt. Der geheime Schlüssel ist im sogenannten Fragmentbezeichner der URL gespeichert. Dieser ist dem Server nicht zugänglich, wohl aber deinem Browser und damit javascript. Durch Teilen der URL autorisierst du andere und ermöglichst ihnen die Mitarbeit.'; + out.main_p1 = 'CryptPad ist ein zero knowledge, kollaborativer Texteditor, der in Echtzeit arbeitet. Durch Verschlüsselung, die in deinem Browser geschieht, werden deine Daten vorm Server, der Cloud und der NSA geschützt. Der geheime Schlüssel ist im sogenannten Fragmentbezeichner der URL gespeichert. Dieser ist dem Server nicht zugänglich, wohl aber deinem Browser und damit javascript. Durch Teilen der URL autorisierst du andere und ermöglichst ihnen die Mitarbeit.'; out.main_howitworks = 'Wie es funktioniert'; out.main_p2 = 'Dieses Projekt nutzt den CKEditor visuellen Editor, CodeMirror, und die ChainPad realtime engine.'; out.main_howitworks_p1 = 'CryptPad nutzt eine Variante des Operational transformation Algorithmus. Dieser kann mit Hilfe der Nakamoto Blockchain, einem Konstrukt, das durch das Bitcoin-Projekt Bekanntheit erlangte, verteilten Konsens (distributed consensus) finden. Damit ist der Algorithmus nicht auf einen zentralen Server angewiesen um Konflikte zu lösen — der Server muss also nichts vom Inhalt der Pads wissen.';