diff --git a/customize.dist/src/less2/include/modals-ui-elements.less b/customize.dist/src/less2/include/modals-ui-elements.less
index 24e5d725f..79964e888 100644
--- a/customize.dist/src/less2/include/modals-ui-elements.less
+++ b/customize.dist/src/less2/include/modals-ui-elements.less
@@ -29,6 +29,7 @@
color: @cryptpad_text_col;
}
+ // teams invite modal
.cp-teams-invite-block {
display: flex;
align-items: center;
@@ -37,7 +38,16 @@
flex: 1;
}
}
+ .cp-teams-invite-message {
+ resize: none;
+ }
.cp-teams-invite-alert {
- margin-top: 15px;
+ margin-top: 10px;
+ }
+ .cp-teams-invite-spinner {
+ font-size: 1.2em;
+ .fa {
+ margin-right: 10px;;
+ }
}
}
diff --git a/www/common/common-ui-elements.js b/www/common/common-ui-elements.js
index 7fda20229..366931b24 100644
--- a/www/common/common-ui-elements.js
+++ b/www/common/common-ui-elements.js
@@ -1640,15 +1640,14 @@ define([
// Invite from link
var dismissButton = h('span.fa.fa-times');
var linkContent = h('div.cp-share-modal', [
- h('p', 'XXX Invite link description...'), // XXX
- linkError = h('div.alert.alert-danger', {style : 'display: none;'}),
+ h('p', Messages.team_inviteLinkTitle ), // XXX
linkForm = h('div.cp-teams-invite-form', [
linkName = h('input', {
- placeholder: 'name...' // XXX
+ placeholder: Messages.team_inviteLinkTempName // XXX
}),
h('br'),
h('div.cp-teams-invite-block', [
- h('span', 'password protection...'), // XXX
+ h('span', Messages.team_inviteLinkSetPassword), // XXX
h('a.cp-teams-help.fa.fa-question-circle', {
href: origin + '/faq.html#security-pad_password',
target: "_blank",
@@ -1657,30 +1656,32 @@ define([
]), // XXX
linkPassword = UI.passwordInput({
id: 'cp-teams-invite-password',
- placeholder: 'password...' // XXX
+ placeholder: Messages.login_password // XXX
}),
h('div.cp-teams-invite-block',
- h('span', 'add a note') // XXX
+ h('span', Messages.team_inviteLinkNote) // XXX
),
- linkMessage = h('textarea', { // XXX ansuz hitting enter submits...
- placeholder: 'note...' // XXX
+ linkMessage = h('textarea.cp-teams-invite-message', { // XXX ansuz hitting enter submits...
+ placeholder: Messages.team_inviteLinkNoteMsg, // XXX
+ rows: 3
})
]),
- linkSpin = h('div', {
+ linkSpin = h('div.cp-teams-invite-spinner', {
style: 'display: none;'
}, [
h('i.fa.fa-spinner.fa-spin'),
- linkSpinText = h('span', 'Scrypt...') // XXX
+ linkSpinText = h('span', Messages.team_inviteLinkLoading) // XXX
]),
linkResult = h('div', {
style: 'display: none;'
}, h('textarea', {
readonly: 'readonly'
})),
+ linkError = h('div.alert.alert-danger.cp-teams-invite-alert', {style : 'display: none;'}),
linkWarning = h('div.cp-teams-invite-alert.alert.alert-warning.dismissable', {
style: "display: none;"
}, [
- h('span.cp-inline-alert-text', 'Warning...'),
+ h('span.cp-inline-alert-text', Messages.team_inviteLinkWarning),
dismissButton
]) // XXX
]);
@@ -1706,7 +1707,7 @@ define([
var hashData = Hash.parseTypeHash('invite', hash);
href = origin + '/teams/#' + hash;
if (!name || !name.trim()) {
- $(linkError).text('empty name...').show(); // XXX
+ $(linkError).text(Messages.team_inviteLinkErrorName).show(); // XXX
return true;
}
@@ -1724,7 +1725,7 @@ define([
bytes64 = _bytes;
}));
}).nThen(function (waitFor) {
- $(linkSpinText).text('Add invite link to team'); // XXX
+ $(linkSpinText).text(Messages.team_inviteLinkAdding); // XXX
module.execCommand('CREATE_INVITE_LINK', {
name: name,
password: pw,
@@ -1754,14 +1755,14 @@ define([
keys: [27]
}, {
className: 'primary cp-teams-invite-create',
- name: 'CREATE LINK', // XXX
+ name: Messages.team_inviteLinkCreate, // XXX
onClick: function () {
return process();
},
keys: [13]
}, {
className: 'primary cp-teams-invite-copy',
- name: 'COPY LINK', // XXX
+ name: Messages.team_inviteLinkCopy, // XXX
onClick: function () {
if (!href) { return; }
var success = Clipboard.copy(href);
diff --git a/www/common/invitation.js b/www/common/invitation.js
index 7c92d83c6..882eadffe 100644
--- a/www/common/invitation.js
+++ b/www/common/invitation.js
@@ -96,7 +96,7 @@ var factory = function (Hash, Crypt, Nacl, Scrypt/*, Util, Cred, nThen */) {
'/bower_components/tweetnacl/nacl-fast.min.js',
'/bower_components/scrypt-async/scrypt-async.min.js',
], function (Hash, Crypt /*, Nacl, Scrypt */) {
- return factory(Hash, Crypt, window.nacl, window.Scrypt);
+ return factory(Hash, Crypt, window.nacl, window.scrypt);
});
}
}());
diff --git a/www/common/translations/messages.de.json b/www/common/translations/messages.de.json
index b92c21309..8eba3e0f7 100644
--- a/www/common/translations/messages.de.json
+++ b/www/common/translations/messages.de.json
@@ -1251,5 +1251,13 @@
"share_linkPasswordAlert": "Dieses Element ist passwortgeschützt. Wenn du diesen Link teilst, muss der Empfänger das Passwort eingeben.",
"share_contactPasswordAlert": "Dieses Element ist passwortgeschützt. Weil du es mit einem CryptPad-Kontakt teilst, muss der Empfänger das Passwort nicht eingeben.",
"share_embedPasswordAlert": "Dieses Element ist passwortgeschützt. Wenn du dieses Pad einbettest, werden Betrachter nach dem Passwort gefragt.",
- "passwordFaqLink": "Mehr über Passwörter erfahren"
+ "passwordFaqLink": "Mehr über Passwörter erfahren",
+ "share_noContactsLoggedIn": "Du hast noch keine Kontakte bei CryptPad. Teile den Link zu deinem Profil, damit andere dir Kontaktanfragen senden können.",
+ "share_copyProfileLink": "Profil-Link kopieren",
+ "share_noContactsNotLoggedIn": "Logge dich ein oder registriere dich, um deine Kontakte zu sehen und neue hinzuzufügen.",
+ "contacts_mute": "",
+ "contacts_unmute": "",
+ "contacts_manageMuted": "",
+ "contacts_mutedUsers": "",
+ "contacts_muteInfo": ""
}
diff --git a/www/common/translations/messages.fi.json b/www/common/translations/messages.fi.json
index 2c63c0851..fb9a12fde 100644
--- a/www/common/translations/messages.fi.json
+++ b/www/common/translations/messages.fi.json
@@ -1,2 +1,37 @@
{
+ "type": {
+ "pad": "Teksti",
+ "code": "Koodi",
+ "poll": "Kysely",
+ "kanban": "Kanban",
+ "slide": "Esitys",
+ "drive": "CryptDrive",
+ "whiteboard": "Tussitaulu",
+ "file": "Tiedosto",
+ "media": "Media",
+ "todo": "Tehtävälista",
+ "contacts": "Yhteystiedot",
+ "sheet": "Taulukko (Beta)",
+ "teams": "Teams"
+ },
+ "button_newpad": "Uusi Teksti-padi",
+ "button_newcode": "Uusi Koodi-padi",
+ "button_newpoll": "Uusi Kysely",
+ "button_newslide": "Uusi Esitys",
+ "button_newwhiteboard": "Uusi Tussitaulu",
+ "button_newkanban": "Uusi Kanban",
+ "button_newsheet": "Uusi Taulukko",
+ "common_connectionLost": "Yhteys palvelimelle katkennut
Sovellus on vain luku-tilassa, kunnes yhteys palaa.",
+ "websocketError": "Yhdistäminen websocket-palvelimelle epäonnistui...",
+ "typeError": "Tämä padi ei ole yhteensopiva valitun sovelluksen kanssa",
+ "onLogout": "Olet kirjautunut ulos, {0}klikkaa tästä{1} kirjautuaksesi sisään tai paina Esc-näppäintä käyttääksesi padia vain luku-tilassa.",
+ "wrongApp": "Reaaliaikaisen sisällön näyttäminen selaimessa epäonnistui. Ole hyvä ja yritä sivun lataamista uudelleen.",
+ "padNotPinned": "Tämä padi vanhenee kolmen kuukauden käyttämättömyyden jälkeen, {0}kirjaudu sisään{1} tai [2}rekisteröidy{3} säilyttääksesi sen.",
+ "padNotPinnedVariable": "Tämä padi vanhenee {4} päivän käyttämättömyyden jälkeen, {0}kirjaudu sisään{1} tai {2}rekisteröidy{3} säilyttääksesi sen.",
+ "anonymousStoreDisabled": "Tämän CryptPad-instanssin ylläpitäjä on estänyt anonyymien käyttäjien pääsyn tallennustilaan. Kirjaudu sisään käyttääksesi CryptDrivea.",
+ "expiredError": "Tämä padi on vanhentunut, eikä se ole enää saatavilla.",
+ "deletedError": "Tämä padi on poistettu omistajansa toimesta, eikä se ole enää saatavilla.",
+ "inactiveError": "Tämä padi on poistettu käyttämättömyyden vuoksi. Paina Esc-näppäintä luodaksesi uuden padin.",
+ "chainpadError": "Sisältöä päivitettäessä tapahtui vakava virhe. Tämä sivu on vain luku-tilassa, jotta tekemäsi muutokset eivät katoaisi.
Paina Esc-näppäintä jatkaaksesi padin katselua vain luku-tilassa, tai lataa sivu uudelleen yrittääksesi muokkaamista.",
+ "invalidHashError": "Pyytämäsi dokumentin URL-osoite on virheellinen."
}
diff --git a/www/common/translations/messages.fr.json b/www/common/translations/messages.fr.json
index cac8d471b..aa8065bee 100644
--- a/www/common/translations/messages.fr.json
+++ b/www/common/translations/messages.fr.json
@@ -1254,5 +1254,20 @@
"passwordFaqLink": "En lire plus sur les mots de passe",
"share_noContactsLoggedIn": "Vous n'avez pas encore ajouté de contacts sur CryptPad. Partagez le lien de votre profil pour que l'on vous envoie des demandes de contact.",
"share_copyProfileLink": "Copier le lien du profil",
- "share_noContactsNotLoggedIn": "Connectez-vous ou enregistrez-vous pour voir vos contacts ou en ajouter de nouveaux."
+ "share_noContactsNotLoggedIn": "Connectez-vous ou enregistrez-vous pour voir vos contacts ou en ajouter de nouveaux.",
+ "contacts_mute": "Masquer",
+ "contacts_unmute": "Réafficher",
+ "contacts_manageMuted": "Comptes masqués",
+ "contacts_mutedUsers": "Comptes masqués",
+ "contacts_muteInfo": "Vous ne receverez plus de notifications ou de messages si vous masquez ce compte.
L'utilisateur ne sera pas informé que vous l'avez masqué. ",
+ "team_inviteLinkTitle": "Créer une invitation personnalisée à cette équipe",
+ "team_inviteLinkTempName": "Nom temporaire (apparaît dans la liste des invitations en cours)",
+ "team_inviteLinkSetPassword": "Protégez le lien avec un mot de passe (recommandé)",
+ "team_inviteLinkNote": "Ajoutez un message personnalisé",
+ "team_inviteLinkNoteMsg": "Ce message sera affiché avant que le destinataire décide de rejoindre cette équipe.",
+ "team_inviteLinkLoading": "Lien en cours de création",
+ "team_inviteLinkWarning": "La première personne qui accédera à ce lien pourra devenir membre de l'équipe et voir son contenu. Partagez le avec prudence.",
+ "team_inviteLinkErrorName": "Merci de donner un nom à cette invitation",
+ "team_inviteLinkCreate": "CRÉER LIEN",
+ "team_inviteLinkCopy": "COPIER LIEN"
}
diff --git a/www/common/translations/messages.json b/www/common/translations/messages.json
index 9a505391c..4dfb5143b 100644
--- a/www/common/translations/messages.json
+++ b/www/common/translations/messages.json
@@ -1254,5 +1254,20 @@
"passwordFaqLink": "Read more about passwords",
"share_noContactsLoggedIn": "You are not connected with anyone on CryptPad yet. Share the link to your profile for people to send you contact requests.",
"share_copyProfileLink": "Copy profile link",
- "share_noContactsNotLoggedIn": "Log in or register to see your existing contacts and add new ones."
+ "share_noContactsNotLoggedIn": "Log in or register to see your existing contacts and add new ones.",
+ "contacts_mute": "Mute",
+ "contacts_unmute": "Unmute",
+ "contacts_manageMuted": "Manage muted",
+ "contacts_mutedUsers": "Muted accounts",
+ "contacts_muteInfo": "You will not receive any notifications or messages from muted users.
They will not know you have muted them. ",
+ "team_inviteLinkTitle": "Create a personalized invitation to this team",
+ "team_inviteLinkTempName": "temporary name (visible in pending invitations list)",
+ "team_inviteLinkSetPassword": "Protect the link with a password (recommended)",
+ "team_inviteLinkNote": "Add a personal message",
+ "team_inviteLinkNoteMsg": "This message will be shown before the recipient decides whether to join this team.",
+ "team_inviteLinkLoading": "Generating your link",
+ "team_inviteLinkWarning": "The first person to access this link will be able to join this team and view its contents. Share it carefully.",
+ "team_inviteLinkErrorName": "Please give this invitation a name",
+ "team_inviteLinkCreate": "CREATE LINK",
+ "team_inviteLinkCopy": "COPY LINK"
}