diff --git a/www/i18n/locale-ca.json b/www/i18n/locale-ca.json index d0e97c04c9c6a0145c7ce991b82ae35a3a2993ba..36899031285ab3170cfddd14cb63b5b61e5972e6 100644 --- a/www/i18n/locale-ca.json +++ b/www/i18n/locale-ca.json @@ -98,7 +98,7 @@ "CURRENCY": "Moneda", "ACCOUNT": "Compte", "WALLETS": "Moneders", - "SETTINGS": "Ajustos", + "SETTINGS": "Configuració", "NETWORK": "Xarxa", "TRANSACTIONS": "Moviments" }, @@ -863,7 +863,7 @@ "IDENTITY_PENDING_REVOCATION": "La <b>revocación de esta identidad</b> fue solicitado y esta en espera de tratamiento. Por lo que, la certificación es desactivada.", "IDENTITY_INVALID_BLOCK_HASH": "Esta solicitud de adhesión no es valida (porque denomina un bloque los nodos de la red han anulado): este individuo/a debe renovelar su solicitud de adhesión <b>antes que</b> estar certificada.", "IDENTITY_EXPIRED": "La publicación de esta identidad ha caducada: este individuo/a debe realizar una nueva solicitud de adhesión <b>antes que</b> estar certificada.", - "IDENTITY_SANDBOX_FULL": "EL nodo Duniter utilizado por Cesium ya no puede recibir más nuevas identidades, porque la fila de espera es llena.<br/><br/>Por favor, intenta ulteriormente o cambia de nodo (vÃa el menú <b>Ajustes</b>).", + "IDENTITY_SANDBOX_FULL": "EL node Duniter utilitzat per Cesium ja no pot rebre noves identidades perquè la cua està plena.<br/><br/>Torneu-ho a provar o canvieu els nodes (a través del menú <b>Configuració</b>).", "IDENTITY_NOT_FOUND": "Identidad no encontrada", "IDENTITY_TX_FAILED": "Error cargando las transacciones de la identidad", "WOT_PENDING_INVALID_BLOCK_HASH": "Adhesión no validada.", @@ -898,7 +898,9 @@ "GET_LICENSE_FILE_FAILED": "Error al obtener el archivo de licencia", "CHECK_NETWORK_CONNECTION": "No se puede conectar a ningún nodo.<br/><br/><b>Compruebe la conexión a Internet</b>.", "INVALID_FILE_FORMAT": "Formato de archivo inválido.", - "SAME_TX_RECIPIENT": "El destinatario debe ser diferente del emisor." + "SAME_TX_RECIPIENT": "El destinatario debe ser diferente del emisor.", + "SELF_CERTIFICATION": "No pots certificar la teva pròpia identitat.", + "TX_SANDBOX_FULL": "El node Duniter utilitzat per Cesium ja no pot rebre transferències noves, perquè la cua està plena.<br/><br/>Torneu-ho a provar o canvieu els nodes (a través del menú <b>Configuració</b>)." }, "INFO": { "POPUP_TITLE": "Información", diff --git a/www/i18n/locale-de-DE.json b/www/i18n/locale-de-DE.json index c0b83e4ee998c5c759d5347344025d01c74ae060..e4210d0e465386ddb4f139142fe731900927a142 100644 --- a/www/i18n/locale-de-DE.json +++ b/www/i18n/locale-de-DE.json @@ -827,7 +827,9 @@ "UNKNOWN_WALLET_ID": "Unbekannte sekundäre Brieftasche.", "RESTORE_WALLET_LIST_FAILED": "Konnte die Liste der Brieftaschen nicht wiederherstellen.", "INVALID_FILE_FORMAT": "Ungültiges Dateiformat.", - "SAME_TX_RECIPIENT": "Der Empfänger muss sich vom Auftraggeber unterscheiden." + "SAME_TX_RECIPIENT": "Der Empfänger muss sich vom Auftraggeber unterscheiden.", + "SELF_CERTIFICATION": "Sie können Ihre eigene Identität nicht zertifizieren.", + "TX_SANDBOX_FULL": "Der von Cesium verwendete Duniter-Knoten kann keine neuen Überweisungen mehr bearbeiten, da die Warteschlange voll ist.<br/><br/>Versuche es später erneut oder wähle einen anderen Duniter-Knoten (in den <b>Einstellungen</b>)." }, "INFO": { "POPUP_TITLE": "Hinweis", diff --git a/www/i18n/locale-en-GB.json b/www/i18n/locale-en-GB.json index 978271ab6c40ead7c861fc68ac33009acd7fe511..d2c9a73bef76c9ec1fbcfde3c38d4b7042cca163 100644 --- a/www/i18n/locale-en-GB.json +++ b/www/i18n/locale-en-GB.json @@ -131,8 +131,8 @@ "REPORT_ISSUE": "Report an issue", "NOT_YOUR_ACCOUNT_QUESTION" : "You do not own the account <b><i class=\"ion-key\"></i> {{pubkey|formatPubkey}}</b>?", "BTN_CHANGE_ACCOUNT": "Disconnect this account", - "PEER_CONNECTION_ERROR": "Node <b>{{server}}</b> is unreachable or address is invalid.<br/><br/>Check your Internet connection, or change the node <a class=\"positive\" ng-click=\"doQuickFix('settings')\">in the settings</a>.", - "NETWORK_CONNECTION_ERROR": "Network is unreachable.<br/><br/>Check your Internet connection, or select a node manually <a class=\"positive\" ng-click=\"doQuickFix('settings')\">in the settings</a>.", + "PEER_CONNECTION_ERROR": "Peer <b>{{server}}</b> is unreachable or address is invalid.<br/><br/>Check your Internet connection, or change the peer <a class=\"positive\" ng-click=\"doQuickFix('settings')\">in the settings</a>.", + "NETWORK_CONNECTION_ERROR": "Network is unreachable.<br/><br/>Check your Internet connection, or select a peer manually <a class=\"positive\" ng-click=\"doQuickFix('settings')\">in the settings</a>.", "SHOW_ALL_FEED": "Show all", "READ_MORE": "Read more", "FEED_SOURCE": "Source" @@ -319,7 +319,7 @@ "INFO": { "CONNECTING_TO_NETWORK": "Connecting to the network...", "ANALYZING_NETWORK": "Analyzing the {{currency|abbreviate}} network...", - "ONLY_SSL_PEERS": "Non-SSL nodes have a degraded display because Cesium works in HTTPS mode." + "ONLY_SSL_PEERS": "Non-SSL peers have a degraded display because Cesium works in HTTPS mode." } }, "PEER": { @@ -530,7 +530,7 @@ "INTRO_WARNING_SECURITY": "Check that the hardware you are currently using (computer, tablet, phone) <b>is secure and trustworthy </b>.", "INTRO_WARNING_SECURITY_HELP": "Up-to-date anti-virus, firewall enabled, session protected by password or pin code...", "INTRO_HELP": "Click <b> {{'COMMON.BTN_START'|translate}}</b> to begin creating an account. You will be guided step by step.", - "REGISTRATION_NODE": "Your registration will be registered via the Duniter peer <b>{{server}}</b> node, which will then be distributed to the rest of the currency network.", + "REGISTRATION_NODE": "Your registration will be registered via the Duniter peer <b>{{server}}</b>, which will then be distributed to the rest of the currency network.", "REGISTRATION_NODE_HELP": "If you do not trust this peer, please change <a ng-click=\"doQuickFix('settings')\">in the settings</a> of Cesium.", "SELECT_ACCOUNT_TYPE": "Choose the type of account to create:", "MEMBER_ACCOUNT": "Member account", @@ -767,7 +767,7 @@ "IDENTITY_PENDING_REVOCATION": "The <b>revocation of this identity</b> has been requested and is awaiting processing. Certification is therefore disabled.", "IDENTITY_INVALID_BLOCK_HASH": "This membership application is no longer valid (because it references a block that network peers are cancelled): the person must renew its application for membership <b>before</b> being certified.", "IDENTITY_EXPIRED": "This identity has expired: this person must re-apply <b>before</b> being certified.", - "IDENTITY_SANDBOX_FULL": "Could not register, because peer's sandbox is full.<br/><br/>Please retry later or choose another Duniter peer (in <b>Settings</b>).", + "IDENTITY_SANDBOX_FULL": "Could not register, because Duniter peer's sandbox is full.<br/><br/>Please retry later or choose another peer (in the <b>settings</b>).", "IDENTITY_NOT_FOUND": "Identity not found", "IDENTITY_TX_FAILED": "Error while getting identity's transactions", "WOT_PENDING_INVALID_BLOCK_HASH": "Membership not valid.", @@ -813,7 +813,9 @@ "UNKNOWN_WALLET_ID": "Unknown secondary wallet.", "RESTORE_WALLET_LIST_FAILED": "Unable to restore the list of wallets.", "INVALID_FILE_FORMAT": "Invalid file format.", - "SAME_TX_RECIPIENT": "The recipient must be different from the issuer." + "SAME_TX_RECIPIENT": "The recipient must be different from the issuer.", + "SELF_CERTIFICATION": "You cannot certify your own identity.", + "TX_SANDBOX_FULL": "The Duniter peer used by Cesium can no longer process new transfers, as its queue is full.<br/><br/>Please try again later or change the peer (in the <b>Settings</b>)." }, "INFO": { "POPUP_TITLE": "Information", @@ -857,10 +859,10 @@ "SAVE_BEFORE_LEAVE": "Do you want to <b>save your changes</b> before leaving the page?", "SAVE_BEFORE_LEAVE_TITLE": "Changes not saved", "LOGOUT": "Are you sure you want to logout?", - "USE_FALLBACK_NODE": "Peer <b>{{old}}</b> unreachable or invalid address.<br/><br/>Do you want to temporarily use the <b>{{new}}</b> node?", - "USE_SYNC_FALLBACK_NODE": "Node <b>{{old}}</b> seems to be out of sync.<br/><br/>Do you want to temporarily use the synchronised node <b>{{new}}</b>?", + "USE_FALLBACK_NODE": "Peer <b>{{old}}</b> unreachable or invalid address.<br/><br/>Do you want to temporarily use the <b>{{new}}</b> peer?", + "USE_SYNC_FALLBACK_NODE": "Peer <b>{{old}}</b> seems to be out of sync.<br/><br/>Do you want to temporarily use the synchronized peer <b>{{new}}</b>?", "ISSUE_524_SEND_LOG": "The transaction was rejected because of a known problem (issue #524) but not reproduced.<br/><br/>To help developers correct this error, do you accept <b>the transmission of your logs</b> per message?<br/><small>(No confidential data is sent)</small>", - "ENABLE_EXPERT_MODE_TO_CHANGE_NODE": "<b class=\"assertive\">Warning:</b> Do you want to <b>manually change</b> the Duniter node?<br/><br/>If you proceed:<ul><li> - <b>Expert mode</b> will be activated;</li><li> - You can return to automatic node selection by simply <b>deactivating expert mode</b>.</li></ul>" + "ENABLE_EXPERT_MODE_TO_CHANGE_NODE": "<b class=\"assertive\">Warning:</b> Do you want to <b>manually change</b> the Duniter peer?<br/><br/>If you continue:<ul><li> - <b>Expert mode</b> will be activated;</li><li> - You can return to automatic peer selection by simply <b>deactivating expert mode</b>.</li></ul>" }, "MODE": { "DEMO": { diff --git a/www/i18n/locale-en.json b/www/i18n/locale-en.json index 3cb8316cb37be146d16af80324c3d88b46bec7ef..1643a2ee500ec4bba57ac6bc6f2d109dea4ee1ab 100644 --- a/www/i18n/locale-en.json +++ b/www/i18n/locale-en.json @@ -131,8 +131,8 @@ "REPORT_ISSUE": "Report an issue", "NOT_YOUR_ACCOUNT_QUESTION" : "You do not own the account <b><i class=\"ion-key\"></i> {{pubkey|formatPubkey}}</b>?", "BTN_CHANGE_ACCOUNT": "Disconnect this account", - "PEER_CONNECTION_ERROR": "Node <b>{{server}}</b> is unreachable or address is invalid.<br/><br/>Check your Internet connection, or change the node <a class=\"positive\" ng-click=\"doQuickFix('settings')\">in the settings</a>.", - "NETWORK_CONNECTION_ERROR": "Network is unreachable.<br/><br/>Check your Internet connection, or select a node manually <a class=\"positive\" ng-click=\"doQuickFix('settings')\">in the settings</a>.", + "PEER_CONNECTION_ERROR": "Peer <b>{{server}}</b> is unreachable or address is invalid.<br/><br/>Check your Internet connection, or change the peer <a class=\"positive\" ng-click=\"doQuickFix('settings')\">in the settings</a>.", + "NETWORK_CONNECTION_ERROR": "Network is unreachable.<br/><br/>Check your Internet connection, or select a peer manually <a class=\"positive\" ng-click=\"doQuickFix('settings')\">in the settings</a>.", "SHOW_ALL_FEED": "Show all", "READ_MORE": "Read more", "FEED_SOURCE": "Source" @@ -319,7 +319,7 @@ "INFO": { "CONNECTING_TO_NETWORK": "Connecting to the network...", "ANALYZING_NETWORK": "Analyzing the {{currency|abbreviate}} network...", - "ONLY_SSL_PEERS": "Non-SSL nodes have a degraded display because Cesium works in HTTPS mode." + "ONLY_SSL_PEERS": "Non-SSL peers have a degraded display because Cesium works in HTTPS mode." } }, "PEER": { @@ -530,7 +530,7 @@ "INTRO_WARNING_SECURITY": "Check that the hardware you are currently using (computer, tablet, phone) <b>is secure and trustworthy </b>.", "INTRO_WARNING_SECURITY_HELP": "Up-to-date anti-virus, firewall enabled, session protected by password or pin code...", "INTRO_HELP": "Click <b> {{'COMMON.BTN_START'|translate}}</b> to begin creating an account. You will be guided step by step.", - "REGISTRATION_NODE": "Your registration will be registered via the Duniter peer <b>{{server}}</b> node, which will then be distributed to the rest of the currency network.", + "REGISTRATION_NODE": "Your registration will be registered via the Duniter peer <b>{{server}}</b>, which will then be distributed to the rest of the currency network.", "REGISTRATION_NODE_HELP": "If you do not trust this peer, please change <a ng-click=\"doQuickFix('settings')\">in the settings</a> of Cesium.", "SELECT_ACCOUNT_TYPE": "Choose the type of account to create:", "MEMBER_ACCOUNT": "Member account", @@ -767,7 +767,7 @@ "IDENTITY_PENDING_REVOCATION": "The <b>revocation of this identity</b> has been requested and is awaiting processing. Certification is therefore disabled.", "IDENTITY_INVALID_BLOCK_HASH": "This membership application is no longer valid (because it references a block that network peers are cancelled): the person must renew its application for membership <b>before</b> being certified.", "IDENTITY_EXPIRED": "This identity has expired: this person must re-apply <b>before</b> being certified.", - "IDENTITY_SANDBOX_FULL": "Could not register, because peer's sandbox is full.<br/><br/>Please retry later or choose another Duniter peer (in <b>Settings</b>).", + "IDENTITY_SANDBOX_FULL": "Could not register, because Duniter peer's sandbox is full.<br/><br/>Please retry later or choose another peer (in the <b>settings</b>).", "IDENTITY_NOT_FOUND": "Identity not found", "IDENTITY_TX_FAILED": "Error while getting identity's transactions", "WOT_PENDING_INVALID_BLOCK_HASH": "Membership not valid.", @@ -813,7 +813,9 @@ "UNKNOWN_WALLET_ID": "Unknown secondary wallet.", "RESTORE_WALLET_LIST_FAILED": "Unable to restore the list of wallets.", "INVALID_FILE_FORMAT": "Invalid file format.", - "SAME_TX_RECIPIENT": "The recipient must be different from the issuer." + "SAME_TX_RECIPIENT": "The recipient must be different from the issuer.", + "SELF_CERTIFICATION": "You cannot certify your own identity.", + "TX_SANDBOX_FULL": "The Duniter peer used by Cesium can no longer process new transfers, as its queue is full.<br/><br/>Please try again later or change the peer (in the <b>Settings</b>)." }, "INFO": { "POPUP_TITLE": "Information", @@ -857,10 +859,10 @@ "SAVE_BEFORE_LEAVE": "Do you want to <b>save your changes</b> before leaving the page?", "SAVE_BEFORE_LEAVE_TITLE": "Changes not saved", "LOGOUT": "Are you sure you want to logout?", - "USE_FALLBACK_NODE": "Peer <b>{{old}}</b> unreachable or invalid address.<br/><br/>Do you want to temporarily use the <b>{{new}}</b> node?", - "USE_SYNC_FALLBACK_NODE": "Node <b>{{old}}</b> seems to be out of sync.<br/><br/>Do you want to temporarily use the synchronized node <b>{{new}}</b>?", + "USE_FALLBACK_NODE": "Peer <b>{{old}}</b> unreachable or invalid address.<br/><br/>Do you want to temporarily use the <b>{{new}}</b> peer?", + "USE_SYNC_FALLBACK_NODE": "Peer <b>{{old}}</b> seems to be out of sync.<br/><br/>Do you want to temporarily use the synchronized peer <b>{{new}}</b>?", "ISSUE_524_SEND_LOG": "The transaction was rejected because of a known problem (issue #524) but not reproduced.<br/><br/>To help developers correct this error, do you accept <b>the transmission of your logs</b> per message?<br/><small>(No confidential data is sent)</small>", - "ENABLE_EXPERT_MODE_TO_CHANGE_NODE": "<b class=\"assertive\">Warning:</b> Do you want to <b>manually change</b> the Duniter node?<br/><br/>If you continue:<ul><li> - <b>Expert mode</b> will be activated;</li><li> - You can return to automatic node selection by simply <b>deactivating expert mode</b>.</li></ul>" + "ENABLE_EXPERT_MODE_TO_CHANGE_NODE": "<b class=\"assertive\">Warning:</b> Do you want to <b>manually change</b> the Duniter peer?<br/><br/>If you continue:<ul><li> - <b>Expert mode</b> will be activated;</li><li> - You can return to automatic peer selection by simply <b>deactivating expert mode</b>.</li></ul>" }, "MODE": { "DEMO": { diff --git a/www/i18n/locale-eo-EO.json b/www/i18n/locale-eo-EO.json index a34f632e39a1392912d20e65f7c17da40f910174..3c5ac68ead9eeaf54d791984eb9cee24372e8fb6 100644 --- a/www/i18n/locale-eo-EO.json +++ b/www/i18n/locale-eo-EO.json @@ -766,7 +766,7 @@ "IDENTITY_PENDING_REVOCATION": "La <b>nuligo de tiu ĉi identeco</b> estis petita kaj atendas traktadon. La atestado estas do malaktivigita.", "IDENTITY_INVALID_BLOCK_HASH": "Tiu ĉi aliÄo-peto ne plu validas (ĉar Äi rilatas al bloko, kiun nuligis la nodoj de la reto): tiu persono devas refari sian aliÄo-peton <b>antaÅ ol</b> esti atestita.", "IDENTITY_EXPIRED": "La publikigo de tiu ĉi identeco finiÄis: tiu persono devas fari novan aliÄo-peton <b>antaÅ ol</b> esti atestita.", - "IDENTITY_SANDBOX_FULL": "La nodo Duniter uzata de Cesium ne plu povas ricevi novajn identecojn, ĉar Äia atendo-vico estas plena.<br/><br/>Bonvolu reprovi poste aÅ ÅanÄi la nodon (per la menuo <b>Parametroj</b>).", + "IDENTITY_SANDBOX_FULL": "La nodo Duniter uzata de Cesium ne plu povas ricevi novajn identecojn, ĉar Äia atendovico estas plena.<br/><br/>Bonvolu reprovi poste aÅ ÅanÄi la nodon (per la menuo <b>Parametroj</b>).", "IDENTITY_NOT_FOUND": "Identeco ne trovita.", "IDENTITY_TX_FAILED": "Malsukceso por ÅarÄi la spezojn.", "WOT_PENDING_INVALID_BLOCK_HASH": "AliÄo ne valida.", @@ -812,7 +812,9 @@ "UNKNOWN_WALLET_ID": "Kroma monujo nekonata.", "RESTORE_WALLET_LIST_FAILED": "Malsukceso por restarigi la kromajn monujojn.", "INVALID_FILE_FORMAT": "Strukturo de dosiero nevalida.", - "SAME_TX_RECIPIENT": "La adresito devas malsami ol la sendanto." + "SAME_TX_RECIPIENT": "La adresito devas malsami ol la sendanto.", + "SELF_CERTIFICATION": "Vi ne povas certigi vian propran identecon.", + "TX_SANDBOX_FULL": "La nodo Duniter uzata de Cesium ne plu povas prilabori novajn elspezojn, ĉar Äia atendovico estas plena.<br/><br/>Bonvolu provi denove poste aÅ ÅanÄi la nodon (en la <b>Agordoj</b>)." }, "INFO": { "POPUP_TITLE": "Informo", diff --git a/www/i18n/locale-es-ES.json b/www/i18n/locale-es-ES.json index 42b1c9deabe68240bfa90c990240c1468ffd0e38..bae2c5031bd3cad7674e6365036cc99b9ec3b2b7 100644 --- a/www/i18n/locale-es-ES.json +++ b/www/i18n/locale-es-ES.json @@ -897,7 +897,9 @@ "GET_LICENSE_FILE_FAILED": "Error al obtener el archivo de licencia", "CHECK_NETWORK_CONNECTION": "No se puede conectar a ningún nodo.<br/><br/><b>Compruebe la conexión a Internet</b>.", "INVALID_FILE_FORMAT": "Formato de archivo inválido.", - "SAME_TX_RECIPIENT": "El destinatario debe ser diferente del emisor." + "SAME_TX_RECIPIENT": "El destinatario debe ser diferente del emisor.", + "SELF_CERTIFICATION": "No puedes certificar tu propia identidad.", + "TX_SANDBOX_FULL": "El nodo Duniter utilizado por Cesium ya no puede procesar nuevas transferencias, ya que su cola está llena.<br/><br/>Por favor, inténtelo de nuevo más tarde o cambie de nodo (en las <b>Configuraciones</b>)." }, "INFO": { "POPUP_TITLE": "Información", diff --git a/www/i18n/locale-fr-FR.json b/www/i18n/locale-fr-FR.json index f5ec93b01c9205f7889626793532e86f8b6beaa2..175d1388ec05e06d9e9e834cb07aaf27999f16cc 100644 --- a/www/i18n/locale-fr-FR.json +++ b/www/i18n/locale-fr-FR.json @@ -767,7 +767,7 @@ "IDENTITY_PENDING_REVOCATION": "La <b>révocation de cette identité</b> a été demandée et est en attente de traitement. La certification est donc désactivée.", "IDENTITY_INVALID_BLOCK_HASH": "Cette demande d'adhésion n'est plus valide (car elle référence un bloc que les nÅ“uds du réseau ont annulé) : cette personne doit renouveler sa demande d'adhésion <b>avant</b> d'être certifiée.", "IDENTITY_EXPIRED": "La publication de cette identité a expiré : cette personne doit effectuer une nouvelle demande d'adhésion <b>avant</b> d'être certifiée.", - "IDENTITY_SANDBOX_FULL": "Le nÅ“ud Duniter utilisé par Cesium ne peut plus recevoir de nouvelles identités, car sa file d'attente est pleine.<br/><br/>Veuillez réessayer ultérieurement ou changer de nÅ“ud (via le menu <b>Paramètres</b>).", + "IDENTITY_SANDBOX_FULL": "Le nÅ“ud Duniter utilisé par Cesium ne peut plus recevoir de nouvelles identités, car sa file d'attente est pleine.<br/><br/>Veuillez réessayer ultérieurement ou changer de nÅ“ud (dans les <b>Paramètres</b>).", "IDENTITY_NOT_FOUND": "Identité non trouvée.", "IDENTITY_TX_FAILED": "Échec du chargement des opérations.", "WOT_PENDING_INVALID_BLOCK_HASH": "Adhésion non valide.", @@ -814,7 +814,8 @@ "RESTORE_WALLET_LIST_FAILED": "Échec de la restauration des portefeuilles secondaires.", "INVALID_FILE_FORMAT": "Format de fichier invalide.", "SAME_TX_RECIPIENT": "Le destinataire doit être différent de l'émetteur.", - "SELF_CERTIFICATION": "Vous ne pouvez pas certifier votre propre identité." + "SELF_CERTIFICATION": "Vous ne pouvez pas certifier votre propre identité.", + "TX_SANDBOX_FULL": "Le nÅ“ud Duniter utilisé par Cesium ne peut plus traité de nouveaux virements, car sa file d'attente est pleine.<br/><br/>Veuillez réessayer ultérieurement ou changer de nÅ“ud (dans les <b>Paramètres</b>)." }, "INFO": { "POPUP_TITLE": "Information", diff --git a/www/i18n/locale-it-IT.json b/www/i18n/locale-it-IT.json index a878177309da12b65140f9fefc5888d9b69cfe2c..5f3d86ba1ec8b14e0cf564ebb8a9a6745e3c3f24 100644 --- a/www/i18n/locale-it-IT.json +++ b/www/i18n/locale-it-IT.json @@ -767,7 +767,7 @@ "IDENTITY_PENDING_REVOCATION": "L'<b>annulamento di questa identità </b> è stata richiesta ed è in corso di valutazione. Capacità ad inviare certificazioni disabilitata", "IDENTITY_INVALID_BLOCK_HASH": "Questa richiesta di certificazione non è più valida (perche si riferisce ad un blocco che è stato eliminato dai nodi): la persona deve rinnovare la sua domanda di certificazione <b>prima</b> di essere certificata.", "IDENTITY_EXPIRED": "Questa identità è scaduta: la persona deve fare una nuova domanda di certificazione <b>prima di</b> essere certificata.", - "IDENTITY_SANDBOX_FULL": "Il nodo Duniter utilizzato dal Cesium non può ricevere altre domande di certificazione per ora, la lista d'attesa è piena.<br/><br/>Riprova più tardi o scegli un'altro nodo Duniter (nelle <b>Impostazioni</b>).", + "IDENTITY_SANDBOX_FULL": "Il nodo Duniter utilizzato dal Cesium non può ricevere altre domande di certificazione per ora, perché la lista d'attesa è piena.<br/><br/>Riprova più tardi o scegli un'altro nodo Duniter (nelle <b>Impostazioni</b>).", "IDENTITY_NOT_FOUND": "Identità non trovata", "IDENTITY_TX_FAILED": "Impossibile caricare le operazioni", "WOT_PENDING_INVALID_BLOCK_HASH": "Adesione non valida.", @@ -813,8 +813,10 @@ "UNKNOWN_WALLET_ID": "Portafoglio secondario sconosciuto.", "RESTORE_WALLET_LIST_FAILED": "Impossibile recuperare la lista dei portafogli.", "INVALID_FILE_FORMAT": "Formato file invalido.", - "SAME_TX_RECIPIENT": "Il destinatario deve essere diverso dall'emittente." - }, + "SAME_TX_RECIPIENT": "Il destinatario deve essere diverso dall'emittente.", + "SELF_CERTIFICATION": "Non puoi certificare la tua stessa identità .", + "TX_SANDBOX_FULL": "Il nodo Duniter utilizzato dal Cesium non può più elaborare nuovi trasferimenti, perché la lista d'attesa è piena.<br/><br/>Riprova più tardi o scegli un'altro nodo Duniter (nelle <b>Impostazioni</b>)." + }, "INFO": { "POPUP_TITLE": "Informazioni", "CERTIFICATION_DONE": "Identità firmata con successo", diff --git a/www/i18n/locale-nl-NL.json b/www/i18n/locale-nl-NL.json index 8787f3fede5901126890a2a332af92295b9dbc42..861384cba0dd80c3fc184583c8587c5b277b3882 100644 --- a/www/i18n/locale-nl-NL.json +++ b/www/i18n/locale-nl-NL.json @@ -609,7 +609,9 @@ "ONLY_MEMBER_CAN_EXECUTE_THIS_ACTION": "You must <b>be a member</b> in order to perform this action.", "ONLY_SELF_CAN_EXECUTE_THIS_ACTION": "You must have <b>published your identity</b> in order to perform this action.", "EXISTING_ACCOUNT": "Je gegevens komen overeen met een bestaande rekening, met de <a ng-click=\"showHelpModal('pubkey')\">publieke sleutel</a>:", - "EXISTING_ACCOUNT_REQUEST": "Gelieve je gegevens te wijzigen zodat ze met een niet gebruikte rekening overeenkomen." + "EXISTING_ACCOUNT_REQUEST": "Gelieve je gegevens te wijzigen zodat ze met een niet gebruikte rekening overeenkomen.", + "SELF_CERTIFICATION": "U kunt uw eigen identiteit niet certificeren.", + "TX_SANDBOX_FULL": "De Duniter-peer die door Cesium wordt gebruikt, kan geen nieuwe overschrijvingen meer verwerken, omdat de wachtrij vol is.<br/><br/>Probeer het later opnieuw of wijzig de peer (in de <b>Instellingen</b>)." }, "INFO": { "POPUP_TITLE": "Informatie", diff --git a/www/i18n/locale-pt-PT.json b/www/i18n/locale-pt-PT.json index 6110a0b71217b70eb4e24e60418a704e881468e7..f3e3ddcacfa5a51115f26150c82cc572746854cc 100644 --- a/www/i18n/locale-pt-PT.json +++ b/www/i18n/locale-pt-PT.json @@ -862,7 +862,7 @@ "IDENTITY_PENDING_REVOCATION": "A <b>revogação desta identidade</b> foi solicitada e encontra-se em espera de tratamento. Pelo que, a certificação está desativada.", "IDENTITY_INVALID_BLOCK_HASH": "Este pedido de adesão não é valido (porque o bloco foi anulado pelos nós da rede): este individuo/a deve renovar o seu pedido de adesão <b>antes de</b> estar certificado/a.", "IDENTITY_EXPIRED": "A publicação desta identidade está caducada: este individuo/a deve realizar um novo pedido de adesão <b>antes de</b> estar certificado/a.", - "IDENTITY_SANDBOX_FULL": "O nó Duniter utilizado por Cesium já não pode receber mais novas identidades, porque a fila de espera está cheia.<br/><br/>Por favor, tente mais tarde ou mude de nó (no menu <b>Definições</b>).", + "IDENTITY_SANDBOX_FULL": "O nó Duniter utilizado por Cesium já não pode receber mais novas identidades, porque a fila de espera está cheia.<br/><br/>Por favor, tente mais tarde ou mude de nó (nas <b>Definições</b>).", "IDENTITY_NOT_FOUND": "Identidade não encontrada", "IDENTITY_TX_FAILED": "Falha ao carregar as transações da identidade", "WOT_PENDING_INVALID_BLOCK_HASH": "Adesão não validada.", @@ -897,7 +897,9 @@ "GET_LICENSE_FILE_FAILED": "Falha ao obter o arquivo de licença", "CHECK_NETWORK_CONNECTION": "Não foi possÃvel conectar a nenhum nó.<br/><br/><b>Comprove a ligação à Internet</b>.", "INVALID_FILE_FORMAT": "Formato de arquivo inválido.", - "SAME_TX_RECIPIENT": "O destinatário deve ser diferente do emissor." + "SAME_TX_RECIPIENT": "O destinatário deve ser diferente do emissor.", + "SELF_CERTIFICATION": "Não pode certificar a sua própria identidade.", + "TX_SANDBOX_FULL": "O nó Duniter utilizado por Cesium já não pode receber mais novas transferências, porque a fila de espera está cheia.<br/><br/>Por favor, tente mais tarde ou mude de nó (nas <b>Definições</b>)." }, "INFO": { "POPUP_TITLE": "Informação", diff --git a/www/js/platform.js b/www/js/platform.js index 5a8867755845042057a326e2abb5177d8ae5b388..3cb7b552d86a48214fd68f73c2073ac42456ee77 100644 --- a/www/js/platform.js +++ b/www/js/platform.js @@ -233,8 +233,8 @@ angular.module('cesium.platform', ['ngIdle', 'cesium.config', 'cesium.services'] console.info("[platform] Default peer [{0}] is well synchronized.".format(BMA.server)); // Store sync peers in storage - //console.debug("[platform] Saving {0} other synchronized BMA peers in settings".format(otherPeers.length)); - //csSettings.data.network.peers = otherPeers; + console.debug("[platform] Saving {0} other synchronized BMA peers in settings".format(otherPeers.length)); + csSettings.data.network.peers = otherPeers; return true; } diff --git a/www/js/services/bma-services.js b/www/js/services/bma-services.js index 8c3ff241cd485074d84d4d18d94189c84484f8aa..6611a64f74825f652f8a7d8ff23ded4e9ffd1048 100644 --- a/www/js/services/bma-services.js +++ b/www/js/services/bma-services.js @@ -53,6 +53,9 @@ angular.module('cesium.bma.services', ['ngApi', 'cesium.http.services', 'cesium. REVOCATION_ALREADY_REGISTERED: 1002, HTTP_LIMITATION: 1006, IDENTITY_SANDBOX_FULL: 1007, + CERTIFICATION_SANDBOX_FULL: 1008, + MEMBERSHIP_SANDBOX_FULL: 1009, + TRANSACTIONS_SANDBOX_FULL: 1010, NO_MATCHING_IDENTITY: 2001, UID_ALREADY_USED: 2003, NO_MATCHING_MEMBER: 2004, @@ -465,6 +468,7 @@ angular.module('cesium.bma.services', ['ngApi', 'cesium.http.services', 'cesium. }, node: { summary: get('/node/summary', csCache.constants.MEDIUM), + sandbox: get('/node/sandbox'), same: isSameNode, forceUseSsl: that.forceUseSsl }, @@ -520,7 +524,7 @@ angular.module('cesium.bma.services', ['ngApi', 'cesium.http.services', 'cesium. all: function(params) { return exports.raw.tx.history.all(params) .then(function(res) { - res.history = res.history || {}; + res.history = res.history || {}; // Clean sending and pendings, because already returned by tx/history/:pubkey/pending res.history.sending = []; res.history.pendings = []; @@ -531,7 +535,7 @@ angular.module('cesium.bma.services', ['ngApi', 'cesium.http.services', 'cesium. // No cache by default return ((cache !== true) ? exports.raw.tx.history.times(params) : exports.raw.tx.history.timesWithCache(params)) .then(function(res) { - res.history = res.history || {}; + res.history = res.history || {}; // Clean sending and pendings, because already returned by tx/history/:pubkey/pending res.history.sending = []; res.history.pendings = []; @@ -1121,7 +1125,8 @@ angular.module('cesium.bma.services', ['ngApi', 'cesium.http.services', 'cesium. server: csHttp.getServer(host, port), url: csHttp.getUrl(host, port, path, useSsl), node: { - summary: csHttp.getWithCache(host, port, path + '/node/summary', useSsl, csCache.constants.MEDIUM, false/*autoRefresh*/, timeout) + summary: csHttp.getWithCache(host, port, path + '/node/summary', useSsl, csCache.constants.MEDIUM, false/*autoRefresh*/, timeout), + sandbox: csHttp.get(host, port, path + '/node/sandbox', useSsl, timeout), }, network: { peering: { @@ -1134,6 +1139,9 @@ angular.module('cesium.bma.services', ['ngApi', 'cesium.http.services', 'cesium. stats: { hardship: csHttp.get(host, port, path + '/blockchain/hardship/:pubkey', useSsl, timeout) } + }, + tx: { + process: csHttp.post(host, port, path + '/tx/process', useSsl, timeout) } }; }; diff --git a/www/js/services/network-services.js b/www/js/services/network-services.js index 06c75f773492f402d9c89e4733abfcf41ae4a3bc..7173305a2ac91e36b9955c90caaf40b8881ec77b 100644 --- a/www/js/services/network-services.js +++ b/www/js/services/network-services.js @@ -235,9 +235,11 @@ angular.module('cesium.network.services', ['ngApi', 'cesium.currency.services', _.forEach(res.peers, function(json) { // Exclude, if not UP or on a too old block if (json.status !== 'UP') return; + + // Exclude if too old peering document json.blockNumber = buidBlockNumber(json.block); if (json.blockNumber && json.blockNumber < data.minOnlineBlockNumber) { - console.debug("[network] Exclude a too old peer document, on pubkey {0}".format(json.pubkey.substring(0,6))); + console.debug("[network] Exclude a too old peering document, on pubkey {0}".format(json.pubkey.substring(0,6))); return; } @@ -972,6 +974,12 @@ angular.module('cesium.network.services', ['ngApi', 'cesium.currency.services', return false; } + // Exclude g1.duniter.org, because of fail-over config, that can switch node + if (peer.host === 'g1.duniter.org') { + console.debug('[network] BMA endpoint [{0}] is EXCLUDED (fail-over config)'.format(peer.getServer())); + return false; + } + // Keep only if store transactions if (!peer.storage && !peer.storage.transactions) { console.debug('[network] BMA endpoint [{0}] is EXCLUDED (no transactions storage)'.format(peer.getServer())); diff --git a/www/js/services/wallet-services.js b/www/js/services/wallet-services.js index 46843ef0dc0b8e5848e7e355c2784a63b2ebf1d1..646153032e16d409c46998b931f3aa5caebdc26e 100644 --- a/www/js/services/wallet-services.js +++ b/www/js/services/wallet-services.js @@ -1514,7 +1514,7 @@ angular.module('cesium.wallet.services', ['ngApi', 'ngFileSaver', 'cesium.bma.se // Append to logs (need to resolve issue #524) if (logs) { - if (destPub == data.pubkey) { + if (destPub === data.pubkey) { logs.push('[wallet] Creating new TX, using inputs:\n - minBase: '+inputs.minBase+'\n - maxBase: '+inputs.maxBase); } else { @@ -1529,14 +1529,7 @@ angular.module('cesium.wallet.services', ['ngApi', 'ngFileSaver', 'cesium.bma.se return CryptoUtils.sign(tx, keypair) .then(function(signature) { var signedTx = tx + signature + "\n"; - return BMA.tx.process({transaction: signedTx}) - .catch(function(err) { - if (err && err.ucode === BMA.errorCodes.TX_ALREADY_PROCESSED) { - // continue - return; - } - throw err; - }) + return processTx(signedTx) .then(function() { return CryptoUtils.util.hash(signedTx); }) @@ -1556,6 +1549,70 @@ angular.module('cesium.wallet.services', ['ngApi', 'ngFileSaver', 'cesium.bma.se }); }, + processTx = function(signedTx) { + // Send to default BMA node + return BMA.tx.process({transaction: signedTx}) + .catch(function(err) { + if (err.ucode === BMA.errorCodes.TX_ALREADY_PROCESSED) { + return; // continue + } + + // TX sandbox is full: retry using random peers + if (err.ucode === BMA.errorCodes.TRANSACTIONS_SANDBOX_FULL) { + console.warn('[wallet] Node sandbox is full! Will send TX to some random peers...'); + return processTxRandomPeer(signedTx) + .then(function(success) { + if (success) return; // OK, continue + + // If all random peers failed: rethrow the original error + throw {ucode: BMA.errorCodes.TRANSACTIONS_SANDBOX_FULL, message: 'ERROR.TX_SANDBOX_FULL'}; + }); + } + + // Other error + throw err; + }) + ; + }, + + processTxRandomPeer = function(signedTx, n, timeout) { + n = n || 3; + timeout = timeout || csConfig.timeout; + + // Select some peers + var randomPeers = _.sample(csSettings.data.network && csSettings.data.network.peers || [], n); + if (!randomPeers.length) { + return $q.resolve(false); // Skip, if no peers + } + + console.warn('[wallet] Sending TX to {0} random peers...'.format(randomPeers.length)); + + return $q.all( + _.map(randomPeers, function(peer) { + var bma = BMA.lightInstance(peer.host, peer.port, peer.path, peer.useSsl, timeout); + return bma.tx.process({transaction: signedTx}) + .then(function() { + return true + }) + .catch(function(err) { + if (err.ucode === BMA.errorCodes.TX_ALREADY_PROCESSED) { + return true + } + return false; + }); + })) + .then(function(res) { + var succeedPeers = _.filter(randomPeers, function(peer, index) { + return res[index]; + }); + if (succeedPeers.length) { + console.info('[wallet] TX successfully sent to {0} random peers'.format(succeedPeers.length), succeedPeers); + return true; // succeed + } + return false; // succeed + }); + }, + getIdentityDocument = function(currency, keypair, uid, blockUid) { uid = uid || data.uid; blockUid = blockUid || data.blockUid;