From 950272dc189ca88734a84a3f6efc603a809f574f Mon Sep 17 00:00:00 2001 From: Laouen Fernet Date: Wed, 9 Jan 2019 00:37:45 +0100 Subject: [PATCH 01/10] add translations for api/ --- api/acl.py | 5 ++-- api/authentication.py | 2 +- api/locale/fr/LC_MESSAGES/django.po | 40 +++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 api/locale/fr/LC_MESSAGES/django.po diff --git a/api/acl.py b/api/acl.py index 9107a25d..0c336281 100644 --- a/api/acl.py +++ b/api/acl.py @@ -28,7 +28,7 @@ done. from django.conf import settings from django.contrib.auth.models import Permission from django.contrib.contenttypes.models import ContentType -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import ugettext as _ def _create_api_permission(): @@ -71,4 +71,5 @@ def can_view(user): 'codename': settings.API_PERMISSION_CODENAME } can = user.has_perm('%(app_label)s.%(codename)s' % kwargs) - return can, None if can else _("You cannot see this application.") + return can, None if can else _("You don't have the right to see this" + " application.") diff --git a/api/authentication.py b/api/authentication.py index cbc72b76..d426db24 100644 --- a/api/authentication.py +++ b/api/authentication.py @@ -46,6 +46,6 @@ class ExpiringTokenAuthentication(TokenAuthentication): ) utc_now = datetime.datetime.now(datetime.timezone.utc) if token.created < utc_now - token_duration: - raise exceptions.AuthenticationFailed(_('Token has expired')) + raise exceptions.AuthenticationFailed(_("The token has expired.")) return token.user, token diff --git a/api/locale/fr/LC_MESSAGES/django.po b/api/locale/fr/LC_MESSAGES/django.po new file mode 100644 index 00000000..f2d6755e --- /dev/null +++ b/api/locale/fr/LC_MESSAGES/django.po @@ -0,0 +1,40 @@ +# Re2o est un logiciel d'administration développé initiallement au rezometz. Il +# se veut agnostique au réseau considéré, de manière à être installable en +# quelques clics. +# +# Copyright © 2018 Maël Kervella +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +msgid "" +msgstr "" +"Project-Id-Version: 2.5\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-01-08 23:06+0100\n" +"PO-Revision-Date: 2019-01-07 01:37+0100\n" +"Last-Translator: Laouen Fernet \n" +"Language-Team: \n" +"Language: fr_FR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: acl.py:74 +msgid "You don't have the right to see this application." +msgstr "Vous n'avez pas le droit de voir cette application." + +#: authentication.py:49 +msgid "The token has expired." +msgstr "Le jeton a expiré." From 2012f20352216c73939c92aee3c06ec25b0a54e7 Mon Sep 17 00:00:00 2001 From: Laouen Fernet Date: Wed, 9 Jan 2019 00:38:53 +0100 Subject: [PATCH 02/10] add translations for cotisations/ --- cotisations/forms.py | 6 +- cotisations/locale/fr/LC_MESSAGES/django.po | 437 +++++++++++------- cotisations/models.py | 2 +- .../payment_methods/note_kfet/views.py | 4 +- .../templates/cotisations/aff_article.html | 4 +- .../cotisations/aff_cost_estimate.html | 6 +- .../cotisations/aff_cotisations.html | 4 +- .../cotisations/aff_custom_invoice.html | 8 +- .../templates/cotisations/aff_paiement.html | 4 +- .../templates/cotisations/control.html | 6 +- cotisations/templates/cotisations/delete.html | 2 +- .../templates/cotisations/edit_facture.html | 4 +- .../templates/cotisations/facture.html | 2 +- cotisations/templates/cotisations/index.html | 2 +- .../templates/cotisations/index_article.html | 4 +- .../templates/cotisations/index_banque.html | 4 +- .../cotisations/index_cost_estimate.html | 6 +- .../cotisations/index_custom_invoice.html | 6 +- .../templates/cotisations/index_paiement.html | 2 +- .../templates/cotisations/payment.html | 2 +- .../templates/cotisations/sidebar.html | 20 +- cotisations/views.py | 8 +- 22 files changed, 323 insertions(+), 220 deletions(-) diff --git a/cotisations/forms.py b/cotisations/forms.py index 57bd7355..2eae5287 100644 --- a/cotisations/forms.py +++ b/cotisations/forms.py @@ -116,7 +116,7 @@ class DiscountForm(Form): Form used in oder to create a discount on an invoice. """ is_relative = forms.BooleanField( - label=_("Discount is on percentage"), + label=_("Discount is on percentage."), required=False, ) discount = forms.DecimalField( @@ -310,8 +310,8 @@ class RechargeForm(FormRevMixin, Form): if balance_method.maximum_balance is not None and \ value + self.user.solde > balance_method.maximum_balance: raise forms.ValidationError( - _("Requested amount is too high. Your balance can't exceed \ - %(max_online_balance)s €.") % { + _("Requested amount is too high. Your balance can't exceed" + " %(max_online_balance)s €.") % { 'max_online_balance': balance_method.maximum_balance } ) diff --git a/cotisations/locale/fr/LC_MESSAGES/django.po b/cotisations/locale/fr/LC_MESSAGES/django.po index 15f6a057..2c29dc8d 100644 --- a/cotisations/locale/fr/LC_MESSAGES/django.po +++ b/cotisations/locale/fr/LC_MESSAGES/django.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: 2.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-08-18 13:17+0200\n" +"POT-Creation-Date: 2019-01-12 16:50+0100\n" "PO-Revision-Date: 2018-03-31 16:09+0002\n" "Last-Translator: Laouen Fernet \n" "Language: fr_FR\n" @@ -33,79 +33,98 @@ msgstr "" msgid "You don't have the right to view this application." msgstr "Vous n'avez pas le droit de voir cette application." -#: forms.py:63 forms.py:274 +#: forms.py:66 forms.py:299 msgid "Select a payment method" msgstr "Sélectionnez un moyen de paiement" -#: forms.py:66 models.py:510 +#: forms.py:69 models.py:579 msgid "Member" msgstr "Adhérent" -#: forms.py:68 +#: forms.py:71 msgid "Select the proprietary member" msgstr "Sélectionnez l'adhérent propriétaire" -#: forms.py:69 +#: forms.py:72 msgid "Validated invoice" msgstr "Facture validée" -#: forms.py:82 +#: forms.py:85 msgid "A payment method must be specified." msgstr "Un moyen de paiement doit être renseigné." -#: forms.py:96 forms.py:120 templates/cotisations/aff_article.html:33 -#: templates/cotisations/facture.html:61 +#: forms.py:97 templates/cotisations/aff_article.html:33 +#: templates/cotisations/facture.html:67 msgid "Article" msgstr "Article" -#: forms.py:100 forms.py:124 templates/cotisations/edit_facture.html:46 +#: forms.py:101 templates/cotisations/edit_facture.html:50 msgid "Quantity" msgstr "Quantité" -#: forms.py:154 +#: forms.py:119 +msgid "Discount is on percentage." +msgstr "La réduction est en pourcentage." + +#: forms.py:123 templates/cotisations/facture.html:78 +msgid "Discount" +msgstr "Réduction" + +#: forms.py:140 +#, python-format +msgid "{}% discount" +msgstr "{}% de réduction" + +#: forms.py:140 +msgid "{}€ discount" +msgstr "{}€ de réduction" + +#: forms.py:179 msgid "Article name" msgstr "Nom de l'article" -#: forms.py:164 templates/cotisations/sidebar.html:50 +#: forms.py:189 templates/cotisations/sidebar.html:55 msgid "Available articles" msgstr "Articles disponibles" -#: forms.py:192 +#: forms.py:217 msgid "Payment method name" msgstr "Nom du moyen de paiement" -#: forms.py:204 +#: forms.py:229 msgid "Available payment methods" msgstr "Moyens de paiement disponibles" -#: forms.py:230 +#: forms.py:255 msgid "Bank name" msgstr "Nom de la banque" -#: forms.py:242 +#: forms.py:267 msgid "Available banks" msgstr "Banques disponibles" -#: forms.py:261 +#: forms.py:286 msgid "Amount" msgstr "Montant" -#: forms.py:267 templates/cotisations/aff_cotisations.html:44 +#: forms.py:292 templates/cotisations/aff_cost_estimate.html:42 +#: templates/cotisations/aff_cotisations.html:44 #: templates/cotisations/aff_custom_invoice.html:42 #: templates/cotisations/control.html:66 msgid "Payment method" msgstr "Moyen de paiement" -#: forms.py:287 +#: forms.py:313 #, python-format msgid "" -"Requested amount is too high. Your balance can't exceed " +"Requested amount is too high. Your balance can't exceed " "%(max_online_balance)s €." msgstr "" -"Le montant demandé trop grand. Votre solde ne peut excéder " +"Le montant demandé est trop grand. Votre solde ne peut excéder " "%(max_online_balance)s €." -#: models.py:60 templates/cotisations/aff_cotisations.html:48 +#: models.py:60 templates/cotisations/aff_cost_estimate.html:46 +#: templates/cotisations/aff_cotisations.html:48 #: templates/cotisations/aff_custom_invoice.html:46 #: templates/cotisations/control.html:70 msgid "Date" @@ -133,9 +152,9 @@ msgstr "Peut voir un objet facture" #: models.py:158 msgid "Can edit all the previous invoices" -msgstr "Peut modifier toutes les factures existantes" +msgstr "Peut modifier toutes les factures précédentes" -#: models.py:160 models.py:305 +#: models.py:160 models.py:373 msgid "invoice" msgstr "facture" @@ -156,128 +175,149 @@ msgid "" "You don't have the right to edit an invoice already controlled or " "invalidated." msgstr "" -"Vous n'avez pas le droit de modifier une facture précedemment contrôlée ou " +"Vous n'avez pas le droit de modifier une facture précédemment contrôlée ou " "invalidée." #: models.py:184 msgid "You don't have the right to delete an invoice." msgstr "Vous n'avez pas le droit de supprimer une facture." -#: models.py:186 +#: models.py:187 msgid "You don't have the right to delete this user's invoices." msgstr "Vous n'avez pas le droit de supprimer les factures de cet utilisateur." -#: models.py:189 +#: models.py:191 msgid "" "You don't have the right to delete an invoice already controlled or " "invalidated." msgstr "" -"Vous n'avez pas le droit de supprimer une facture précedement contrôlée ou " +"Vous n'avez pas le droit de supprimer une facture précédemment contrôlée ou " "invalidée." -#: models.py:197 +#: models.py:199 msgid "You don't have the right to view someone else's invoices history." msgstr "" "Vous n'avez pas le droit de voir l'historique des factures d'un autre " "utilisateur." -#: models.py:200 +#: models.py:202 msgid "The invoice has been invalidated." msgstr "La facture a été invalidée." -#: models.py:210 +#: models.py:214 msgid "You don't have the right to edit the \"controlled\" state." msgstr "Vous n'avez pas le droit de modifier le statut \"contrôlé\"." -#: models.py:224 +#: models.py:228 msgid "There are no payment method which you can use." msgstr "Il n'y a pas de moyen de paiement que vous puissiez utiliser." -#: models.py:226 +#: models.py:230 msgid "There are no article that you can buy." msgstr "Il n'y a pas d'article que vous puissiez acheter." -#: models.py:261 +#: models.py:272 msgid "Can view a custom invoice object" msgstr "Peut voir un objet facture personnalisée" -#: models.py:265 templates/cotisations/aff_custom_invoice.html:36 +#: models.py:276 templates/cotisations/aff_cost_estimate.html:36 +#: templates/cotisations/aff_custom_invoice.html:36 msgid "Recipient" msgstr "Destinataire" -#: models.py:269 templates/cotisations/aff_paiement.html:33 +#: models.py:280 templates/cotisations/aff_paiement.html:33 msgid "Payment type" msgstr "Type de paiement" -#: models.py:273 +#: models.py:284 msgid "Address" msgstr "Adresse" -#: models.py:276 templates/cotisations/aff_custom_invoice.html:54 +#: models.py:287 templates/cotisations/aff_custom_invoice.html:54 msgid "Paid" msgstr "Payé" -#: models.py:296 models.py:516 models.py:764 +#: models.py:291 +msgid "Remark" +msgstr "Remarque" + +#: models.py:300 +msgid "Can view a cost estimate object" +msgstr "Peut voir un objet devis" + +#: models.py:303 +msgid "Period of validity" +msgstr "Période de validité" + +#: models.py:340 +msgid "You don't have the right to delete a cost estimate." +msgstr "Vous n'avez pas le droit de supprimer un devis." + +#: models.py:343 +msgid "The cost estimate has an invoice and can't be deleted." +msgstr "Le devis a une facture et ne peut pas être supprimé." + +#: models.py:364 models.py:585 models.py:852 msgid "Connection" msgstr "Connexion" -#: models.py:297 models.py:517 models.py:765 +#: models.py:365 models.py:586 models.py:853 msgid "Membership" msgstr "Adhésion" -#: models.py:298 models.py:512 models.py:518 models.py:766 +#: models.py:366 models.py:581 models.py:587 models.py:854 msgid "Both of them" msgstr "Les deux" -#: models.py:310 +#: models.py:378 msgid "amount" msgstr "montant" -#: models.py:315 +#: models.py:383 msgid "article" msgstr "article" -#: models.py:322 +#: models.py:390 msgid "price" msgstr "prix" -#: models.py:327 models.py:535 +#: models.py:395 models.py:604 msgid "duration (in months)" msgstr "durée (en mois)" -#: models.py:335 models.py:549 models.py:780 +#: models.py:403 models.py:618 models.py:868 msgid "subscription type" msgstr "type de cotisation" -#: models.py:340 +#: models.py:408 msgid "Can view a purchase object" msgstr "Peut voir un objet achat" -#: models.py:341 +#: models.py:409 msgid "Can edit all the previous purchases" msgstr "Peut modifier tous les achats précédents" -#: models.py:343 models.py:774 +#: models.py:411 models.py:862 msgid "purchase" msgstr "achat" -#: models.py:344 +#: models.py:412 msgid "purchases" msgstr "achats" -#: models.py:411 models.py:573 +#: models.py:479 models.py:642 msgid "Duration must be specified for a subscription." msgstr "La durée de la cotisation doit être indiquée." -#: models.py:418 +#: models.py:486 msgid "You don't have the right to edit the purchases." msgstr "Vous n'avez pas le droit de modifier les achats." -#: models.py:423 +#: models.py:491 msgid "You don't have the right to edit this user's purchases." msgstr "Vous n'avez pas le droit de modifier les achats de cet utilisateur." -#: models.py:427 +#: models.py:495 msgid "" "You don't have the right to edit a purchase already controlled or " "invalidated." @@ -285,150 +325,150 @@ msgstr "" "Vous n'avez pas le droit de modifier un achat précédemment contrôlé ou " "invalidé." -#: models.py:434 +#: models.py:502 msgid "You don't have the right to delete a purchase." msgstr "Vous n'avez pas le droit de supprimer un achat." -#: models.py:436 +#: models.py:504 msgid "You don't have the right to delete this user's purchases." msgstr "Vous n'avez pas le droit de supprimer les achats de cet utilisateur." -#: models.py:439 +#: models.py:507 msgid "" "You don't have the right to delete a purchase already controlled or " "invalidated." msgstr "" -"Vous n'avez pas le droit de supprimer un achat précédement contrôlé ou " +"Vous n'avez pas le droit de supprimer un achat précédemment contrôlé ou " "invalidé." -#: models.py:447 +#: models.py:515 msgid "You don't have the right to view someone else's purchase history." msgstr "" "Vous n'avez pas le droit de voir l'historique des achats d'un autre " "utilisateur." -#: models.py:511 +#: models.py:580 msgid "Club" msgstr "Club" -#: models.py:523 +#: models.py:592 msgid "designation" msgstr "désignation" -#: models.py:529 +#: models.py:598 msgid "unit price" msgstr "prix unitaire" -#: models.py:541 +#: models.py:610 msgid "type of users concerned" msgstr "type d'utilisateurs concernés" -#: models.py:553 models.py:649 +#: models.py:622 models.py:733 msgid "is available for every user" msgstr "est disponible pour chaque utilisateur" -#: models.py:560 +#: models.py:629 msgid "Can view an article object" msgstr "Peut voir un objet article" -#: models.py:561 +#: models.py:630 msgid "Can buy every article" msgstr "Peut acheter chaque article" -#: models.py:569 +#: models.py:638 msgid "Balance is a reserved article name." msgstr "Solde est un nom d'article réservé." -#: models.py:594 +#: models.py:663 msgid "You can't buy this article." msgstr "Vous ne pouvez pas acheter cet article." -#: models.py:624 +#: models.py:708 msgid "Can view a bank object" msgstr "Peut voir un objet banque" -#: models.py:626 +#: models.py:710 msgid "bank" msgstr "banque" -#: models.py:627 +#: models.py:711 msgid "banks" msgstr "banques" -#: models.py:645 +#: models.py:729 msgid "method" msgstr "moyen" -#: models.py:654 +#: models.py:738 msgid "is user balance" msgstr "est solde utilisateur" -#: models.py:655 +#: models.py:739 msgid "There should be only one balance payment method." msgstr "Il ne devrait y avoir qu'un moyen de paiement solde." -#: models.py:661 +#: models.py:745 msgid "Can view a payment method object" msgstr "Peut voir un objet moyen de paiement" -#: models.py:662 +#: models.py:746 msgid "Can use every payment method" msgstr "Peut utiliser chaque moyen de paiement" -#: models.py:664 +#: models.py:748 msgid "payment method" msgstr "moyen de paiement" -#: models.py:665 +#: models.py:749 msgid "payment methods" msgstr "moyens de paiement" -#: models.py:699 payment_methods/comnpay/views.py:63 +#: models.py:787 payment_methods/comnpay/views.py:63 #, python-format msgid "The subscription of %(member_name)s was extended to %(end_date)s." msgstr "La cotisation de %(member_name)s a été étendue au %(end_date)s." -#: models.py:709 +#: models.py:797 msgid "The invoice was created." msgstr "La facture a été créée." -#: models.py:730 +#: models.py:818 msgid "You can't use this payment method." msgstr "Vous ne pouvez pas utiliser ce moyen de paiement." -#: models.py:748 +#: models.py:836 msgid "No custom payment method." msgstr "Pas de moyen de paiement personnalisé." -#: models.py:783 +#: models.py:871 msgid "start date" msgstr "date de début" -#: models.py:786 +#: models.py:874 msgid "end date" msgstr "date de fin" -#: models.py:791 +#: models.py:879 msgid "Can view a subscription object" msgstr "Peut voir un objet cotisation" -#: models.py:792 +#: models.py:880 msgid "Can edit the previous subscriptions" msgstr "Peut modifier les cotisations précédentes" -#: models.py:794 +#: models.py:882 msgid "subscription" msgstr "cotisation" -#: models.py:795 +#: models.py:883 msgid "subscriptions" msgstr "cotisations" -#: models.py:799 +#: models.py:887 msgid "You don't have the right to edit a subscription." msgstr "Vous n'avez pas le droit de modifier une cotisation." -#: models.py:803 +#: models.py:891 msgid "" "You don't have the right to edit a subscription already controlled or " "invalidated." @@ -436,11 +476,11 @@ msgstr "" "Vous n'avez pas le droit de modifier une cotisation précédemment contrôlée " "ou invalidée." -#: models.py:810 +#: models.py:898 msgid "You don't have the right to delete a subscription." msgstr "Vous n'avez pas le droit de supprimer une cotisation." -#: models.py:813 +#: models.py:901 msgid "" "You don't have the right to delete a subscription already controlled or " "invalidated." @@ -448,7 +488,7 @@ msgstr "" "Vous n'avez pas le droit de supprimer une cotisation précédemment contrôlée " "ou invalidée." -#: models.py:821 +#: models.py:909 msgid "You don't have the right to view someone else's subscription history." msgstr "" "Vous n'avez pas le droit de voir l'historique des cotisations d'un autre " @@ -482,11 +522,11 @@ msgstr "Le montant maximal d'argent autorisé pour le solde." msgid "Allow user to credit their balance" msgstr "Autorise l'utilisateur à créditer son solde" -#: payment_methods/balance/models.py:81 payment_methods/balance/models.py:112 +#: payment_methods/balance/models.py:79 payment_methods/balance/models.py:110 msgid "Your balance is too low for this operation." msgstr "Votre solde est trop bas pour cette opération." -#: payment_methods/balance/models.py:99 validators.py:20 +#: payment_methods/balance/models.py:97 validators.py:20 msgid "There is already a payment method for user balance." msgstr "Il y a déjà un moyen de paiement pour le solde utilisateur." @@ -523,11 +563,11 @@ msgstr "" msgid "Production mode enabled (production URL, instead of homologation)" msgstr "Mode production activé (URL de production, au lieu d'homologation)" -#: payment_methods/comnpay/models.py:104 +#: payment_methods/comnpay/models.py:102 msgid "Pay invoice number " msgstr "Payer la facture numéro " -#: payment_methods/comnpay/models.py:116 +#: payment_methods/comnpay/models.py:114 msgid "" "In order to pay your invoice with ComNpay, the price must be greater than {} " "€." @@ -559,6 +599,30 @@ msgstr "" msgid "no" msgstr "non" +#: payment_methods/note_kfet/forms.py:32 +msgid "pseudo note" +msgstr "pseudo note" + +#: payment_methods/note_kfet/forms.py:35 +msgid "Password" +msgstr "Mot de passe" + +#: payment_methods/note_kfet/models.py:40 +msgid "NoteKfet" +msgstr "NoteKfet" + +#: payment_methods/note_kfet/models.py:50 +msgid "server" +msgstr "serveur" + +#: payment_methods/note_kfet/views.py:60 +msgid "Unknown error." +msgstr "Erreur inconnue." + +#: payment_methods/note_kfet/views.py:88 +msgid "The payment with note was done." +msgstr "Le paiement par note a été effectué." + #: templates/cotisations/aff_article.html:34 msgid "Price" msgstr "Prix" @@ -579,34 +643,47 @@ msgstr "Utilisateurs concernés" msgid "Available for everyone" msgstr "Disponible pour tous" -#: templates/cotisations/aff_article.html:52 -#: templates/cotisations/aff_paiement.html:48 -#: templates/cotisations/control.html:107 views.py:483 views.py:570 -#: views.py:650 -msgid "Edit" -msgstr "Modifier" - #: templates/cotisations/aff_banque.html:32 msgid "Bank" msgstr "Banque" -#: templates/cotisations/aff_cotisations.html:38 -msgid "User" -msgstr "Utilisateur" - +#: templates/cotisations/aff_cost_estimate.html:39 #: templates/cotisations/aff_cotisations.html:41 #: templates/cotisations/aff_custom_invoice.html:39 #: templates/cotisations/control.html:63 -#: templates/cotisations/edit_facture.html:45 +#: templates/cotisations/edit_facture.html:49 msgid "Designation" msgstr "Désignation" +#: templates/cotisations/aff_cost_estimate.html:40 #: templates/cotisations/aff_cotisations.html:42 #: templates/cotisations/aff_custom_invoice.html:40 #: templates/cotisations/control.html:64 msgid "Total price" msgstr "Prix total" +#: templates/cotisations/aff_cost_estimate.html:50 +msgid "Validity" +msgstr "Validité" + +#: templates/cotisations/aff_cost_estimate.html:54 +msgid "Cost estimate ID" +msgstr "ID devis" + +#: templates/cotisations/aff_cost_estimate.html:58 +msgid "Invoice created" +msgstr "Facture créée" + +#: templates/cotisations/aff_cost_estimate.html:91 +#: templates/cotisations/aff_cotisations.html:81 +#: templates/cotisations/aff_custom_invoice.html:79 +msgid "PDF" +msgstr "PDF" + +#: templates/cotisations/aff_cotisations.html:38 +msgid "User" +msgstr "Utilisateur" + #: templates/cotisations/aff_cotisations.html:52 #: templates/cotisations/aff_custom_invoice.html:50 #: templates/cotisations/control.html:56 @@ -617,11 +694,6 @@ msgstr "ID facture" msgid "Controlled invoice" msgstr "Facture contrôlée" -#: templates/cotisations/aff_cotisations.html:81 -#: templates/cotisations/aff_custom_invoice.html:79 -msgid "PDF" -msgstr "PDF" - #: templates/cotisations/aff_cotisations.html:84 msgid "Invalidated invoice" msgstr "Facture invalidée" @@ -666,6 +738,11 @@ msgstr "Validé" msgid "Controlled" msgstr "Contrôlé" +#: templates/cotisations/control.html:107 views.py:642 views.py:729 +#: views.py:809 +msgid "Edit" +msgstr "Modifier" + #: templates/cotisations/delete.html:29 msgid "Deletion of subscriptions" msgstr "Suppression de cotisations" @@ -676,33 +753,33 @@ msgid "" "Warning: are you sure you really want to delete this %(object_name)s object " "( %(objet)s )?" msgstr "" -"\tAttention: voulez-vous vraiment supprimer cet objet %(object_name)s " +"Attention: voulez-vous vraiment supprimer cet objet %(object_name)s " "( %(objet)s ) ?" #: templates/cotisations/delete.html:38 -#: templates/cotisations/edit_facture.html:60 -#: views.py:181 views.py:235 +#: templates/cotisations/edit_facture.html:64 views.py:178 views.py:228 +#: views.py:280 msgid "Confirm" -msgstr "Valider" +msgstr "Confirmer" #: templates/cotisations/edit_facture.html:31 #: templates/cotisations/facture.html:30 msgid "Creation and editing of invoices" msgstr "Création et modification de factures" -#: templates/cotisations/edit_facture.html:38 -msgid "Edit the invoice" +#: templates/cotisations/edit_facture.html:41 +msgid "Edit invoice" msgstr "Modifier la facture" -#: templates/cotisations/edit_facture.html:41 -#: templates/cotisations/facture.html:56 +#: templates/cotisations/edit_facture.html:45 +#: templates/cotisations/facture.html:62 #: templates/cotisations/index_article.html:30 msgid "Articles" msgstr "Articles" #: templates/cotisations/facture.html:37 msgid "Buy" -msgstr "Acheter une cotisation" +msgstr "Acheter" #: templates/cotisations/facture.html:40 #, python-format @@ -714,11 +791,11 @@ msgstr "Solde maximum autorisé : %(max_balance)s €" msgid "Current balance: %(balance)s €" msgstr "Solde actuel : %(balance)s €" -#: templates/cotisations/facture.html:70 +#: templates/cotisations/facture.html:76 msgid "Add an extra article" msgstr "Ajouter un article supplémentaire" -#: templates/cotisations/facture.html:72 +#: templates/cotisations/facture.html:82 msgid "Total price: 0,00 €" msgstr "Prix total : 0,00 €" @@ -730,9 +807,8 @@ msgstr "Factures" msgid "Subscriptions" msgstr "Cotisations" - #: templates/cotisations/index_article.html:33 -msgid "Article types list" +msgid "List of article types" msgstr "Liste des types d'article" #: templates/cotisations/index_article.html:36 @@ -744,12 +820,12 @@ msgid "Delete one or several article types" msgstr "Supprimer un ou plusieurs types d'article" #: templates/cotisations/index_banque.html:30 -#: templates/cotisations/sidebar.html:55 +#: templates/cotisations/sidebar.html:60 msgid "Banks" msgstr "Banques" #: templates/cotisations/index_banque.html:33 -msgid "Banks list" +msgid "List of banks" msgstr "Liste des banques" #: templates/cotisations/index_banque.html:36 @@ -760,17 +836,26 @@ msgstr "Ajouter une banque" msgid "Delete one or several banks" msgstr "Supprimer une ou plusieurs banques" +#: templates/cotisations/index_cost_estimate.html:28 +#: templates/cotisations/sidebar.html:50 +msgid "Cost estimates" +msgstr "Devis" + +#: templates/cotisations/index_cost_estimate.html:31 +msgid "List of cost estimates" +msgstr "Liste des devis" + #: templates/cotisations/index_custom_invoice.html:28 #: templates/cotisations/sidebar.html:45 msgid "Custom invoices" msgstr "Factures personnalisées" #: templates/cotisations/index_custom_invoice.html:31 -msgid "Custom invoices list" -msgstr "Liste des factures personalisées" +msgid "List of custom invoices" +msgstr "Liste des factures personnalisées" #: templates/cotisations/index_paiement.html:30 -#: templates/cotisations/sidebar.html:60 +#: templates/cotisations/sidebar.html:65 msgid "Payment methods" msgstr "Moyens de paiement" @@ -793,9 +878,9 @@ msgstr "Rechargement de solde" #: templates/cotisations/payment.html:34 #, python-format msgid "Pay %(amount)s €" -msgstr "Recharger de %(amount)s €" +msgstr "Payer %(amount)s €" -#: templates/cotisations/payment.html:42 views.py:870 +#: templates/cotisations/payment.html:42 views.py:1049 msgid "Pay" msgstr "Payer" @@ -807,81 +892,104 @@ msgstr "Créer une facture" msgid "Control the invoices" msgstr "Contrôler les factures" -#: views.py:167 +#: views.py:164 msgid "You need to choose at least one article." msgstr "Vous devez choisir au moins un article." +#: views.py:222 +msgid "The cost estimate was created." +msgstr "Le devis a été créé." -#: views.py:228 +#: views.py:232 views.py:534 +msgid "Cost estimate" +msgstr "Devis" + +#: views.py:274 msgid "The custom invoice was created." msgstr "La facture personnalisée a été créée." -#: views.py:316 views.py:370 +#: views.py:363 views.py:466 msgid "The invoice was edited." msgstr "La facture a été modifiée." -#: views.py:336 views.py:430 +#: views.py:383 views.py:589 msgid "The invoice was deleted." msgstr "La facture a été supprimée." -#: views.py:341 views.py:435 +#: views.py:388 views.py:594 msgid "Invoice" msgstr "Facture" -#: views.py:456 +#: views.py:417 +msgid "The cost estimate was edited." +msgstr "Le devis a été modifié." + +#: views.py:424 +msgid "Edit cost estimate" +msgstr "Modifier le devis" + +#: views.py:436 +msgid "An invoice was successfully created from your cost estimate." +msgstr "Une facture a bien été créée à partir de votre devis." + +#: views.py:529 +msgid "The cost estimate was deleted." +msgstr "Le devis a été supprimé." + +#: views.py:615 msgid "The article was created." msgstr "L'article a été créé." -#: views.py:461 views.py:534 views.py:627 +#: views.py:620 views.py:693 views.py:786 msgid "Add" msgstr "Ajouter" -#: views.py:462 +#: views.py:621 msgid "New article" msgstr "Nouvel article" -#: views.py:478 +#: views.py:637 msgid "The article was edited." msgstr "L'article a été modifié." -#: views.py:484 +#: views.py:643 msgid "Edit article" msgstr "Modifier l'article" -#: views.py:500 +#: views.py:659 msgid "The articles were deleted." msgstr "Les articles ont été supprimés." -#: views.py:505 views.py:605 views.py:685 +#: views.py:664 views.py:764 views.py:844 msgid "Delete" msgstr "Supprimer" -#: views.py:506 +#: views.py:665 msgid "Delete article" msgstr "Supprimer l'article" -#: views.py:528 +#: views.py:687 msgid "The payment method was created." msgstr "Le moyen de paiment a été créé." -#: views.py:535 +#: views.py:694 msgid "New payment method" msgstr "Nouveau moyen de paiement" -#: views.py:564 +#: views.py:723 msgid "The payment method was edited." msgstr "Le moyen de paiment a été modifié." -#: views.py:571 +#: views.py:730 msgid "Edit payment method" msgstr "Modifier le moyen de paiement" -#: views.py:590 +#: views.py:749 #, python-format msgid "The payment method %(method_name)s was deleted." msgstr "Le moyen de paiement %(method_name)s a été supprimé." -#: views.py:597 +#: views.py:756 #, python-format msgid "" "The payment method %(method_name)s can't be deleted " @@ -890,52 +998,51 @@ msgstr "" "Le moyen de paiement %(method_name)s ne peut pas être supprimé car il y a " "des factures qui l'utilisent." -#: views.py:606 +#: views.py:765 msgid "Delete payment method" msgstr "Supprimer le moyen de paiement" -#: views.py:622 +#: views.py:781 msgid "The bank was created." msgstr "La banque a été créée." -#: views.py:628 +#: views.py:787 msgid "New bank" msgstr "Nouvelle banque" -#: views.py:645 +#: views.py:804 msgid "The bank was edited." msgstr "La banque a été modifiée." -#: views.py:651 +#: views.py:810 msgid "Edit bank" msgstr "Modifier la banque" -#: views.py:670 +#: views.py:829 #, python-format msgid "The bank %(bank_name)s was deleted." msgstr "La banque %(bank_name)s a été supprimée." -#: views.py:677 +#: views.py:836 #, python-format msgid "" -"The bank %(bank_name)s can't be deleted because there " -"are invoices using it." +"The bank %(bank_name)s can't be deleted because there are invoices using it." msgstr "" "La banque %(bank_name)s ne peut pas être supprimée car il y a des factures " "qui l'utilisent." -#: views.py:686 +#: views.py:845 msgid "Delete bank" msgstr "Supprimer la banque" -#: views.py:722 +#: views.py:881 msgid "Your changes have been properly taken into account." msgstr "Vos modifications ont correctement été prises en compte." -#: views.py:834 +#: views.py:1016 msgid "You are not allowed to credit your balance." msgstr "Vous n'êtes pas autorisés à créditer votre solde." -#: views.py:869 +#: views.py:1048 msgid "Refill your balance" msgstr "Recharger votre solde" diff --git a/cotisations/models.py b/cotisations/models.py index 623db068..ea565ac8 100644 --- a/cotisations/models.py +++ b/cotisations/models.py @@ -341,7 +341,7 @@ class CostEstimate(CustomInvoice): "to delete a cost estimate.") if self.final_invoice is not None: return False, _("The cost estimate has an " - "invoice and cannot be deleted.") + "invoice and can't be deleted.") return True, None diff --git a/cotisations/payment_methods/note_kfet/views.py b/cotisations/payment_methods/note_kfet/views.py index d4d0ac21..cfdda9b0 100644 --- a/cotisations/payment_methods/note_kfet/views.py +++ b/cotisations/payment_methods/note_kfet/views.py @@ -57,7 +57,7 @@ def note_payment(request, facture, factureid): user = facture.user payment_method = find_payment_method(facture.paiement) if not payment_method or not isinstance(payment_method, NotePayment): - messages.error(request, "Erreur inconnue") + messages.error(request, _("Unknown error.")) return redirect(reverse( 'users:profil', kwargs={'userid': user.id} @@ -85,7 +85,7 @@ def note_payment(request, facture, factureid): ) facture.valid = True facture.save() - messages.success(request, "Le paiement par note a bien été effectué") + messages.success(request, _("The payment with note was done.")) return redirect(reverse( 'users:profil', kwargs={'userid': user.id} diff --git a/cotisations/templates/cotisations/aff_article.html b/cotisations/templates/cotisations/aff_article.html index b07035da..682d6a05 100644 --- a/cotisations/templates/cotisations/aff_article.html +++ b/cotisations/templates/cotisations/aff_article.html @@ -49,9 +49,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {{ article.available_for_everyone | tick }} {% can_edit article %} - - - + {% include 'buttons/edit.html' with href='cotisations:edit-article' id=article.id %} {% acl_end %} {% history_button article %} diff --git a/cotisations/templates/cotisations/aff_cost_estimate.html b/cotisations/templates/cotisations/aff_cost_estimate.html index d4a3f60d..e591a5fe 100644 --- a/cotisations/templates/cotisations/aff_cost_estimate.html +++ b/cotisations/templates/cotisations/aff_cost_estimate.html @@ -26,7 +26,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
{% if cost_estimate_list.paginator %} - {% include 'pagination.html' with list=cost_estimate_list%} + {% include 'pagination.html' with list=cost_estimate_list%} {% endif %} @@ -34,7 +34,7 @@ with this program; if not, write to the Free Software Foundation, Inc., @@ -96,6 +96,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
{% trans "Recipient" as tr_recip %} - {% include 'buttons/sort.html' with prefix='invoice' col='user' text=tr_user %} + {% include 'buttons/sort.html' with prefix='invoice' col='user' text=tr_recip %} {% trans "Designation" %} {% trans "Total price" %}
{% if custom_invoice_list.paginator %} - {% include 'pagination.html' with list=custom_invoice_list %} + {% include 'pagination.html' with list=custom_invoice_list %} {% endif %}
diff --git a/cotisations/templates/cotisations/aff_cotisations.html b/cotisations/templates/cotisations/aff_cotisations.html index 93384106..7dd64395 100644 --- a/cotisations/templates/cotisations/aff_cotisations.html +++ b/cotisations/templates/cotisations/aff_cotisations.html @@ -28,7 +28,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
{% if facture_list.paginator %} -{% include 'pagination.html' with list=facture_list %} + {% include 'pagination.html' with list=facture_list %} {% endif %} @@ -89,7 +89,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
{% if facture_list.paginator %} -{% include 'pagination.html' with list=facture_list %} + {% include 'pagination.html' with list=facture_list %} {% endif %}
diff --git a/cotisations/templates/cotisations/aff_custom_invoice.html b/cotisations/templates/cotisations/aff_custom_invoice.html index 0f4605ad..c1c5a396 100644 --- a/cotisations/templates/cotisations/aff_custom_invoice.html +++ b/cotisations/templates/cotisations/aff_custom_invoice.html @@ -26,7 +26,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
{% if custom_invoice_list.paginator %} - {% include 'pagination.html' with list=custom_invoice_list %} + {% include 'pagination.html' with list=custom_invoice_list %} {% endif %} @@ -34,7 +34,7 @@ with this program; if not, write to the Free Software Foundation, Inc., @@ -51,7 +51,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% include 'buttons/sort.html' with prefix='invoice' col='id' text=tr_invoice_id %} @@ -84,6 +84,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
{% trans "Recipient" as tr_recip %} - {% include 'buttons/sort.html' with prefix='invoice' col='user' text=tr_user %} + {% include 'buttons/sort.html' with prefix='invoice' col='user' text=tr_recip %} {% trans "Designation" %} {% trans "Total price" %} - {% trans "Paid" as tr_invoice_paid%} + {% trans "Paid" as tr_invoice_paid %} {% include 'buttons/sort.html' with prefix='invoice' col='paid' text=tr_invoice_paid %}
{% if custom_invoice_list.paginator %} - {% include 'pagination.html' with list=custom_invoice_list %} + {% include 'pagination.html' with list=custom_invoice_list %} {% endif %}
diff --git a/cotisations/templates/cotisations/aff_paiement.html b/cotisations/templates/cotisations/aff_paiement.html index 633eb456..afb78b48 100644 --- a/cotisations/templates/cotisations/aff_paiement.html +++ b/cotisations/templates/cotisations/aff_paiement.html @@ -45,9 +45,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% can_edit paiement %} - - - + {% include 'buttons/edit.html' with href='cotisations:edit-paiement' id=paiement.id %} {% acl_end %} {% history_button paiement %} diff --git a/cotisations/templates/cotisations/control.html b/cotisations/templates/cotisations/control.html index 483c150c..5a18bd01 100644 --- a/cotisations/templates/cotisations/control.html +++ b/cotisations/templates/cotisations/control.html @@ -1,4 +1,4 @@ -{% extends "cotisations/sidebar.html" %} +{% extends 'cotisations/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -34,7 +34,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,

{% trans "Invoice control and validation" %}

{% if facture_list.paginator %} -{% include 'pagination.html' with list=facture_list %} + {% include 'pagination.html' with list=facture_list %} {% endif %}
@@ -110,6 +110,6 @@ with this program; if not, write to the Free Software Foundation, Inc., {% endblock %} {% if facture_list.paginator %} -{% include 'pagination.html' with list=facture_list %} + {% include 'pagination.html' with list=facture_list %} {% endif %} diff --git a/cotisations/templates/cotisations/delete.html b/cotisations/templates/cotisations/delete.html index 58ce8ad2..e6060d09 100644 --- a/cotisations/templates/cotisations/delete.html +++ b/cotisations/templates/cotisations/delete.html @@ -1,4 +1,4 @@ -{% extends "machines/sidebar.html" %} +{% extends 'cotisations/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en diff --git a/cotisations/templates/cotisations/edit_facture.html b/cotisations/templates/cotisations/edit_facture.html index c7a6975c..891f7476 100644 --- a/cotisations/templates/cotisations/edit_facture.html +++ b/cotisations/templates/cotisations/edit_facture.html @@ -1,4 +1,4 @@ -{% extends "cotisations/sidebar.html" %} +{% extends 'cotisations/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -38,7 +38,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% if title %}

{{title}}

{% else %} -

{% trans "Edit the invoice" %}

+

{% trans "Edit invoice" %}

{% endif %} {% massive_bootstrap_form factureform 'user' %} {{ venteform.management_form }} diff --git a/cotisations/templates/cotisations/facture.html b/cotisations/templates/cotisations/facture.html index efa7b06d..65b05199 100644 --- a/cotisations/templates/cotisations/facture.html +++ b/cotisations/templates/cotisations/facture.html @@ -1,4 +1,4 @@ -{% extends "cotisations/sidebar.html" %} +{% extends 'cotisations/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en diff --git a/cotisations/templates/cotisations/index.html b/cotisations/templates/cotisations/index.html index ca9cde5b..42b8a3bf 100644 --- a/cotisations/templates/cotisations/index.html +++ b/cotisations/templates/cotisations/index.html @@ -1,4 +1,4 @@ -{% extends "cotisations/sidebar.html" %} +{% extends 'cotisations/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en diff --git a/cotisations/templates/cotisations/index_article.html b/cotisations/templates/cotisations/index_article.html index 41ffb62e..5f93b5ce 100644 --- a/cotisations/templates/cotisations/index_article.html +++ b/cotisations/templates/cotisations/index_article.html @@ -1,4 +1,4 @@ -{% extends "cotisations/sidebar.html" %} +{% extends 'cotisations/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -30,7 +30,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% block title %}{% trans "Articles" %}{% endblock %} {% block content %} -

{% trans "Article types list" %}

+

{% trans "List of article types" %}

{% can_create Article %} {% trans "Add an article type" %} diff --git a/cotisations/templates/cotisations/index_banque.html b/cotisations/templates/cotisations/index_banque.html index f4dea1b1..87067222 100644 --- a/cotisations/templates/cotisations/index_banque.html +++ b/cotisations/templates/cotisations/index_banque.html @@ -1,4 +1,4 @@ -{% extends "cotisations/sidebar.html" %} +{% extends 'cotisations/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -30,7 +30,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% block title %}{% trans "Banks" %}{% endblock %} {% block content %} -

{% trans "Banks list" %}

+

{% trans "List of banks" %}

{% can_create Banque %}
{% trans "Add a bank" %} diff --git a/cotisations/templates/cotisations/index_cost_estimate.html b/cotisations/templates/cotisations/index_cost_estimate.html index a0b3a661..c3d57197 100644 --- a/cotisations/templates/cotisations/index_cost_estimate.html +++ b/cotisations/templates/cotisations/index_cost_estimate.html @@ -1,4 +1,4 @@ -{% extends "cotisations/sidebar.html" %} +{% extends 'cotisations/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -28,9 +28,9 @@ with this program; if not, write to the Free Software Foundation, Inc., {% block title %}{% trans "Cost estimates" %}{% endblock %} {% block content %} -

{% trans "Cost estimates list" %}

+

{% trans "List of cost estimates" %}

{% can_create CostEstimate %} -{% include "buttons/add.html" with href='cotisations:new-cost-estimate'%} +{% include 'buttons/add.html' with href='cotisations:new-cost-estimate'%} {% acl_end %} {% include 'cotisations/aff_cost_estimate.html' %} {% endblock %} diff --git a/cotisations/templates/cotisations/index_custom_invoice.html b/cotisations/templates/cotisations/index_custom_invoice.html index 67d00126..9b539614 100644 --- a/cotisations/templates/cotisations/index_custom_invoice.html +++ b/cotisations/templates/cotisations/index_custom_invoice.html @@ -1,4 +1,4 @@ -{% extends "cotisations/sidebar.html" %} +{% extends 'cotisations/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -28,9 +28,9 @@ with this program; if not, write to the Free Software Foundation, Inc., {% block title %}{% trans "Custom invoices" %}{% endblock %} {% block content %} -

{% trans "Custom invoices list" %}

+

{% trans "List of custom invoices" %}

{% can_create CustomInvoice %} -{% include "buttons/add.html" with href='cotisations:new-custom-invoice'%} +{% include 'buttons/add.html' with href='cotisations:new-custom-invoice'%} {% acl_end %} {% include 'cotisations/aff_custom_invoice.html' with custom_invoice_list=custom_invoice_list %} {% endblock %} diff --git a/cotisations/templates/cotisations/index_paiement.html b/cotisations/templates/cotisations/index_paiement.html index f4908d02..09b7e033 100644 --- a/cotisations/templates/cotisations/index_paiement.html +++ b/cotisations/templates/cotisations/index_paiement.html @@ -1,4 +1,4 @@ -{% extends "cotisations/sidebar.html" %} +{% extends 'cotisations/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en diff --git a/cotisations/templates/cotisations/payment.html b/cotisations/templates/cotisations/payment.html index ecd90ed8..ceb8db6f 100644 --- a/cotisations/templates/cotisations/payment.html +++ b/cotisations/templates/cotisations/payment.html @@ -1,4 +1,4 @@ -{% extends "cotisations/sidebar.html" %} +{% extends 'cotisations/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en diff --git a/cotisations/templates/cotisations/sidebar.html b/cotisations/templates/cotisations/sidebar.html index c3240a9a..608f95c2 100644 --- a/cotisations/templates/cotisations/sidebar.html +++ b/cotisations/templates/cotisations/sidebar.html @@ -1,4 +1,4 @@ -{% extends "base.html" %} +{% extends 'base.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -28,40 +28,40 @@ with this program; if not, write to the Free Software Foundation, Inc., {% block sidebar %} {% can_create CustomInvoice %} -
+ {% trans "Create an invoice" %} - + {% trans "Control the invoices" %} {% acl_end %} {% can_view_all Facture %} - + {% trans "Invoices" %} {% acl_end %} {% can_view_all CustomInvoice %} - + {% trans "Custom invoices" %} {% acl_end %} {% can_view_all CostEstimate %} - - {% trans "Cost estimate" %} + + {% trans "Cost estimates" %} {% acl_end %} {% can_view_all Article %} - + {% trans "Available articles" %} {% acl_end %} {% can_view_all Banque %} - + {% trans "Banks" %} {% acl_end %} {% can_view_all Paiement %} - + {% trans "Payment methods" %} {% acl_end %} diff --git a/cotisations/views.py b/cotisations/views.py index d4805dc2..b713f3b9 100644 --- a/cotisations/views.py +++ b/cotisations/views.py @@ -421,7 +421,7 @@ def edit_cost_estimate(request, invoice, **kwargs): return form({ 'factureform': invoice_form, 'venteform': purchase_form, - 'title': "Edit the cost estimate" + 'title': _("Edit cost estimate") }, 'cotisations/edit_facture.html', request) @@ -531,7 +531,7 @@ def del_cost_estimate(request, estimate, **_kwargs): return redirect(reverse('cotisations:index-cost-estimate')) return form({ 'objet': estimate, - 'objet_name': _("Cost Estimate") + 'objet_name': _("Cost estimate") }, 'cotisations/delete.html', request) @@ -833,8 +833,8 @@ def del_banque(request, instances): except ProtectedError: messages.error( request, - _("The bank %(bank_name)s can't be deleted \ - because there are invoices using it.") % { + _("The bank %(bank_name)s can't be deleted because there" + " are invoices using it.") % { 'bank_name': bank_del } ) From 9683e0d688518769fd865c9247e0eee10149f025 Mon Sep 17 00:00:00 2001 From: Laouen Fernet Date: Wed, 9 Jan 2019 00:39:08 +0100 Subject: [PATCH 03/10] add translations for logs/ --- logs/locale/fr/LC_MESSAGES/django.po | 96 +++++++++++++------------ logs/templates/logs/aff_stats_logs.html | 8 +-- logs/templates/logs/aff_summary.html | 6 +- logs/templates/logs/delete.html | 2 +- logs/templates/logs/index.html | 4 +- logs/templates/logs/sidebar.html | 14 ++-- logs/templates/logs/stats_general.html | 4 +- logs/templates/logs/stats_logs.html | 4 +- logs/templates/logs/stats_models.html | 4 +- logs/templates/logs/stats_users.html | 4 +- 10 files changed, 77 insertions(+), 69 deletions(-) diff --git a/logs/locale/fr/LC_MESSAGES/django.po b/logs/locale/fr/LC_MESSAGES/django.po index 70c58073..807bda76 100644 --- a/logs/locale/fr/LC_MESSAGES/django.po +++ b/logs/locale/fr/LC_MESSAGES/django.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: 2.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-08-15 20:12+0200\n" +"POT-Creation-Date: 2019-01-08 23:16+0100\n" "PO-Revision-Date: 2018-06-23 16:01+0200\n" "Last-Translator: Laouen Fernet \n" "Language-Team: \n" @@ -57,7 +57,7 @@ msgstr "Commentaire" #: templates/logs/aff_stats_logs.html:58 templates/logs/aff_summary.html:62 #: templates/logs/aff_summary.html:85 templates/logs/aff_summary.html:104 -#: templates/logs/aff_summary.html:123 templates/logs/aff_summary.html:142 +#: templates/logs/aff_summary.html:128 templates/logs/aff_summary.html:147 msgid "Cancel" msgstr "Annuler" @@ -113,15 +113,19 @@ msgstr "%(username)s a mis à jour" #: templates/logs/aff_summary.html:113 #, python-format -msgid "%(username)s has sold %(number)sx %(name)s to" -msgstr "%(username)s a vendu %(number)sx %(name)s à" +msgid "%(username)s has sold %(number)sx %(name)s" +msgstr "%(username)s a vendu %(number)sx %(name)s" #: templates/logs/aff_summary.html:116 +msgid " to" +msgstr " à" + +#: templates/logs/aff_summary.html:119 #, python-format msgid "+%(duration)s months" msgstr "+%(duration)s mois" -#: templates/logs/aff_summary.html:132 +#: templates/logs/aff_summary.html:137 #, python-format msgid "%(username)s has edited an interface of" msgstr "%(username)s a modifié une interface de" @@ -149,7 +153,7 @@ msgstr "Confirmer" msgid "Statistics" msgstr "Statistiques" -#: templates/logs/index.html:32 templates/logs/stats_logs.html:32 views.py:403 +#: templates/logs/index.html:32 templates/logs/stats_logs.html:32 views.py:414 msgid "Actions performed" msgstr "Actions effectuées" @@ -173,7 +177,7 @@ msgstr "Base de données" msgid "Wiring actions" msgstr "Actions de câblage" -#: templates/logs/sidebar.html:53 views.py:325 +#: templates/logs/sidebar.html:53 views.py:336 msgid "Users" msgstr "Utilisateurs" @@ -189,150 +193,154 @@ msgstr "Statistiques sur la base de données" msgid "Statistics about users" msgstr "Statistiques sur les utilisateurs" -#: views.py:191 +#: views.py:194 msgid "Nonexistent revision." msgstr "Révision inexistante." -#: views.py:194 +#: views.py:197 msgid "The action was deleted." msgstr "L'action a été supprimée." -#: views.py:227 +#: views.py:230 msgid "Category" msgstr "Catégorie" -#: views.py:228 +#: views.py:231 msgid "Number of users (members and clubs)" msgstr "Nombre d'utilisateurs (adhérents et clubs)" -#: views.py:229 +#: views.py:232 msgid "Number of members" msgstr "Nombre d'adhérents" -#: views.py:230 +#: views.py:233 msgid "Number of clubs" msgstr "Nombre de clubs" -#: views.py:234 +#: views.py:237 msgid "Activated users" msgstr "Utilisateurs activés" -#: views.py:242 +#: views.py:245 msgid "Disabled users" msgstr "Utilisateurs désactivés" -#: views.py:250 +#: views.py:253 msgid "Archived users" msgstr "Utilisateurs archivés" -#: views.py:258 +#: views.py:261 +msgid "Not yet active users" +msgstr "Utilisateurs pas encore actifs" + +#: views.py:269 msgid "Contributing members" msgstr "Adhérents cotisants" -#: views.py:264 +#: views.py:275 msgid "Users benefiting from a connection" msgstr "Utilisateurs bénéficiant d'une connexion" -#: views.py:270 +#: views.py:281 msgid "Banned users" msgstr "Utilisateurs bannis" -#: views.py:276 +#: views.py:287 msgid "Users benefiting from a free connection" msgstr "Utilisateurs bénéficiant d'une connexion gratuite" -#: views.py:282 +#: views.py:293 msgid "Active interfaces (with access to the network)" msgstr "Interfaces actives (ayant accès au réseau)" -#: views.py:292 +#: views.py:303 msgid "Active interfaces assigned IPv4" msgstr "Interfaces actives assignées IPv4" -#: views.py:305 +#: views.py:316 msgid "IP range" msgstr "Plage d'IP" -#: views.py:306 +#: views.py:317 msgid "VLAN" msgstr "VLAN" -#: views.py:307 +#: views.py:318 msgid "Total number of IP addresses" msgstr "Nombre total d'adresses IP" -#: views.py:308 +#: views.py:319 msgid "Number of assigned IP addresses" msgstr "Nombre d'adresses IP non assignées" -#: views.py:309 +#: views.py:320 msgid "Number of IP address assigned to an activated machine" msgstr "Nombre d'adresses IP assignées à une machine activée" -#: views.py:310 +#: views.py:321 msgid "Number of nonassigned IP addresses" msgstr "Nombre d'adresses IP non assignées" -#: views.py:337 +#: views.py:348 msgid "Subscriptions" msgstr "Cotisations" -#: views.py:359 views.py:420 +#: views.py:370 views.py:431 msgid "Machines" msgstr "Machines" -#: views.py:386 +#: views.py:397 msgid "Topology" msgstr "Topologie" -#: views.py:405 +#: views.py:416 msgid "Number of actions" msgstr "Nombre d'actions" -#: views.py:419 views.py:437 views.py:442 views.py:447 views.py:462 +#: views.py:430 views.py:448 views.py:453 views.py:458 views.py:473 msgid "User" msgstr "Utilisateur" -#: views.py:423 +#: views.py:434 msgid "Invoice" msgstr "Facture" -#: views.py:426 +#: views.py:437 msgid "Ban" msgstr "Bannissement" -#: views.py:429 +#: views.py:440 msgid "Whitelist" msgstr "Accès gracieux" -#: views.py:432 +#: views.py:443 msgid "Rights" msgstr "Droits" -#: views.py:436 +#: views.py:447 msgid "School" msgstr "Établissement" -#: views.py:441 +#: views.py:452 msgid "Payment method" msgstr "Moyen de paiement" -#: views.py:446 +#: views.py:457 msgid "Bank" msgstr "Banque" -#: views.py:463 +#: views.py:474 msgid "Action" msgstr "Action" -#: views.py:494 +#: views.py:505 msgid "No model found." msgstr "Aucun modèle trouvé." -#: views.py:500 +#: views.py:511 msgid "Nonexistent entry." msgstr "Entrée inexistante." -#: views.py:507 +#: views.py:518 msgid "You don't have the right to access this menu." msgstr "Vous n'avez pas le droit d'accéder à ce menu." diff --git a/logs/templates/logs/aff_stats_logs.html b/logs/templates/logs/aff_stats_logs.html index 1ca79df9..44a937f9 100644 --- a/logs/templates/logs/aff_stats_logs.html +++ b/logs/templates/logs/aff_stats_logs.html @@ -23,7 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% endcomment %} {% if revisions_list.paginator %} -{% include "pagination.html" with list=revisions_list %} + {% include 'pagination.html' with list=revisions_list %} {% endif %} {% load logs_extra %} @@ -36,9 +36,9 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans "Edited object" %} {% trans "Object type" %} {% trans "Edited by" as tr_edited_by %} - {% include "buttons/sort.html" with prefix='logs' col='author' text=tr_edited_by %} + {% include 'buttons/sort.html' with prefix='logs' col='author' text=tr_edited_by %} {% trans "Date of editing" as tr_date_of_editing %} - {% include "buttons/sort.html" with prefix='logs' col='date' text=tr_date_of_editing %} + {% include 'buttons/sort.html' with prefix='logs' col='date' text=tr_date_of_editing %} {% trans "Comment" %} @@ -65,6 +65,6 @@ with this program; if not, write to the Free Software Foundation, Inc., {% if revisions_list.paginator %} -{% include "pagination.html" with list=revisions_list %} + {% include 'pagination.html' with list=revisions_list %} {% endif %} diff --git a/logs/templates/logs/aff_summary.html b/logs/templates/logs/aff_summary.html index 366e07e7..3c43e2ac 100644 --- a/logs/templates/logs/aff_summary.html +++ b/logs/templates/logs/aff_summary.html @@ -23,7 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% endcomment %} {% if versions_list.paginator %} -{% include "pagination.html" with list=versions_list %} + {% include 'pagination.html' with list=versions_list %} {% endif %} {% load logs_extra %} @@ -35,7 +35,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans "Date" as tr_date %} - {% include "buttons/sort.html" with prefix='sum' col='date' text=tr_date %} + {% include 'buttons/sort.html' with prefix='sum' col='date' text=tr_date %} {% trans "Editing" %} @@ -154,6 +154,6 @@ with this program; if not, write to the Free Software Foundation, Inc., {% if versions_list.paginator %} -{% include "pagination.html" with list=versions_list %} + {% include 'pagination.html' with list=versions_list %} {% endif %} diff --git a/logs/templates/logs/delete.html b/logs/templates/logs/delete.html index 6ad11195..a8f6b52f 100644 --- a/logs/templates/logs/delete.html +++ b/logs/templates/logs/delete.html @@ -1,4 +1,4 @@ -{% extends "logs/sidebar.html" %} +{% extends 'logs/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en diff --git a/logs/templates/logs/index.html b/logs/templates/logs/index.html index dde47c7d..3bd61b40 100644 --- a/logs/templates/logs/index.html +++ b/logs/templates/logs/index.html @@ -1,4 +1,4 @@ -{% extends "logs/sidebar.html" %} +{% extends 'logs/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -30,7 +30,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% block content %}

{% trans "Actions performed" %}

- {% include "logs/aff_summary.html" with versions_list=versions_list %} + {% include 'logs/aff_summary.html' with versions_list=versions_list %}


diff --git a/logs/templates/logs/sidebar.html b/logs/templates/logs/sidebar.html index d2ee3002..e997abd5 100644 --- a/logs/templates/logs/sidebar.html +++ b/logs/templates/logs/sidebar.html @@ -1,4 +1,4 @@ -{% extends "base.html" %} +{% extends 'base.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -28,27 +28,27 @@ with this program; if not, write to the Free Software Foundation, Inc., {% block sidebar %} {% can_view_app logs %} - + {% trans "Summary" %} - + {% trans "Events" %} - + {% trans "General" %} - + {% trans "Database" %} - + {% trans "Wiring actions" %} - + {% trans "Users" %} diff --git a/logs/templates/logs/stats_general.html b/logs/templates/logs/stats_general.html index 07e3ec26..96d5612c 100644 --- a/logs/templates/logs/stats_general.html +++ b/logs/templates/logs/stats_general.html @@ -1,4 +1,4 @@ -{% extends "logs/sidebar.html" %} +{% extends 'logs/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -30,7 +30,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% block content %}

{% trans "General statistics" %}

- {% include "logs/aff_stats_general.html" with stats_list=stats_list %} + {% include 'logs/aff_stats_general.html' with stats_list=stats_list %}


diff --git a/logs/templates/logs/stats_logs.html b/logs/templates/logs/stats_logs.html index 4f547cc3..df9708b1 100644 --- a/logs/templates/logs/stats_logs.html +++ b/logs/templates/logs/stats_logs.html @@ -1,4 +1,4 @@ -{% extends "logs/sidebar.html" %} +{% extends 'logs/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -30,7 +30,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% block content %}

{% trans "Actions performed" %}

- {% include "logs/aff_stats_logs.html" with revisions_list=revisions_list %} + {% include 'logs/aff_stats_logs.html' with revisions_list=revisions_list %}


diff --git a/logs/templates/logs/stats_models.html b/logs/templates/logs/stats_models.html index 9b912da2..ddc66c15 100644 --- a/logs/templates/logs/stats_models.html +++ b/logs/templates/logs/stats_models.html @@ -1,4 +1,4 @@ -{% extends "logs/sidebar.html" %} +{% extends 'logs/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -30,7 +30,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% block content %}

{% trans "Database statistics" %}

- {% include "logs/aff_stats_models.html" with stats_list=stats_list %} + {% include 'logs/aff_stats_models.html' with stats_list=stats_list %}


diff --git a/logs/templates/logs/stats_users.html b/logs/templates/logs/stats_users.html index 8cc645ab..d55d1e52 100644 --- a/logs/templates/logs/stats_users.html +++ b/logs/templates/logs/stats_users.html @@ -1,4 +1,4 @@ -{% extends "logs/sidebar.html" %} +{% extends 'logs/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -30,7 +30,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% block content %}

{% trans "Statistics about users" %}

- {% include "logs/aff_stats_users.html" with stats_list=stats_list %} + {% include 'logs/aff_stats_users.html' with stats_list=stats_list %}


From 62d09760b31697f936e97ecbbf4078e95fe68efe Mon Sep 17 00:00:00 2001 From: Laouen Fernet Date: Wed, 9 Jan 2019 00:39:31 +0100 Subject: [PATCH 04/10] add translations for machines/ --- machines/locale/fr/LC_MESSAGES/django.po | 623 +++++++++--------- .../migrations/0101_auto_20190108_1623.py | 34 + machines/models.py | 19 +- machines/templates/machines/aff_alias.html | 2 +- machines/templates/machines/aff_dname.html | 2 +- .../templates/machines/aff_extension.html | 2 +- machines/templates/machines/aff_iptype.html | 2 +- machines/templates/machines/aff_ipv6.html | 4 +- machines/templates/machines/aff_machines.html | 18 +- .../templates/machines/aff_machinetype.html | 2 +- machines/templates/machines/aff_mx.html | 2 +- machines/templates/machines/aff_nas.html | 2 +- machines/templates/machines/aff_ns.html | 2 +- machines/templates/machines/aff_role.html | 2 +- machines/templates/machines/aff_service.html | 2 +- machines/templates/machines/aff_soa.html | 2 +- machines/templates/machines/aff_srv.html | 2 +- machines/templates/machines/aff_sshfp.html | 4 +- machines/templates/machines/aff_txt.html | 2 +- machines/templates/machines/aff_vlan.html | 2 +- machines/templates/machines/delete.html | 7 +- .../templates/machines/edit_portlist.html | 2 +- machines/templates/machines/index.html | 4 +- machines/templates/machines/index_alias.html | 4 +- .../templates/machines/index_extension.html | 16 +- machines/templates/machines/index_iptype.html | 4 +- machines/templates/machines/index_ipv6.html | 4 +- .../templates/machines/index_machinetype.html | 4 +- machines/templates/machines/index_nas.html | 4 +- .../templates/machines/index_portlist.html | 2 +- machines/templates/machines/index_role.html | 4 +- .../templates/machines/index_service.html | 6 +- machines/templates/machines/index_sshfp.html | 4 +- machines/templates/machines/index_vlan.html | 4 +- machines/templates/machines/machine.html | 3 +- machines/templates/machines/sidebar.html | 21 +- 36 files changed, 444 insertions(+), 379 deletions(-) create mode 100644 machines/migrations/0101_auto_20190108_1623.py diff --git a/machines/locale/fr/LC_MESSAGES/django.po b/machines/locale/fr/LC_MESSAGES/django.po index 50ab03a8..bd36fb61 100644 --- a/machines/locale/fr/LC_MESSAGES/django.po +++ b/machines/locale/fr/LC_MESSAGES/django.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: 2.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-08-15 18:10+0200\n" +"POT-Creation-Date: 2019-01-12 16:43+0100\n" "PO-Revision-Date: 2018-06-23 16:35+0200\n" "Last-Translator: Laouen Fernet \n" "Language-Team: \n" @@ -38,220 +38,232 @@ msgstr "Vous n'avez pas le droit de voir cette application." msgid "Machine name" msgstr "Nom de la machine" -#: forms.py:97 templates/machines/aff_machines.html:46 +#: forms.py:99 templates/machines/aff_machines.html:46 msgid "MAC address" msgstr "Adresse MAC" -#: forms.py:98 templates/machines/aff_machinetype.html:32 +#: forms.py:100 templates/machines/aff_machinetype.html:32 #: templates/machines/machine.html:112 msgid "Machine type" msgstr "Type de machine" -#: forms.py:99 +#: forms.py:101 msgid "Select a machine type" msgstr "Sélectionnez un type de machine" -#: forms.py:101 +#: forms.py:103 msgid "Automatic IPv4 assignment" msgstr "Assignation automatique IPv4" -#: forms.py:172 +#: forms.py:177 msgid "Current aliases" msgstr "Alias actuels" -#: forms.py:193 +#: forms.py:199 msgid "Machine type to add" msgstr "Type de machine à ajouter" -#: forms.py:194 +#: forms.py:200 msgid "Related IP type" msgstr "Type d'IP relié" -#: forms.py:201 +#: forms.py:207 msgid "Current machine types" msgstr "Types de machines actuels" -#: forms.py:224 +#: forms.py:231 msgid "IP type to add" msgstr "Type d'IP à ajouter" -#: forms.py:241 +#: forms.py:249 msgid "Current IP types" msgstr "Types d'IP actuels" -#: forms.py:263 +#: forms.py:272 msgid "Extension to add" msgstr "Extension à ajouter" -#: forms.py:264 templates/machines/aff_extension.html:37 +#: forms.py:273 templates/machines/aff_extension.html:37 msgid "A record origin" msgstr "Enregistrement A origin" -#: forms.py:265 templates/machines/aff_extension.html:39 +#: forms.py:274 templates/machines/aff_extension.html:39 msgid "AAAA record origin" msgstr "Enregistrement AAAA origin" -#: forms.py:266 +#: forms.py:275 msgid "SOA record to use" msgstr "Enregistrement SOA à utiliser" -#: forms.py:273 +#: forms.py:276 +msgid "Sign with DNSSEC" +msgstr "Signer avec DNSSEC" + +#: forms.py:283 msgid "Current extensions" msgstr "Extensions actuelles" -#: forms.py:312 +#: forms.py:324 msgid "Current SOA records" msgstr "Enregistrements SOA actuels" -#: forms.py:343 +#: forms.py:356 msgid "Current MX records" msgstr "Enregistrements MX actuels" -#: forms.py:376 +#: forms.py:390 msgid "Current NS records" msgstr "Enregistrements NS actuels" -#: forms.py:404 +#: forms.py:419 msgid "Current TXT records" msgstr "Enregistrements TXT actuels" -#: forms.py:432 +#: forms.py:448 msgid "Current DNAME records" msgstr "Enregistrements DNAME actuels" -#: forms.py:460 +#: forms.py:477 msgid "Current SRV records" msgstr "Enregistrements SRV actuels" -#: forms.py:489 +#: forms.py:507 msgid "Current NAS devices" msgstr "Dispositifs NAS actuels" -#: forms.py:521 +#: forms.py:540 msgid "Current roles" msgstr "Rôles actuels" -#: forms.py:562 +#: forms.py:582 msgid "Current services" msgstr "Services actuels" -#: forms.py:590 +#: forms.py:622 msgid "Current VLANs" msgstr "VLANs actuels" -#: models.py:63 +#: models.py:61 msgid "Optional" msgstr "Optionnel" -#: models.py:71 +#: models.py:69 msgid "Can view a machine object" msgstr "Peut voir un objet machine" -#: models.py:73 +#: models.py:71 msgid "Can change the user of a machine" msgstr "Peut changer l'utilisateur d'une machine" -#: models.py:75 +#: models.py:73 msgid "machine" msgstr "machine" -#: models.py:76 +#: models.py:74 msgid "machines" msgstr "machines" -#: models.py:109 +#: models.py:107 msgid "You don't have the right to change the machine's user." msgstr "Vous n'avez pas le droit de changer l'utilisateur de la machine." -#: models.py:118 +#: models.py:116 msgid "You don't have the right to view all the machines." msgstr "Vous n'avez pas le droit de voir toutes les machines." -#: models.py:132 +#: models.py:130 msgid "Nonexistent user." msgstr "Utilisateur inexistant." -#: models.py:140 +#: models.py:138 msgid "You don't have the right to add a machine." msgstr "Vous n'avez pas le droit d'ajouter une machine." -#: models.py:142 +#: models.py:140 msgid "You don't have the right to add a machine to another user." msgstr "Vous n'avez pas le droit d'ajouter une machine à un autre utilisateur." -#: models.py:145 models.py:1152 +#: models.py:143 models.py:1182 #, python-format msgid "" "You reached the maximum number of interfaces that you are allowed to create " "yourself (%s)." msgstr "" "Vous avez atteint le nombre maximal d'interfaces que vous pouvez créer vous-" -"mêmes (%s)." +"même (%s)." -#: models.py:164 models.py:1177 models.py:1194 models.py:1296 models.py:1313 +#: models.py:162 models.py:1207 models.py:1224 models.py:1326 models.py:1343 msgid "You don't have the right to edit a machine of another user." msgstr "" "Vous n'avez pas le droit de modifier une machine d'un autre utilisateur." -#: models.py:182 +#: models.py:180 msgid "You don't have the right to delete a machine of another user." msgstr "" "Vous n'avez pas le droit de supprimer une machine d'une autre utilisateur." -#: models.py:194 +#: models.py:192 msgid "You don't have the right to view other machines than yours." msgstr "Vous n'avez pas le droit de voir d'autres machines que les vôtres." -#: models.py:241 +#: models.py:204 templates/machines/aff_machines.html:53 +msgid "No name" +msgstr "Sans nom" + +#: models.py:254 msgid "Can view a machine type object" msgstr "Peut voir un objet type de machine" -#: models.py:242 +#: models.py:255 msgid "Can use all machine types" msgstr "Peut utiliser tous les types de machine" -#: models.py:244 +#: models.py:257 msgid "machine type" msgstr "type de machine" -#: models.py:245 +#: models.py:258 msgid "machine types" msgstr "types de machine" -#: models.py:263 +#: models.py:276 msgid "You don't have the right to use all machine types." msgstr "Vous n'avez pas le droit d'utiliser tous les types de machine." -#: models.py:282 +#: models.py:295 msgid "Network containing the domain's IPv4 range (optional)" msgstr "Réseau contenant la plage IPv4 du domaine (optionnel)" -#: models.py:290 +#: models.py:303 msgid "Netmask for the domain's IPv4 range" msgstr "Masque de sous-réseau pour la plage IPv4 du domaine" -#: models.py:294 +#: models.py:307 msgid "Enable reverse DNS for IPv4" msgstr "Activer DNS inverse pour IPv4" -#: models.py:310 +#: models.py:323 msgid "Enable reverse DNS for IPv6" -msgstr "Activer DNS inverser pour IPv6" +msgstr "Activer DNS inverse pour IPv6" -#: models.py:326 +#: models.py:339 msgid "Can view an IP type object" msgstr "Peut voir un objet type d'IP" -#: models.py:327 +#: models.py:340 msgid "Can use all IP types" msgstr "Peut utiliser tous les types d'IP" -#: models.py:329 templates/machines/aff_iptype.html:35 +#: models.py:342 templates/machines/aff_iptype.html:35 #: templates/machines/machine.html:108 msgid "IP type" msgstr "type d'IP" -#: models.py:433 +#: models.py:343 +msgid "IP types" +msgstr "types d'IP" + +#: models.py:446 msgid "" "One or several IP addresses from the range are affected, impossible to " "delete the range." @@ -259,57 +271,69 @@ msgstr "" "Une ou plusieurs adresses IP de la plage sont affectées, impossible de " "supprimer la plage." -#: models.py:475 +#: models.py:488 msgid "Range end must be after range start..." msgstr "La fin de la plage doit être après le début..." -#: models.py:478 +#: models.py:491 msgid "The range is too large, you can't create a larger one than a /16." msgstr "" "La plage est trop grande, vous ne pouvez pas en créer une plus grande " "qu'un /16." -#: models.py:483 +#: models.py:496 msgid "The specified range is not disjoint from existing ranges." msgstr "La plage renseignée n'est pas disjointe des plages existantes." -#: models.py:491 +#: models.py:504 msgid "" "If you specify a domain network or netmask, it must contain the domain's IP " "range." msgstr "" -"Si vous renseignez un réseau ou masque de sous-réseau, il doit contenir" -" la plage IP du domaine." +"Si vous renseignez un réseau ou masque de sous-réseau, il doit contenir la " +"plage IP du domaine." -#: models.py:521 +#: models.py:537 +msgid "v4 multicast management" +msgstr "gestion de multidiffusion v4" + +#: models.py:541 +msgid "v6 multicast management" +msgstr "gestion de multidiffusion v6" + +#: models.py:546 msgid "Can view a VLAN object" msgstr "Peut voir un objet VLAN" -#: models.py:523 templates/machines/machine.html:160 +#: models.py:548 templates/machines/machine.html:160 msgid "VLAN" msgstr "VLAN" -#: models.py:524 templates/machines/sidebar.html:57 +#: models.py:549 templates/machines/sidebar.html:57 msgid "VLANs" msgstr "VLANs" -#: models.py:560 +#: models.py:562 +msgid "MAC-address" +msgstr "MAC-address" + +#: models.py:585 msgid "Can view a NAS device object" msgstr "Peut voir un objet dispositif NAS" -#: models.py:562 templates/machines/machine.html:164 +#: models.py:587 templates/machines/machine.html:164 msgid "NAS device" msgstr "dispositif NAS" -#: models.py:563 templates/machines/sidebar.html:63 +#: models.py:588 templates/machines/sidebar.html:63 msgid "NAS devices" msgstr "dispositifs NAS" -#: models.py:577 +#: models.py:602 msgid "Contact email address for the zone" msgstr "Adresse mail de contact pour la zone" -#: models.py:581 +#: models.py:606 msgid "" "Seconds before the secondary DNS have to ask the primary DNS serial to " "detect a modification" @@ -317,7 +341,7 @@ msgstr "" "Secondes avant que le DNS secondaire demande au DNS primaire le serial pour " "détecter une modification" -#: models.py:586 +#: models.py:611 msgid "" "Seconds before the secondary DNS ask the serial again in case of a primary " "DNS timeout" @@ -325,7 +349,7 @@ msgstr "" "Secondes avant que le DNS secondaire demande le serial de nouveau dans le " "cas d'un délai d'attente du DNS primaire" -#: models.py:591 +#: models.py:616 msgid "" "Seconds before the secondary DNS stop answering requests in case of primary " "DNS timeout" @@ -333,108 +357,112 @@ msgstr "" "Secondes avant que le DNS secondaire arrête de répondre aux requêtes dans le " "cas d'un délai d'attente du DNS primaire" -#: models.py:596 models.py:846 +#: models.py:621 models.py:878 msgid "Time to Live" msgstr "Temps de vie" -#: models.py:601 +#: models.py:626 msgid "Can view an SOA record object" msgstr "Peut voir un objet enregistrement SOA" -#: models.py:603 templates/machines/aff_extension.html:36 +#: models.py:628 templates/machines/aff_extension.html:36 #: templates/machines/machine.html:120 msgid "SOA record" msgstr "enregistrement SOA" -#: models.py:604 +#: models.py:629 msgid "SOA records" msgstr "enregistrements SOA" -#: models.py:643 +#: models.py:668 msgid "SOA to edit" msgstr "SOA à modifier" -#: models.py:654 +#: models.py:679 msgid "Zone name, must begin with a dot (.example.org)" msgstr "Nom de zone, doit commencer par un point (.example.org)" -#: models.py:662 +#: models.py:687 msgid "A record associated with the zone" msgstr "Enregistrement A associé à la zone" -#: models.py:668 +#: models.py:693 msgid "AAAA record associated with the zone" msgstr "Enregristrement AAAA associé avec la zone" -#: models.py:677 +#: models.py:701 +msgid "Should the zone be signed with DNSSEC" +msgstr "La zone doit-elle être signée avec DNSSEC" + +#: models.py:706 msgid "Can view an extension object" msgstr "Peut voir un objet extension" -#: models.py:678 +#: models.py:707 msgid "Can use all extensions" msgstr "Peut utiliser toutes les extensions" -#: models.py:680 +#: models.py:709 msgid "DNS extension" msgstr "extension DNS" -#: models.py:681 +#: models.py:710 msgid "DNS extensions" msgstr "extensions DNS" -#: models.py:732 +#: models.py:764 msgid "An extension must begin with a dot." msgstr "Une extension doit commencer par un point." -#: models.py:746 +#: models.py:778 msgid "Can view an MX record object" msgstr "Peut voir un objet enregistrement MX" -#: models.py:748 templates/machines/machine.html:124 +#: models.py:780 templates/machines/machine.html:124 msgid "MX record" msgstr "enregistrement MX" -#: models.py:749 +#: models.py:781 msgid "MX records" msgstr "enregistrements MX" -#: models.py:771 +#: models.py:803 msgid "Can view an NS record object" msgstr "Peut voir un objet enregistrement NS" -#: models.py:773 templates/machines/machine.html:128 +#: models.py:805 templates/machines/machine.html:128 msgid "NS record" msgstr "enregistrement NS" -#: models.py:774 +#: models.py:806 msgid "NS records" msgstr "enregistrements NS" -#: models.py:793 +#: models.py:825 msgid "Can view a TXT record object" msgstr "Peut voir un objet enregistrement TXT" -#: models.py:795 templates/machines/machine.html:132 +#: models.py:827 templates/machines/machine.html:132 msgid "TXT record" msgstr "enregistrement TXT" -#: models.py:796 +#: models.py:828 msgid "TXT records" msgstr "enregistrements TXT" -#: models.py:815 +#: models.py:847 msgid "Can view a DNAME record object" msgstr "Peut voir un objet enregistrement DNAME" -#: models.py:817 templates/machines/machine.html:136 +#: models.py:849 templates/machines/machine.html:136 msgid "DNAME record" msgstr "enregistrement DNAME" -#: models.py:818 +#: models.py:850 msgid "DNAME records" msgstr "enregistrements DNAME" -#: models.py:851 +#: models.py:883 msgid "" "Priority of the target server (positive integer value, the lower it is, the " "more the server will be used if available)" @@ -442,7 +470,7 @@ msgstr "" "Priorité du serveur cible (entier positif, plus il est bas, plus le serveur " "sera utilisé si disponible)" -#: models.py:858 +#: models.py:890 msgid "" "Relative weight for records with the same priority (integer value between 0 " "and 65535)" @@ -450,128 +478,137 @@ msgstr "" "Poids relatif des enregistrements avec la même priorité (entier entre 0 et " "65535)" -#: models.py:863 +#: models.py:895 msgid "TCP/UDP port" msgstr "Port TCP/UDP" -#: models.py:868 +#: models.py:900 msgid "Target server" msgstr "Serveur cible" -#: models.py:873 +#: models.py:905 msgid "Can view an SRV record object" msgstr "Peut voir un objet enregistrement SRV" -#: models.py:875 templates/machines/machine.html:140 +#: models.py:907 templates/machines/machine.html:140 msgid "SRV record" msgstr "enregistrement SRV" -#: models.py:876 +#: models.py:908 msgid "SRV records" msgstr "enregistrements SRV" -#: models.py:940 +#: models.py:937 templates/machines/aff_sshfp.html:31 +msgid "SSH public key" +msgstr "Clé publique SSH" + +#: models.py:945 templates/machines/aff_sshfp.html:33 +#: templates/machines/aff_vlan.html:35 +msgid "Comment" +msgstr "Commentaire" + +#: models.py:972 msgid "Can view an SSHFP record object" msgstr "Peut voir un objet enregistrement SSHFP" -#: models.py:942 templates/machines/machine.html:144 +#: models.py:974 templates/machines/machine.html:144 msgid "SSHFP record" msgstr "enregistrement SSHFP" -#: models.py:943 +#: models.py:975 msgid "SSHFP records" msgstr "enregistrements SSHFP" -#: models.py:981 +#: models.py:1012 msgid "Can view an interface object" msgstr "Peut voir un objet interface" -#: models.py:983 +#: models.py:1014 msgid "Can change the owner of an interface" msgstr "Peut changer l'utilisateur d'une interface" -#: models.py:985 +#: models.py:1016 msgid "interface" msgstr "interface" -#: models.py:986 +#: models.py:1017 msgid "interfaces" msgstr "interfaces" -#: models.py:1080 +#: models.py:1111 msgid "The given MAC address is invalid." msgstr "L'adresse MAC indiquée est invalide." -#: models.py:1093 +#: models.py:1124 msgid "The selected IP type is invalid." msgstr "Le type d'IP sélectionné est invalide." -#: models.py:1106 +#: models.py:1136 msgid "There is no IP address available in the slash." msgstr "Il n'y a pas d'adresse IP disponible dans le slash." -#: models.py:1124 +#: models.py:1154 msgid "The IPv4 address and the machine type don't match." msgstr "L'adresse IPv4 et le type de machine ne correspondent pas." -#: models.py:1138 +#: models.py:1168 msgid "Nonexistent machine." msgstr "Machine inexistante." -#: models.py:1142 +#: models.py:1172 msgid "You can't add a machine." msgstr "Vous ne pouvez pas ajouter une machine." -#: models.py:1148 +#: models.py:1178 msgid "" "You don't have the right to add an interface to a machine of another user." msgstr "" "Vous n'avez pas le droit d'ajouter une interface à une machine d'un autre " "utilisateur." -#: models.py:1162 +#: models.py:1192 msgid "Permission required to edit the machine." msgstr "Permission requise pour modifier la machine." -#: models.py:1206 models.py:1325 models.py:1532 +#: models.py:1236 models.py:1355 models.py:1565 msgid "You don't have the right to view machines other than yours." msgstr "Vous n'avez pas le droit de voir d'autres machines que les vôtres." -#: models.py:1252 +#: models.py:1282 msgid "Can view an IPv6 addresses list object" msgstr "Peut voir un objet list d'adresses IPv6" -#: models.py:1253 +#: models.py:1283 msgid "Can change the SLAAC value of an IPv6 addresses list" msgstr "Peut modifier la valeur SLAAC d'une liste d'adresses IPv6" -#: models.py:1256 +#: models.py:1286 msgid "IPv6 addresses list" msgstr "Liste d'adresses IPv6" -#: models.py:1257 +#: models.py:1287 msgid "IPv6 addresses lists" msgstr "Listes d'adresses IPv6" -#: models.py:1269 models.py:1480 +#: models.py:1299 models.py:1513 msgid "Nonexistent interface." msgstr "Interface inexistante." -#: models.py:1272 models.py:1487 +#: models.py:1302 models.py:1520 msgid "You don't have the right to add an alias to a machine of another user." msgstr "" "Vous n'avez pas le droit d'ajouter un alias à une machine d'un autre " "utilisateur." -#: models.py:1280 +#: models.py:1310 msgid "Permission required to change the SLAAC value of an IPv6 address" msgstr "Permission requise pour changer la valeur SLAAC d'une adresse IPv6." -#: models.py:1352 +#: models.py:1382 msgid "A SLAAC IP address is already registered." msgstr "Une adresse IP SLAAC est déjà enregistrée." -#: models.py:1357 +#: models.py:1390 msgid "" "The v6 prefix is incorrect and doesn't match the type associated with the " "machine." @@ -579,207 +616,207 @@ msgstr "" "Le préfixe v6 est incorrect et ne correspond pas au type associé à la " "machine." -#: models.py:1383 +#: models.py:1416 msgid "Mandatory and unique, must not contain dots." msgstr "Obligatoire et unique, ne doit pas contenir de points." -#: models.py:1397 +#: models.py:1430 msgid "Can view a domain object" msgstr "Peut voir un objet domaine" -#: models.py:1399 +#: models.py:1432 msgid "domain" msgstr "domaine" -#: models.py:1400 +#: models.py:1433 msgid "domains" msgstr "domaines" -#: models.py:1422 +#: models.py:1455 msgid "You can't create a both A and CNAME record." msgstr "Vous ne pouvez pas créer un enregistrement à la fois A et CNAME." -#: models.py:1425 +#: models.py:1458 msgid "You can't create a CNAME record pointing to itself." msgstr "Vous ne pouvez pas créer un enregistrement CNAME vers lui-même." -#: models.py:1433 +#: models.py:1466 #, python-format msgid "The domain name %s is too long (over 63 characters)." msgstr "Le nom de domaine %s est trop long (plus de 63 caractères)." -#: models.py:1436 +#: models.py:1469 #, python-format msgid "The domain name %s contains forbidden characters." msgstr "Le nom de domaine %s contient des caractères interdits." -#: models.py:1454 +#: models.py:1487 msgid "Invalid extension." msgstr "Extension invalide." -#: models.py:1495 +#: models.py:1528 #, python-format msgid "" "You reached the maximum number of alias that you are allowed to create " "yourself (%s). " msgstr "" -"Vous avez atteint le nombre maximal d'alias que vous pouvez créer vous-mêmes " +"Vous avez atteint le nombre maximal d'alias que vous pouvez créer vous-même " "(%s)." -#: models.py:1508 +#: models.py:1541 msgid "You don't have the right to edit an alias of a machine of another user." msgstr "" "Vous n'avez pas le droit de modifier un alias d'une machine d'un autre " "utilisateur." -#: models.py:1520 +#: models.py:1553 msgid "" "You don't have the right to delete an alias of a machine of another user." msgstr "" "Vous n'avez pas le droit de supprimer un alias d'une machine d'un autre " "utilisateur." -#: models.py:1548 +#: models.py:1581 msgid "Can view an IPv4 addresses list object" msgstr "Peut voir un object liste d'adresses IPv4" -#: models.py:1550 +#: models.py:1583 msgid "IPv4 addresses list" msgstr "Liste d'adresses IPv4" -#: models.py:1551 +#: models.py:1584 msgid "IPv4 addresses lists" msgstr "Listes d'adresses IPv4" -#: models.py:1562 +#: models.py:1595 msgid "The IPv4 address and the range of the IP type don't match." msgstr "L'adresse IPv4 et la plage du type d'IP ne correspondent pas." -#: models.py:1580 +#: models.py:1613 msgid "DHCP server" msgstr "Serveur DHCP" -#: models.py:1581 +#: models.py:1614 msgid "Switches configuration server" msgstr "Serveur de configuration des commutateurs réseau" -#: models.py:1582 +#: models.py:1615 msgid "Recursive DNS server" msgstr "Serveur DNS récursif" -#: models.py:1583 +#: models.py:1616 msgid "NTP server" msgstr "Serveur NTP" -#: models.py:1584 +#: models.py:1617 msgid "RADIUS server" msgstr "Serveur RADIUS" -#: models.py:1585 +#: models.py:1618 msgid "Log server" msgstr "Serveur log" -#: models.py:1586 +#: models.py:1619 msgid "LDAP master server" msgstr "Serveur LDAP maître" -#: models.py:1587 +#: models.py:1620 msgid "LDAP backup server" msgstr "Serveur LDAP de secours" -#: models.py:1588 +#: models.py:1621 msgid "SMTP server" msgstr "Serveur SMTP" -#: models.py:1589 +#: models.py:1622 msgid "postgreSQL server" msgstr "Serveur postgreSQL" -#: models.py:1590 +#: models.py:1623 msgid "mySQL server" msgstr "Serveur mySQL" -#: models.py:1591 +#: models.py:1624 msgid "SQL client" msgstr "Client SQL" -#: models.py:1592 +#: models.py:1625 msgid "Gateway" msgstr "Passerelle" -#: models.py:1606 +#: models.py:1639 msgid "Can view a role object" msgstr "Peut voir un objet rôle" -#: models.py:1608 +#: models.py:1641 msgid "server role" msgstr "rôle de serveur" -#: models.py:1609 +#: models.py:1642 msgid "server roles" msgstr "rôles de serveur" -#: models.py:1650 +#: models.py:1676 msgid "Minimal time before regeneration of the service." msgstr "Temps minimal avant régénération du service." -#: models.py:1654 +#: models.py:1680 msgid "Maximal time before regeneration of the service." msgstr "Temps maximal avant régénération du service." -#: models.py:1660 +#: models.py:1686 msgid "Can view a service object" msgstr "Peut voir un objet service" -#: models.py:1662 +#: models.py:1688 msgid "service to generate (DHCP, DNS, ...)" msgstr "service à générer (DHCP, DNS, ...)" -#: models.py:1663 +#: models.py:1689 msgid "services to generate (DHCP, DNS, ...)" msgstr "services à générer (DHCP, DNS, ...)" -#: models.py:1709 +#: models.py:1735 msgid "Can view a service server link object" msgstr "Peut voir un objet lien service serveur" -#: models.py:1711 +#: models.py:1737 msgid "link between service and server" msgstr "lien entre service et serveur" -#: models.py:1712 +#: models.py:1738 msgid "links between service and server" msgstr "liens entre service et serveur" -#: models.py:1754 +#: models.py:1780 msgid "Name of the ports configuration" msgstr "Nom de la configuration de ports" -#: models.py:1760 +#: models.py:1786 msgid "Can view a ports opening list object" msgstr "Peut voir un objet liste d'ouverture de ports" -#: models.py:1763 +#: models.py:1789 msgid "ports opening list" msgstr "liste d'ouverture de ports" -#: models.py:1764 +#: models.py:1790 msgid "ports opening lists" msgstr "listes d'ouverture de ports" -#: models.py:1773 +#: models.py:1799 msgid "You don't have the right to delete a ports opening list." msgstr "Vous n'avez pas le droit de supprimer une liste d'ouverture de ports." -#: models.py:1776 +#: models.py:1802 msgid "This ports opening list is used." msgstr "Cette liste d'ouverture de ports est utilisée." -#: models.py:1849 +#: models.py:1875 msgid "ports opening" msgstr "ouverture de ports" -#: models.py:1850 +#: models.py:1876 msgid "ports openings" msgstr "ouvertures de ports" @@ -807,6 +844,10 @@ msgstr "Extension" msgid "'infra' right required" msgstr "droit 'infra' requis" +#: templates/machines/aff_extension.html:41 +msgid "DNSSEC" +msgstr "DNSSEC" + #: templates/machines/aff_iptype.html:38 msgid "IPv4 range" msgstr "Plage IPv4" @@ -851,43 +892,39 @@ msgstr "Adresse IP" msgid "Actions" msgstr "Actions" -#: templates/machines/aff_machines.html:53 -msgid "No name" -msgstr "Sans nom" - #: templates/machines/aff_machines.html:54 msgid "View the profile" msgstr "Voir le profil" -#: templates/machines/aff_machines.html:62 views.py:375 +#: templates/machines/aff_machines.html:62 views.py:374 msgid "Create an interface" msgstr "Créer une interface" -#: templates/machines/aff_machines.html:77 +#: templates/machines/aff_machines.html:79 msgid "Display the aliases" msgstr "Afficher les alias" -#: templates/machines/aff_machines.html:95 +#: templates/machines/aff_machines.html:99 msgid "Display the IPv6 address" msgstr "Afficher les adresses IPv6" -#: templates/machines/aff_machines.html:110 +#: templates/machines/aff_machines.html:116 msgid " Edit" msgstr " Modifier" -#: templates/machines/aff_machines.html:118 +#: templates/machines/aff_machines.html:124 msgid " Manage the aliases" msgstr " Gérer les alias" -#: templates/machines/aff_machines.html:126 +#: templates/machines/aff_machines.html:132 msgid " Manage the IPv6 addresses" msgstr " Gérer les adresses IPv6" -#: templates/machines/aff_machines.html:134 +#: templates/machines/aff_machines.html:140 msgid " Manage the SSH fingerprints" msgstr " Gérer les empreintes SSH" -#: templates/machines/aff_machines.html:142 +#: templates/machines/aff_machines.html:148 msgid " Manage the ports configuration" msgstr " Gérer les configuration de ports" @@ -906,7 +943,7 @@ msgstr "Priorité" #: templates/machines/aff_nas.html:33 templates/machines/aff_soa.html:32 #: templates/machines/aff_vlan.html:34 -#: templates/machines/index_portlist.html:18 +#: templates/machines/index_portlist.html:20 msgid "Name" msgstr "Nom" @@ -1019,18 +1056,10 @@ msgstr "Port" msgid "Target" msgstr "Cible" -#: templates/machines/aff_sshfp.html:31 -msgid "SSH public key" -msgstr "Clé publique SSH" - #: templates/machines/aff_sshfp.html:32 msgid "Algorithm used" msgstr "Algorithme utilisé" -#: templates/machines/aff_sshfp.html:33 templates/machines/aff_vlan.html:35 -msgid "Comment" -msgstr "Commentaire" - #: templates/machines/aff_vlan.html:33 msgid "ID" msgstr "ID" @@ -1040,8 +1069,8 @@ msgid "IP ranges" msgstr "Plages d'IP" #: templates/machines/delete.html:29 -msgid "Creation and editing of machines" -msgstr "Création et modification de machines" +msgid "Deletion of machines" +msgstr "Suppression de machines" #: templates/machines/delete.html:35 #, python-format @@ -1058,16 +1087,16 @@ msgstr "Confirmer" #: templates/machines/edit_portlist.html:29 templates/machines/index.html:29 #: templates/machines/index.html:32 templates/machines/index_alias.html:29 -#: templates/machines/index_extension.html:31 -#: templates/machines/index_iptype.html:31 +#: templates/machines/index_extension.html:30 +#: templates/machines/index_iptype.html:30 #: templates/machines/index_ipv6.html:30 #: templates/machines/index_machinetype.html:31 #: templates/machines/index_nas.html:31 #: templates/machines/index_portlist.html:8 -#: templates/machines/index_portlist.html:23 +#: templates/machines/index_portlist.html:25 #: templates/machines/index_role.html:30 #: templates/machines/index_service.html:30 -#: templates/machines/index_sshfp.html:28 templates/machines/index_vlan.html:31 +#: templates/machines/index_sshfp.html:28 templates/machines/index_vlan.html:30 #: templates/machines/machine.html:31 templates/machines/sidebar.html:33 msgid "Machines" msgstr "Machines" @@ -1084,99 +1113,99 @@ msgstr "Créer ou modifier" msgid "List of the aliases of the interface" msgstr "Liste des alias de l'interface" -#: templates/machines/index_alias.html:33 +#: templates/machines/index_alias.html:34 msgid " Add an alias" msgstr " Ajouter un alias" -#: templates/machines/index_alias.html:34 +#: templates/machines/index_alias.html:36 msgid " Delete one or several aliases" msgstr " Supprimer un ou plusieurs alias" -#: templates/machines/index_extension.html:34 +#: templates/machines/index_extension.html:33 msgid "List of extensions" msgstr "Liste des extensions" -#: templates/machines/index_extension.html:36 +#: templates/machines/index_extension.html:37 msgid " Add an extension" msgstr " Ajouter une extension" -#: templates/machines/index_extension.html:38 +#: templates/machines/index_extension.html:40 msgid " Delete one or several extensions" msgstr " Supprimer une ou plusieurs extensions" -#: templates/machines/index_extension.html:41 +#: templates/machines/index_extension.html:44 msgid "List of SOA records" msgstr "Liste des enregistrements SOA" -#: templates/machines/index_extension.html:43 +#: templates/machines/index_extension.html:47 msgid " Add an SOA record" msgstr " Ajouter un enregistrement SOA" -#: templates/machines/index_extension.html:45 +#: templates/machines/index_extension.html:51 msgid " Delete one or several SOA records" msgstr " Supprimer un ou plusieurs enregistrements SOA" -#: templates/machines/index_extension.html:48 +#: templates/machines/index_extension.html:55 msgid "List of MX records" msgstr "Liste des enregistrements MX" -#: templates/machines/index_extension.html:50 +#: templates/machines/index_extension.html:58 msgid " Add an MX record" msgstr " Ajouter un enregistrement MX" -#: templates/machines/index_extension.html:52 +#: templates/machines/index_extension.html:62 msgid " Delete one or several MX records" msgstr " Supprimer un ou plusieurs enregistrements MX" -#: templates/machines/index_extension.html:55 +#: templates/machines/index_extension.html:66 msgid "List of NS records" msgstr "Liste des enregistrements NS" -#: templates/machines/index_extension.html:57 +#: templates/machines/index_extension.html:69 msgid " Add an NS record" msgstr " Ajouter un enregistrement NS" -#: templates/machines/index_extension.html:59 +#: templates/machines/index_extension.html:73 msgid " Delete one or several NS records" msgstr " Supprimer un ou plusieurs enregistrements NS" -#: templates/machines/index_extension.html:62 +#: templates/machines/index_extension.html:77 msgid "List of TXT records" msgstr "Liste des enregistrements TXT" -#: templates/machines/index_extension.html:64 +#: templates/machines/index_extension.html:80 msgid " Add a TXT record" msgstr " Ajouter un enregistrement TXT" -#: templates/machines/index_extension.html:66 +#: templates/machines/index_extension.html:84 msgid " Delete one or several TXT records" msgstr " Supprimer un ou plusieurs enregistrements TXT" -#: templates/machines/index_extension.html:69 +#: templates/machines/index_extension.html:88 msgid "List of DNAME records" msgstr "Liste des enregistrements DNAME" -#: templates/machines/index_extension.html:72 +#: templates/machines/index_extension.html:91 msgid " Add a DNAME record" msgstr " Ajouter un enregistrement DNAME" -#: templates/machines/index_extension.html:76 +#: templates/machines/index_extension.html:95 msgid " Delete one or several DNAME records" msgstr " Supprimer un ou plusieurs enregistrements DNAME" -#: templates/machines/index_extension.html:80 +#: templates/machines/index_extension.html:99 msgid "List of SRV records" msgstr "Liste des enregistrements SRV" -#: templates/machines/index_extension.html:82 +#: templates/machines/index_extension.html:102 msgid " Add an SRV record" msgstr " Ajouter un enregistrement SRV" -#: templates/machines/index_extension.html:84 +#: templates/machines/index_extension.html:106 msgid " Delete one or several SRV records" msgstr " Supprimer un ou plusieurs enregistrements SRV" -#: templates/machines/index_iptype.html:34 +#: templates/machines/index_iptype.html:33 msgid "List of IP types" msgstr "Liste des types d'IP" @@ -1184,7 +1213,7 @@ msgstr "Liste des types d'IP" msgid " Add an IP type" msgstr " Ajouter un type d'IP" -#: templates/machines/index_iptype.html:38 +#: templates/machines/index_iptype.html:40 msgid " Delete one or several IP types" msgstr " Supprimer un ou plusieurs types d'IP" @@ -1192,7 +1221,7 @@ msgstr " Supprimer un ou plusieurs types d'IP" msgid "List of the IPv6 addresses of the interface" msgstr "Liste des adresses IPv6 de l'interface" -#: templates/machines/index_ipv6.html:35 +#: templates/machines/index_ipv6.html:36 msgid " Add an IPv6 address" msgstr " Ajouter une adresse IPv6" @@ -1200,11 +1229,11 @@ msgstr " Ajouter une adresse IPv6" msgid "List of machine types" msgstr "Liste des types de machine" -#: templates/machines/index_machinetype.html:36 +#: templates/machines/index_machinetype.html:37 msgid " Add a machine type" msgstr " Ajouter un type de machine" -#: templates/machines/index_machinetype.html:38 +#: templates/machines/index_machinetype.html:41 msgid " Delete one or several machine types" msgstr " Supprimer un ou plusieurs types de machine" @@ -1223,11 +1252,11 @@ msgstr "" "type de machine à assigner aux machines en fonction du type de dispositif " "NAS." -#: templates/machines/index_nas.html:37 +#: templates/machines/index_nas.html:38 msgid " Add a NAS device type" msgstr " Ajouter un type de dispositif NAS" -#: templates/machines/index_nas.html:39 +#: templates/machines/index_nas.html:42 msgid " Delete one or several NAS device types" msgstr " Supprimer un ou plusieurs types de dispositif NAS" @@ -1235,23 +1264,23 @@ msgstr " Supprimer un ou plusieurs types de dispositif NAS" msgid "List of ports configurations" msgstr "Liste des configurations de ports" -#: templates/machines/index_portlist.html:13 +#: templates/machines/index_portlist.html:14 msgid " Add a configuration" msgstr " Ajouter une configuration" -#: templates/machines/index_portlist.html:19 +#: templates/machines/index_portlist.html:21 msgid "TCP (input)" msgstr "TCP (entrée)" -#: templates/machines/index_portlist.html:20 +#: templates/machines/index_portlist.html:22 msgid "TCP (output)" msgstr "TCP (sortie)" -#: templates/machines/index_portlist.html:21 +#: templates/machines/index_portlist.html:23 msgid "UDP (input)" msgstr "UDP (entrée)" -#: templates/machines/index_portlist.html:22 +#: templates/machines/index_portlist.html:24 msgid "UDP (output)" msgstr "UDP (sortie)" @@ -1259,11 +1288,11 @@ msgstr "UDP (sortie)" msgid "List of roles" msgstr "Liste des rôles" -#: templates/machines/index_role.html:35 +#: templates/machines/index_role.html:36 msgid " Add a role" msgstr " Ajouter un rôle" -#: templates/machines/index_role.html:37 +#: templates/machines/index_role.html:39 msgid " Delete one or several roles" msgstr " Supprimer un ou plusieurs rôles" @@ -1271,15 +1300,15 @@ msgstr " Supprimer un ou plusieurs rôles" msgid "List of services" msgstr "Liste des services" -#: templates/machines/index_service.html:35 +#: templates/machines/index_service.html:36 msgid " Add a service" msgstr " Ajouter un service" -#: templates/machines/index_service.html:37 +#: templates/machines/index_service.html:39 msgid " Delete one or several services" msgstr " Supprimer un ou plusieurs services" -#: templates/machines/index_service.html:39 +#: templates/machines/index_service.html:42 msgid "States of servers" msgstr "États des serveurs" @@ -1291,7 +1320,7 @@ msgstr "Empreintes SSH" msgid " Add an SSH fingerprint" msgstr " Ajouter une empreinte SSH" -#: templates/machines/index_vlan.html:34 +#: templates/machines/index_vlan.html:33 msgid "List of VLANs" msgstr "Liste des VLANs" @@ -1299,7 +1328,7 @@ msgstr "Liste des VLANs" msgid " Add a VLAN" msgstr " Ajouter un VLAN" -#: templates/machines/index_vlan.html:38 +#: templates/machines/index_vlan.html:39 msgid " Delete one or several VLANs" msgstr " Supprimer un ou plusieurs VLANs" @@ -1343,90 +1372,90 @@ msgstr "Rôles de serveur" msgid "Ports openings" msgstr "Ouvertures de ports" -#: views.py:156 -msgid "Select a machine type first.}," -msgstr "Sélectionnez un type de machine d'abord.}," +#: views.py:155 +msgid "Select a machine type first." +msgstr "Sélectionnez un type de machine d'abord." -#: views.py:258 +#: views.py:257 msgid "The machine was created." msgstr "La machine a été créée." -#: views.py:270 +#: views.py:269 msgid "Create a machine" msgstr "Créer une machine" -#: views.py:310 +#: views.py:309 msgid "The machine was edited." msgstr "La machine a été modifiée." -#: views.py:322 views.py:446 views.py:512 views.py:568 views.py:630 -#: views.py:691 views.py:749 views.py:806 views.py:863 views.py:919 +#: views.py:321 views.py:445 views.py:511 views.py:567 views.py:629 +#: views.py:690 views.py:748 views.py:805 views.py:862 views.py:919 #: views.py:977 views.py:1034 views.py:1106 views.py:1169 views.py:1226 #: views.py:1292 views.py:1349 msgid "Edit" msgstr "Modifier" -#: views.py:335 +#: views.py:334 msgid "The machine was deleted." msgstr "La machine a été supprimée." -#: views.py:364 +#: views.py:363 msgid "The interface was created." msgstr "L'interface a été créée." -#: views.py:391 +#: views.py:390 msgid "The interface was deleted." msgstr "L'interface a été supprimée." -#: views.py:416 +#: views.py:415 msgid "The IPv6 addresses list was created." msgstr "La liste d'adresses IPv6 a été créée." -#: views.py:422 +#: views.py:421 msgid "Create an IPv6 addresses list" msgstr "Créer une liste d'adresses IPv6" -#: views.py:440 +#: views.py:439 msgid "The IPv6 addresses list was edited." msgstr "La liste d'adresses IPv6 a été modifiée." -#: views.py:459 +#: views.py:458 msgid "The IPv6 addresses list was deleted." msgstr "La liste d'adresses IPv6 a été supprimée." -#: views.py:483 +#: views.py:482 msgid "The SSHFP record was created." msgstr "L'enregistrement SSHFP a été créé." -#: views.py:489 +#: views.py:488 msgid "Create a SSHFP record" msgstr "Créer un enregistrement SSHFP" -#: views.py:506 +#: views.py:505 msgid "The SSHFP record was edited." msgstr "L'enregistrement SSHFP a été modifié." -#: views.py:525 +#: views.py:524 msgid "The SSHFP record was deleted." msgstr "L'enregistrement SSHFP a été supprimé." -#: views.py:546 +#: views.py:545 msgid "The IP type was created." msgstr "Le type d'IP a été créé." -#: views.py:549 +#: views.py:548 msgid "Create an IP type" msgstr "Créer un type d'IP" -#: views.py:565 +#: views.py:564 msgid "The IP type was edited." msgstr "Le type d'IP a été modifié." -#: views.py:584 +#: views.py:583 msgid "The IP type was deleted." msgstr "Le type d'IP a été supprimé." -#: views.py:588 +#: views.py:587 #, python-format msgid "" "The IP type %s is assigned to at least one machine, you can't delete it." @@ -1434,29 +1463,29 @@ msgstr "" "Le type d'IP %s est assigné à au moins une machine, vous ne pouvez pas le " "supprimer." -#: views.py:593 views.py:655 views.py:716 views.py:773 views.py:830 -#: views.py:887 views.py:944 views.py:1001 views.py:1058 views.py:1136 +#: views.py:592 views.py:654 views.py:715 views.py:772 views.py:829 +#: views.py:886 views.py:944 views.py:1001 views.py:1058 views.py:1136 #: views.py:1193 views.py:1250 views.py:1316 views.py:1373 msgid "Delete" msgstr "Supprimer" -#: views.py:606 +#: views.py:605 msgid "The machine type was created." msgstr "Le type de machine a été créé." -#: views.py:609 +#: views.py:608 msgid "Create a machine type" msgstr "Créer un type de machine" -#: views.py:627 +#: views.py:626 msgid "The machine type was edited." msgstr "Le type de machine a été modifié." -#: views.py:646 +#: views.py:645 msgid "The machine type was deleted." msgstr "Le type de machine a été supprimé." -#: views.py:650 +#: views.py:649 #, python-format msgid "" "The machine type %s is assigned to at least one machine, you can't delete it." @@ -1464,23 +1493,23 @@ msgstr "" "Le type de machine %s est assigné à au moins un machine, vous ne pouvez pas " "le supprimer." -#: views.py:668 +#: views.py:667 msgid "The extension was created." msgstr "L'extension a été créée." -#: views.py:671 +#: views.py:670 msgid "Create an extension" msgstr "Créer une extension" -#: views.py:688 +#: views.py:687 msgid "The extension was edited." msgstr "L'extension a été modifiée." -#: views.py:707 +#: views.py:706 msgid "The extension was deleted." msgstr "L'extension a été supprimée." -#: views.py:711 +#: views.py:710 #, python-format msgid "" "The extension %s is assigned to at least one machine type, you can't delete " @@ -1489,65 +1518,65 @@ msgstr "" "L'extension %s est assignée à au moins un type de machine, vous ne pouvez " "pas le supprimer." -#: views.py:729 +#: views.py:728 msgid "The SOA record was created." msgstr "L'enregistrement SOA a été créé." -#: views.py:732 +#: views.py:731 msgid "Create an SOA record" msgstr "Créer un enregistrement SOA" -#: views.py:746 +#: views.py:745 msgid "The SOA record was edited." msgstr "L'enregistrement SOA a été modifié." -#: views.py:765 +#: views.py:764 msgid "The SOA record was deleted." msgstr "L'enregistrement SOA a été supprimé." -#: views.py:769 +#: views.py:768 #, python-format msgid "Error: the SOA record %s can't be deleted." msgstr "Erreur : l'enregistrement SOA %s ne peut pas être supprimé." -#: views.py:786 +#: views.py:785 msgid "The MX record was created." msgstr "L'enregistrement MX a été créé." -#: views.py:789 +#: views.py:788 msgid "Create an MX record" msgstr "Créer un enregistrement MX" -#: views.py:803 +#: views.py:802 msgid "The MX record was edited." msgstr "L'enregistrement MX a été modifié." -#: views.py:822 +#: views.py:821 msgid "The MX record was deleted." msgstr "L'enregistrement MX a été supprimé." -#: views.py:826 +#: views.py:825 #, python-format msgid "Error: the MX record %s can't be deleted." msgstr "Erreur : l'enregistrement MX %s ne peut pas être supprimé." -#: views.py:843 +#: views.py:842 msgid "The NS record was created." msgstr "L'enregistrement NS a été créé." -#: views.py:846 +#: views.py:845 msgid "Create an NS record" msgstr "Créer un enregistrement NS" -#: views.py:860 +#: views.py:859 msgid "The NS record was edited." msgstr "L'enregistrement NS a été modifié." -#: views.py:879 +#: views.py:878 msgid "The NS record was deleted." msgstr "L'enregistrement NS a été supprimé." -#: views.py:883 +#: views.py:882 #, python-format msgid "Error: the NS record %s can't be deleted." msgstr "Erreur : l'enregistrement NS %s ne peut pas être supprimé." diff --git a/machines/migrations/0101_auto_20190108_1623.py b/machines/migrations/0101_auto_20190108_1623.py new file mode 100644 index 00000000..856721ac --- /dev/null +++ b/machines/migrations/0101_auto_20190108_1623.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.7 on 2019-01-08 22:23 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('machines', '0100_auto_20190102_1753'), + ] + + operations = [ + migrations.AlterModelOptions( + name='ouvertureport', + options={'verbose_name': 'ports opening', 'verbose_name_plural': 'ports openings'}, + ), + migrations.AlterField( + model_name='nas', + name='port_access_mode', + field=models.CharField(choices=[('802.1X', '802.1X'), ('Mac-address', 'MAC-address')], default='802.1X', max_length=32), + ), + migrations.AlterField( + model_name='vlan', + name='igmp', + field=models.BooleanField(default=False, help_text='v4 multicast management'), + ), + migrations.AlterField( + model_name='vlan', + name='mld', + field=models.BooleanField(default=False, help_text='v6 multicast management'), + ), + ] diff --git a/machines/models.py b/machines/models.py index a4685676..600114a3 100644 --- a/machines/models.py +++ b/machines/models.py @@ -201,7 +201,7 @@ class Machine(RevMixin, FieldPermissionModelMixin, models.Model): if interfaces_set: return str(interfaces_set.domain.name) else: - return "None" + return _("No name") @cached_property def complete_name(self): @@ -340,7 +340,7 @@ class IpType(RevMixin, AclMixin, models.Model): ("use_all_iptype", _("Can use all IP types")), ) verbose_name = _("IP type") - verbose_name_plural = "IP types" + verbose_name_plural = _("IP types") @cached_property def ip_range(self): @@ -534,11 +534,11 @@ class Vlan(RevMixin, AclMixin, models.Model): dhcpv6_snooping = models.BooleanField(default=False) igmp = models.BooleanField( default=False, - help_text="Gestion multicast v4" + help_text=_("v4 multicast management") ) mld = models.BooleanField( default=False, - help_text="Gestion multicast v6" + help_text=_("v6 multicast management") ) class Meta: @@ -559,7 +559,7 @@ class Nas(RevMixin, AclMixin, models.Model): default_mode = '802.1X' AUTH = ( ('802.1X', '802.1X'), - ('Mac-address', 'Mac-address'), + ('Mac-address', _("MAC-address")), ) name = models.CharField(max_length=255, unique=True) @@ -666,7 +666,7 @@ class SOA(RevMixin, AclMixin, models.Model): utilisée dans les migrations de la BDD. """ return cls.objects.get_or_create( name=_("SOA to edit"), - mail="postmaser@example.com" + mail="postmaster@example.com" )[0].pk @@ -934,7 +934,7 @@ class SshFp(RevMixin, AclMixin, models.Model): machine = models.ForeignKey('Machine', on_delete=models.CASCADE) pub_key_entry = models.TextField( - help_text="SSH public key", + help_text=_("SSH public key"), max_length=2048 ) algo = models.CharField( @@ -942,7 +942,7 @@ class SshFp(RevMixin, AclMixin, models.Model): max_length=32 ) comment = models.CharField( - help_text="Comment", + help_text=_("Comment"), max_length=255, null=True, blank=True @@ -1872,7 +1872,8 @@ class OuverturePort(RevMixin, AclMixin, models.Model): ) class Meta: - verbose_name = _("ports openings") + verbose_name = _("ports opening") + verbose_name_plural = _("ports openings") def __str__(self): if self.begin == self.end: diff --git a/machines/templates/machines/aff_alias.html b/machines/templates/machines/aff_alias.html index 5a1bc8f8..ee8580b0 100644 --- a/machines/templates/machines/aff_alias.html +++ b/machines/templates/machines/aff_alias.html @@ -38,7 +38,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {{ alias }} {% can_edit alias %} - {% include 'buttons/edit.html' with href='machines:edit-alias' id=alias.id %} + {% include 'buttons/edit.html' with href='machines:edit-alias' id=alias.id %} {% acl_end %} {% history_button alias %} diff --git a/machines/templates/machines/aff_dname.html b/machines/templates/machines/aff_dname.html index 66883057..6d07a7bc 100644 --- a/machines/templates/machines/aff_dname.html +++ b/machines/templates/machines/aff_dname.html @@ -38,7 +38,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {{ dname.dns_entry }} {% can_edit dname %} - {% include 'buttons/edit.html' with href='machines:edit-dname' id=dname.id %} + {% include 'buttons/edit.html' with href='machines:edit-dname' id=dname.id %} {% acl_end %} {% history_button dname %} diff --git a/machines/templates/machines/aff_extension.html b/machines/templates/machines/aff_extension.html index fae4e25b..1083b1b1 100644 --- a/machines/templates/machines/aff_extension.html +++ b/machines/templates/machines/aff_extension.html @@ -54,7 +54,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {{ extension.dnssec|tick }} {% can_edit extension %} - {% include 'buttons/edit.html' with href='machines:edit-extension' id=extension.id %} + {% include 'buttons/edit.html' with href='machines:edit-extension' id=extension.id %} {% acl_end %} {% history_button extension %} diff --git a/machines/templates/machines/aff_iptype.html b/machines/templates/machines/aff_iptype.html index b408bfb1..c30c0c73 100644 --- a/machines/templates/machines/aff_iptype.html +++ b/machines/templates/machines/aff_iptype.html @@ -56,7 +56,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {{ type.ouverture_ports }} {% can_edit type %} - {% include 'buttons/edit.html' with href='machines:edit-iptype' id=type.id %} + {% include 'buttons/edit.html' with href='machines:edit-iptype' id=type.id %} {% acl_end %} {% history_button type %} diff --git a/machines/templates/machines/aff_ipv6.html b/machines/templates/machines/aff_ipv6.html index e8e4a48e..f67bf4c3 100644 --- a/machines/templates/machines/aff_ipv6.html +++ b/machines/templates/machines/aff_ipv6.html @@ -40,10 +40,10 @@ with this program; if not, write to the Free Software Foundation, Inc., {{ ipv6.slaac_ip }} {% can_edit ipv6 %} - {% include 'buttons/edit.html' with href='machines:edit-ipv6list' id=ipv6.id %} + {% include 'buttons/edit.html' with href='machines:edit-ipv6list' id=ipv6.id %} {% acl_end %} {% can_delete ipv6 %} - {% include 'buttons/suppr.html' with href='machines:del-ipv6list' id=ipv6.id %} + {% include 'buttons/suppr.html' with href='machines:del-ipv6list' id=ipv6.id %} {% acl_end %} {% history_button ipv6 %} diff --git a/machines/templates/machines/aff_machines.html b/machines/templates/machines/aff_machines.html index d5a83ed3..4363cd6e 100644 --- a/machines/templates/machines/aff_machines.html +++ b/machines/templates/machines/aff_machines.html @@ -28,7 +28,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
{% if machines_list.paginator %} - {% include "pagination.html" with list=machines_list go_to_id="machines" %} + {% include 'pagination.html' with list=machines_list go_to_id="machines" %} {% endif %} @@ -41,7 +41,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans "DNS name" as tr_dns_name %} - + @@ -52,19 +52,19 @@ with this program; if not, write to the Free Software Foundation, Inc., @@ -153,7 +153,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% history_button interface %} {% can_delete interface %} - {% include 'buttons/suppr.html' with href='machines:del-interface' id=interface.id %} + {% include 'buttons/suppr.html' with href='machines:del-interface' id=interface.id %} {% acl_end %} @@ -215,6 +215,6 @@ with this program; if not, write to the Free Software Foundation, Inc., {% if machines_list.paginator %} - {% include "pagination.html" with list=machines_list go_to_id="machines" %} + {% include 'pagination.html' with list=machines_list go_to_id="machines" %} {% endif %} diff --git a/machines/templates/machines/aff_machinetype.html b/machines/templates/machines/aff_machinetype.html index a55a5370..ebd77b4f 100644 --- a/machines/templates/machines/aff_machinetype.html +++ b/machines/templates/machines/aff_machinetype.html @@ -40,7 +40,7 @@ with this program; if not, write to the Free Software Foundation, Inc., diff --git a/machines/templates/machines/aff_mx.html b/machines/templates/machines/aff_mx.html index 4a50724b..b10d4eff 100644 --- a/machines/templates/machines/aff_mx.html +++ b/machines/templates/machines/aff_mx.html @@ -42,7 +42,7 @@ with this program; if not, write to the Free Software Foundation, Inc., diff --git a/machines/templates/machines/aff_nas.html b/machines/templates/machines/aff_nas.html index 84013f90..7a98a7f4 100644 --- a/machines/templates/machines/aff_nas.html +++ b/machines/templates/machines/aff_nas.html @@ -47,7 +47,7 @@ with this program; if not, write to the Free Software Foundation, Inc., diff --git a/machines/templates/machines/aff_ns.html b/machines/templates/machines/aff_ns.html index 2968607a..dda578f3 100644 --- a/machines/templates/machines/aff_ns.html +++ b/machines/templates/machines/aff_ns.html @@ -40,7 +40,7 @@ with this program; if not, write to the Free Software Foundation, Inc., diff --git a/machines/templates/machines/aff_role.html b/machines/templates/machines/aff_role.html index b6303917..6f285c89 100644 --- a/machines/templates/machines/aff_role.html +++ b/machines/templates/machines/aff_role.html @@ -44,7 +44,7 @@ with this program; if not, write to the Free Software Foundation, Inc., diff --git a/machines/templates/machines/aff_service.html b/machines/templates/machines/aff_service.html index 102ceead..d3eb16ba 100644 --- a/machines/templates/machines/aff_service.html +++ b/machines/templates/machines/aff_service.html @@ -47,7 +47,7 @@ with this program; if not, write to the Free Software Foundation, Inc., class="fa fa-sync"> diff --git a/machines/templates/machines/aff_soa.html b/machines/templates/machines/aff_soa.html index 9199533e..50a4a5c3 100644 --- a/machines/templates/machines/aff_soa.html +++ b/machines/templates/machines/aff_soa.html @@ -48,7 +48,7 @@ with this program; if not, write to the Free Software Foundation, Inc., diff --git a/machines/templates/machines/aff_srv.html b/machines/templates/machines/aff_srv.html index 71fb78a2..1a699b49 100644 --- a/machines/templates/machines/aff_srv.html +++ b/machines/templates/machines/aff_srv.html @@ -52,7 +52,7 @@ with this program; if not, write to the Free Software Foundation, Inc., diff --git a/machines/templates/machines/aff_sshfp.html b/machines/templates/machines/aff_sshfp.html index 08d1df13..ca88d0f4 100644 --- a/machines/templates/machines/aff_sshfp.html +++ b/machines/templates/machines/aff_sshfp.html @@ -41,11 +41,11 @@ with this program; if not, write to the Free Software Foundation, Inc., diff --git a/machines/templates/machines/aff_txt.html b/machines/templates/machines/aff_txt.html index 456f7343..3da268ca 100644 --- a/machines/templates/machines/aff_txt.html +++ b/machines/templates/machines/aff_txt.html @@ -40,7 +40,7 @@ with this program; if not, write to the Free Software Foundation, Inc., diff --git a/machines/templates/machines/aff_vlan.html b/machines/templates/machines/aff_vlan.html index 3ccbfcb0..0b10262b 100644 --- a/machines/templates/machines/aff_vlan.html +++ b/machines/templates/machines/aff_vlan.html @@ -45,7 +45,7 @@ with this program; if not, write to the Free Software Foundation, Inc., diff --git a/machines/templates/machines/delete.html b/machines/templates/machines/delete.html index f009f905..59ba2102 100644 --- a/machines/templates/machines/delete.html +++ b/machines/templates/machines/delete.html @@ -1,4 +1,4 @@ -{% extends "machines/sidebar.html" %} +{% extends 'machines/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -26,14 +26,13 @@ with this program; if not, write to the Free Software Foundation, Inc., {% load bootstrap3 %} {% load i18n %} -{% block title %}{% trans "Creation and editing of machines" %}{% endblock %} +{% block title %}{% trans "Deletion of machines" %}{% endblock %} {% block content %} {% csrf_token %} -

{% blocktrans %}Warning: are you sure you want to delete this object {{ objet_name }} ( {{ objet }} - )?{% endblocktrans %}

+

{% blocktrans %}Warning: are you sure you want to delete this object {{ objet_name }} ( {{ objet }} )?{% endblocktrans %}

{% trans "Confirm" as tr_confirm %} {% bootstrap_button tr_confirm button_type="submit" icon='trash' button_class='btn-danger' %} diff --git a/machines/templates/machines/edit_portlist.html b/machines/templates/machines/edit_portlist.html index a7aa6f04..fa9f771a 100644 --- a/machines/templates/machines/edit_portlist.html +++ b/machines/templates/machines/edit_portlist.html @@ -1,4 +1,4 @@ -{% extends "machines/sidebar.html" %} +{% extends 'machines/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en diff --git a/machines/templates/machines/index.html b/machines/templates/machines/index.html index ceef062c..3aad6d06 100644 --- a/machines/templates/machines/index.html +++ b/machines/templates/machines/index.html @@ -1,4 +1,4 @@ -{% extends "machines/sidebar.html" %} +{% extends 'machines/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -30,7 +30,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% block content %}

{% trans "Machines" %}

- {% include "machines/aff_machines.html" with machines_list=machines_list %} + {% include 'machines/aff_machines.html' with machines_list=machines_list %}


diff --git a/machines/templates/machines/index_alias.html b/machines/templates/machines/index_alias.html index a2ffe66b..7f392667 100644 --- a/machines/templates/machines/index_alias.html +++ b/machines/templates/machines/index_alias.html @@ -1,4 +1,4 @@ -{% extends "machines/sidebar.html" %} +{% extends 'machines/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -34,7 +34,7 @@ with this program; if not, write to the Free Software Foundation, Inc., class="fa fa-plus">{% trans " Add an alias" %}{% trans " Delete one or several aliases" %} - {% include "machines/aff_alias.html" with alias_list=alias_list %} + {% include 'machines/aff_alias.html' with alias_list=alias_list %}


diff --git a/machines/templates/machines/index_extension.html b/machines/templates/machines/index_extension.html index e689d479..636b314e 100644 --- a/machines/templates/machines/index_extension.html +++ b/machines/templates/machines/index_extension.html @@ -1,4 +1,4 @@ -{% extends "machines/sidebar.html" %} +{% extends 'machines/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -39,7 +39,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans " Delete one or several extensions" %} - {% include "machines/aff_extension.html" with extension_list=extension_list %} + {% include 'machines/aff_extension.html' with extension_list=extension_list %}

{% trans "List of SOA records" %}

{% can_create SOA %} @@ -50,7 +50,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans " Delete one or several SOA records" %} - {% include "machines/aff_soa.html" with soa_list=soa_list %} + {% include 'machines/aff_soa.html' with soa_list=soa_list %}

{% trans "List of MX records" %}

{% can_create Mx %} @@ -61,7 +61,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans " Delete one or several MX records" %} - {% include "machines/aff_mx.html" with mx_list=mx_list %} + {% include 'machines/aff_mx.html' with mx_list=mx_list %}

{% trans "List of NS records" %}

{% can_create Ns %} @@ -72,7 +72,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans " Delete one or several NS records" %} - {% include "machines/aff_ns.html" with ns_list=ns_list %} + {% include 'machines/aff_ns.html' with ns_list=ns_list %}

{% trans "List of TXT records" %}

{% can_create Txt %} @@ -83,7 +83,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans " Delete one or several TXT records" %} - {% include "machines/aff_txt.html" with txt_list=txt_list %} + {% include 'machines/aff_txt.html' with txt_list=txt_list %}

{% trans "List of DNAME records" %}

{% can_create DName %} @@ -94,7 +94,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans " Delete one or several DNAME records" %} - {% include "machines/aff_dname.html" with dname_list=dname_list %} + {% include 'machines/aff_dname.html' with dname_list=dname_list %}

{% trans "List of SRV records" %}

{% can_create Srv %} @@ -105,5 +105,5 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans " Delete one or several SRV records" %} - {% include "machines/aff_srv.html" with srv_list=srv_list %} + {% include 'machines/aff_srv.html' with srv_list=srv_list %} {% endblock %} diff --git a/machines/templates/machines/index_iptype.html b/machines/templates/machines/index_iptype.html index fea17993..7ffa8cf3 100644 --- a/machines/templates/machines/index_iptype.html +++ b/machines/templates/machines/index_iptype.html @@ -1,4 +1,4 @@ -{% extends "machines/sidebar.html" %} +{% extends 'machines/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -39,5 +39,5 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans " Delete one or several IP types" %} - {% include "machines/aff_iptype.html" with iptype_list=iptype_list %} + {% include 'machines/aff_iptype.html' with iptype_list=iptype_list %} {% endblock %} diff --git a/machines/templates/machines/index_ipv6.html b/machines/templates/machines/index_ipv6.html index 2ab2231e..98ea697a 100644 --- a/machines/templates/machines/index_ipv6.html +++ b/machines/templates/machines/index_ipv6.html @@ -1,4 +1,4 @@ -{% extends "machines/sidebar.html" %} +{% extends 'machines/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -36,7 +36,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans " Add an IPv6 address" %} {% acl_end %} - {% include "machines/aff_ipv6.html" with ipv6_list=ipv6_list %} + {% include 'machines/aff_ipv6.html' with ipv6_list=ipv6_list %}


diff --git a/machines/templates/machines/index_machinetype.html b/machines/templates/machines/index_machinetype.html index 5d184e29..407aef5b 100644 --- a/machines/templates/machines/index_machinetype.html +++ b/machines/templates/machines/index_machinetype.html @@ -1,4 +1,4 @@ -{% extends "machines/sidebar.html" %} +{% extends 'machines/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -40,7 +40,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans " Delete one or several machine types" %} - {% include "machines/aff_machinetype.html" with machinetype_list=machinetype_list %} + {% include 'machines/aff_machinetype.html' with machinetype_list=machinetype_list %}


diff --git a/machines/templates/machines/index_nas.html b/machines/templates/machines/index_nas.html index c4da9779..bb17395a 100644 --- a/machines/templates/machines/index_nas.html +++ b/machines/templates/machines/index_nas.html @@ -1,4 +1,4 @@ -{% extends "machines/sidebar.html" %} +{% extends 'machines/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -41,7 +41,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans " Delete one or several NAS device types" %} - {% include "machines/aff_nas.html" with nas_list=nas_list %} + {% include 'machines/aff_nas.html' with nas_list=nas_list %}


diff --git a/machines/templates/machines/index_portlist.html b/machines/templates/machines/index_portlist.html index c6659b65..c540478d 100644 --- a/machines/templates/machines/index_portlist.html +++ b/machines/templates/machines/index_portlist.html @@ -1,4 +1,4 @@ -{% extends "machines/sidebar.html" %} +{% extends 'machines/sidebar.html' %} {% load bootstrap3 %} diff --git a/machines/templates/machines/index_role.html b/machines/templates/machines/index_role.html index 3271bc43..38799aa5 100644 --- a/machines/templates/machines/index_role.html +++ b/machines/templates/machines/index_role.html @@ -1,4 +1,4 @@ -{% extends "machines/sidebar.html" %} +{% extends 'machines/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -37,5 +37,5 @@ with this program; if not, write to the Free Software Foundation, Inc., {% acl_end %} {% trans " Delete one or several roles" %} - {% include "machines/aff_role.html" with role_list=role_list %} + {% include 'machines/aff_role.html' with role_list=role_list %} {% endblock %} diff --git a/machines/templates/machines/index_service.html b/machines/templates/machines/index_service.html index a41c79c6..19244e71 100644 --- a/machines/templates/machines/index_service.html +++ b/machines/templates/machines/index_service.html @@ -1,4 +1,4 @@ -{% extends "machines/sidebar.html" %} +{% extends 'machines/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -37,8 +37,8 @@ with this program; if not, write to the Free Software Foundation, Inc., {% acl_end %} {% trans " Delete one or several services" %} - {% include "machines/aff_service.html" with service_list=service_list %} + {% include 'machines/aff_service.html' with service_list=service_list %}

{% trans "States of servers" %}

- {% include "machines/aff_servers.html" with servers_list=servers_list %} + {% include 'machines/aff_servers.html' with servers_list=servers_list %} {% endblock %} diff --git a/machines/templates/machines/index_sshfp.html b/machines/templates/machines/index_sshfp.html index 0233bac4..c1508eaf 100644 --- a/machines/templates/machines/index_sshfp.html +++ b/machines/templates/machines/index_sshfp.html @@ -1,4 +1,4 @@ -{% extends "machines/sidebar.html" %} +{% extends 'machines/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -34,5 +34,5 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans " Add an SSH fingerprint" %} {% acl_end %} - {% include "machines/aff_sshfp.html" with sshfp_list=sshfp_list %} + {% include 'machines/aff_sshfp.html' with sshfp_list=sshfp_list %} {% endblock %} diff --git a/machines/templates/machines/index_vlan.html b/machines/templates/machines/index_vlan.html index f34f3ebb..830cde65 100644 --- a/machines/templates/machines/index_vlan.html +++ b/machines/templates/machines/index_vlan.html @@ -1,4 +1,4 @@ -{% extends "machines/sidebar.html" %} +{% extends 'machines/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -37,5 +37,5 @@ with this program; if not, write to the Free Software Foundation, Inc., {% acl_end %} {% trans " Delete one or several VLANs" %} - {% include "machines/aff_vlan.html" with vlan_list=vlan_list %} + {% include 'machines/aff_vlan.html' with vlan_list=vlan_list %} {% endblock %} diff --git a/machines/templates/machines/machine.html b/machines/templates/machines/machine.html index 1e2e3700..27c7ea27 100644 --- a/machines/templates/machines/machine.html +++ b/machines/templates/machines/machine.html @@ -1,4 +1,4 @@ -{% extends "machines/sidebar.html" %} +{% extends 'machines/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -171,3 +171,4 @@ with this program; if not, write to the Free Software Foundation, Inc., {% bootstrap_button action_name button_type="submit" icon='ok' button_class='btn-success' %} {% endblock %} + diff --git a/machines/templates/machines/sidebar.html b/machines/templates/machines/sidebar.html index 81c83ab9..f7c63f6f 100644 --- a/machines/templates/machines/sidebar.html +++ b/machines/templates/machines/sidebar.html @@ -1,4 +1,4 @@ -{% extends "base.html" %} +{% extends 'base.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -28,57 +28,58 @@ with this program; if not, write to the Free Software Foundation, Inc., {% block sidebar %} {% can_view_all Machine %} - + {% trans "Machines" %} {% acl_end %} {% can_view_all MachineType %} - + {% trans "Machine types" %} {% acl_end %} {% can_view_all Extension %} - + {% trans "Extensions and zones" %} {% acl_end %} {% can_view_all IpType %} - + {% trans "IP ranges" %} {% acl_end %} {% can_view_all Vlan %} - + {% trans "VLANs" %} {% acl_end %} {% can_view_all Nas %} - + {% trans "NAS devices" %} {% acl_end %} {% can_view_all machines.Service %} - + {% trans "Services (DHCP, DNS, ...)" %} {% acl_end %} {% can_view_all Role %} - + {% trans "Server roles" %} {% acl_end %} {% can_view_all OuverturePortList %} - + {% trans "Ports openings" %} {% acl_end %} {% endblock %} + From 77e62df3b8b9348b4e13a715602ebf24be8f82a2 Mon Sep 17 00:00:00 2001 From: Laouen Fernet Date: Wed, 9 Jan 2019 00:39:47 +0100 Subject: [PATCH 05/10] add translations for preferences/ --- preferences/forms.py | 2 +- preferences/locale/fr/LC_MESSAGES/django.po | 968 +++++++++++++----- .../migrations/0058_auto_20190108_1650.py | 208 ++++ preferences/models.py | 126 ++- .../templates/preferences/aff_radiuskey.html | 36 +- .../preferences/aff_radiusoptions.html | 14 +- .../templates/preferences/aff_reminder.html | 36 +- .../templates/preferences/aff_service.html | 16 +- .../preferences/aff_switchmanagementcred.html | 32 +- preferences/templates/preferences/delete.html | 10 +- .../preferences/display_preferences.html | 72 +- .../preferences/edit_preferences.html | 2 +- .../templates/preferences/preferences.html | 2 +- .../templates/preferences/sidebar.html | 2 +- preferences/views.py | 39 +- 15 files changed, 1113 insertions(+), 452 deletions(-) create mode 100644 preferences/migrations/0058_auto_20190108_1650.py diff --git a/preferences/forms.py b/preferences/forms.py index 7e644808..3d461ef2 100644 --- a/preferences/forms.py +++ b/preferences/forms.py @@ -359,7 +359,7 @@ class DelMailContactForm(Form): """Delete contact email adress""" mailcontacts = forms.ModelMultipleChoiceField( queryset=MailContact.objects.none(), - label="Enregistrements adresses actuels", + label=_("Current email addresses"), widget=forms.CheckboxSelectMultiple ) diff --git a/preferences/locale/fr/LC_MESSAGES/django.po b/preferences/locale/fr/LC_MESSAGES/django.po index 65effeea..3528330e 100644 --- a/preferences/locale/fr/LC_MESSAGES/django.po +++ b/preferences/locale/fr/LC_MESSAGES/django.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: 2.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-10-15 00:30+0200\n" +"POT-Creation-Date: 2019-01-12 15:13+0100\n" "PO-Revision-Date: 2018-06-24 15:54+0200\n" "Last-Translator: Laouen Fernet \n" "Language-Team: \n" @@ -34,282 +34,386 @@ msgstr "" msgid "You don't have the right to view this application." msgstr "Vous n'avez pas le droit de voir cette application." -#: forms.py:62 templates/preferences/display_preferences.html:68 +#: forms.py:63 templates/preferences/display_preferences.html:142 msgid "Telephone number required" msgstr "Numéro de téléphone requis" -#: forms.py:64 +#: forms.py:65 msgid "GPG fingerprint" msgstr "Empreinte GPG" -#: forms.py:65 +#: forms.py:66 msgid "All can create a club" msgstr "Tous peuvent créer un club" -#: forms.py:66 +#: forms.py:67 msgid "All can create a member" msgstr "Tous peuvent créer un adhérent" -#: forms.py:67 templates/preferences/display_preferences.html:50 +#: forms.py:68 templates/preferences/display_preferences.html:120 msgid "Self registration" msgstr "Autoinscription" -#: forms.py:68 +#: forms.py:69 msgid "Default shell" -msgstr "Interface système par défaut" +msgstr "Interface en ligne de commande par défaut" -#: forms.py:84 +#: forms.py:85 msgid "Possibility to set a password per machine" msgstr "Possibilité de mettre un mot de passe par machine" -#: forms.py:86 templates/preferences/display_preferences.html:101 +#: forms.py:87 templates/preferences/display_preferences.html:172 msgid "Maximum number of interfaces allowed for a standard user" msgstr "Nombre maximum d'interfaces autorisé pour un utilisateur standard" -#: forms.py:90 templates/preferences/display_preferences.html:105 +#: forms.py:91 templates/preferences/display_preferences.html:176 msgid "Maximum number of DNS aliases allowed for a standard user" msgstr "Nombre maximum d'alias DNS autorisé pour un utilisateur standard" -#: forms.py:93 +#: forms.py:94 msgid "IPv6 mode" msgstr "Mode IPv6" -#: forms.py:94 +#: forms.py:95 msgid "Can create a machine" msgstr "Peut créer une machine" -#: forms.py:117 -msgid "RADIUS general policy" -msgstr "Politique générale de RADIUS" - -#: forms.py:118 templates/preferences/display_preferences.html:130 -msgid "VLAN for machines accepted by RADIUS" -msgstr "VLAN pour les machines acceptées par RADIUS" - -#: forms.py:120 templates/preferences/display_preferences.html:132 -msgid "VLAN for machines rejected by RADIUS" -msgstr "VLAN pour les machines rejetées par RADIUS" - -#: forms.py:145 -#, fuzzy -#| msgid "General message" +#: forms.py:141 msgid "General message in French" -msgstr "Message général" +msgstr "Message général en français" -#: forms.py:146 -#, fuzzy -#| msgid "General message" +#: forms.py:142 msgid "General message in English" -msgstr "Message général" +msgstr "Message général en anglais" -#: forms.py:147 templates/preferences/display_preferences.html:213 +#: forms.py:143 templates/preferences/display_preferences.html:58 msgid "Number of results displayed when searching" msgstr "Nombre de résultats affichés lors de la recherche" -#: forms.py:150 +#: forms.py:146 msgid "Number of items per page, standard size (e.g. users)" msgstr "Nombre d'éléments par page, taille standard (ex : utilisateurs)" -#: forms.py:153 +#: forms.py:149 msgid "Number of items per page, large size (e.g. machines)" msgstr "Nombre d'éléments par page, taille importante (ex : machines)" -#: forms.py:156 templates/preferences/display_preferences.html:221 +#: forms.py:152 templates/preferences/display_preferences.html:66 msgid "Time before expiration of the reset password link (in hours)" msgstr "" "Temps avant expiration du lien de réinitialisation de mot de passe (en " "heures)" -#: forms.py:159 templates/preferences/display_preferences.html:207 +#: forms.py:155 templates/preferences/display_preferences.html:52 msgid "Website name" msgstr "Nom du site" -#: forms.py:160 templates/preferences/display_preferences.html:209 +#: forms.py:156 templates/preferences/display_preferences.html:54 msgid "Email address for automatic emailing" msgstr "Adresse mail pour les mails automatiques" -#: forms.py:162 templates/preferences/display_preferences.html:227 +#: forms.py:158 templates/preferences/display_preferences.html:76 msgid "Summary of the General Terms of Use" msgstr "Résumé des Conditions Générales d'Utilisation" -#: forms.py:164 templates/preferences/display_preferences.html:231 +#: forms.py:160 templates/preferences/display_preferences.html:78 msgid "General Terms of Use" msgstr "Conditions Générales d'Utilisation" -#: forms.py:180 +#: forms.py:176 msgid "Organisation name" msgstr "Nom de l'association" -#: forms.py:181 templates/preferences/display_preferences.html:246 +#: forms.py:177 templates/preferences/display_preferences.html:323 msgid "SIRET number" msgstr "Numéro SIRET" -#: forms.py:182 +#: forms.py:178 msgid "Address (line 1)" msgstr "Adresse (ligne 1)" -#: forms.py:183 +#: forms.py:179 msgid "Address (line 2)" msgstr "Adresse (ligne 2)" -#: forms.py:184 models.py:482 -#: templates/preferences/display_preferences.html:254 +#: forms.py:180 models.py:476 +#: templates/preferences/display_preferences.html:331 msgid "Contact email address" msgstr "Adresse mail de contact" -#: forms.py:185 templates/preferences/display_preferences.html:258 +#: forms.py:181 templates/preferences/display_preferences.html:335 msgid "Telephone number" msgstr "Numéro de téléphone" -#: forms.py:186 templates/preferences/display_preferences.html:260 +#: forms.py:182 templates/preferences/display_preferences.html:337 msgid "Usual name" msgstr "Nom d'usage" -#: forms.py:187 +#: forms.py:183 msgid "Account used for editing from /admin" msgstr "Compte utilisé pour les modifications depuis /admin" -#: forms.py:189 +#: forms.py:185 msgid "Payment" msgstr "Paiement" -#: forms.py:190 +#: forms.py:186 msgid "Payment ID" msgstr "ID de paiement" -#: forms.py:191 +#: forms.py:187 msgid "Payment password" msgstr "Mot de passe de paiement" -#: forms.py:192 forms.py:243 templates/preferences/aff_service.html:33 +#: forms.py:188 forms.py:267 templates/preferences/aff_service.html:33 msgid "Description" msgstr "Description" -#: forms.py:208 +#: forms.py:204 msgid "Message for the French welcome email" msgstr "Message pour le mail de bienvenue en français" -#: forms.py:210 +#: forms.py:206 msgid "Message for the English welcome email" msgstr "Message pour le mail de bienvenue en anglais" -#: forms.py:227 +#: forms.py:223 msgid "Facebook URL" msgstr "URL du compte Facebook" -#: forms.py:228 +#: forms.py:224 msgid "Twitter URL" msgstr "URL du compte Twitter" -#: forms.py:229 templates/preferences/display_preferences.html:314 +#: forms.py:225 templates/preferences/display_preferences.html:445 msgid "Twitter account name" msgstr "Nom du compte Twitter" -#: forms.py:241 templates/preferences/aff_service.html:31 -#: templates/preferences/display_preferences.html:244 +#: forms.py:247 +msgid "You chose to set vlan but did not set any VLAN." +msgstr "" +"Vous avez choisi de paramétrer vlan mais vous n'avez indiqué aucun VLAN." + +#: forms.py:251 +msgid "Please, choose a VLAN." +msgstr "Veuillez choisir un VLAN." + +#: forms.py:265 templates/preferences/aff_service.html:31 +#: templates/preferences/display_preferences.html:321 msgid "Name" msgstr "Nom" -#: forms.py:242 templates/preferences/aff_service.html:32 +#: forms.py:266 templates/preferences/aff_service.html:32 msgid "URL" msgstr "URL" -#: forms.py:244 templates/preferences/aff_service.html:34 +#: forms.py:268 templates/preferences/aff_service.html:34 msgid "Image" msgstr "Image" -#: forms.py:251 +#: forms.py:275 msgid "Current services" msgstr "Services actuels" +#: forms.py:362 +msgid "Current email addresses" +msgstr "Adresses mail actuelles" + #: models.py:76 -msgid "Users can create a club" -msgstr "Les utilisateurs peuvent créer un club" +msgid "Users can create a club." +msgstr "Les utilisateurs peuvent créer un club." #: models.py:80 -msgid "Users can create a member" -msgstr "Les utilisateurs peuvent créer un adhérent" +msgid "Users can create a member." +msgstr "Les utilisateurs peuvent créer un adhérent." -#: models.py:91 templates/preferences/display_preferences.html:62 -msgid "Users can edit their shell" -msgstr "Les utilisateurs peuvent modifier leur interface système" +#: models.py:91 +msgid "Users can edit their shell." +msgstr "Les utilisateurs peuvent modifier leur interface en ligne de commande." -#: models.py:95 templates/preferences/display_preferences.html:66 -#, fuzzy -#| msgid "Users can edit their shell" -msgid "Users can edit their room" -msgstr "Les utilisateurs peuvent modifier leur interface système" +#: models.py:95 +msgid "Users can edit their room." +msgstr "Les utilisateurs peuvent modifier leur chambre." #: models.py:99 -msgid "Enable local email accounts for users" -msgstr "Active les comptes mail locaux pour les utilisateurs" +msgid "Enable local email accounts for users." +msgstr "Activer les comptes mail locaux pour les utilisateurs." #: models.py:104 msgid "Domain to use for local email accounts" msgstr "Domaine à utiliser pour les comptes mail locaux" #: models.py:108 -msgid "Maximum number of local email addresses for a standard user" +msgid "Maximum number of local email addresses for a standard user." msgstr "" -"Nombre maximum d'adresses mail locales autorisé pour un utilisateur standard" +"Nombre maximum d'adresses mail locales autorisé pour un utilisateur standard." #: models.py:113 -msgid "Inactive users will be deleted after this number of days" -msgstr "Les utilisateurs n'ayant jamais adhéré seront supprimés après (jours)" +msgid "Not yet active users will be deleted after this number of days." +msgstr "" +"Les utilisateurs n'ayant jamais adhéré seront supprimés après ce nombre de " +"jours." -#: models.py:117 -msgid "A new user can create their account on Re2o" -msgstr "Un nouvel utilisateur peut créer son compte sur Re2o" +#: models.py:118 +msgid "A new user can create their account on Re2o." +msgstr "Un nouvel utilisateur peut créer son compte sur Re2o." #: models.py:122 +msgid "" +"If True, all new created and connected users are active. If False, only when " +"a valid registration has been paid." +msgstr "" +"Si True, tous les nouveaux utilisations créés et connectés sont actifs. Si " +"False, seulement quand une inscription validée a été payée." + +#: models.py:128 msgid "Can view the user options" msgstr "Peut voir les options d'utilisateur" -#: models.py:124 +#: models.py:130 msgid "user options" msgstr "options d'utilisateur" -#: models.py:131 +#: models.py:137 msgid "Email domain must begin with @" msgstr "Un domaine mail doit commencer par @" -#: models.py:149 +#: models.py:155 msgid "Autoconfiguration by RA" msgstr "Configuration automatique par RA" -#: models.py:150 +#: models.py:156 msgid "IP addresses assigning by DHCPv6" msgstr "Attribution d'adresses IP par DHCPv6" -#: models.py:151 +#: models.py:157 msgid "Disabled" msgstr "Désactivé" -#: models.py:173 +#: models.py:179 msgid "Can view the machine options" msgstr "Peut voir les options de machine" -#: models.py:175 +#: models.py:181 msgid "machine options" msgstr "options de machine" -#: models.py:194 +#: models.py:200 models.py:592 msgid "On the IP range's VLAN of the machine" msgstr "Sur le VLAN de la plage d'IP de la machine" -#: models.py:195 +#: models.py:201 models.py:593 msgid "Preset in 'VLAN for machines accepted by RADIUS'" msgstr "Prédéfinie dans 'VLAN pour les machines acceptées par RADIUS'" -#: models.py:315 +#: models.py:210 templates/preferences/display_preferences.html:246 +msgid "Web management, activated in case of automatic provision" +msgstr "Gestion web, activée en cas de provision automatique" + +#: models.py:214 +msgid "" +"SSL web management, make sure that a certificate is installed on the switch" +msgstr "" +"Gestion web SSL, vérifiez qu'un certificat est installé sur le commutateur " +"réseau" + +#: models.py:219 templates/preferences/display_preferences.html:248 +msgid "REST management, activated in case of automatic provision" +msgstr "Gestion REST, activée en cas de provision automatique" + +#: models.py:226 templates/preferences/display_preferences.html:262 +msgid "IP range for the management of switches" +msgstr "Plage d'IP pour la gestion des commutateurs réseau" + +#: models.py:232 templates/preferences/display_preferences.html:270 +msgid "Provision of configuration mode for switches" +msgstr "Mode de provision de configuration pour les commutateurs réseau" + +#: models.py:238 +msgid "SFTP login for switches" +msgstr "Identifiant SFTP pour les commutateurs réseau" + +#: models.py:244 +msgid "SFTP password" +msgstr "Mot de passe SFTP" + +#: models.py:303 msgid "Can view the topology options" msgstr "Peut voir les options de topologie" -#: models.py:317 +#: models.py:305 msgid "topology options" msgstr "options de topologie" -#: models.py:419 +#: models.py:319 models.py:337 +msgid "RADIUS key" +msgstr "Clé RADIUS" + +#: models.py:325 +msgid "Comment for this key" +msgstr "Commentaire pour cette clé" + +#: models.py:330 +msgid "Default key for switches" +msgstr "Clé par défaut pour les commutateurs réseau" + +#: models.py:335 +msgid "Can view a RADIUS key object" +msgstr "Peut voir un objet clé RADIUS" + +#: models.py:338 templates/preferences/display_preferences.html:221 +msgid "RADIUS keys" +msgstr "clés RADIUS" + +#: models.py:341 +msgid "RADIUS key " +msgstr "clé RADIUS " + +#: models.py:348 templates/preferences/aff_switchmanagementcred.html:31 +msgid "Switch login" +msgstr "Identifiant du commutateur réseau" + +#: models.py:352 +msgid "Password" +msgstr "Mot de passe" + +#: models.py:357 +msgid "Default credentials for switches" +msgstr "Identifiants par défaut pour les commutateurs réseau" + +#: models.py:362 +msgid "Can view a switch management credentials object" +msgstr "Peut voir un objet identifiants de gestion de commutateur réseau" + +#: models.py:365 +msgid "switch management credentials" +msgstr "identifiants de gestion de commutateur réseau" + +#: models.py:368 +msgid "Switch login " +msgstr "Identifiant du commutateur réseau " + +#: models.py:380 +msgid "Delay between the email and the membership's end" +msgstr "Délai entre le mail et la fin d'adhésion" + +#: models.py:387 +msgid "Message displayed specifically for this reminder" +msgstr "Message affiché spécifiquement pour ce rappel" + +#: models.py:392 +msgid "Can view a reminder object" +msgstr "Peut voir un objet rappel" + +#: models.py:394 +msgid "reminder" +msgstr "rappel" + +#: models.py:395 +msgid "reminders" +msgstr "rappels" + +#: models.py:412 msgid "" "General message displayed on the French version of the website (e.g. in case " "of maintenance)" @@ -317,7 +421,7 @@ msgstr "" "Message général affiché sur la version française du site (ex : en cas de " "maintenance)" -#: models.py:425 +#: models.py:418 msgid "" "General message displayed on the English version of the website (e.g. in " "case of maintenance)" @@ -325,185 +429,199 @@ msgstr "" "Message général affiché sur la version anglaise du site (ex : en cas de " "maintenance)" -#: models.py:447 +#: models.py:441 msgid "Can view the general options" msgstr "Peut voir les options générales" -#: models.py:449 +#: models.py:443 msgid "general options" msgstr "options générales" -#: models.py:469 +#: models.py:463 msgid "Can view the service options" msgstr "Peut voir les options de service" -#: models.py:471 +#: models.py:465 msgid "service" msgstr "service" -#: models.py:472 +#: models.py:466 msgid "services" msgstr "services" -#: models.py:489 +#: models.py:482 msgid "Description of the associated email address." msgstr "Description de l'adresse mail associée." -#: models.py:499 +#: models.py:492 msgid "Can view a contact email address object" msgstr "Peut voir un objet adresse mail de contact" -#: models.py:501 +#: models.py:494 msgid "contact email address" msgstr "adresse mail de contact" -#: models.py:502 +#: models.py:495 msgid "contact email addresses" msgstr "adresses mail de contact" -#: models.py:512 +#: models.py:505 msgid "Networking organisation school Something" msgstr "Association de réseau de l'école Machin" -#: models.py:516 +#: models.py:509 msgid "Threadneedle Street" msgstr "1 rue de la Vrillière" -#: models.py:517 +#: models.py:510 msgid "London EC2R 8AH" msgstr "75001 Paris" -#: models.py:520 +#: models.py:513 msgid "Organisation" msgstr "Association" -#: models.py:534 +#: models.py:527 msgid "Can view the organisation options" msgstr "Peut voir les options d'association" -#: models.py:536 +#: models.py:529 msgid "organisation options" msgstr "options d'association" -#: models.py:565 +#: models.py:558 msgid "Can view the homepage options" msgstr "Peut voir les options de page d'accueil" -#: models.py:567 +#: models.py:560 msgid "homepage options" msgstr "options de page d'accueil" -#: models.py:585 +#: models.py:573 +msgid "Welcome email in French" +msgstr "Mail de bienvenue en français" + +#: models.py:574 +msgid "Welcome email in English" +msgstr "Mail de bienvenue en anglais" + +#: models.py:578 msgid "Can view the email message options" msgstr "Peut voir les options de message pour les mails" -#: models.py:588 +#: models.py:581 msgid "email message options" msgstr "options de messages pour les mails" +#: models.py:586 +msgid "RADIUS policy" +msgstr "Politique de RADIUS" + +#: models.py:587 +msgid "RADIUS policies" +msgstr "Politiques de RADIUS" + +#: models.py:598 +msgid "Reject the machine" +msgstr "Rejeter la machine" + +#: models.py:599 +msgid "Place the machine on the VLAN" +msgstr "Placer la machine sur le VLAN" + +#: models.py:610 +msgid "Policy for unknown machines" +msgstr "Politique pour les machines inconnues" + +#: models.py:618 +msgid "Unknown machines VLAN" +msgstr "VLAN pour les machines inconnues" + +#: models.py:619 +msgid "VLAN for unknown machines if not rejected" +msgstr "VLAN pour les machines inconnues si non rejeté" + +#: models.py:625 +msgid "Policy for unknown ports" +msgstr "Politique pour les ports inconnus" + +#: models.py:633 +msgid "Unknown ports VLAN" +msgstr "VLAN pour les ports inconnus" + +#: models.py:634 +msgid "VLAN for unknown ports if not rejected" +msgstr "VLAN pour les ports inconnus si non rejeté" + +#: models.py:640 +msgid "" +"Policy for machines connecting from unregistered rooms (relevant on ports " +"with STRICT RADIUS mode)" +msgstr "" +"Politique pour les machines se connectant depuis des chambre non " +"enregistrées (pertinent pour les ports avec le mode de RADIUS STRICT)" + +#: models.py:649 +msgid "Unknown rooms VLAN" +msgstr "VLAN pour les chambres inconnues" + +#: models.py:650 +msgid "VLAN for unknown rooms if not rejected" +msgstr "VLAN pour les chambres inconnues si non rejeté" + +#: models.py:656 +msgid "Policy for non members" +msgstr "Politique pour les non adhérents" + +#: models.py:664 +msgid "Non members VLAN" +msgstr "VLAN pour les non adhérents" + +#: models.py:665 +msgid "VLAN for non members if not rejected" +msgstr "VLAN pour les non adhérents si non rejeté" + +#: models.py:671 +msgid "Policy for banned users" +msgstr "Politique pour les utilisateurs bannis" + +#: models.py:679 +msgid "Banned users VLAN" +msgstr "VLAN pour les utilisateurs bannis" + +#: models.py:680 +msgid "VLAN for banned users if not rejected" +msgstr "VLAN pour les utilisateurs bannis si non rejeté" + #: templates/preferences/aff_mailcontact.html:31 -#: templates/preferences/display_preferences.html:250 +#: templates/preferences/display_preferences.html:327 msgid "Address" msgstr "Adresse" #: templates/preferences/aff_mailcontact.html:32 +#: templates/preferences/aff_radiuskey.html:32 msgid "Comment" msgstr "Commentaire" -#: templates/preferences/display_preferences.html:31 -#: templates/preferences/edit_preferences.html:30 -#: templates/preferences/preferences.html:30 -msgid "Preferences" -msgstr "Préférences" +#: templates/preferences/aff_radiuskey.html:31 +msgid "RADIUS key ID" +msgstr "ID de la clé RADIUS" -#: templates/preferences/display_preferences.html:34 -msgid "User preferences" -msgstr "Préférences d'utilisateur" +#: templates/preferences/aff_radiuskey.html:33 +msgid "Default RADIUS key for switches" +msgstr "Clé RADIUS par défaut pour les commutateurs réseau" -#: templates/preferences/display_preferences.html:37 -#: templates/preferences/display_preferences.html:93 -#: templates/preferences/display_preferences.html:118 -#: templates/preferences/display_preferences.html:201 -#: templates/preferences/display_preferences.html:238 -#: templates/preferences/display_preferences.html:273 -#: templates/preferences/display_preferences.html:300 -#: templates/preferences/edit_preferences.html:40 views.py:173 views.py:221 -#: views.py:375 -msgid "Edit" -msgstr "Modifier" +#: templates/preferences/aff_radiuskey.html:34 +msgid "RADIUS key used by the swithes" +msgstr "Clé RADIUS utilisée par les commutateurs réseau" -#: templates/preferences/display_preferences.html:41 -#: templates/preferences/display_preferences.html:198 -msgid "General preferences" -msgstr "Préférences générales" - -#: templates/preferences/display_preferences.html:44 -msgid "Creation of members by everyone" -msgstr "Création d'adhérents par tous" - -#: templates/preferences/display_preferences.html:46 -msgid "Creation of clubs by everyone" -msgstr "Création de clubs par tous" - -#: templates/preferences/display_preferences.html:52 -msgid "Delete not yet active users after" -msgstr "Suppression des utilisateurs n'ayant jamais adhéré après" - -#: templates/preferences/display_preferences.html:57 -#, fuzzy -#| msgid "general options" -msgid "Users general permissions" -msgstr "Permissions générales des utilisateurs" - -#: templates/preferences/display_preferences.html:60 -msgid "Default shell for users" -msgstr "Interface système par défaut pour les utilisateurs" - -#: templates/preferences/display_preferences.html:72 -msgid "GPG fingerprint field" -msgstr "Champ empreinte GPG" - -#: templates/preferences/display_preferences.html:77 -msgid "Email accounts preferences" -msgstr "Préférences de comptes mail" - -#: templates/preferences/display_preferences.html:80 -msgid "Local email accounts enabled" -msgstr "Comptes mail locaux activés" - -#: templates/preferences/display_preferences.html:82 -msgid "Local email domain" -msgstr "Domaine de mail local" - -#: templates/preferences/display_preferences.html:86 -msgid "Maximum number of email aliases allowed" -msgstr "Nombre maximum d'alias mail autorisé pour un utilisateur standard" - -#: templates/preferences/display_preferences.html:90 -msgid "Machines preferences" -msgstr "Préférences de machines" - -#: templates/preferences/display_preferences.html:99 -msgid "Password per machine" -msgstr "Mot de passe par machine" - -#: templates/preferences/display_preferences.html:107 -msgid "IPv6 support" -msgstr "Support de l'IPv6" - -#: templates/preferences/display_preferences.html:111 -msgid "Creation of machines" -msgstr "Création de machines" - -#: templates/preferences/display_preferences.html:115 -msgid "Topology preferences" -msgstr "Préférences de topologie" - -#: templates/preferences/display_preferences.html:124 +#: templates/preferences/aff_radiusoptions.html:28 +#: templates/preferences/display_preferences.html:204 msgid "General policy for VLAN setting" msgstr "Politique générale pour le placement sur un VLAN" -#: templates/preferences/display_preferences.html:126 +#: templates/preferences/aff_radiusoptions.html:30 +#: templates/preferences/display_preferences.html:206 msgid "" "This setting defines the VLAN policy after acceptance by RADIUS: either on " "the IP range's VLAN of the machine, or a VLAN preset in 'VLAN for machines " @@ -513,67 +631,356 @@ msgstr "" "par RADIUS: soit sur le VLAN de la plage d'IP de la machine, soit sur le " "VLAN prédéfini dans 'VLAN pour les machines acceptées par RADIUS'" -#: templates/preferences/display_preferences.html:215 +#: templates/preferences/aff_radiusoptions.html:33 +#: templates/preferences/display_preferences.html:210 +msgid "VLAN for machines accepted by RADIUS" +msgstr "VLAN pour les machines acceptées par RADIUS" + +#: templates/preferences/aff_radiusoptions.html:34 +#, python-format +msgid "VLAN %(vlan_decision_ok)s" +msgstr "VLAN %(vlan_decision_ok)s" + +#: templates/preferences/aff_radiusoptions.html:41 +msgid "Situation" +msgstr "Situation" + +#: templates/preferences/aff_radiusoptions.html:42 +msgid "Behaviour" +msgstr "Comportement" + +#: templates/preferences/aff_radiusoptions.html:46 +msgid "Unknown machine" +msgstr "Machine inconnue" + +#: templates/preferences/aff_radiusoptions.html:49 +#: templates/preferences/aff_radiusoptions.html:59 +#: templates/preferences/aff_radiusoptions.html:69 +#: templates/preferences/aff_radiusoptions.html:79 +#: templates/preferences/aff_radiusoptions.html:89 +msgid "Reject" +msgstr "Rejeter" + +#: templates/preferences/aff_radiusoptions.html:51 +#, python-format +msgid "VLAN %(unknown_machine_vlan)s" +msgstr "VLAN %(unknown_machine_vlan)s" + +#: templates/preferences/aff_radiusoptions.html:56 +msgid "Unknown port" +msgstr "Port inconnu" + +#: templates/preferences/aff_radiusoptions.html:61 +#, python-format +msgid "VLAN %(unknown_port_vlan)s" +msgstr "VLAN %(unknown_port_vlan)s" + +#: templates/preferences/aff_radiusoptions.html:66 +msgid "Unknown room" +msgstr "Chambre inconnue" + +#: templates/preferences/aff_radiusoptions.html:71 +#, python-format +msgid "VLAN %(unknown_room_vlan)s" +msgstr "VLAN %(unknown_room_vlan)s" + +#: templates/preferences/aff_radiusoptions.html:76 +msgid "Non member" +msgstr "Non adhérent" + +#: templates/preferences/aff_radiusoptions.html:81 +#, python-format +msgid "VLAN %(non_member_vlan)s" +msgstr "VLAN %(non_member_vlan)s" + +#: templates/preferences/aff_radiusoptions.html:86 +msgid "Banned user" +msgstr "Utilisateur banni" + +#: templates/preferences/aff_radiusoptions.html:91 +#, python-format +msgid "VLAN %(banned_vlan)s" +msgstr "VLAN %(banned_vlan)s" + +#: templates/preferences/aff_reminder.html:31 +msgid "Number of days before the reminder" +msgstr "Nombre de jours avant le rappel" + +#: templates/preferences/aff_reminder.html:32 +msgid "Message for this reminder" +msgstr "Message pour ce rappel" + +#: templates/preferences/aff_switchmanagementcred.html:32 +msgid "Default switch management credentials" +msgstr "Identifiants de gestion de commutateur réseau par défaut" + +#: templates/preferences/aff_switchmanagementcred.html:33 +msgid "Management credentials used by the switches" +msgstr "Identifiants de gestion utilisés par les commutateurs réseau" + +#: templates/preferences/delete.html:29 +msgid "Deletion of preferences" +msgstr "Suppression de préférences" + +#: templates/preferences/delete.html:35 +#, python-format +msgid "" +"Warning: are you sure you want to delete this %(objet_name)s object " +"( %(objet)s )?" +msgstr "" +"Attention : voulez-vous vraiment supprimer cet objet %(objet_name)s " +"( %(objet)s ) ?" + +#: templates/preferences/delete.html:36 +msgid "Confirm" +msgstr "Confirmer" + +#: templates/preferences/display_preferences.html:31 +#: templates/preferences/edit_preferences.html:30 +#: templates/preferences/preferences.html:30 +msgid "Preferences" +msgstr "Préférences" + +#: templates/preferences/display_preferences.html:39 +msgid "General preferences" +msgstr "Préférences générales" + +#: templates/preferences/display_preferences.html:46 +#: templates/preferences/display_preferences.html:108 +#: templates/preferences/display_preferences.html:165 +#: templates/preferences/display_preferences.html:199 +#: templates/preferences/display_preferences.html:240 +#: templates/preferences/display_preferences.html:301 +#: templates/preferences/display_preferences.html:316 +#: templates/preferences/display_preferences.html:360 +#: templates/preferences/display_preferences.html:438 +#: templates/preferences/edit_preferences.html:46 views.py:178 views.py:226 +#: views.py:272 views.py:321 views.py:381 +msgid "Edit" +msgstr "Modifier" + +#: templates/preferences/display_preferences.html:60 msgid "Number of items per page (standard size)" msgstr "Nombre d'éléments par page (taille standard)" -#: templates/preferences/display_preferences.html:219 +#: templates/preferences/display_preferences.html:64 msgid "Number of items per page (large size)" msgstr "Nombre d'éléments par page (taille importante)" -#: templates/preferences/display_preferences.html:225 +#: templates/preferences/display_preferences.html:70 msgid "General message displayed on the website" msgstr "Message général affiché sur le site" -#: templates/preferences/display_preferences.html:235 +#: templates/preferences/display_preferences.html:72 +msgid "Main site URL" +msgstr "URL du site principal" + +#: templates/preferences/display_preferences.html:84 +msgid "Local email accounts enabled" +msgstr "Comptes mail locaux activés" + +#: templates/preferences/display_preferences.html:86 +msgid "Local email domain" +msgstr "Domaine de mail local" + +#: templates/preferences/display_preferences.html:90 +msgid "Maximum number of email aliases allowed" +msgstr "Nombre maximum d'alias mail autorisé pour un utilisateur standard" + +#: templates/preferences/display_preferences.html:100 +msgid "User preferences" +msgstr "Préférences d'utilisateur" + +#: templates/preferences/display_preferences.html:114 +msgid "Creation of members by everyone" +msgstr "Création d'adhérents par tous" + +#: templates/preferences/display_preferences.html:116 +msgid "Creation of clubs by everyone" +msgstr "Création de clubs par tous" + +#: templates/preferences/display_preferences.html:122 +msgid "Delete not yet active users after" +msgstr "Suppression des utilisateurs n'ayant jamais adhéré après" + +#: templates/preferences/display_preferences.html:123 +#, python-format +msgid "%(delete_notyetactive)s days" +msgstr "%(delete_notyetactive)s jours" + +#: templates/preferences/display_preferences.html:126 +msgid "All users are active by default" +msgstr "Tous les utilisateurs sont actifs par défault" + +#: templates/preferences/display_preferences.html:131 +msgid "Users general permissions" +msgstr "Permissions générales des utilisateurs" + +#: templates/preferences/display_preferences.html:134 +msgid "Default shell for users" +msgstr "Interface en ligne de commande par défaut pour les utilisateurs" + +#: templates/preferences/display_preferences.html:136 +msgid "Users can edit their shell" +msgstr "Les utilisateurs peuvent modifier leur interface en ligne de commande" + +#: templates/preferences/display_preferences.html:140 +msgid "Users can edit their room" +msgstr "Les utilisateurs peuvent modifier leur chambre" + +#: templates/preferences/display_preferences.html:146 +msgid "GPG fingerprint field" +msgstr "Champ empreinte GPG" + +#: templates/preferences/display_preferences.html:157 +msgid "Machines preferences" +msgstr "Préférences de machines" + +#: templates/preferences/display_preferences.html:170 +msgid "Password per machine" +msgstr "Mot de passe par machine" + +#: templates/preferences/display_preferences.html:178 +msgid "IPv6 support" +msgstr "Support de l'IPv6" + +#: templates/preferences/display_preferences.html:182 +msgid "Creation of machines" +msgstr "Création de machines" + +#: templates/preferences/display_preferences.html:192 +msgid "Topology preferences" +msgstr "Préférences de topologie" + +#: templates/preferences/display_preferences.html:212 +msgid "VLAN for machines rejected by RADIUS" +msgstr "VLAN pour les machines rejetées par RADIUS" + +#: templates/preferences/display_preferences.html:216 +msgid "VLAN for non members machines" +msgstr "VLAN pour les machines des non adhérents" + +#: templates/preferences/display_preferences.html:223 +msgid " Add a RADIUS key" +msgstr " Ajouter une clé RADIUS" + +#: templates/preferences/display_preferences.html:233 +msgid "Configuration of switches" +msgstr "Configuration de commutateurs réseau" + +#: templates/preferences/display_preferences.html:255 +msgid "Provision of configuration for switches" +msgstr "Provision de configuration pour les commutateurs réseau" + +#: templates/preferences/display_preferences.html:258 +msgid "Switches with automatic provision" +msgstr "Commutateurs réseau avec provision automatique" + +#: templates/preferences/display_preferences.html:259 +#: templates/preferences/display_preferences.html:263 +#: templates/preferences/display_preferences.html:267 +#: templates/preferences/display_preferences.html:275 +#: templates/preferences/display_preferences.html:279 +#: templates/preferences/display_preferences.html:289 +msgid "OK" +msgstr "OK" + +#: templates/preferences/display_preferences.html:259 +#: templates/preferences/display_preferences.html:263 +#: templates/preferences/display_preferences.html:267 +#: templates/preferences/display_preferences.html:289 +msgid "Missing" +msgstr "Manquant" + +#: templates/preferences/display_preferences.html:266 +msgid "Server for the configuration of switches" +msgstr "Serveur pour la configuration des commutateurs réseau" + +#: templates/preferences/display_preferences.html:274 +msgid "TFTP mode" +msgstr "Mode TFTP" + +#: templates/preferences/display_preferences.html:278 +msgid "SFTP mode" +msgstr "Mode SFTP" + +#: templates/preferences/display_preferences.html:279 +msgid "Missing credentials" +msgstr "Identifiants manquants" + +#: templates/preferences/display_preferences.html:283 +msgid "Switch management credentials" +msgstr "Identifiants de gestion de commutateur réseau" + +#: templates/preferences/display_preferences.html:285 +msgid " Add switch management credentials" +msgstr " Ajouter des identifiants de gestion de commutateur réseau" + +#: templates/preferences/display_preferences.html:296 +msgid "RADIUS preferences" +msgstr "Préférences RADIUS" + +#: templates/preferences/display_preferences.html:310 msgid "Information about the organisation" msgstr "Informations sur l'association" -#: templates/preferences/display_preferences.html:264 +#: templates/preferences/display_preferences.html:341 msgid "User object of the organisation" msgstr "Objet utilisateur de l'association" -#: templates/preferences/display_preferences.html:266 +#: templates/preferences/display_preferences.html:343 msgid "Description of the organisation" msgstr "Description de l'association" -#: templates/preferences/display_preferences.html:270 -msgid "Custom email message" -msgstr "Message personnalisé pour les mails" +#: templates/preferences/display_preferences.html:353 +msgid "Message for emails" +msgstr "Message pour les mails" -#: templates/preferences/display_preferences.html:279 +#: templates/preferences/display_preferences.html:366 msgid "Welcome email (in French)" msgstr "Mail de bienvenue (en français)" -#: templates/preferences/display_preferences.html:283 +#: templates/preferences/display_preferences.html:370 msgid "Welcome email (in English)" msgstr "Mail de bienvenue (en anglais)" -#: templates/preferences/display_preferences.html:293 +#: templates/preferences/display_preferences.html:380 +msgid "Options for the membership's end email" +msgstr "Options pour le mail de fin d'adhésion" + +#: templates/preferences/display_preferences.html:386 +msgid " Add a reminder" +msgstr " Ajouter un rappel" + +#: templates/preferences/display_preferences.html:397 msgid "List of services and homepage preferences" msgstr "Liste des services et préférences de page d'accueil" -#: templates/preferences/display_preferences.html:295 +#: templates/preferences/display_preferences.html:403 msgid " Add a service" msgstr " Ajouter un service" -#: templates/preferences/display_preferences.html:302 +#: templates/preferences/display_preferences.html:414 msgid "List of contact email addresses" msgstr "Liste des adresses mail de contact" -#: templates/preferences/display_preferences.html:304 -msgid "Add an address" -msgstr "Ajouter une adresse" +#: templates/preferences/display_preferences.html:420 +msgid " Add an address" +msgstr " Ajouter une adresse" -#: templates/preferences/display_preferences.html:306 -msgid "Delete one or several addresses" +#: templates/preferences/display_preferences.html:422 +msgid " Delete one or several addresses" msgstr " Supprimer une ou plusieurs adresses" -#: templates/preferences/display_preferences.html:312 +#: templates/preferences/display_preferences.html:431 +msgid "Social networks" +msgstr "Réseaux sociaux" + +#: templates/preferences/display_preferences.html:443 msgid "Twitter account URL" msgstr "URL du compte Twitter" -#: templates/preferences/display_preferences.html:318 +#: templates/preferences/display_preferences.html:449 msgid "Facebook account URL" msgstr "URL du compte Facebook" @@ -581,61 +988,112 @@ msgstr "URL du compte Facebook" msgid "Editing of preferences" msgstr "Modification des préférences" -#: views.py:111 -msgid "Unknown object" -msgstr "Objet inconnu" +#: views.py:114 +msgid "Unknown object." +msgstr "Objet inconnu." -#: views.py:117 +#: views.py:120 msgid "You don't have the right to edit this option." msgstr "Vous n'avez pas le droit de modifier cette option." -#: views.py:134 +#: views.py:137 msgid "The preferences were edited." msgstr "Les préférences ont été modifiées." -#: views.py:150 +#: views.py:155 msgid "The service was added." msgstr "Le service a été ajouté." -#: views.py:153 views.py:202 +#: views.py:158 msgid "Add a service" -msgstr " Ajouter un service" +msgstr "Ajouter un service" -#: views.py:170 views.py:218 +#: views.py:175 msgid "The service was edited." msgstr "Le service a été modifié." -#: views.py:199 -#, fuzzy -#| msgid "The service was added." -msgid "The reminder was added." -msgstr "Le service a été ajouté." +#: views.py:189 +msgid "The service was deleted." +msgstr "Le service a été supprimé." -#: views.py:351 +#: views.py:204 +msgid "The reminder was added." +msgstr "Le rappel a été ajouté." + +#: views.py:207 +msgid "Add a reminder" +msgstr "Ajouter un rappel" + +#: views.py:223 +msgid "The reminder was edited." +msgstr "Le rappel a été modifié." + +#: views.py:239 +msgid "The reminder was deleted." +msgstr "Le rappel a été supprimé." + +#: views.py:255 +msgid "The RADIUS key was added." +msgstr "La clé RADIUS a été ajoutée." + +#: views.py:258 +msgid "Add a RADIUS key" +msgstr "Ajouter une clé RADIUS" + +#: views.py:269 +msgid "The RADIUS key was edited." +msgstr "La clé RADIUS a été modifiée." + +#: views.py:285 +msgid "The RADIUS key was deleted." +msgstr "La clé RADIUS a été supprimée." + +#: views.py:287 +msgid "The RADIUS key is assigned to at least one switch, you can't delete it." +msgstr "" +"La clé RADIUS est assignée a au moins un commutateur réseau, vous ne pouvez " +"pas la supprimer." + +#: views.py:304 +msgid "The switch management credentials were added." +msgstr "Les identifiants de gestion de commutateur réseay ont été ajoutés." + +#: views.py:307 +msgid "Add switch management credentials" +msgstr "Ajouter des identifiants de gestion de commutateur réseau" + +#: views.py:318 +msgid "The switch management credentials were edited." +msgstr "Les identifiants de gestion de commutateur réseau ont été modifiés." + +#: views.py:334 +msgid "The switch management credentials were deleted." +msgstr "Les identifiants de gestion de commutateur réseau ont été supprimés." + +#: views.py:336 +msgid "" +"The switch management credentials are assigned to at least one switch, you " +"can't delete them." +msgstr "" +"Les identifiants de gestion de commutateur réseau sont assignés à au moins " +"un commutateur réseau , vous ne pouvez pas les supprimer." + +#: views.py:357 msgid "The contact email address was created." msgstr "L'adresse mail de contact a été supprimée." -#: views.py:355 +#: views.py:361 msgid "Add a contact email address" msgstr "Ajouter une adresse mail de contact" -#: views.py:372 +#: views.py:378 msgid "The contact email address was edited." msgstr "L'adresse mail de contact a été modifiée." -#: views.py:394 +#: views.py:400 msgid "The contact email adress was deleted." msgstr "L'adresse mail de contact a été supprimée." -#: views.py:397 +#: views.py:403 msgid "Delete" msgstr "Supprimer" - -#~ msgid " Delete one or several services" -#~ msgstr " Supprimer un ou plusieurs services" - -#~ msgid "The service was deleted." -#~ msgstr "Le service a été supprimé." - -#~ msgid "Error: the service %s can't be deleted." -#~ msgstr "Erreur : le service %s ne peut pas être supprimé." diff --git a/preferences/migrations/0058_auto_20190108_1650.py b/preferences/migrations/0058_auto_20190108_1650.py new file mode 100644 index 00000000..e90b6067 --- /dev/null +++ b/preferences/migrations/0058_auto_20190108_1650.py @@ -0,0 +1,208 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.7 on 2019-01-08 22:50 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion +import re2o.aes_field + + +class Migration(migrations.Migration): + + dependencies = [ + ('preferences', '0057_optionaluser_all_users_active'), + ] + + operations = [ + migrations.AlterModelOptions( + name='radiuskey', + options={'permissions': (('view_radiuskey', 'Can view a RADIUS key object'),), 'verbose_name': 'RADIUS key', 'verbose_name_plural': 'RADIUS keys'}, + ), + migrations.AlterModelOptions( + name='radiusoption', + options={'verbose_name': 'RADIUS policy', 'verbose_name_plural': 'RADIUS policies'}, + ), + migrations.AlterModelOptions( + name='reminder', + options={'permissions': (('view_reminder', 'Can view a reminder object'),), 'verbose_name': 'reminder', 'verbose_name_plural': 'reminders'}, + ), + migrations.AlterModelOptions( + name='switchmanagementcred', + options={'permissions': (('view_switchmanagementcred', 'Can view a switch management credentials object'),), 'verbose_name': 'switch management credentials'}, + ), + migrations.AlterField( + model_name='mailmessageoption', + name='welcome_mail_en', + field=models.TextField(default='', help_text='Welcome email in English'), + ), + migrations.AlterField( + model_name='mailmessageoption', + name='welcome_mail_fr', + field=models.TextField(default='', help_text='Welcome email in French'), + ), + migrations.AlterField( + model_name='optionaltopologie', + name='sftp_login', + field=models.CharField(blank=True, help_text='SFTP login for switches', max_length=32, null=True), + ), + migrations.AlterField( + model_name='optionaltopologie', + name='sftp_pass', + field=re2o.aes_field.AESEncryptedField(blank=True, help_text='SFTP password', max_length=63, null=True), + ), + migrations.AlterField( + model_name='optionaltopologie', + name='switchs_ip_type', + field=models.OneToOneField(blank=True, help_text='IP range for the management of switches', null=True, on_delete=django.db.models.deletion.PROTECT, to='machines.IpType'), + ), + migrations.AlterField( + model_name='optionaltopologie', + name='switchs_provision', + field=models.CharField(choices=[('sftp', 'sftp'), ('tftp', 'tftp')], default='tftp', help_text='Provision of configuration mode for switches', max_length=32), + ), + migrations.AlterField( + model_name='optionaltopologie', + name='switchs_rest_management', + field=models.BooleanField(default=False, help_text='REST management, activated in case of automatic provision'), + ), + migrations.AlterField( + model_name='optionaltopologie', + name='switchs_web_management', + field=models.BooleanField(default=False, help_text='Web management, activated in case of automatic provision'), + ), + migrations.AlterField( + model_name='optionaltopologie', + name='switchs_web_management_ssl', + field=models.BooleanField(default=False, help_text='SSL web management, make sure that a certificate is installed on the switch'), + ), + migrations.AlterField( + model_name='optionaluser', + name='all_can_create_adherent', + field=models.BooleanField(default=False, help_text='Users can create a member.'), + ), + migrations.AlterField( + model_name='optionaluser', + name='all_can_create_club', + field=models.BooleanField(default=False, help_text='Users can create a club.'), + ), + migrations.AlterField( + model_name='optionaluser', + name='all_users_active', + field=models.BooleanField(default=False, help_text='If True, all new created and connected users are active. If False, only when a valid registration has been paid.'), + ), + migrations.AlterField( + model_name='optionaluser', + name='delete_notyetactive', + field=models.IntegerField(default=15, help_text='Not yet active users will be deleted after this number of days.'), + ), + migrations.AlterField( + model_name='optionaluser', + name='local_email_accounts_enabled', + field=models.BooleanField(default=False, help_text='Enable local email accounts for users.'), + ), + migrations.AlterField( + model_name='optionaluser', + name='max_email_address', + field=models.IntegerField(default=15, help_text='Maximum number of local email addresses for a standard user.'), + ), + migrations.AlterField( + model_name='optionaluser', + name='self_adhesion', + field=models.BooleanField(default=False, help_text='A new user can create their account on Re2o.'), + ), + migrations.AlterField( + model_name='optionaluser', + name='self_change_room', + field=models.BooleanField(default=False, help_text='Users can edit their room.'), + ), + migrations.AlterField( + model_name='optionaluser', + name='self_change_shell', + field=models.BooleanField(default=False, help_text='Users can edit their shell.'), + ), + migrations.AlterField( + model_name='radiuskey', + name='comment', + field=models.CharField(blank=True, help_text='Comment for this key', max_length=255, null=True), + ), + migrations.AlterField( + model_name='radiuskey', + name='default_switch', + field=models.BooleanField(default=True, help_text='Default key for switches', unique=True), + ), + migrations.AlterField( + model_name='radiuskey', + name='radius_key', + field=re2o.aes_field.AESEncryptedField(help_text='RADIUS key', max_length=255), + ), + migrations.AlterField( + model_name='radiusoption', + name='banned', + field=models.CharField(choices=[('REJECT', 'Reject the machine'), ('SET_VLAN', 'Place the machine on the VLAN')], default='REJECT', max_length=32, verbose_name='Policy for banned users'), + ), + migrations.AlterField( + model_name='radiusoption', + name='banned_vlan', + field=models.ForeignKey(blank=True, help_text='VLAN for banned users if not rejected', null=True, on_delete=django.db.models.deletion.PROTECT, related_name='banned_vlan', to='machines.Vlan', verbose_name='Banned users VLAN'), + ), + migrations.AlterField( + model_name='radiusoption', + name='non_member', + field=models.CharField(choices=[('REJECT', 'Reject the machine'), ('SET_VLAN', 'Place the machine on the VLAN')], default='REJECT', max_length=32, verbose_name='Policy for non members'), + ), + migrations.AlterField( + model_name='radiusoption', + name='non_member_vlan', + field=models.ForeignKey(blank=True, help_text='VLAN for non members if not rejected', null=True, on_delete=django.db.models.deletion.PROTECT, related_name='non_member_vlan', to='machines.Vlan', verbose_name='Non members VLAN'), + ), + migrations.AlterField( + model_name='radiusoption', + name='unknown_machine_vlan', + field=models.ForeignKey(blank=True, help_text='VLAN for unknown machines if not rejected', null=True, on_delete=django.db.models.deletion.PROTECT, related_name='unknown_machine_vlan', to='machines.Vlan', verbose_name='Unknown machines VLAN'), + ), + migrations.AlterField( + model_name='radiusoption', + name='unknown_port', + field=models.CharField(choices=[('REJECT', 'Reject the machine'), ('SET_VLAN', 'Place the machine on the VLAN')], default='REJECT', max_length=32, verbose_name='Policy for unknown ports'), + ), + migrations.AlterField( + model_name='radiusoption', + name='unknown_port_vlan', + field=models.ForeignKey(blank=True, help_text='VLAN for unknown ports if not rejected', null=True, on_delete=django.db.models.deletion.PROTECT, related_name='unknown_port_vlan', to='machines.Vlan', verbose_name='Unknown ports VLAN'), + ), + migrations.AlterField( + model_name='radiusoption', + name='unknown_room', + field=models.CharField(choices=[('REJECT', 'Reject the machine'), ('SET_VLAN', 'Place the machine on the VLAN')], default='REJECT', max_length=32, verbose_name='Policy for machines connecting from unregistered rooms (relevant on ports with STRICT RADIUS mode)'), + ), + migrations.AlterField( + model_name='radiusoption', + name='unknown_room_vlan', + field=models.ForeignKey(blank=True, help_text='VLAN for unknown rooms if not rejected', null=True, on_delete=django.db.models.deletion.PROTECT, related_name='unknown_room_vlan', to='machines.Vlan', verbose_name='Unknown rooms VLAN'), + ), + migrations.AlterField( + model_name='reminder', + name='days', + field=models.IntegerField(default=7, help_text="Delay between the email and the membership's end", unique=True), + ), + migrations.AlterField( + model_name='reminder', + name='message', + field=models.CharField(blank=True, default='', help_text='Message displayed specifically for this reminder', max_length=255, null=True), + ), + migrations.AlterField( + model_name='switchmanagementcred', + name='default_switch', + field=models.BooleanField(default=True, help_text='Default credentials for switches', unique=True), + ), + migrations.AlterField( + model_name='switchmanagementcred', + name='management_id', + field=models.CharField(help_text='Switch login', max_length=63), + ), + migrations.AlterField( + model_name='switchmanagementcred', + name='management_pass', + field=re2o.aes_field.AESEncryptedField(help_text='Password', max_length=63), + ), + ] diff --git a/preferences/models.py b/preferences/models.py index 228807a6..daeb4a05 100644 --- a/preferences/models.py +++ b/preferences/models.py @@ -73,11 +73,11 @@ class OptionalUser(AclMixin, PreferencesModel): gpg_fingerprint = models.BooleanField(default=True) all_can_create_club = models.BooleanField( default=False, - help_text=_("Users can create a club") + help_text=_("Users can create a club.") ) all_can_create_adherent = models.BooleanField( default=False, - help_text=_("Users can create a member"), + help_text=_("Users can create a member."), ) shell_default = models.OneToOneField( @@ -88,15 +88,15 @@ class OptionalUser(AclMixin, PreferencesModel): ) self_change_shell = models.BooleanField( default=False, - help_text=_("Users can edit their shell") + help_text=_("Users can edit their shell.") ) self_change_room = models.BooleanField( default=False, - help_text=_("Users can edit their room") + help_text=_("Users can edit their room.") ) local_email_accounts_enabled = models.BooleanField( default=False, - help_text=_("Enable local email accounts for users") + help_text=_("Enable local email accounts for users.") ) local_email_domain = models.CharField( max_length=32, @@ -106,20 +106,21 @@ class OptionalUser(AclMixin, PreferencesModel): max_email_address = models.IntegerField( default=15, help_text=_("Maximum number of local email addresses for a standard" - " user") + " user.") ) delete_notyetactive = models.IntegerField( default=15, - help_text=_("Inactive users will be deleted after this number of days") + help_text=_("Not yet active users will be deleted after this number of" + " days.") ) self_adhesion = models.BooleanField( default=False, - help_text=_("A new user can create their account on Re2o") + help_text=_("A new user can create their account on Re2o.") ) all_users_active = models.BooleanField( default=False, - help_text=_("If True, all new created and connected users are active.\ - If False, only when a valid registration has been paid") + help_text=_("If True, all new created and connected users are active." + " If False, only when a valid registration has been paid.") ) class Meta: @@ -206,40 +207,41 @@ class OptionalTopologie(AclMixin, PreferencesModel): switchs_web_management = models.BooleanField( default=False, - help_text="Web management, activé si provision automatique" + help_text=_("Web management, activated in case of automatic provision") ) switchs_web_management_ssl = models.BooleanField( default=False, - help_text="Web management ssl. Assurez-vous que un certif est installé sur le switch !" + help_text=_("SSL web management, make sure that a certificate is" + " installed on the switch") ) switchs_rest_management = models.BooleanField( default=False, - help_text="Rest management, activé si provision auto" + help_text=_("REST management, activated in case of automatic provision") ) switchs_ip_type = models.OneToOneField( 'machines.IpType', on_delete=models.PROTECT, blank=True, null=True, - help_text="Plage d'ip de management des switchs" + help_text=_("IP range for the management of switches") ) switchs_provision = models.CharField( max_length=32, choices=CHOICE_PROVISION, default='tftp', - help_text="Mode de récupération des confs par les switchs" + help_text=_("Provision of configuration mode for switches") ) sftp_login = models.CharField( max_length=32, null=True, blank=True, - help_text="Login sftp des switchs" + help_text=_("SFTP login for switches") ) sftp_pass = AESEncryptedField( max_length=63, null=True, blank=True, - help_text="Mot de passe sftp" + help_text=_("SFTP password") ) @cached_property @@ -314,52 +316,56 @@ class RadiusKey(AclMixin, models.Model): """Class of a radius key""" radius_key = AESEncryptedField( max_length=255, - help_text="Clef radius" + help_text=_("RADIUS key") ) comment = models.CharField( max_length=255, null=True, blank=True, - help_text="Commentaire de cette clef" + help_text=_("Comment for this key") ) default_switch = models.BooleanField( default=True, unique=True, - help_text= "Clef par défaut des switchs" + help_text=_("Default key for switches") ) class Meta: permissions = ( - ("view_radiuskey", "Peut voir un objet radiuskey"), + ("view_radiuskey", _("Can view a RADIUS key object")), ) + verbose_name = _("RADIUS key") + verbose_name_plural = _("RADIUS keys") def __str__(self): - return "Clef radius " + str(self.id) + " " + str(self.comment) + return _("RADIUS key ") + str(self.id) + " " + str(self.comment) class SwitchManagementCred(AclMixin, models.Model): """Class of a management creds of a switch, for rest management""" management_id = models.CharField( max_length=63, - help_text="Login du switch" + help_text=_("Switch login") ) management_pass = AESEncryptedField( max_length=63, - help_text="Mot de passe" + help_text=_("Password") ) default_switch = models.BooleanField( default=True, unique=True, - help_text= "Creds par défaut des switchs" + help_text=_("Default credentials for switches") ) class Meta: permissions = ( - ("view_switchmanagementcred", "Peut voir un objet switchmanagementcred"), + ("view_switchmanagementcred", _("Can view a switch management" + " credentials object")), ) + verbose_name = _("switch management credentials") def __str__(self): - return "Identifiant " + str(self.management_id) + return _("Switch login ") + str(self.management_id) class Reminder(AclMixin, models.Model): @@ -367,25 +373,26 @@ class Reminder(AclMixin, models.Model): Days: liste des nombres de jours pour lesquells un mail est envoyé optionalMessage: message additionel pour le mail """ - PRETTY_NAME="Options pour le mail de fin d'adhésion" days = models.IntegerField( default=7, unique=True, - help_text="Délais entre le mail et la fin d'adhésion" + help_text=_("Delay between the email and the membership's end") ) message = models.CharField( max_length=255, default="", null=True, blank=True, - help_text="Message affiché spécifiquement pour ce rappel" + help_text=_("Message displayed specifically for this reminder") ) class Meta: permissions = ( - ("view_reminder", "Peut voir un objet reminder"), + ("view_reminder", _("Can view a reminder object")), ) + verbose_name = _("reminder") + verbose_name_plural = _("reminders") def users_to_remind(self): from re2o.utils import all_has_access @@ -472,8 +479,7 @@ class MailContact(AclMixin, models.Model): commentary = models.CharField( blank = True, null = True, - help_text = _( - "Description of the associated email address."), + help_text = _("Description of the associated email address."), max_length = 256 ) @@ -564,8 +570,8 @@ def homeoption_post_save(**kwargs): class MailMessageOption(AclMixin, models.Model): """Reglages, mail de bienvenue et autre""" - welcome_mail_fr = models.TextField(default="", help_text="Mail de bienvenue en français") - welcome_mail_en = models.TextField(default="", help_text="Mail de bienvenue en anglais") + welcome_mail_fr = models.TextField(default="", help_text=_("Welcome email in French")) + welcome_mail_en = models.TextField(default="", help_text=_("Welcome email in English")) class Meta: permissions = ( @@ -577,7 +583,8 @@ class MailMessageOption(AclMixin, models.Model): class RadiusOption(AclMixin, PreferencesModel): class Meta: - verbose_name = _("radius policies") + verbose_name = _("RADIUS policy") + verbose_name_plural = _("RADIUS policies") MACHINE = 'MACHINE' DEFINED = 'DEFINED' @@ -588,8 +595,8 @@ class RadiusOption(AclMixin, PreferencesModel): REJECT = 'REJECT' SET_VLAN = 'SET_VLAN' CHOICE_POLICY = ( - (REJECT, _('Reject the machine')), - (SET_VLAN, _('Place the machine on the VLAN')) + (REJECT, _("Reject the machine")), + (SET_VLAN, _("Place the machine on the VLAN")) ) radius_general_policy = models.CharField( max_length=32, @@ -608,16 +615,14 @@ class RadiusOption(AclMixin, PreferencesModel): related_name='unknown_machine_vlan', blank=True, null=True, - verbose_name=_('Unknown machine Vlan'), - help_text=_( - 'Vlan for unknown machines if not rejected.' - ) + verbose_name=_("Unknown machines VLAN"), + help_text=_("VLAN for unknown machines if not rejected") ) unknown_port = models.CharField( max_length=32, choices=CHOICE_POLICY, default=REJECT, - verbose_name=_("Policy for unknown port"), + verbose_name=_("Policy for unknown ports"), ) unknown_port_vlan = models.ForeignKey( 'machines.Vlan', @@ -625,20 +630,15 @@ class RadiusOption(AclMixin, PreferencesModel): related_name='unknown_port_vlan', blank=True, null=True, - verbose_name=_('Unknown port Vlan'), - help_text=_( - 'Vlan for unknown ports if not rejected.' - ) + verbose_name=_("Unknown ports VLAN"), + help_text=_("VLAN for unknown ports if not rejected") ) unknown_room = models.CharField( max_length=32, choices=CHOICE_POLICY, default=REJECT, - verbose_name=_( - "Policy for machine connecting from " - "unregistered room (relevant on ports with STRICT " - "radius mode)" - ), + verbose_name=_("Policy for machines connecting from unregistered rooms" + " (relevant on ports with STRICT RADIUS mode)"), ) unknown_room_vlan = models.ForeignKey( 'machines.Vlan', @@ -646,16 +646,14 @@ class RadiusOption(AclMixin, PreferencesModel): on_delete=models.PROTECT, blank=True, null=True, - verbose_name=_('Unknown room Vlan'), - help_text=_( - 'Vlan for unknown room if not rejected.' - ) + verbose_name=_("Unknown rooms VLAN"), + help_text=_("VLAN for unknown rooms if not rejected") ) non_member = models.CharField( max_length=32, choices=CHOICE_POLICY, default=REJECT, - verbose_name=_("Policy non member users."), + verbose_name=_("Policy for non members"), ) non_member_vlan = models.ForeignKey( 'machines.Vlan', @@ -663,16 +661,14 @@ class RadiusOption(AclMixin, PreferencesModel): on_delete=models.PROTECT, blank=True, null=True, - verbose_name=_('Non member Vlan'), - help_text=_( - 'Vlan for non members if not rejected.' - ) + verbose_name=_("Non members VLAN"), + help_text=_("VLAN for non members if not rejected") ) banned = models.CharField( max_length=32, choices=CHOICE_POLICY, default=REJECT, - verbose_name=_("Policy for banned users."), + verbose_name=_("Policy for banned users"), ) banned_vlan = models.ForeignKey( 'machines.Vlan', @@ -680,10 +676,8 @@ class RadiusOption(AclMixin, PreferencesModel): on_delete=models.PROTECT, blank=True, null=True, - verbose_name=_('Banned Vlan'), - help_text=_( - 'Vlan for banned if not rejected.' - ) + verbose_name=_("Banned users VLAN"), + help_text=_("VLAN for banned users if not rejected") ) vlan_decision_ok = models.OneToOneField( 'machines.Vlan', diff --git a/preferences/templates/preferences/aff_radiuskey.html b/preferences/templates/preferences/aff_radiuskey.html index 0d58efe3..7c972abe 100644 --- a/preferences/templates/preferences/aff_radiuskey.html +++ b/preferences/templates/preferences/aff_radiuskey.html @@ -23,35 +23,35 @@ with this program; if not, write to the Free Software Foundation, Inc., {% endcomment %} {% load acl %} {% load logs_extra %} -
{% include "buttons/sort.html" with prefix='machine' col='name' text=tr_dns_name %}{% include 'buttons/sort.html' with prefix='machine' col='name' text=tr_dns_name %} {% trans "Type" %} {% trans "MAC address" %} {% trans "IP address" %} {% trans "No name" as tr_no_name %} {% trans "View the profile" as tr_view_the_profile %} - {{ machine.get_name|default:'tr_no_name' }} + {{ machine.get_name|default:tr_no_name }} {{ machine.user }} - {% can_create Interface machine.id %} - {% trans "Create an interface" as tr_create_an_interface %} - {% include 'buttons/add.html' with href='machines:new-interface' id=machine.id desc=tr_create_an_interface %} + {% can_create Interface machine.id %} + {% trans "Create an interface" as tr_create_an_interface %} + {% include 'buttons/add.html' with href='machines:new-interface' id=machine.id desc=tr_create_an_interface %} {% acl_end %} {% history_button machine %} {% can_delete machine %} - {% include 'buttons/suppr.html' with href='machines:del-machine' id=machine.id %} + {% include 'buttons/suppr.html' with href='machines:del-machine' id=machine.id %} {% acl_end %}
{{ type.ip_type }} {% can_edit type %} - {% include 'buttons/edit.html' with href='machines:edit-machinetype' id=type.id %} + {% include 'buttons/edit.html' with href='machines:edit-machinetype' id=type.id %} {% acl_end %} {% history_button type %} {{ mx.name }} {% can_edit mx %} - {% include 'buttons/edit.html' with href='machines:edit-mx' id=mx.id %} + {% include 'buttons/edit.html' with href='machines:edit-mx' id=mx.id %} {% acl_end %} {% history_button mx %} {{ nas.autocapture_mac|tick }} {% can_edit nas %} - {% include 'buttons/edit.html' with href='machines:edit-nas' id=nas.id %} + {% include 'buttons/edit.html' with href='machines:edit-nas' id=nas.id %} {% acl_end %} {% history_button nas %} {{ ns.ns }} {% can_edit ns %} - {% include 'buttons/edit.html' with href='machines:edit-ns' id=ns.id %} + {% include 'buttons/edit.html' with href='machines:edit-ns' id=ns.id %} {% acl_end %} {% history_button ns %} {% for serv in role.servers.all %}{{ serv }}, {% endfor %} {% can_edit role %} - {% include 'buttons/edit.html' with href='machines:edit-role' id=role.id %} + {% include 'buttons/edit.html' with href='machines:edit-role' id=role.id %} {% acl_end %} {% history_button role %} {% can_edit service %} - {% include 'buttons/edit.html' with href='machines:edit-service' id=service.id %} + {% include 'buttons/edit.html' with href='machines:edit-service' id=service.id %} {% acl_end %} {% history_button service %} {{ soa.ttl }} {% can_edit soa %} - {% include 'buttons/edit.html' with href='machines:edit-soa' id=soa.id %} + {% include 'buttons/edit.html' with href='machines:edit-soa' id=soa.id %} {% acl_end %} {% history_button soa %} {{ srv.target }} {% can_edit srv %} - {% include 'buttons/edit.html' with href='machines:edit-srv' id=srv.id %} + {% include 'buttons/edit.html' with href='machines:edit-srv' id=srv.id %} {% acl_end %} {% history_button srv %} {{ sshfp.comment }} {% can_edit sshfp %} - {% include 'buttons/edit.html' with href='machines:edit-sshfp' id=sshfp.id %} + {% include 'buttons/edit.html' with href='machines:edit-sshfp' id=sshfp.id %} {% acl_end %} {% history_button sshfp %} {% can_delete sshfp %} - {% include 'buttons/suppr.html' with href='machines:del-sshfp' id=sshfp.id %} + {% include 'buttons/suppr.html' with href='machines:del-sshfp' id=sshfp.id %} {% acl_end %}
{{ txt.dns_entry }} {% can_edit txt %} - {% include 'buttons/edit.html' with href='machines:edit-txt' id=txt.id %} + {% include 'buttons/edit.html' with href='machines:edit-txt' id=txt.id %} {% acl_end %} {% history_button txt %} {% for range in vlan.iptype_set.all %}{{ range }}, {% endfor %} {% can_edit vlan %} - {% include 'buttons/edit.html' with href='machines:edit-vlan' id=vlan.id %} + {% include 'buttons/edit.html' with href='machines:edit-vlan' id=vlan.id %} {% acl_end %} {% history_button vlan %}
- - - - - - - - +{% load i18n %} + +
Id ClefCommentaireClef par default des switchsClef utilisée par les switchs
+ + + + + + + + - - {% for radiuskey in radiuskey_list %} + + {% for radiuskey in radiuskey_list %} - + - {% endfor %} -
{% trans "RADIUS key ID" %}{% trans "Comment" %}{% trans "Default RADIUS key for switches" %}{% trans "RADIUS key used by the swithes" %}
{{ radiuskey.id }} {{ radiuskey.comment }} {{ radiuskey.default_switch }}{{ radiuskey.switch_set.all|join:", " }}{{ radiuskey.switch_set.all|join:", " }} {% can_edit radiuskey %} {% include 'buttons/edit.html' with href='preferences:edit-radiuskey' id=radiuskey.id %} {% acl_end %} - {% can_delete radiuskey %} - - - + {% can_delete radiuskey %} + {% include 'buttons/suppr.html' with href='preferences:del-radiuskey' id=radiuskey.id %} {% acl_end %} {% history_button radiuskey %}
+ {% endfor %} + diff --git a/preferences/templates/preferences/aff_radiusoptions.html b/preferences/templates/preferences/aff_radiusoptions.html index 17e2a869..41cb1846 100644 --- a/preferences/templates/preferences/aff_radiusoptions.html +++ b/preferences/templates/preferences/aff_radiusoptions.html @@ -31,7 +31,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans "VLAN for machines accepted by RADIUS" %} - Vlan {{ radiusoptions.vlan_decision_ok }} + {% blocktrans with vlan_decision_ok=radiusoptions.vlan_decision_ok %}VLAN {{ vlan_decision_ok }}{% endblocktrans %}
@@ -39,7 +39,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans "Situation" %} - {% trans "Behavior" %} + {% trans "Behaviour" %} @@ -48,7 +48,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% if radiusoptions.unknown_machine == 'REJECT' %} {% trans "Reject" %} {% else %} - Vlan {{ radiusoptions.unknown_machine_vlan }} + {% blocktrans with unknown_machine_vlan=radiusoptions.unknown_machine_vlan %}VLAN {{ unknown_machine_vlan }}{% endblocktrans %} {% endif %} @@ -58,7 +58,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% if radiusoptions.unknown_port == 'REJECT' %} {% trans "Reject" %} {% else %} - Vlan {{ radiusoptions.unknown_port_vlan }} + {% blocktrans with unknown_port_vlan=radiusoptions.unknown_port_vlan %}VLAN {{ unknown_port_vlan }}{% endblocktrans %} {% endif %} @@ -68,7 +68,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% if radiusoptions.unknown_room == 'REJECT' %} {% trans "Reject" %} {% else %} - Vlan {{ radiusoptions.unknown_room_vlan }} + {% blocktrans with unknown_room_vlan=radiusoptions.unknown_room_vlan %}VLAN {{ unknown_room_vlan }}{% endblocktrans %} {% endif %} @@ -78,7 +78,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% if radiusoptions.non_member == 'REJECT' %} {% trans "Reject" %} {% else %} - Vlan {{ radiusoptions.non_member_vlan }} + {% blocktrans with non_member_vlan=radiusoptions.non_member_vlan %}VLAN {{ non_member_vlan }}{% endblocktrans %} {% endif %} @@ -88,7 +88,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% if radiusoptions.unknown_port == 'REJECT' %} {% trans "Reject" %} {% else %} - Vlan {{ radiusoptions.banned_vlan }} + {% blocktrans with banned_vlan=radiusoptions.banned_vlan %}VLAN {{ banned_vlan }}{% endblocktrans %} {% endif %} diff --git a/preferences/templates/preferences/aff_reminder.html b/preferences/templates/preferences/aff_reminder.html index 8462fe22..c0586b31 100644 --- a/preferences/templates/preferences/aff_reminder.html +++ b/preferences/templates/preferences/aff_reminder.html @@ -23,31 +23,31 @@ with this program; if not, write to the Free Software Foundation, Inc., {% endcomment %} {% load acl %} {% load logs_extra %} +{% load i18n %} + - - - + + + {% for reminder in reminder_list %} - - - - - + + + + + {% endfor %}
Nombre de jours avant le rappelMessage custom pour ce rappel{% trans "Number of days before the reminder" %}{% trans "Message for this reminder" %}
{{ reminder.days }}{{ reminder.message }} - {% can_edit reminder %} - {% include 'buttons/edit.html' with href='preferences:edit-reminder' id=reminder.id %} - {% can_delete reminder %} - - - - {% acl_end %} - {% acl_end %} - {% history_button reminder %} -
{{ reminder.days }}{{ reminder.message }} + {% can_edit reminder %} + {% include 'buttons/edit.html' with href='preferences:edit-reminder' id=reminder.id %} + {% acl_end %} + {% can_delete reminder %} + {% include 'buttons/suppr.html' with href='preferences:del-reminder' id=reminder.id %} + {% acl_end %} + {% history_button reminder %} +
diff --git a/preferences/templates/preferences/aff_service.html b/preferences/templates/preferences/aff_service.html index 926b2626..dce81768 100644 --- a/preferences/templates/preferences/aff_service.html +++ b/preferences/templates/preferences/aff_service.html @@ -42,15 +42,13 @@ with this program; if not, write to the Free Software Foundation, Inc., {{ service.description }} {{ service.image }} - {% can_edit service%} - {% include 'buttons/edit.html' with href='preferences:edit-service' id=service.id %} - {% can_delete service %} - - - - {% acl_end %} - {% acl_end %} - {% history_button service %} + {% can_edit service%} + {% include 'buttons/edit.html' with href='preferences:edit-service' id=service.id %} + {% acl_end %} + {% can_delete service %} + {% include 'buttons/suppr.html' with href='preferences:del-service' id=service.id %} + {% acl_end %} + {% history_button service %} {% endfor %} diff --git a/preferences/templates/preferences/aff_switchmanagementcred.html b/preferences/templates/preferences/aff_switchmanagementcred.html index ef8b0143..b45dd356 100644 --- a/preferences/templates/preferences/aff_switchmanagementcred.html +++ b/preferences/templates/preferences/aff_switchmanagementcred.html @@ -23,17 +23,19 @@ with this program; if not, write to the Free Software Foundation, Inc., {% endcomment %} {% load acl %} {% load logs_extra %} - - - - - - - - - - - {% for switchmanagementcred in switchmanagementcred_list %} +{% load i18n %} + +
IdentifiantCreds par default des switchsUtilisé pour les switchs
+ + + + + + + + + + {% for switchmanagementcred in switchmanagementcred_list %} @@ -43,13 +45,11 @@ with this program; if not, write to the Free Software Foundation, Inc., {% include 'buttons/edit.html' with href='preferences:edit-switchmanagementcred' id=switchmanagementcred.id %} {% acl_end %} {% can_delete switchmanagementcred %} - - - + {% include 'buttons/suppr.html' with href='preferences:del-switchmanagementcred' id=switchmanagementcred.id %} {% acl_end %} {% history_button switchmanagementcred %} - {% endfor %} -
{% trans "Switch login" %}{% trans "Default switch management credentials" %}{% trans "Management credentials used by the switches" %}
{{ switchmanagementcred.management_id }} {{ switchmanagementcred.default_switch }}
+ {% endfor %} + diff --git a/preferences/templates/preferences/delete.html b/preferences/templates/preferences/delete.html index ce277647..7897e286 100644 --- a/preferences/templates/preferences/delete.html +++ b/preferences/templates/preferences/delete.html @@ -1,4 +1,4 @@ -{% extends "topologie/sidebar.html" %} +{% extends 'preferences/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -24,15 +24,17 @@ with this program; if not, write to the Free Software Foundation, Inc., {% endcomment %} {% load bootstrap3 %} +{% load i18n %} -{% block title %}Création et modification de machines{% endblock %} +{% block title %}{% trans "Deletion of preferences" %}{% endblock %} {% block content %}
{% csrf_token %} -

Attention, voulez-vous vraiment supprimer cet objet {{ objet_name }} ( {{ objet }} ) ?

- {% bootstrap_button "Confirmer" button_type="submit" icon="trash" %} +

{% blocktrans %}Warning: are you sure you want to delete this {{ objet_name }} object ( {{ objet }} )?{% endblocktrans %}

+ {% trans "Confirm" as tr_confirm %} + {% bootstrap_button tr_confirm button_type="submit" icon="trash" %}


diff --git a/preferences/templates/preferences/display_preferences.html b/preferences/templates/preferences/display_preferences.html index e4321f5b..50b2b647 100644 --- a/preferences/templates/preferences/display_preferences.html +++ b/preferences/templates/preferences/display_preferences.html @@ -1,4 +1,4 @@ -{% extends "preferences/sidebar.html" %} +{% extends 'preferences/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -69,7 +69,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans "General message displayed on the website" %} {{ generaloptions.general_message }} - {% trans "Main site url" %} + {% trans "Main site URL" %} {{ generaloptions.main_site_url }} @@ -120,7 +120,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans "Self registration" %} {{ useroptions.self_adhesion|tick }} {% trans "Delete not yet active users after" %} - {{ useroptions.delete_notyetactive }} days + {% blocktrans with delete_notyetactive=useroptions.delete_notyetactive %}{{ delete_notyetactive }} days{% endblocktrans %} {% trans "All users are active by default" %} @@ -218,11 +218,11 @@ with this program; if not, write to the Free Software Foundation, Inc., -

Clef radius

+

{% trans "RADIUS keys" %}

{% can_create RadiusKey%} - Ajouter une clef radius + {% trans " Add a RADIUS key" %} {% acl_end %} - {% include "preferences/aff_radiuskey.html" with radiuskey_list=radiuskey_list %} + {% include 'preferences/aff_radiuskey.html' with radiuskey_list=radiuskey_list %}
@@ -230,7 +230,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
@@ -243,64 +243,64 @@ with this program; if not, write to the Free Software Foundation, Inc., - + - +
Web management, activé si provision automatique{% trans "Web management, activated in case of automatic provision" %} {{ topologieoptions.switchs_web_management }}Rest management, activé si provision auto{% trans "REST management, activated in case of automatic provision" %} {{ topologieoptions.switchs_rest_management }}
-
{% if topologieoptions.provision_switchs_enabled %}Provision de la config des switchs{% else %}Provision de la config des switchs{% endif%}
+
{% if topologieoptions.provision_switchs_enabled %}{% trans "Provision of configuration for switches" %}{% else %}{% trans "Provision of configuration for switches" %}{% endif%}
- - + + - - + + - - + + - + - - + + - - + +
Switchs configurés automatiquement{{ topologieoptions.provisioned_switchs|join:", " }} {% if topologieoptions.provisioned_switchs %} OK{% else %}Manquant{% endif %}{% trans "Switches with automatic provision" %}{{ topologieoptions.provisioned_switchs|join:", " }} {% if topologieoptions.provisioned_switchs %}{% trans "OK" %}{% else %}{% trans "Missing" %}{% endif %}
Plage d'ip de management des switchs{{ topologieoptions.switchs_ip_type }} {% if topologieoptions.switchs_ip_type %} OK{% else %}Manquant{% endif %}{% trans "IP range for the management of switches" %}{{ topologieoptions.switchs_ip_type }} {% if topologieoptions.switchs_ip_type %}{% trans "OK" %}{% else %}{% trans "Missing" %}{% endif %}
Serveur des config des switchs{{ topologieoptions.switchs_management_interface }} {% if topologieoptions.switchs_management_interface %} - {{ topologieoptions.switchs_management_interface_ip }} OK{% else %}Manquant{% endif %}{% trans "Server for the configuration of switches" %}{{ topologieoptions.switchs_management_interface }} {% if topologieoptions.switchs_management_interface %} - {{ topologieoptions.switchs_management_interface_ip }} {% trans "OK" %}{% else %}{% trans "Missing" %}{% endif %}
Mode de provision des switchs{% trans "Provision of configuration mode for switches" %} {{ topologieoptions.switchs_provision }}
Mode TFTP OK{% trans "TFTP mode" %}{% trans "OK" %}
Mode SFTP{% if topologieoptions.switchs_management_sftp_creds %} OK{% else %}Creds manquants{% endif %}{% trans "SFTP mode" %}{% if topologieoptions.switchs_management_sftp_creds %}{% trans "OK" %}{% else %}{% trans "Missing credentials" %}{% endif %}
-
Creds de management des switchs
+
{% trans "Switch management credentials" %}
{% can_create SwitchManagementCred%} - Ajouter un id/mdp de management switch + {% trans " Add switch management credentials" %} {% acl_end %}

- {% if switchmanagementcred_list %} OK{% else %}Manquant{% endif %} - {% include "preferences/aff_switchmanagementcred.html" with switchmanagementcred_list=switchmanagementcred_list %} + {% if switchmanagementcred_list %}{% trans "OK" %}{% else %}{% trans "Missing" %}{% endif %} + {% include 'preferences/aff_switchmanagementcred.html' with switchmanagementcred_list=switchmanagementcred_list %}
{% trans "Edit" %} - {% include "preferences/aff_radiusoptions.html" %} + {% include 'preferences/aff_radiusoptions.html' %}
@@ -350,7 +350,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
@@ -377,16 +377,16 @@ with this program; if not, write to the Free Software Foundation, Inc.,
{% can_create preferences.Reminder%} - Ajouter un rappel + {% trans " Add a reminder" %}

{% acl_end %} - {% include "preferences/aff_reminder.html" with reminder_list=reminder_list %} + {% include 'preferences/aff_reminder.html' with reminder_list=reminder_list %}
@@ -403,7 +403,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans " Add a service" %}

{% acl_end %} - {% include "preferences/aff_service.html" with service_list=service_list %} + {% include 'preferences/aff_service.html' with service_list=service_list %}
@@ -417,18 +417,18 @@ with this program; if not, write to the Free Software Foundation, Inc.,
{% can_create preferences.MailContact %} - {% trans "Add an address" %} + {% trans " Add an address" %} {% acl_end %} - {% trans "Delete one or several addresses" %} + {% trans " Delete one or several addresses" %}

- {% include "preferences/aff_mailcontact.html" with mailcontact_list=mailcontact_list %} + {% include 'preferences/aff_mailcontact.html' with mailcontact_list=mailcontact_list %}
diff --git a/preferences/templates/preferences/edit_preferences.html b/preferences/templates/preferences/edit_preferences.html index c3dd4652..b5f8c506 100644 --- a/preferences/templates/preferences/edit_preferences.html +++ b/preferences/templates/preferences/edit_preferences.html @@ -1,4 +1,4 @@ -{% extends "preferences/sidebar.html" %} +{% extends 'preferences/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en diff --git a/preferences/templates/preferences/preferences.html b/preferences/templates/preferences/preferences.html index 8ae9b6bc..308d121e 100644 --- a/preferences/templates/preferences/preferences.html +++ b/preferences/templates/preferences/preferences.html @@ -1,4 +1,4 @@ -{% extends "preferences/sidebar.html" %} +{% extends 'preferences/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en diff --git a/preferences/templates/preferences/sidebar.html b/preferences/templates/preferences/sidebar.html index 98b597ea..2dccf639 100644 --- a/preferences/templates/preferences/sidebar.html +++ b/preferences/templates/preferences/sidebar.html @@ -1,4 +1,4 @@ -{% extends "base.html" %} +{% extends 'base.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en diff --git a/preferences/views.py b/preferences/views.py index 586be60f..0e86713c 100644 --- a/preferences/views.py +++ b/preferences/views.py @@ -111,7 +111,7 @@ def edit_options(request, section): model = getattr(models, section, None) form_instance = getattr(forms, 'Edit' + section + 'Form', None) if not (model or form_instance): - messages.error(request, _("Unknown object")) + messages.error(request, _("Unknown object.")) return redirect(reverse('preferences:display-options')) options_instance, _created = model.objects.get_or_create() @@ -186,7 +186,7 @@ def del_service(request, service_instance, **_kwargs): """Suppression d'un service de la page d'accueil""" if request.method == "POST": service_instance.delete() - messages.success(request, "Le service a été détruit") + messages.success(request, _("The service was deleted.")) return redirect(reverse('preferences:display-options')) return form( {'objet': service_instance, 'objet_name': 'service'}, @@ -204,7 +204,7 @@ def add_reminder(request): messages.success(request, _("The reminder was added.")) return redirect(reverse('preferences:display-options')) return form( - {'preferenceform': reminder, 'action_name': _("Add a service")}, + {'preferenceform': reminder, 'action_name': _("Add a reminder")}, 'preferences/preferences.html', request ) @@ -220,7 +220,7 @@ def edit_reminder(request, reminder_instance, **_kwargs): ) if reminder.is_valid(): reminder.save() - messages.success(request, _("The service was edited.")) + messages.success(request, _("The reminder was edited.")) return redirect(reverse('preferences:display-options')) return form( {'preferenceform': reminder, 'action_name': _("Edit")}, @@ -236,7 +236,7 @@ def del_reminder(request, reminder_instance, **_kwargs): """Destruction d'un reminder""" if request.method == "POST": reminder_instance.delete() - messages.success(request, "Le reminder a été détruit") + messages.success(request, _("The reminder was deleted.")) return redirect(reverse('preferences:display-options')) return form( {'objet': reminder_instance, 'objet_name': 'reminder'}, @@ -252,10 +252,10 @@ def add_radiuskey(request): radiuskey = RadiusKeyForm(request.POST or None) if radiuskey.is_valid(): radiuskey.save() - messages.success(request, "Cette clef a été ajouté") + messages.success(request, _("The RADIUS key was added.")) return redirect(reverse('preferences:display-options')) return form( - {'preferenceform': radiuskey, 'action_name': 'Ajouter'}, + {'preferenceform': radiuskey, 'action_name': _("Add a RADIUS key")}, 'preferences/preferences.html', request ) @@ -266,10 +266,10 @@ def edit_radiuskey(request, radiuskey_instance, **_kwargs): radiuskey = RadiusKeyForm(request.POST or None, instance=radiuskey_instance) if radiuskey.is_valid(): radiuskey.save() - messages.success(request, "Radiuskey modifié") + messages.success(request, _("The RADIUS key was edited.")) return redirect(reverse('preferences:display-options')) return form( - {'preferenceform': radiuskey, 'action_name': 'Editer'}, + {'preferenceform': radiuskey, 'action_name': _("Edit")}, 'preferences/preferences.html', request ) @@ -282,10 +282,10 @@ def del_radiuskey(request, radiuskey_instance, **_kwargs): if request.method == "POST": try: radiuskey_instance.delete() - messages.success(request, "La radiuskey a été détruite") + messages.success(request, _("The RADIUS key was deleted.")) except ProtectedError: - messages.error(request, "Erreur la\ - clef ne peut être supprimé, elle est affectée à des switchs") + messages.error(request, _("The RADIUS key is assigned to at least" + " one switch, you can't delete it.")) return redirect(reverse('preferences:display-options')) return form( {'objet': radiuskey_instance, 'objet_name': 'radiuskey'}, @@ -301,10 +301,10 @@ def add_switchmanagementcred(request): switchmanagementcred = SwitchManagementCredForm(request.POST or None) if switchmanagementcred.is_valid(): switchmanagementcred.save() - messages.success(request, "Ces creds ont été ajoutés") + messages.success(request, _("The switch management credentials were added.")) return redirect(reverse('preferences:display-options')) return form( - {'preferenceform': switchmanagementcred, 'action_name': 'Ajouter'}, + {'preferenceform': switchmanagementcred, 'action_name': _("Add switch management credentials")}, 'preferences/preferences.html', request ) @@ -315,10 +315,10 @@ def edit_switchmanagementcred(request, switchmanagementcred_instance, **_kwargs) switchmanagementcred = SwitchManagementCredForm(request.POST or None, instance=switchmanagementcred_instance) if switchmanagementcred.is_valid(): switchmanagementcred.save() - messages.success(request, "Creds de managament modifié") + messages.success(request, _("The switch management credentials were edited.")) return redirect(reverse('preferences:display-options')) return form( - {'preferenceform': switchmanagementcred, 'action_name': 'Editer'}, + {'preferenceform': switchmanagementcred, 'action_name': _("Edit")}, 'preferences/preferences.html', request ) @@ -331,10 +331,11 @@ def del_switchmanagementcred(request, switchmanagementcred_instance, **_kwargs): if request.method == "POST": try: switchmanagementcred_instance.delete() - messages.success(request, "Ces creds ont été détruits") + messages.success(request, _("The switch management credentials were deleted.")) except ProtectedError: - messages.error(request, "Erreur ces\ - creds ne peuvent être supprimés, ils sont affectés à des switchs") + messages.error(request, _("The switch management credentials are" + " assigned to at least one switch, you" + " can't delete them.")) return redirect(reverse('preferences:display-options')) return form( {'objet': switchmanagementcred_instance, 'objet_name': 'switchmanagementcred'}, From 3f601d74d1c82cb64cfef30079df61dc9ae20201 Mon Sep 17 00:00:00 2001 From: Laouen Fernet Date: Wed, 9 Jan 2019 00:40:08 +0100 Subject: [PATCH 06/10] add translations for re2o/ --- re2o/base.py | 4 +-- re2o/locale/fr/LC_MESSAGES/django.po | 54 ++++++++++++++++++---------- re2o/templates/re2o/about.html | 2 +- re2o/templates/re2o/contact.html | 2 +- re2o/templates/re2o/history.html | 4 +-- re2o/templates/re2o/index.html | 10 +++--- re2o/templates/re2o/sidebar.html | 2 +- re2o/views.py | 2 +- 8 files changed, 48 insertions(+), 32 deletions(-) diff --git a/re2o/base.py b/re2o/base.py index 023a16ff..fff2278c 100644 --- a/re2o/base.py +++ b/re2o/base.py @@ -73,9 +73,9 @@ def smtp_check(local_part): reply_code = srv.getreply()[0] srv.close() if reply_code in [250, 252]: - return True, _("This domain is already taken") + return True, _("This domain is already taken.") except: - return True, _("Smtp unreachable") + return True, _("SMTP unreachable.") return False, None diff --git a/re2o/locale/fr/LC_MESSAGES/django.po b/re2o/locale/fr/LC_MESSAGES/django.po index 9c9941b2..2f634fed 100644 --- a/re2o/locale/fr/LC_MESSAGES/django.po +++ b/re2o/locale/fr/LC_MESSAGES/django.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: 2.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-08-23 15:03+0200\n" +"POT-Creation-Date: 2019-01-12 16:48+0100\n" "PO-Revision-Date: 2018-03-31 16:09+0002\n" "Last-Translator: Laouen Fernet \n" "Language-Team: \n" @@ -42,6 +42,14 @@ msgstr "Vous n'avez pas le droit d'accéder à ce menu." msgid "You don't have the right to edit the history." msgstr "Vous n'avez pas le droit de modifier l'historique." +#: base.py:76 +msgid "This domain is already taken." +msgstr "Ce domaine est déjà pris." + +#: base.py:78 +msgid "SMTP unreachable." +msgstr "SMTP injoignable." + #: mixins.py:111 #, python-format msgid "You don't have the right to create a %s object." @@ -87,15 +95,15 @@ msgstr "À propos de %(AssoName)s" #: templates/re2o/about.html:36 msgid "" "Re2o is an administration tool initiated by Rezo Metz and a few members of other FedeRez associations around the summer 2016.
It is " -"intended to be a tool independant from any network infrastructure so it can " -"be setup in \"a few steps\". This tool is entirely free and available under " -"a GNU Public License v2 (GPLv2) license on FedeRez gitlab.
Re2o's mainteners are " -"volunteers mainly from French schools.
If you want to get involved in " -"the development process, we will be glad to welcome you so do not hesitate " -"to contact us and come help us build the future of Re2o." +"\">Rezo Metz and a few members of other FedeRez associations around the summer 2016.
It is intended to " +"be a tool independant from any network infrastructure so it can be setup in " +"\"a few steps\". This tool is entirely free and available under a GNU Public " +"License v2 (GPLv2) license on FedeRez gitlab.
Re2o's mainteners are volunteers mainly " +"from French schools.
If you want to get involved in the development " +"process, we will be glad to welcome you so do not hesitate to contact us and " +"come help us build the future of Re2o." msgstr "" "Re2o est un outil d'administration initié par Rézo Metz et quelques membres d'autres associations de {% blocktrans %}History of {{ object }}{% endblocktrans %} - {% include "re2o/aff_history.html" with reversions=reversions %} + {% include 're2o/aff_history.html' with reversions=reversions %}


diff --git a/re2o/templates/re2o/index.html b/re2o/templates/re2o/index.html index f7adacbc..a6b1a8c5 100644 --- a/re2o/templates/re2o/index.html +++ b/re2o/templates/re2o/index.html @@ -1,4 +1,4 @@ -{% extends "re2o/sidebar.html" %} +{% extends 're2o/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -42,7 +42,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
@@ -53,8 +53,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,

{% trans "Logging in" %}

-

{% trans "If you already have an account, log in. You can manage your subscription to the organisation, your machines and all your services." %}

-

{% trans "Logging in" %}

+

{% trans "If you already have an account, log in. You can manage your subscriptions to the organisation, your machines and all your services." %}

+

{% trans "Log in" %}

@@ -66,7 +66,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,

{% trans "My profile" %}

-

{% trans "To manage your subscription, your machines and all your services, access your profile." %}

+

{% trans "To manage your subscriptions, your machines and all your services, access your profile." %}

{% trans "Access my profile" %}

diff --git a/re2o/templates/re2o/sidebar.html b/re2o/templates/re2o/sidebar.html index c9202d14..e7e58599 100644 --- a/re2o/templates/re2o/sidebar.html +++ b/re2o/templates/re2o/sidebar.html @@ -1,4 +1,4 @@ -{% extends "base.html" %} +{% extends 'base.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en diff --git a/re2o/views.py b/re2o/views.py index 15becb35..0ff2774b 100644 --- a/re2o/views.py +++ b/re2o/views.py @@ -84,7 +84,7 @@ def about_page(request): git_info_commit = last_commit.hexsha git_info_commit_date = last_commit.committed_datetime except: - NO_GIT_MSG = _("Unable to get the information") + NO_GIT_MSG = _("Unable to get the information.") git_info_remote = NO_GIT_MSG git_info_branch = NO_GIT_MSG git_info_commit = NO_GIT_MSG From cd2e39c480002005ce4dfffa8bceb16784f24d81 Mon Sep 17 00:00:00 2001 From: Laouen Fernet Date: Wed, 9 Jan 2019 00:40:19 +0100 Subject: [PATCH 07/10] add translations for search/ --- search/forms.py | 2 +- search/locale/fr/LC_MESSAGES/django.po | 38 ++++++++++++++------------ search/templates/search/index.html | 24 ++++++++-------- search/templates/search/search.html | 6 ++-- search/templates/search/sidebar.html | 6 ++-- 5 files changed, 40 insertions(+), 36 deletions(-) diff --git a/search/forms.py b/search/forms.py index 5fa5fca8..a32c8abc 100644 --- a/search/forms.py +++ b/search/forms.py @@ -33,7 +33,7 @@ CHOICES_USER = ( ('0', _("Active")), ('1', _("Disabled")), ('2', _("Archived")), - ('3', _("Not Yet Active")), + ('3', _("Not yet active")), ) CHOICES_AFF = ( diff --git a/search/locale/fr/LC_MESSAGES/django.po b/search/locale/fr/LC_MESSAGES/django.po index dd0b63a3..be2a79cc 100644 --- a/search/locale/fr/LC_MESSAGES/django.po +++ b/search/locale/fr/LC_MESSAGES/django.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: 2.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-08-15 18:15+0200\n" +"POT-Creation-Date: 2019-01-08 23:56+0100\n" "PO-Revision-Date: 2018-06-24 20:10+0200\n" "Last-Translator: Laouen Fernet \n" "Language-Team: \n" @@ -42,44 +42,48 @@ msgstr "Désactivés" msgid "Archived" msgstr "Archivés" -#: forms.py:39 +#: forms.py:36 +msgid "Not yet active" +msgstr "Pas encore adhéré" + +#: forms.py:40 msgid "Users" msgstr "Utilisateurs" -#: forms.py:40 +#: forms.py:41 msgid "Machines" msgstr "Machines" -#: forms.py:41 +#: forms.py:42 msgid "Invoices" msgstr "Factures" -#: forms.py:42 +#: forms.py:43 msgid "Bans" msgstr "Bannissements" -#: forms.py:43 +#: forms.py:44 msgid "Whitelists" msgstr "Accès gracieux" -#: forms.py:44 +#: forms.py:45 msgid "Rooms" msgstr "Chambres" -#: forms.py:45 +#: forms.py:46 msgid "Ports" msgstr "Ports" -#: forms.py:46 +#: forms.py:47 msgid "Switches" msgstr "Commutateurs réseau" -#: forms.py:59 forms.py:71 templates/search/search.html:29 +#: forms.py:60 forms.py:72 templates/search/search.html:29 #: templates/search/search.html:48 msgid "Search" msgstr "Rechercher" -#: forms.py:61 forms.py:73 +#: forms.py:62 forms.py:74 msgid "" "Use « » and «,» to specify distinct words, «\"query\"» for an exact search " "and «\\» to escape a character." @@ -87,19 +91,19 @@ msgstr "" "Utilisez « » et «,» pour spécifier différents mots, «\"query\"» pour une " "recherche exacte et «\\» pour échapper un caractère." -#: forms.py:80 +#: forms.py:81 msgid "Users filter" msgstr "Filtre utilisateurs" -#: forms.py:87 +#: forms.py:88 msgid "Display filter" msgstr "Filtre affichage" -#: forms.py:95 +#: forms.py:96 msgid "Start date" msgstr "Date de début" -#: forms.py:99 +#: forms.py:100 msgid "End date" msgstr "Date de fin" @@ -136,11 +140,11 @@ msgid "Results among rooms:" msgstr "Résultats parmi les chambres :" #: templates/search/index.html:61 -msgid "Results among ports" +msgid "Results among ports:" msgstr "Résultats parmi les ports :" #: templates/search/index.html:65 -msgid "Results among switches" +msgid "Results among switches:" msgstr "Résultats parmi les commutateurs réseau :" #: templates/search/index.html:69 diff --git a/search/templates/search/index.html b/search/templates/search/index.html index 84ba501c..4d3e2942 100644 --- a/search/templates/search/index.html +++ b/search/templates/search/index.html @@ -1,4 +1,4 @@ -{% extends "search/sidebar.html" %} +{% extends 'search/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -31,39 +31,39 @@ with this program; if not, write to the Free Software Foundation, Inc., {% block content %} {% if users %}

{% trans "Results among users:" %}

- {% include "users/aff_users.html" with users_list=users %} + {% include 'users/aff_users.html' with users_list=users %} {% endif%} {% if clubs %}

{% trans "Results among clubs:" %}

- {% include "users/aff_clubs.html" with clubs_list=clubs %} + {% include 'users/aff_clubs.html' with clubs_list=clubs %} {% endif%} {% if machines %}

{% trans "Results among machines:" %}

- {% include "machines/aff_machines.html" with machines_list=machines %} + {% include 'machines/aff_machines.html' with machines_list=machines %} {% endif %} {% if factures %}

{% trans "Results among invoices:" %}

- {% include "cotisations/aff_cotisations.html" with facture_list=factures %} + {% include 'cotisations/aff_cotisations.html' with facture_list=factures %} {% endif %} {% if whitelists %}

{% trans "Results among whitelists:" %}

- {% include "users/aff_whitelists.html" with white_list=whitelists %} + {% include 'users/aff_whitelists.html' with white_list=whitelists %} {% endif %} {% if bans %}

{% trans "Results among bans:" %}

- {% include "users/aff_bans.html" with ban_list=bans %} + {% include 'users/aff_bans.html' with ban_list=bans %} {% endif %} {% if rooms %}

{% trans "Results among rooms:" %}

- {% include "topologie/aff_chambres.html" with room_list=rooms %} + {% include 'topologie/aff_chambres.html' with room_list=rooms %} {% endif %} {% if ports %} -

{% trans "Results among ports" %}

- {% include "topologie/aff_port.html" with port_list=ports search=True %} +

{% trans "Results among ports:" %}

+ {% include 'topologie/aff_port.html' with port_list=ports search=True %} {% endif %} {% if switches %} -

{% trans "Results among switches" %}

- {% include "topologie/aff_switch.html" with switch_list=switches %} +

{% trans "Results among switches:" %}

+ {% include 'topologie/aff_switch.html' with switch_list=switches %} {% endif %} {% if not users and not machines and not factures and not whitelists and not bans and not rooms and not ports and not switches %}

{% trans "No result" %}

diff --git a/search/templates/search/search.html b/search/templates/search/search.html index 42012339..d957a4cf 100644 --- a/search/templates/search/search.html +++ b/search/templates/search/search.html @@ -1,4 +1,4 @@ -{% extends "search/sidebar.html" %} +{% extends 'search/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -34,10 +34,10 @@ with this program; if not, write to the Free Software Foundation, Inc.,
{% bootstrap_field search_form.q %} {% if search_form.u %} - {% include "buttons/multiple_checkbox_alt.html" with field=search_form.u %} + {% include 'buttons/multiple_checkbox_alt.html' with field=search_form.u %} {% endif %} {% if search_form.a %} - {% include "buttons/multiple_checkbox_alt.html" with field=search_form.a %} + {% include 'buttons/multiple_checkbox_alt.html' with field=search_form.a %} {% endif %} {% if search_form.s %} {% bootstrap_field search_form.s %} diff --git a/search/templates/search/sidebar.html b/search/templates/search/sidebar.html index a445ef41..28d7a115 100644 --- a/search/templates/search/sidebar.html +++ b/search/templates/search/sidebar.html @@ -1,4 +1,4 @@ -{% extends "base.html" %} +{% extends 'base.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -26,11 +26,11 @@ with this program; if not, write to the Free Software Foundation, Inc., {% load i18n %} {% block sidebar %} - + {% trans "Simple search" %} - + {% trans "Advanced search" %} From 4a8c161edc1e78a12462fe3fc75278761008de49 Mon Sep 17 00:00:00 2001 From: Laouen Fernet Date: Wed, 9 Jan 2019 00:40:30 +0100 Subject: [PATCH 08/10] add translations for templates/ --- templates/base.html | 26 +++--- templates/locale/fr/LC_MESSAGES/django.po | 101 ++++++++++++---------- templates/registration/login.html | 2 +- 3 files changed, 71 insertions(+), 58 deletions(-) diff --git a/templates/base.html b/templates/base.html index 867be422..401ece70 100644 --- a/templates/base.html +++ b/templates/base.html @@ -96,14 +96,14 @@ with this program; if not, write to the Free Software Foundation, Inc., {% acl_end %} {% can_view_app logs %} -
  • {% trans "Statistics" %}
  • +
  • {% trans "Statistics" %}
  • {% acl_end %} {% can_view_app preferences %}
  • @@ -137,12 +137,12 @@ with this program; if not, write to the Free Software Foundation, Inc., {% else %} {% can_view_any_app users machines cotisations %}
  • - +
    - +
  • @@ -153,7 +153,7 @@ with this program; if not, write to the Free Software Foundation, Inc., @@ -200,7 +200,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans "Internet access" %} {% if request_user.has_access %} - {% blocktrans with request.user.end_access|date:"d b Y" as date %}Until {{ date }}{% endblocktrans %} + {% blocktrans with end_access_date=request.user.end_access|date:"d b Y" %}Until {{ end_access_date }}{% endblocktrans %} {% else %} {% trans "Disabled" %} {% endif %} @@ -210,15 +210,15 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans "Membership" %} {% if request_user.is_adherent %} - {% blocktrans with request_user.end_adhesion|date:"d b Y" as date %}Until {{ date }}{% endblocktrans %} + {% blocktrans with end_adhesion_date=request_user.end_adhesion|date:"d b Y" %}Until {{ end_adhesion_date }}{% endblocktrans %} {% else %} - {% trans "Not a member" %} + {% trans "Non member" %} {% endif %}
    - + {% trans "View my profile" %} @@ -236,10 +236,10 @@ with this program; if not, write to the Free Software Foundation, Inc.,
      {% for interface in interfaces|slice:":5" %} -
      {{interface}}
      +
      {{ interface }}
      {% endfor %} {% if interfaces|length > 5 %} - + {% trans "View my machines" %} diff --git a/templates/locale/fr/LC_MESSAGES/django.po b/templates/locale/fr/LC_MESSAGES/django.po index 75170dd3..2adc5854 100644 --- a/templates/locale/fr/LC_MESSAGES/django.po +++ b/templates/locale/fr/LC_MESSAGES/django.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: 2.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-08-15 16:10+0200\n" +"POT-Creation-Date: 2019-01-08 23:59+0100\n" "PO-Revision-Date: 2018-03-31 16:09+0002\n" "Last-Translator: Laouen Fernet \n" "Language-Team: \n" @@ -38,116 +38,121 @@ msgstr "Site de gestion de réseau soutenu par FedeRez." msgid "Home" msgstr "Accueil" -#: base.html:81 +#: base.html:80 msgid "Users" msgstr "Utilisateurs" -#: base.html:84 +#: base.html:83 msgid "Manage the users" msgstr "Gérer les utilisateurs" -#: base.html:85 +#: base.html:84 msgid "Manage the clubs" msgstr "Gérer les clubs" -#: base.html:88 +#: base.html:87 msgid "Manage the machines" msgstr "Gérer les machines" -#: base.html:91 +#: base.html:90 msgid "Manage the subscriptions" msgstr "Gérer les cotisations" -#: base.html:98 +#: base.html:97 msgid "Topology" msgstr "Topologie" -#: base.html:100 +#: base.html:99 msgid "Switches" msgstr "Commutateurs réseau" -#: base.html:101 +#: base.html:100 msgid "Access points" msgstr "Points d'accès sans fil" -#: base.html:102 +#: base.html:101 msgid "Rooms" msgstr "Chambres" -#: base.html:107 +#: base.html:106 msgid "Statistics" msgstr "Statistiques" -#: base.html:112 +#: base.html:111 msgid "Administration" msgstr "Administration" -#: base.html:112 +#: base.html:118 msgid "More information" msgstr "Plus d'informations" -#: base.html:114 +#: base.html:120 msgid "About" msgstr "À propos" -#: base.html:122 +#: base.html:121 msgid "Contact" msgstr "Contact" -#: base.html:129 +#: base.html:128 msgid "Sign up" -msgstr "S'enregistrer" +msgstr "S'inscrire" -#: base.html:135 registration/login.html:30 registration/login.html:50 +#: base.html:134 registration/login.html:29 registration/login.html:36 msgid "Log in" msgstr "Se connecter" -#: base.html:143 +#: base.html:142 msgid "Search" msgstr "Rechercher" -#: base.html:157 +#: base.html:156 msgid "My profile" msgstr "Mon profil" -#: base.html:158 +#: base.html:157 msgid "Log out" msgstr "Se déconnecter" -#: base.html:194 +#: base.html:192 msgid "Username" msgstr "Pseudo" -#: base.html:198 +#: base.html:196 msgid "Room" msgstr "Chambre" -#: base.html:202 +#: base.html:200 msgid "Internet access" msgstr "Accès Internet" -#: base.html:205 base.html:215 +#: base.html:203 #, python-format -msgid "Until %(date)s" -msgstr "Jusqu'au %(date)s" +msgid "Until %(end_access_date)s" +msgstr "Jusqu'au %(end_access_date)s" -#: base.html:207 +#: base.html:205 msgid "Disabled" msgstr "Désactivé" -#: base.html:212 +#: base.html:210 msgid "Membership" msgstr "Adhésion" -#: base.html:217 -msgid "Not a member" +#: base.html:213 +#, python-format +msgid "Until %(end_adhesion_date)s" +msgstr "Jusqu'au %(end_adhesion_date)s" + +#: base.html:215 +msgid "Non member" msgstr "Non adhérent" -#: base.html:225 +#: base.html:223 msgid "View my profile" msgstr "Voir mon profil" -#: base.html:229 +#: base.html:228 msgid "You are not logged in." msgstr "Vous n'êtes pas connecté." @@ -180,11 +185,11 @@ msgstr "À propos de ce site" #: base.html:267 msgid "" -"This software is under the terms of the " -"GPLv2 License." +"This software is under the terms of the GPLv2 License." msgstr "" -"Ce logiciel est sous les termes de la licence " -"GPLv2." +"Ce logiciel est sous les termes de la licence GPLv2." #: buttons/add.html:27 msgid "Add" @@ -293,14 +298,22 @@ msgstr "Si vous n'avez aucune idée de ce que vous avez fait :" msgid "Go back to a safe page" msgstr "Retourner à une page sécurisée" -#: registration/login.html:35 -msgid "Your username and password didn't match. Please try again." -msgstr "Vos identifiants sont incorrects. Veuillez réessayer." +#: pagination.html:34 +msgid "First" +msgstr "Première page" -#: registration/login.html:43 -msgid "Please log in to see this page." -msgstr "Veuillez vous connecter pour voir cette page." +#: pagination.html:40 +msgid "Previous" +msgstr "Précédent" -#: registration/login.html:53 +#: pagination.html:60 +msgid "Next" +msgstr "Suivant" + +#: pagination.html:66 +msgid "Last" +msgstr "Dernière page" + +#: registration/login.html:40 msgid "Forgotten password?" msgstr "Mot de passe oublié ?" diff --git a/templates/registration/login.html b/templates/registration/login.html index 234144c5..f4226d7d 100644 --- a/templates/registration/login.html +++ b/templates/registration/login.html @@ -1,4 +1,4 @@ -{% extends "base.html" %} +{% extends 'base.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en From 69d80fcdb0360a8c54877a60511e029c9abcecac Mon Sep 17 00:00:00 2001 From: Laouen Fernet Date: Wed, 9 Jan 2019 00:40:48 +0100 Subject: [PATCH 09/10] add translations for topologie/ --- topologie/locale/fr/LC_MESSAGES/django.po | 484 +++++++++++------- .../migrations/0069_auto_20190108_1439.py | 59 +++ topologie/models.py | 45 +- topologie/templates/topologie/aff_ap.html | 18 +- .../templates/topologie/aff_building.html | 16 +- .../templates/topologie/aff_chambres.html | 14 +- .../topologie/aff_constructor_switch.html | 14 +- .../templates/topologie/aff_model_switch.html | 20 +- .../templates/topologie/aff_modules.html | 28 +- topologie/templates/topologie/aff_port.html | 16 +- .../templates/topologie/aff_port_profile.html | 8 +- .../templates/topologie/aff_repr_switch.html | 5 +- topologie/templates/topologie/aff_stacks.html | 14 +- topologie/templates/topologie/aff_switch.html | 20 +- .../templates/topologie/aff_switch_bay.html | 18 +- .../templates/topologie/aff_vlanoptions.html | 15 +- topologie/templates/topologie/delete.html | 2 +- .../templates/topologie/edit_stack_sw.html | 8 +- topologie/templates/topologie/index.html | 4 +- topologie/templates/topologie/index_ap.html | 4 +- .../topologie/index_model_switch.html | 6 +- .../templates/topologie/index_module.html | 6 +- topologie/templates/topologie/index_p.html | 12 +- .../topologie/index_physical_grouping.html | 8 +- .../topologie/index_portprofile.html | 8 +- topologie/templates/topologie/index_room.html | 4 +- topologie/templates/topologie/sidebar.html | 18 +- topologie/templates/topologie/switch.html | 4 +- topologie/templates/topologie/topo.html | 4 +- topologie/templates/topologie/topo_more.html | 2 +- topologie/views.py | 24 +- 31 files changed, 530 insertions(+), 378 deletions(-) create mode 100644 topologie/migrations/0069_auto_20190108_1439.py diff --git a/topologie/locale/fr/LC_MESSAGES/django.po b/topologie/locale/fr/LC_MESSAGES/django.po index a5db5085..b6242bc0 100644 --- a/topologie/locale/fr/LC_MESSAGES/django.po +++ b/topologie/locale/fr/LC_MESSAGES/django.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: 2.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-10-11 19:49+0200\n" +"POT-Creation-Date: 2019-01-09 00:01+0100\n" "PO-Revision-Date: 2018-06-25 14:53+0200\n" "Last-Translator: Laouen Fernet \n" "Language-Team: \n" @@ -34,11 +34,11 @@ msgstr "" msgid "You don't have the right to view this application." msgstr "Vous n'avez pas le droit de voir cette application." -#: forms.py:179 +#: forms.py:181 msgid "Start:" msgstr "Début :" -#: forms.py:180 +#: forms.py:182 msgid "End:" msgstr "Fin :" @@ -79,119 +79,204 @@ msgid "Number of ports" msgstr "Nombre de ports" #: models.py:228 templates/topologie/aff_switch.html:48 -#: templates/topologie/index_p.html:38 views.py:826 +#: templates/topologie/index_p.html:38 views.py:843 msgid "Switch model" msgstr "Modèle de commutateur réseau" -#: models.py:258 +#: models.py:241 +msgid "RADIUS key of the switch" +msgstr "Clé RADIUS du commutateur réseau" + +#: models.py:248 +msgid "Management credentials for the switch" +msgstr "Identifiants de gestion du commutateur réseau" + +#: models.py:252 +msgid "Automatic provision for the switch" +msgstr "Provision automatique pour le commutateur réseau" + +#: models.py:259 msgid "Can view a switch object" msgstr "Peut voir un objet commutateur réseau" -#: models.py:260 +#: models.py:261 msgid "switch" msgstr "commutateur réseau" -#: models.py:261 +#: models.py:262 msgid "switches" msgstr "commutateurs réseau" -#: models.py:272 +#: models.py:273 msgid "The switch ID exceeds the limits allowed by the stack." msgstr "L'ID du commutateur réseau dépasse les bornes autorisées par la pile." -#: models.py:277 +#: models.py:278 msgid "The stack member ID can't be void." msgstr "L'ID de membre dans la pile ne peut-être vide." -#: models.py:293 +#: models.py:286 msgid "The end port is less than the start port." msgstr "Le port de fin est inférieur au port de début." -#: models.py:296 +#: models.py:293 msgid "This switch can't have that many ports." msgstr "Ce commutateur réseau ne peut pas avoir autant de ports." -#: models.py:306 +#: models.py:295 msgid "Creation" msgstr "Création" -#: models.py:308 -msgid "Creation of an existing port." -msgstr "Création d'un port existant." +#: models.py:406 +msgid "The switch model is modular." +msgstr "Le modèle de commutateur réseau est modulaire." -#: models.py:408 +#: models.py:410 +msgid "The switch is considered as a module." +msgstr "Le commutateur réseau est considéré comme un module." + +#: models.py:415 msgid "Can view a switch model object" msgstr "Peut voir un objet modèle de commutateur réseau" -#: models.py:410 +#: models.py:417 msgid "switch model" msgstr "modèle de commutateur réseau" -#: models.py:411 +#: models.py:418 msgid "switch models" msgstr "modèles de commutateur réseau" -#: models.py:424 +#: models.py:431 +msgid "Reference of a module" +msgstr "Référence d'un module" + +#: models.py:432 +msgid "Module reference" +msgstr "Référence de module" + +#: models.py:438 models.py:439 templates/topologie/aff_modules.html:37 +msgid "Comment" +msgstr "Commentaire" + +#: models.py:444 +msgid "Can view a switch module object" +msgstr "Peut voir un objet module de commutateur réseau" + +#: models.py:446 +msgid "switch module" +msgstr "module de commutateur réseau" + +#: models.py:447 +msgid "switch modules" +msgstr "modules de commutateur réseau" + +#: models.py:460 +msgid "Slot on switch" +msgstr "Emplacement sur le commutateur réseau" + +#: models.py:461 templates/topologie/aff_modules.html:48 +#: templates/topologie/aff_modules.html:82 +msgid "Slot" +msgstr "Emplacement" + +#: models.py:466 +msgid "Can view a link between switch and module object" +msgstr "Peut voir un objet lien entre commutateur réseau et module" + +#: models.py:469 +msgid "link between switch and module" +msgstr "lien entre commutateur réseau et module" + +#: models.py:470 +msgid "links between switch and module" +msgstr "liens entre commutateur réseau et module" + +#: models.py:474 +msgid "On slot " +msgstr "Sur l'emplacement " + +#: models.py:474 +msgid " of " +msgstr " de " + +#: models.py:484 msgid "Can view a switch constructor object" msgstr "Peut voir un objet constructeur de commutateur réseau" -#: models.py:427 +#: models.py:487 msgid "switch constructor" msgstr "constructeur de commutateur réseau" -#: models.py:450 +#: models.py:510 msgid "Can view a switch bay object" msgstr "Peut voir un objet baie de brassage" -#: models.py:452 +#: models.py:512 msgid "switch bay" msgstr "baie de brassage" -#: models.py:453 +#: models.py:513 msgid "switch bays" msgstr "baies de brassage" -#: models.py:466 +#: models.py:526 msgid "Can view a building object" msgstr "Peut voir un objet bâtiment" -#: models.py:468 +#: models.py:528 msgid "building" msgstr "bâtiment" -#: models.py:469 +#: models.py:529 msgid "buildings" msgstr "bâtiments" -#: models.py:525 +#: models.py:588 models.py:589 msgid "Port state Active" msgstr "État du port Actif" -#: models.py:532 +#: models.py:596 msgid "Can view a port object" msgstr "Peut voir un objet port" -#: models.py:534 +#: models.py:598 msgid "port" msgstr "port" -#: models.py:535 +#: models.py:599 msgid "ports" msgstr "ports" -#: models.py:614 +#: models.py:605 +msgid "Uplink: " +msgstr "Liaison montante : " + +#: models.py:607 +msgid "Machine: " +msgstr "Machine : " + +#: models.py:609 +msgid "Room: " +msgstr "Chambre : " + +#: models.py:611 +msgid "Unknown" +msgstr "Inconnu" + +#: models.py:678 msgid "The port can't exist, its number is too great." msgstr "Le port ne peut pas exister, son numéro est trop grand." -#: models.py:620 +#: models.py:684 msgid "Room, interface and related port are mutually exclusive." msgstr "Chambre, interface et port relié sont mutuellement exclusifs." -#: models.py:623 +#: models.py:687 msgid "A port can't be related to itself." msgstr "Un port ne peut être relié à lui-même." -#: models.py:627 +#: models.py:691 msgid "" "The related port is already used, please clear it before creating the " "relation." @@ -199,124 +284,146 @@ msgstr "" "Le port relié est déjà utilisé, veuillez le modifier avant de créer la " "relation." -#: models.py:648 +#: models.py:712 msgid "Can view a room object" msgstr "Peut voir un objet chambre" -#: models.py:650 +#: models.py:714 msgid "room" msgstr "chambre" -#: models.py:651 +#: models.py:715 msgid "rooms" msgstr "chambres" -#: models.py:685 templates/topologie/aff_port_profile.html:37 +#: models.py:726 +msgid "MAC-RADIUS" +msgstr "MAC-RADIUS" + +#: models.py:743 templates/topologie/aff_chambres.html:36 +#: templates/topologie/aff_port.html:38 views.py:784 +msgid "Room" +msgstr "Chambre" + +#: models.py:744 templates/topologie/aff_ap.html:36 +msgid "Access point" +msgstr "Point d'accès sans fil" + +#: models.py:745 +msgid "Uplink" +msgstr "Liaison montante" + +#: models.py:746 +msgid "Organisation machine" +msgstr "Machine d'association" + +#: models.py:747 +msgid "Nothing" +msgstr "Rien" + +#: models.py:749 templates/topologie/aff_port_profile.html:37 +#: templates/topologie/aff_vlanoptions.html:34 msgid "Name" msgstr "Nom" -#: models.py:692 +#: models.py:756 msgid "Default profile" msgstr "Profil par défaut" -#: models.py:700 +#: models.py:764 msgid "VLAN untagged" msgstr "VLAN untagged" -#: models.py:706 +#: models.py:770 msgid "VLAN(s) tagged" msgstr "VLAN(s) tagged" -#: models.py:711 +#: models.py:775 msgid "Type of RADIUS authentication : inactive, MAC-address or 802.1X" msgstr "Type d'authentification RADIUS : inactive, MAC-address ou 802.1X" -#: models.py:713 +#: models.py:777 msgid "RADIUS type" msgstr "Type de RADIUS" -#: models.py:719 +#: models.py:783 msgid "In case of MAC-authentication : mode COMMON or STRICT on this port" msgstr "" "Dans le cas d'authentification par adresse MAC : mode COMMON ou STRICT sur " "ce port" -#: models.py:721 +#: models.py:785 msgid "RADIUS mode" msgstr "Mode de RADIUS" -#: models.py:727 +#: models.py:791 msgid "Port speed limit" msgstr "Limite de vitesse du port" -#: models.py:732 +#: models.py:796 msgid "Limit of MAC-address on this port" msgstr "Limite de MAC-address sur ce port" -#: models.py:733 +#: models.py:797 msgid "MAC limit" msgstr "Limite MAC" -#: models.py:737 +#: models.py:801 msgid "Flow control" msgstr "Contrôle du flux" -#: models.py:741 +#: models.py:805 msgid "Protect against rogue DHCP" msgstr "Protège contre les DHCP pirates" -#: models.py:742 +#: models.py:806 templates/topologie/aff_vlanoptions.html:36 msgid "DHCP snooping" msgstr "DHCP snooping" -#: models.py:746 +#: models.py:810 msgid "Protect against rogue DHCPv6" msgstr "Protège contre les DHCPv6 pirates" -#: models.py:747 +#: models.py:811 templates/topologie/aff_vlanoptions.html:37 msgid "DHCPv6 snooping" msgstr "DHCPv6 snooping" -#: models.py:751 +#: models.py:815 msgid "Check if IP adress is DHCP assigned" msgstr "Vérifie si l'adresse IP est attribuée par DHCP" -#: models.py:752 +#: models.py:816 msgid "ARP protection" msgstr "Protection ARP" -#: models.py:756 +#: models.py:820 msgid "Protect against rogue RA" msgstr "Protège contre les RA pirates" -#: models.py:757 +#: models.py:821 msgid "RA guard" msgstr "RA guard" -#: models.py:761 +#: models.py:825 msgid "Protect against loop" -msgstr "Protège contre un boucle" +msgstr "Protège contre une boucle" -#: models.py:762 +#: models.py:826 msgid "Loop protection" msgstr "Protection contre une boucle" -#: models.py:767 +#: models.py:831 msgid "Can view a port profile object" msgstr "Peut voir un objet profil de port" -#: models.py:769 +#: models.py:833 msgid "port profile" msgstr "profil de port" -#: models.py:770 +#: models.py:834 msgid "port profiles" msgstr "profils de port" -#: templates/topologie/aff_ap.html:36 -msgid "Access point" -msgstr "Point d'accès sans fil" - #: templates/topologie/aff_ap.html:38 msgid "MAC address" msgstr "Adresse MAC" @@ -336,44 +443,24 @@ msgstr "Détails" msgid "Location" msgstr "Emplacement" -#: templates/topologie/aff_ap.html:56 templates/topologie/aff_building.html:46 -#: templates/topologie/aff_chambres.html:48 -#: templates/topologie/aff_constructor_switch.html:46 -#: templates/topologie/aff_model_switch.html:61 -#: templates/topologie/aff_port.html:99 templates/topologie/aff_stacks.html:55 -#: templates/topologie/aff_switch_bay.html:59 -#: templates/topologie/edit_stack_sw.html:44 views.py:380 views.py:434 -#: views.py:745 views.py:804 views.py:859 views.py:914 views.py:973 -#: views.py:1028 -msgid "Edit" -msgstr "Modifier" - -#: templates/topologie/aff_ap.html:62 templates/topologie/aff_building.html:52 -#: templates/topologie/aff_chambres.html:54 -#: templates/topologie/aff_constructor_switch.html:52 -#: templates/topologie/aff_model_switch.html:67 -#: templates/topologie/aff_port.html:105 templates/topologie/aff_stacks.html:61 -#: templates/topologie/aff_switch_bay.html:65 -#: templates/topologie/edit_stack_sw.html:50 -msgid "Delete" -msgstr "Supprimer" - #: templates/topologie/aff_building.html:36 -#: templates/topologie/aff_switch_bay.html:38 views.py:936 +#: templates/topologie/aff_switch_bay.html:38 views.py:953 msgid "Building" msgstr "Bâtiment" -#: templates/topologie/aff_chambres.html:36 -#: templates/topologie/aff_port.html:38 views.py:767 -msgid "Room" -msgstr "Chambre" +#: templates/topologie/aff_building.html:38 +#: templates/topologie/index_ap.html:33 templates/topologie/sidebar.html:47 +msgid "Access points" +msgstr "Points d'accès sans fil" #: templates/topologie/aff_constructor_switch.html:36 -#: templates/topologie/aff_model_switch.html:40 views.py:996 +#: templates/topologie/aff_model_switch.html:40 views.py:1013 msgid "Switch constructor" msgstr "Constructeur de commutateur réseau" #: templates/topologie/aff_model_switch.html:36 +#: templates/topologie/aff_modules.html:36 +#: templates/topologie/aff_modules.html:81 msgid "Reference" msgstr "Référence" @@ -382,20 +469,27 @@ msgid "Commercial name" msgstr "Nom commercial" #: templates/topologie/aff_model_switch.html:42 -#: templates/topologie/index.html:66 templates/topologie/sidebar.html:35 +#: templates/topologie/aff_modules.html:38 templates/topologie/index.html:66 +#: templates/topologie/sidebar.html:35 msgid "Switches" msgstr "Commutateurs réseau" +#: templates/topologie/aff_modules.html:48 +msgid "of" +msgstr "de" + +#: templates/topologie/aff_modules.html:76 +msgid "All modular switchs" +msgstr "Tous les commutateurs réseau modulaires" + +#: templates/topologie/aff_modules.html:80 templates/topologie/aff_port.html:36 +msgid "Switch" +msgstr "Commutateur réseau" + #: templates/topologie/aff_port.html:33 msgid "Port" msgstr "Port" -#: templates/topologie/aff_port.html:36 -#, fuzzy -#| msgid "Switch:" -msgid "Switch" -msgstr "Commutateur réseau :" - #: templates/topologie/aff_port.html:40 msgid "Interface" msgstr "Interface" @@ -408,7 +502,7 @@ msgstr "Port relié" msgid "Port state" msgstr "État du port" -#: templates/topologie/aff_port.html:45 views.py:1048 +#: templates/topologie/aff_port.html:45 views.py:1065 msgid "Port profile" msgstr "Profil de port" @@ -464,6 +558,11 @@ msgstr "Type de RADIUS : " msgid "RADIUS mode: " msgstr "Mode de RADIUS : " +#: templates/topologie/aff_repr_switch.html:67 +#: templates/topologie/aff_repr_switch.html:110 +msgid "Empty" +msgstr "Vide" + #: templates/topologie/aff_stacks.html:32 #: templates/topologie/aff_switch.html:45 #: templates/topologie/edit_stack_sw.html:32 @@ -472,6 +571,7 @@ msgid "Stack" msgstr "Pile" #: templates/topologie/aff_stacks.html:34 +#: templates/topologie/aff_vlanoptions.html:33 msgid "ID" msgstr "ID" @@ -485,7 +585,7 @@ msgstr "Nom DNS" #: templates/topologie/aff_switch.html:41 #: templates/topologie/aff_switch_bay.html:36 -#: templates/topologie/index_p.html:37 views.py:881 +#: templates/topologie/index_p.html:37 views.py:898 msgid "Switch bay" msgstr "Baie de brassage" @@ -510,10 +610,22 @@ msgstr "Informations" msgid "Switches of the bay" msgstr "Commutateurs réseau de la baie" +#: templates/topologie/aff_vlanoptions.html:35 +msgid "ARP protect" +msgstr "Protection ARP" + +#: templates/topologie/aff_vlanoptions.html:38 +msgid "IGMP" +msgstr "IGMP" + +#: templates/topologie/aff_vlanoptions.html:39 +msgid "MLD" +msgstr "MLD" + #: templates/topologie/delete.html:29 templates/topologie/index.html:30 #: templates/topologie/index_ap.html:30 #: templates/topologie/index_model_switch.html:30 -#: templates/topologie/index_p.html:30 +#: templates/topologie/index_module.html:30 templates/topologie/index_p.html:30 #: templates/topologie/index_physical_grouping.html:30 #: templates/topologie/index_portprofile.html:29 #: templates/topologie/index_room.html:30 templates/topologie/switch.html:30 @@ -542,10 +654,6 @@ msgstr "Topologie des commutateurs réseau" msgid " Add a switch" msgstr " Ajouter un commutateur réseau" -#: templates/topologie/index_ap.html:33 templates/topologie/sidebar.html:43 -msgid "Access points" -msgstr "Points d'accès sans fil" - #: templates/topologie/index_ap.html:35 msgid " Add an access point" msgstr " Ajouter un point d'accès sans fil" @@ -566,22 +674,18 @@ msgstr "Constructeurs de commutateur réseau" msgid " Add a switch constructor" msgstr " Ajouter un constructeur de commutateur réseau" +#: templates/topologie/index_module.html:33 templates/topologie/sidebar.html:39 +msgid "Switch modules" +msgstr "Modules de commutateur réseau" + +#: templates/topologie/index_module.html:35 +msgid " Add a module" +msgstr " Ajouter un module" + #: templates/topologie/index_p.html:33 msgid "Switch:" msgstr "Commutateur réseau :" -#: templates/topologie/index_p.html:49 -msgid " Edit" -msgstr " Modifier" - -#: templates/topologie/index_p.html:51 -msgid " Add a port" -msgstr " Ajouter un port" - -#: templates/topologie/index_p.html:52 -msgid " Add ports" -msgstr " Ajouter des ports" - #: templates/topologie/index_physical_grouping.html:33 msgid "Stacks" msgstr "Piles" @@ -607,7 +711,7 @@ msgid " Add a building" msgstr " Ajouter un bâtiment" #: templates/topologie/index_portprofile.html:34 -#: templates/topologie/sidebar.html:39 +#: templates/topologie/sidebar.html:43 msgid "Port profiles" msgstr "Profils de port" @@ -616,8 +720,8 @@ msgid " Add a port profile" msgstr " Ajouter un profil de port" #: templates/topologie/index_portprofile.html:42 -msgid "Sécurité par vlan" -msgstr "" +msgid "VLAN security" +msgstr "Sécurité de VLAN" #: templates/topologie/index_room.html:33 msgid "Rooms" @@ -631,11 +735,11 @@ msgstr " Ajouter une chambre" msgid "Rooms and premises" msgstr "Chambres et locaux" -#: templates/topologie/sidebar.html:47 +#: templates/topologie/sidebar.html:51 msgid "Physical grouping" msgstr "Groupements physiques" -#: templates/topologie/sidebar.html:51 +#: templates/topologie/sidebar.html:55 msgid "Switch models and constructors" msgstr "Modèles et constructeurs de commutateur réseau" @@ -647,7 +751,8 @@ msgstr " Aller à la liste des ports" msgid "Specific settings for the switch" msgstr "Réglages spécifiques pour le commutateur réseau" -#: templates/topologie/switch.html:46 views.py:418 views.py:1010 +#: templates/topologie/switch.html:46 views.py:441 views.py:745 views.py:800 +#: views.py:859 views.py:914 views.py:969 views.py:1027 views.py:1081 msgid "Create" msgstr "Créer" @@ -665,51 +770,60 @@ msgstr "Réglages généraux pour la machine liée à l'objet %(device)s" msgid "Create or edit" msgstr "Créer ou modifier" -#: views.py:340 +#: views.py:347 +msgid "The VLAN was edited." +msgstr "Le VLAN a été modifié." + +#: views.py:350 views.py:403 views.py:457 views.py:762 views.py:821 +#: views.py:876 views.py:931 views.py:990 views.py:1045 views.py:1098 +#: views.py:1152 +msgid "Edit" +msgstr "Modifier" + +#: views.py:363 views.py:554 msgid "Nonexistent switch." msgstr "Commutateur réseau inexistant." -#: views.py:348 +#: views.py:371 msgid "The port was added." msgstr "Le port a été ajouté." -#: views.py:350 +#: views.py:373 msgid "The port already exists." msgstr "Le port existe déjà." -#: views.py:356 views.py:728 views.py:783 views.py:842 views.py:897 -#: views.py:952 +#: views.py:379 views.py:1135 msgid "Add" msgstr "Ajouter" -#: views.py:371 +#: views.py:394 msgid "The port was edited." msgstr "Le port a été modifié." -#: views.py:394 +#: views.py:417 msgid "The port was deleted." msgstr "Le port a été supprimé." -#: views.py:398 +#: views.py:421 #, python-format msgid "The port %s is used by another object, impossible to delete it." msgstr "Le port %s est utilisé par un autre objet, impossible de le supprimer." -#: views.py:415 +#: views.py:438 msgid "The stack was created." msgstr "La pile a été créée." -#: views.py:447 +#: views.py:470 msgid "The stack was deleted." msgstr "La pile a été supprimée." -#: views.py:451 +#: views.py:474 #, python-format msgid "The stack %s is used by another object, impossible to deleted it." msgstr "" "La pile %s est utilisée par un autre objet, impossible de la supprimer." -#: views.py:493 views.py:634 views.py:689 +#: views.py:516 views.py:651 views.py:706 msgid "" "The organisation's user doesn't exist yet, please create or link it in the " "preferences." @@ -717,117 +831,113 @@ msgstr "" "L'utilisateur de l'association n'existe pas encore, veuillez le créer ou le " "relier dans les préférences." -#: views.py:508 +#: views.py:531 msgid "The switch was created." msgstr "Le commutateur réseau a été créé." -#: views.py:531 -msgid "Nonexistent switch" -msgstr "Commutateur réseau inexistant." - -#: views.py:551 +#: views.py:568 msgid "The ports were created." msgstr "Les ports ont été créés." -#: views.py:595 +#: views.py:612 msgid "The switch was edited." msgstr "Le commutateur réseau a été modifié." -#: views.py:649 +#: views.py:666 msgid "The access point was created." msgstr "Le point d'accès sans fil a été créé." -#: views.py:702 +#: views.py:719 msgid "The access point was edited." msgstr "Le point d'accès sans fil a été modifié." -#: views.py:725 +#: views.py:742 msgid "The room was created." msgstr "La chambre a été créée." -#: views.py:742 +#: views.py:759 msgid "The room was edited." msgstr "La chambre a été modifiée." -#: views.py:758 +#: views.py:775 msgid "The room was deleted." msgstr "La chambre a été supprimée." -#: views.py:762 +#: views.py:779 #, python-format msgid "The room %s is used by another object, impossible to deleted it." msgstr "" "La chambre %s est utilisée par un autre objet, impossible de la supprimer." -#: views.py:780 -msgid "The swich model was created." +#: views.py:797 +msgid "The switch model was created." msgstr "Le modèle de commutateur réseau a été créé." -#: views.py:801 +#: views.py:818 msgid "The switch model was edited." msgstr "Le modèle de commutateur réseau a été modifié." -#: views.py:817 +#: views.py:834 msgid "The switch model was deleted." msgstr "Le modèle de commutateur réseau a été supprimé." -#: views.py:821 +#: views.py:838 #, python-format msgid "The switch model %s is used by another object, impossible to delete it." msgstr "" "Le modèle de commutateur réseau %s est utilisé par un autre objet, " "impossible de le supprimer." -#: views.py:839 +#: views.py:856 msgid "The switch bay was created." msgstr "La baie de brassage a été créée." -#: views.py:856 +#: views.py:873 msgid "The switch bay was edited." msgstr "La baie de brassage a été modifiée." -#: views.py:872 +#: views.py:889 msgid "The switch bay was deleted." msgstr "La baie de brassage a été supprimée." -#: views.py:876 +#: views.py:893 #, python-format msgid "The switch bay %s is used by another object, impossible to delete it." msgstr "" "La baie de brassage %s est utilisée par un autre objet, impossible de la " "supprimer." -#: views.py:894 +#: views.py:911 msgid "The building was created." msgstr "Le bâtiment a été créé." -#: views.py:911 +#: views.py:928 msgid "The building was edited." msgstr "Le bâtiment a été modifié." -#: views.py:927 +#: views.py:944 msgid "The building was deleted." msgstr "Le bâtiment a été supprimé." -#: views.py:931 +#: views.py:948 #, python-format msgid "The building %s is used by another object, impossible to delete it." msgstr "" "Le bâtiment %s est utilisé par un autre objet, impossible de le supprimer." -#: views.py:949 +#: views.py:966 msgid "The switch constructor was created." msgstr "Le constructeur de commutateur réseau a été créé." -#: views.py:970 +#: views.py:987 msgid "The switch constructor was edited." msgstr "Le constructeur de commutateur réseau a été modifié." -#: views.py:986 +#: views.py:1003 msgid "The switch constructor was deleted." msgstr "Le constructeur de commutateur réseau a été supprimé." -#: views.py:990 +#: views.py:1007 #, python-format msgid "" "The switch constructor %s is used by another object, impossible to delete it." @@ -835,23 +945,49 @@ msgstr "" "Le constructeur de commutateur réseau %s est utilisé par un autre objet, " "impossible de le supprimer." -#: views.py:1007 +#: views.py:1024 msgid "The port profile was created." msgstr "Le profil de port a été créé." -#: views.py:1025 +#: views.py:1042 msgid "The port profile was edited." msgstr "Le profil de port a été modifié." -#: views.py:1042 +#: views.py:1059 msgid "The port profile was deleted." msgstr "Le profil de port a été supprimé." -#: views.py:1045 +#: views.py:1062 msgid "Impossible to delete the port profile." msgstr "Impossible de supprimer le profil de port." -#: views.py:1165 +#: views.py:1078 +msgid "The module was created." +msgstr "Le module a été créé." + +#: views.py:1095 views.py:1149 +msgid "The module was edited." +msgstr "Le module a été modifié." + +#: views.py:1111 views.py:1165 +msgid "The module was deleted." +msgstr "Le module a été supprimé." + +#: views.py:1115 views.py:1169 +#, python-format +msgid "The module %s is used by another object, impossible to deleted it." +msgstr "" +"Le module %s est utilisé par un autre objet, impossible de le supprimer." + +#: views.py:1120 views.py:1174 +msgid "Module" +msgstr "Module" + +#: views.py:1132 +msgid "The module was added." +msgstr "Le module a été ajouté." + +#: views.py:1291 msgid "" "The default Django template isn't used. This can lead to rendering errors. " "Check the parameters." diff --git a/topologie/migrations/0069_auto_20190108_1439.py b/topologie/migrations/0069_auto_20190108_1439.py new file mode 100644 index 00000000..ba13942b --- /dev/null +++ b/topologie/migrations/0069_auto_20190108_1439.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.7 on 2019-01-08 20:39 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('topologie', '0068_auto_20190102_1758'), + ] + + operations = [ + migrations.AlterModelOptions( + name='moduleonswitch', + options={'permissions': (('view_moduleonswitch', 'Can view a link between switch and module object'),), 'verbose_name': 'link between switch and module', 'verbose_name_plural': 'links between switch and module'}, + ), + migrations.AlterModelOptions( + name='moduleswitch', + options={'permissions': (('view_moduleswitch', 'Can view a switch module object'),), 'verbose_name': 'switch module', 'verbose_name_plural': 'switch modules'}, + ), + migrations.AlterField( + model_name='modelswitch', + name='is_itself_module', + field=models.BooleanField(default=False, help_text='The switch is considered as a module.'), + ), + migrations.AlterField( + model_name='modelswitch', + name='is_modular', + field=models.BooleanField(default=False, help_text='The switch model is modular.'), + ), + migrations.AlterField( + model_name='portprofile', + name='profil_default', + field=models.CharField(blank=True, choices=[('room', 'Room'), ('access_point', 'Access point'), ('uplink', 'Uplink'), ('asso_machine', 'Organisation machine'), ('nothing', 'Nothing')], max_length=32, null=True, unique=True, verbose_name='Default profile'), + ), + migrations.AlterField( + model_name='portprofile', + name='radius_type', + field=models.CharField(choices=[('NO', 'NO'), ('802.1X', '802.1X'), ('MAC-radius', 'MAC-RADIUS')], help_text='Type of RADIUS authentication : inactive, MAC-address or 802.1X', max_length=32, verbose_name='RADIUS type'), + ), + migrations.AlterField( + model_name='switch', + name='automatic_provision', + field=models.BooleanField(default=False, help_text='Automatic provision for the switch'), + ), + migrations.AlterField( + model_name='switch', + name='management_creds', + field=models.ForeignKey(blank=True, help_text='Management credentials for the switch', null=True, on_delete=django.db.models.deletion.PROTECT, to='preferences.SwitchManagementCred'), + ), + migrations.AlterField( + model_name='switch', + name='radius_key', + field=models.ForeignKey(blank=True, help_text='RADIUS key of the switch', null=True, on_delete=django.db.models.deletion.PROTECT, to='preferences.RadiusKey'), + ), + ] diff --git a/topologie/models.py b/topologie/models.py index e05fa50e..3e093b40 100644 --- a/topologie/models.py +++ b/topologie/models.py @@ -238,18 +238,18 @@ class Switch(AclMixin, Machine): blank=True, null=True, on_delete=models.PROTECT, - help_text="Clef radius du switch" + help_text=_("RADIUS key of the switch") ) management_creds = models.ForeignKey( 'preferences.SwitchManagementCred', blank=True, null=True, on_delete=models.PROTECT, - help_text="Identifiant de management de ce switch" + help_text=_("Management credentials for the switch") ) automatic_provision = models.BooleanField( default=False, - help_text='Provision automatique de ce switch', + help_text=_("Automatic provision for the switch") ) @@ -403,11 +403,11 @@ class ModelSwitch(AclMixin, RevMixin, models.Model): ) is_modular = models.BooleanField( default=False, - help_text=_("Is this switch model modular"), + help_text=_("The switch model is modular."), ) is_itself_module = models.BooleanField( default=False, - help_text=_("Is the switch, itself, considered as a module"), + help_text=_("The switch is considered as a module."), ) class Meta: @@ -441,9 +441,10 @@ class ModuleSwitch(AclMixin, RevMixin, models.Model): class Meta: permissions = ( - ("view_moduleswitch", _("Can view a module object")), + ("view_moduleswitch", _("Can view a switch module object")), ) - verbose_name = _("Module of a switch") + verbose_name = _("switch module") + verbose_name_plural = _("switch modules") def __str__(self): @@ -462,13 +463,15 @@ class ModuleOnSwitch(AclMixin, RevMixin, models.Model): class Meta: permissions = ( - ("view_moduleonswitch", _("Can view a moduleonswitch object")), + ("view_moduleonswitch", _("Can view a link between switch and" + " module object")), ) - verbose_name = _("link between switchs and modules") + verbose_name = _("link between switch and module") + verbose_name_plural = _("links between switch and module") unique_together = ['slot', 'switch'] def __str__(self): - return 'On slot ' + str(self.slot) + ' of ' + str(self.switch) + return _("On slot ") + str(self.slot) + _(" of ") + str(self.switch) class ConstructorSwitch(AclMixin, RevMixin, models.Model): @@ -582,7 +585,7 @@ class Port(AclMixin, RevMixin, models.Model): ) state = models.BooleanField( default=True, - help_text='Port state Active', + help_text=_("Port state Active"), verbose_name=_("Port state Active") ) details = models.CharField(max_length=255, blank=True) @@ -599,13 +602,13 @@ class Port(AclMixin, RevMixin, models.Model): def pretty_name(self): """More elaborated name for label on switch conf""" if self.related: - return "Uplink : " + self.related.switch.short_name + return _("Uplink: ") + self.related.switch.short_name elif self.machine_interface: - return "Machine : " + str(self.machine_interface.domain) + return _("Machine: ") + str(self.machine_interface.domain) elif self.room: - return "Chambre : " + str(self.room) + return _("Room: ") + str(self.room) else: - return "Inconnue" + return _("Unknown") @cached_property def get_port_profile(self): @@ -720,7 +723,7 @@ class PortProfile(AclMixin, RevMixin, models.Model): TYPES = ( ('NO', 'NO'), ('802.1X', '802.1X'), - ('MAC-radius', 'MAC-radius'), + ('MAC-radius', _("MAC-RADIUS")), ) MODES = ( ('STRICT', 'STRICT'), @@ -737,11 +740,11 @@ class PortProfile(AclMixin, RevMixin, models.Model): ('auto-100', 'auto-100'), ) PROFIL_DEFAULT = ( - ('room', 'room'), - ('access_point', 'access_point'), - ('uplink', 'uplink'), - ('asso_machine', 'asso_machine'), - ('nothing', 'nothing'), + ('room', _("Room")), + ('access_point', _("Access point")), + ('uplink', _("Uplink")), + ('asso_machine', _("Organisation machine")), + ('nothing', _("Nothing")), ) name = models.CharField(max_length=255, verbose_name=_("Name")) profil_default = models.CharField( diff --git a/topologie/templates/topologie/aff_ap.html b/topologie/templates/topologie/aff_ap.html index 4eadfede..1acd54bb 100644 --- a/topologie/templates/topologie/aff_ap.html +++ b/topologie/templates/topologie/aff_ap.html @@ -28,17 +28,17 @@ with this program; if not, write to the Free Software Foundation, Inc.,
      {% if ap_list.paginator %} - {% include "pagination.html" with list=ap_list %} + {% include 'pagination.html' with list=ap_list %} {% endif %} {% trans "Access point" as tr_ap %} - + {% trans "MAC address" as tr_mac %} - + {% trans "IPv4 address" as tr_ip %} - + @@ -53,15 +53,11 @@ with this program; if not, write to the Free Software Foundation, Inc., @@ -69,7 +65,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
      {% include "buttons/sort.html" with prefix='ap' col='name' text=tr_ap %}{% include 'buttons/sort.html' with prefix='ap' col='name' text=tr_ap %}{% include "buttons/sort.html" with prefix='ap' col='mac' text=tr_mac %}{% include 'buttons/sort.html' with prefix='ap' col='mac' text=tr_mac %}{% include "buttons/sort.html" with prefix='ap' col='ip' text=tr_ip %}{% include 'buttons/sort.html' with prefix='ap' col='ip' text=tr_ip %} {% trans "Details" %} {% trans "Location" %} {{ ap.location }} {% can_edit ap %} - - - + {% include 'buttons/edit.html' with href='topologie:edit-ap' id=ap.id %} {% acl_end %} {% history_button ap %} {% can_delete ap %} - - - + {% include 'buttons/suppr.html' with href='machines:del-machine' id=ap.id %} {% acl_end %}
      {% if ap_list.paginator %} - {% include "pagination.html" with list=ap_list %} + {% include 'pagination.html' with list=ap_list %} {% endif %}
      diff --git a/topologie/templates/topologie/aff_building.html b/topologie/templates/topologie/aff_building.html index 51302d24..9885f1c5 100644 --- a/topologie/templates/topologie/aff_building.html +++ b/topologie/templates/topologie/aff_building.html @@ -27,15 +27,15 @@ with this program; if not, write to the Free Software Foundation, Inc., {% load i18n %} {% if building_list.paginator %} -{% include "pagination.html" with list=building_list %} + {% include 'pagination.html' with list=building_list %} {% endif %} {% trans "Building" as tr_building %} - - + + @@ -45,15 +45,11 @@ with this program; if not, write to the Free Software Foundation, Inc., @@ -61,6 +57,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
      {% include "buttons/sort.html" with prefix='building' col='name' text=tr_building %}Wireless AP{% include 'buttons/sort.html' with prefix='building' col='name' text=tr_building %}{% trans "Access points" %}
      {% for ap in building.all_ap_in %} {{ ap.short_name }} {% endfor %} {% can_edit building %} - - - + {% include 'buttons/edit.html' with href='topologie:edit-building' id=building.id %} {% acl_end %} {% history_button building %} {% can_delete building %} - - - + {% include 'buttons/suppr.html' with href='topologie:del-building' id=building.id %} {% acl_end %}
      {% if building_list.paginator %} -{% include "pagination.html" with list=building_list %} + {% include 'pagination.html' with list=building_list %} {% endif %} diff --git a/topologie/templates/topologie/aff_chambres.html b/topologie/templates/topologie/aff_chambres.html index 04c010f4..6e2b181f 100644 --- a/topologie/templates/topologie/aff_chambres.html +++ b/topologie/templates/topologie/aff_chambres.html @@ -27,14 +27,14 @@ with this program; if not, write to the Free Software Foundation, Inc., {% load i18n %} {% if room_list.paginator %} -{% include "pagination.html" with list=room_list %} + {% include 'pagination.html' with list=room_list %} {% endif %} {% trans "Room" as tr_room %} - + @@ -45,15 +45,11 @@ with this program; if not, write to the Free Software Foundation, Inc., @@ -61,6 +57,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
      {% include "buttons/sort.html" with prefix='room' col='name' text=tr_room %}{% include 'buttons/sort.html' with prefix='room' col='name' text=tr_room %} {% trans "Details" %}
      {{ room.details }} {% can_edit room %} - - - + {% include 'buttons/edit.html' with href='topologie:edit-room' id=room.id %} {% acl_end %} {% history_button room %} {% can_delete room %} - - - + {% include 'buttons/suppr.html' with href='topologie:del-room' id=room.id %} {% acl_end %}
      {% if room_list.paginator %} -{% include "pagination.html" with list=room_list %} + {% include 'pagination.html' with list=room_list %} {% endif %} diff --git a/topologie/templates/topologie/aff_constructor_switch.html b/topologie/templates/topologie/aff_constructor_switch.html index 6298f73d..eceeb682 100644 --- a/topologie/templates/topologie/aff_constructor_switch.html +++ b/topologie/templates/topologie/aff_constructor_switch.html @@ -27,14 +27,14 @@ with this program; if not, write to the Free Software Foundation, Inc., {% load i18n %} {% if constructor_switch_list.paginator %} -{% include "pagination.html" with list=constructor_switch_list %} + {% include 'pagination.html' with list=constructor_switch_list %} {% endif %} {% trans "Switch constructor" as tr_constructor %} - + @@ -43,15 +43,11 @@ with this program; if not, write to the Free Software Foundation, Inc., @@ -59,6 +55,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
      {% include "buttons/sort.html" with prefix='constructor-switch' col='name' text=tr_constructor %}{% include 'buttons/sort.html' with prefix='constructor-switch' col='name' text=tr_constructor %}
      {{ constructor_switch }} {% can_edit constructor_switch %} - - - + {% include 'buttons/edit.html' with href='topologie:edit-constructor-switch' id=constructor_switch.id %} {% acl_end %} {% history_button constructor_switch %} {% can_delete constructor_switch %} - - - + {% include 'buttons/suppr.html' with href='topologie:del-constructor-switch' id=constructor_switch.id %} {% acl_end %}
      {% if constructor_switch_list.paginator %} -{% include "pagination.html" with list=constructor_switch_list %} + {% include 'pagination.html' with list=constructor_switch_list %} {% endif %} diff --git a/topologie/templates/topologie/aff_model_switch.html b/topologie/templates/topologie/aff_model_switch.html index 6a296ad7..426b308a 100644 --- a/topologie/templates/topologie/aff_model_switch.html +++ b/topologie/templates/topologie/aff_model_switch.html @@ -27,18 +27,18 @@ with this program; if not, write to the Free Software Foundation, Inc., {% load i18n %} {% if model_switch_list.paginator %} -{% include "pagination.html" with list=model_switch_list %} + {% include 'pagination.html' with list=model_switch_list %} {% endif %} {% trans "Reference" as tr_ref %} - + {% trans "Switch constructor" as tr_constructor %} - + @@ -47,7 +47,7 @@ with this program; if not, write to the Free Software Foundation, Inc., - + @@ -74,8 +70,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
      {% include "buttons/sort.html" with prefix='model-switch' col='reference' text=tr_ref %}{% include 'buttons/sort.html' with prefix='model-switch' col='reference' text=tr_ref %} {% trans "Commercial name" %} Firmware{% include "buttons/sort.html" with prefix='model-switch' col='constructor' text=tr_constructor %}{% include 'buttons/sort.html' with prefix='model-switch' col='constructor' text=tr_constructor %} {% trans "Switches" %}
      {{ model_switch.reference }} {{ model_switch.commercial_name }}{{model_switch.firmware}}{{ model_switch.firmware }} {{ model_switch.constructor }} {% for switch in model_switch.switch_set.all %} @@ -58,15 +58,11 @@ with this program; if not, write to the Free Software Foundation, Inc., {% can_edit model_switch %} - - - + {% include 'buttons/edit.html' with href='topologie:edit-model-switch' id=model_switch.id %} {% acl_end %} {% history_button model_switch %} {% can_delete model_switch %} - - - + {% include 'buttons/suppr.html' with href='topologie:del-model-switch' id=model_switch.id %} {% acl_end %}
      {% if model_switch_list.paginator %} -{% include "pagination.html" with list=model_switch_list %} + {% include 'pagination.html' with list=model_switch_list %} {% endif %} - - diff --git a/topologie/templates/topologie/aff_modules.html b/topologie/templates/topologie/aff_modules.html index 0c7a3207..021457f2 100644 --- a/topologie/templates/topologie/aff_modules.html +++ b/topologie/templates/topologie/aff_modules.html @@ -27,7 +27,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% load i18n %} {% if module_list.paginator %} -{% include "pagination.html" with list=module_list %} + {% include 'pagination.html' with list=module_list %} {% endif %} @@ -35,7 +35,7 @@ with this program; if not, write to the Free Software Foundation, Inc., - + @@ -45,34 +45,24 @@ with this program; if not, write to the Free Software Foundation, Inc., @@ -80,7 +70,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
      {% trans "Reference" %} {% trans "Comment" %}{% trans "Switchs" %}{% trans "Switches" %}
      {{ module.comment }} {% for module_switch in module.moduleonswitch_set.all %} - Slot {{ module_switch.slot }} of {{ module_switch.switch }} + {% trans "Slot" %} {{ module_switch.slot }} {% trans "of" %} {{ module_switch.switch }} {% can_edit module_switch %} - - - + {% include 'buttons/edit.html' with href='topologie:edit-module-on' id=module_switch.id %} {% acl_end %} {% can_delete module_switch %} - - - + {% include 'buttons/suppr.html' with href='topologie:del-module-on' id=module_switch.id %} {% acl_end %}
      {% endfor %}
      {% can_edit module %} - - - - - - + {% include 'buttons/add.html' with href='topologie:add-module-on' %} + {% include 'buttons/edit.html' with href='topologie:edit-module' id=module.id %} {% acl_end %} {% history_button module %} {% can_delete module %} - - - + {% include 'buttons/suppr.html' with href='topologie:del-module' id=module.id %} {% acl_end %}
      {% if module_list.paginator %} -{% include "pagination.html" with list=module_list %} + {% include 'pagination.html' with list=module_list %} {% endif %}

      {% trans "All modular switchs" %}

      diff --git a/topologie/templates/topologie/aff_port.html b/topologie/templates/topologie/aff_port.html index ef7e259c..6a02b484 100644 --- a/topologie/templates/topologie/aff_port.html +++ b/topologie/templates/topologie/aff_port.html @@ -31,16 +31,16 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans "Port" as tr_port %} - {% include "buttons/sort.html" with prefix='port' col='port' text=tr_port %} + {% include 'buttons/sort.html' with prefix='port' col='port' text=tr_port %} {% if search %} {% trans "Switch" %} {% endif %} {% trans "Room" as tr_room %} - {% include "buttons/sort.html" with prefix='port' col='room' text=tr_room %} + {% include 'buttons/sort.html' with prefix='port' col='room' text=tr_room %} {% trans "Interface" as tr_interface %} - {% include "buttons/sort.html" with prefix='port' col='interface' text=tr_interface %} + {% include 'buttons/sort.html' with prefix='port' col='interface' text=tr_interface %} {% trans "Related port" as tr_related_port %} - {% include "buttons/sort.html" with prefix='port' col='related' text=tr_related_port %} + {% include 'buttons/sort.html' with prefix='port' col='related' text=tr_related_port %} {% trans "Port state" %} {% trans "Port profile" %} {% trans "Details" %} @@ -96,15 +96,11 @@ with this program; if not, write to the Free Software Foundation, Inc., {{ port.details }} {% can_edit port %} - - - + {% include 'buttons/edit.html' with href='topologie:edit-port' id=port.id %} {% acl_end %} {% history_button port %} {% can_delete port %} - - - + {% include 'buttons/suppr.html' with href='topologie:del-port' id=port.id %} {% acl_end %} diff --git a/topologie/templates/topologie/aff_port_profile.html b/topologie/templates/topologie/aff_port_profile.html index 9714f1d9..b335904e 100644 --- a/topologie/templates/topologie/aff_port_profile.html +++ b/topologie/templates/topologie/aff_port_profile.html @@ -27,7 +27,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
      {% if port_profile_list.paginator %} - {% include "pagination.html" with list=port_profile_list %} + {% include 'pagination.html' with list=port_profile_list %} {% endif %} @@ -68,11 +68,11 @@ with this program; if not, write to the Free Software Foundation, Inc., {{ port_profile.security_parameters_enabled|join:"
      " }} {% can_edit port_profile %} - {% include 'buttons/edit.html' with href='topologie:edit-port-profile' id=port_profile.pk %} + {% include 'buttons/edit.html' with href='topologie:edit-port-profile' id=port_profile.id %} {% acl_end %} {% history_button port_profile %} {% can_delete port_profile %} - {% include 'buttons/suppr.html' with href='topologie:del-port-profile' id=port_profile.pk %} + {% include 'buttons/suppr.html' with href='topologie:del-port-profile' id=port_profile.id %} {% acl_end %} @@ -80,7 +80,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% if port_profile_list.paginator %} - {% include "pagination.html" with list=port_profile_list %} + {% include 'pagination.html' with list=port_profile_list %} {% endif %}
      diff --git a/topologie/templates/topologie/aff_repr_switch.html b/topologie/templates/topologie/aff_repr_switch.html index f9e6e648..c482da7a 100644 --- a/topologie/templates/topologie/aff_repr_switch.html +++ b/topologie/templates/topologie/aff_repr_switch.html @@ -23,6 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% endcomment %} {% load acl %} +{% load i18n %}
      @@ -63,7 +64,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% else %} {% endif %} {% endfor %} @@ -106,7 +107,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% else %} {% endif %} {% endfor %} diff --git a/topologie/templates/topologie/aff_stacks.html b/topologie/templates/topologie/aff_stacks.html index c5366cd7..c1032ee6 100644 --- a/topologie/templates/topologie/aff_stacks.html +++ b/topologie/templates/topologie/aff_stacks.html @@ -30,9 +30,9 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans "Stack" as tr_stack %} - + {% trans "ID" as tr_id %} - + @@ -45,22 +45,18 @@ with this program; if not, write to the Free Software Foundation, Inc., diff --git a/topologie/templates/topologie/aff_switch.html b/topologie/templates/topologie/aff_switch.html index d900a1f9..93c05530 100644 --- a/topologie/templates/topologie/aff_switch.html +++ b/topologie/templates/topologie/aff_switch.html @@ -28,22 +28,22 @@ with this program; if not, write to the Free Software Foundation, Inc.,
      {% if switch_list.paginator %} - {% include "pagination.html" with list=switch_list %} + {% include 'pagination.html' with list=switch_list %} {% endif %}
      - Vide + {% trans "Empty" %} - Vide + {% trans "Empty" %}
      {% include "buttons/sort.html" with prefix='stack' col='name' text=tr_stack %}{% include 'buttons/sort.html' with prefix='stack' col='name' text=tr_stack %}{% include "buttons/sort.html" with prefix='stack' col='id' text=id %}{% include 'buttons/sort.html' with prefix='stack' col='id' text=id %} {% trans "Details" %} {% trans "Members" %} {{ stack.details }} {% for switch in stack.switch_set.all %} - + {{ switch }} {% endfor %} {% can_edit stack %} - - - + {% include 'buttons/edit.html' with href='topologie:edit-stack' id=stack.id %} {% acl_end %} {% history_button stack %} {% can_delete stack %} - - - + {% include 'buttons/suppr.html' with href='topologie:del-stack' id=stack.id %} {% acl_end %}
      {% trans "DNS name" as tr_dns %} - + {% trans "IPv4 address" as tr_ip %} - + {% trans "Switch bay" as tr_bay %} - + {% trans "Ports" as tr_ports %} - + {% trans "Stack" as tr_stack %} - + @@ -53,7 +53,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% for switch in switch_list %} @@ -66,7 +66,7 @@ with this program; if not, write to the Free Software Foundation, Inc., @@ -82,7 +82,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
      {% include "buttons/sort.html" with prefix='switch' col='dns' text=tr_dns %}{% include 'buttons/sort.html' with prefix='switch' col='dns' text=tr_dns %}{% include "buttons/sort.html" with prefix='switch' col='ip' text=tr_ip %}{% include 'buttons/sort.html' with prefix='switch' col='ip' text=tr_ip %}{% include "buttons/sort.html" with prefix='switch' col='loc' text=tr_bay %}{% include 'buttons/sort.html' with prefix='switch' col='loc' text=tr_bay %}{% include "buttons/sort.html" with prefix='switch' col='ports' text=tr_ports %}{% include 'buttons/sort.html' with prefix='switch' col='ports' text=tr_ports %}{% include "buttons/sort.html" with prefix='switch' col='stack' text=tr_stack %}{% include 'buttons/sort.html' with prefix='switch' col='stack' text=tr_stack %} {% trans "Stack ID" %} {% trans "Switch model" %} {% trans "Details" %}
      - + {{ switch }} {{ switch.interface_set.first.details }} {% can_edit switch %} - {% include 'buttons/edit.html' with href='topologie:edit-switch' id=switch.pk %} + {% include 'buttons/edit.html' with href='topologie:edit-switch' id=switch.id %} {% acl_end %} {% history_button switch %} {% can_delete switch %} @@ -74,7 +74,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% acl_end %} {% can_create Port %} {% trans "Creation of ports" as tr_creation %} - {% include 'buttons/add.html' with href='topologie:create-ports' id=switch.pk desc=tr_creation %} + {% include 'buttons/add.html' with href='topologie:create-ports' id=switch.id desc=tr_creation %} {% acl_end %}
      {% if switch_list.paginator %} - {% include "pagination.html" with list=switch_list %} + {% include 'pagination.html' with list=switch_list %} {% endif %}
      diff --git a/topologie/templates/topologie/aff_switch_bay.html b/topologie/templates/topologie/aff_switch_bay.html index 0909c264..0aa81449 100644 --- a/topologie/templates/topologie/aff_switch_bay.html +++ b/topologie/templates/topologie/aff_switch_bay.html @@ -27,16 +27,16 @@ with this program; if not, write to the Free Software Foundation, Inc., {% load i18n %} {% if switch_bay_list.paginator %} -{% include "pagination.html" with list=switch_bay_list %} + {% include 'pagination.html' with list=switch_bay_list %} {% endif %} {% trans "Switch bay" as tr_bay %} - + {% trans "Building" as tr_building %} - + @@ -49,22 +49,18 @@ with this program; if not, write to the Free Software Foundation, Inc., @@ -72,6 +68,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
      {% include "buttons/sort.html" with prefix='switch-bay' col='name' text=tr_bay %}{% include 'buttons/sort.html' with prefix='switch-bay' col='name' text=tr_bay %}{% include "buttons/sort.html" with prefix='switch-bay' col='building' text=tr_building %}{% include 'buttons/sort.html' with prefix='switch-bay' col='building' text=tr_building %} {% trans "Information" %} {% trans "Switches of the bay" %} {{ switch_bay.info }} {% for switch in switch_bay.switch_set.all %} - + {{ switch }} {% endfor %} {% can_edit switch_bay %} - - - + {% include 'buttons/edit.html' with href='topologie:edit-switch-bay' id=switch_bay.id %} {% acl_end %} {% history_button switch_bay %} {% can_delete switch_bay %} - - - + {% include 'buttons/suppr.html' with href='topologie:del-switch-bay' id=switch_bay.id %} {% acl_end %}
      {% if switch_bay_list.paginator %} -{% include "pagination.html" with list=switch_bay_list %} + {% include 'pagination.html' with list=switch_bay_list %} {% endif %} diff --git a/topologie/templates/topologie/aff_vlanoptions.html b/topologie/templates/topologie/aff_vlanoptions.html index 3810cb7f..9b2dc913 100644 --- a/topologie/templates/topologie/aff_vlanoptions.html +++ b/topologie/templates/topologie/aff_vlanoptions.html @@ -24,18 +24,19 @@ with this program; if not, write to the Free Software Foundation, Inc., {% load acl %} {% load logs_extra %} +{% load i18n %}
      - - - - - - - + + + + + + + diff --git a/topologie/templates/topologie/delete.html b/topologie/templates/topologie/delete.html index a3b85254..24e6edad 100644 --- a/topologie/templates/topologie/delete.html +++ b/topologie/templates/topologie/delete.html @@ -1,4 +1,4 @@ -{% extends "topologie/sidebar.html" %} +{% extends 'topologie/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en diff --git a/topologie/templates/topologie/edit_stack_sw.html b/topologie/templates/topologie/edit_stack_sw.html index 8c29c85c..bf094f07 100644 --- a/topologie/templates/topologie/edit_stack_sw.html +++ b/topologie/templates/topologie/edit_stack_sw.html @@ -41,15 +41,11 @@ with this program; if not, write to the Free Software Foundation, Inc., diff --git a/topologie/templates/topologie/index.html b/topologie/templates/topologie/index.html index 1c13b928..be3667ca 100644 --- a/topologie/templates/topologie/index.html +++ b/topologie/templates/topologie/index.html @@ -1,4 +1,4 @@ -{% extends "topologie/sidebar.html" %} +{% extends 'topologie/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -68,7 +68,7 @@ function toggle_graph() { {% trans " Add a switch" %}
      {% acl_end %} - {% include "topologie/aff_switch.html" with switch_list=switch_list %} + {% include 'topologie/aff_switch.html' with switch_list=switch_list %}


      diff --git a/topologie/templates/topologie/index_ap.html b/topologie/templates/topologie/index_ap.html index e1292bb9..5fbd3d94 100644 --- a/topologie/templates/topologie/index_ap.html +++ b/topologie/templates/topologie/index_ap.html @@ -1,4 +1,4 @@ -{% extends "topologie/sidebar.html" %} +{% extends 'topologie/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -35,7 +35,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans " Add an access point" %}
      {% acl_end %} - {% include "topologie/aff_ap.html" with ap_list=ap_list %} + {% include 'topologie/aff_ap.html' with ap_list=ap_list %}


      diff --git a/topologie/templates/topologie/index_model_switch.html b/topologie/templates/topologie/index_model_switch.html index b89b7415..e7ad725f 100644 --- a/topologie/templates/topologie/index_model_switch.html +++ b/topologie/templates/topologie/index_model_switch.html @@ -1,4 +1,4 @@ -{% extends "topologie/sidebar.html" %} +{% extends 'topologie/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -37,7 +37,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
      {% acl_end %} - {% include "topologie/aff_model_switch.html" with model_switch_list=model_switch_list %} + {% include 'topologie/aff_model_switch.html' with model_switch_list=model_switch_list %}

      {% trans "Switch constructors" %}

      {% can_create ConstructorSwitch %} @@ -46,6 +46,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
      {% acl_end %} - {% include "topologie/aff_constructor_switch.html" with constructor_switch_list=constructor_switch_list %} + {% include 'topologie/aff_constructor_switch.html' with constructor_switch_list=constructor_switch_list %} {% endblock %} diff --git a/topologie/templates/topologie/index_module.html b/topologie/templates/topologie/index_module.html index d9cc2925..a7fee190 100644 --- a/topologie/templates/topologie/index_module.html +++ b/topologie/templates/topologie/index_module.html @@ -1,4 +1,4 @@ -{% extends "topologie/sidebar.html" %} +{% extends 'topologie/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -30,12 +30,12 @@ with this program; if not, write to the Free Software Foundation, Inc., {% block title %}{% trans "Topology" %}{% endblock %} {% block content %} -

      {% trans "Modules of switchs" %}

      +

      {% trans "Switch modules" %}

      {% can_create ModuleSwitch %} {% trans " Add a module" %}
      {% acl_end %} - {% include "topologie/aff_modules.html" with module_list=module_list modular_switchs=modular_switchs %} + {% include 'topologie/aff_modules.html' with module_list=module_list modular_switchs=modular_switchs %}


      diff --git a/topologie/templates/topologie/index_p.html b/topologie/templates/topologie/index_p.html index f44a48c6..04a516ec 100644 --- a/topologie/templates/topologie/index_p.html +++ b/topologie/templates/topologie/index_p.html @@ -1,4 +1,4 @@ -{% extends "topologie/sidebar.html" %} +{% extends 'topologie/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -46,14 +46,14 @@ with this program; if not, write to the Free Software Foundation, Inc.,
      IdNomArp ProtectDhcp SnoopingDhcpv6 SnoopingIgmpMld{% trans "ID" %}{% trans "Name" %}{% trans "ARP protect" %}{% trans "DHCP snooping" %}{% trans "DHCPv6 snooping" %}{% trans "IGMP" %}{% trans "MLD" %}
      {{ stack.details }} {% can_edit stack %} - - - + {% include 'buttons/edit.html' with href='topologie:edit-stack' id=stack.id %} {% acl_end %} {% history_button stack %} {% can_delete stack %} - - - + {% include 'buttons/suppr.html' with href='topologie:del-stack' id=stack.id %} {% acl_end %}

      -{% trans " Edit" %} +{% include 'buttons/edit.html' with href='topologie:edit-switch' id=id_switch %} {% can_create Port %} -{% trans " Add a port" %} -{% trans " Add ports" %} +{% include 'buttons/add.html' with href='topologie:new-port' id=id_switch %} +{% include 'buttons/add.html' with href='topologie:create-ports' id=id_switch %} {% acl_end %}
      -{% include "topologie/aff_repr_switch.html" with port_list=port_list %} -{% include "topologie/aff_port.html" with port_list=port_list %} +{% include 'topologie/aff_repr_switch.html' with port_list=port_list %} +{% include 'topologie/aff_port.html' with port_list=port_list %}


      diff --git a/topologie/templates/topologie/index_physical_grouping.html b/topologie/templates/topologie/index_physical_grouping.html index 763d7820..d2defa0c 100644 --- a/topologie/templates/topologie/index_physical_grouping.html +++ b/topologie/templates/topologie/index_physical_grouping.html @@ -1,4 +1,4 @@ -{% extends "topologie/sidebar.html" %} +{% extends 'topologie/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -36,7 +36,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans " Add a stack" %} {% acl_end %} - {% include "topologie/aff_stacks.html" with stack_list=stack_list %} + {% include 'topologie/aff_stacks.html' with stack_list=stack_list %}

      {% trans "Switch bays" %}

      {% can_create SwitchBay %} @@ -45,7 +45,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
      {% acl_end %} - {% include "topologie/aff_switch_bay.html" with switch_bay_list=switch_bay_list %} + {% include 'topologie/aff_switch_bay.html' with switch_bay_list=switch_bay_list %}

      {% trans "Buildings" %}

      {% can_create Building %} @@ -54,6 +54,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
      {% acl_end %} - {% include "topologie/aff_building.html" with building_list=building_list %} + {% include 'topologie/aff_building.html' with building_list=building_list %} {% endblock %} diff --git a/topologie/templates/topologie/index_portprofile.html b/topologie/templates/topologie/index_portprofile.html index 4a603210..a528b992 100644 --- a/topologie/templates/topologie/index_portprofile.html +++ b/topologie/templates/topologie/index_portprofile.html @@ -1,4 +1,4 @@ -{% extends "topologie/sidebar.html" %} +{% extends 'topologie/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -36,11 +36,11 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans " Add a port profile" %}
      {% acl_end %} -{% include "topologie/aff_port_profile.html" with port_profile_list=port_profile_list %} +{% include 'topologie/aff_port_profile.html' with port_profile_list=port_profile_list %} -

      {% trans "Sécurité par vlan" %}

      -{% include "topologie/aff_vlanoptions.html" with vlan_list=vlan_list %} +

      {% trans "VLAN security" %}

      +{% include 'topologie/aff_vlanoptions.html' with vlan_list=vlan_list %}

      diff --git a/topologie/templates/topologie/index_room.html b/topologie/templates/topologie/index_room.html index ea6ed6f3..248ce05d 100644 --- a/topologie/templates/topologie/index_room.html +++ b/topologie/templates/topologie/index_room.html @@ -1,4 +1,4 @@ -{% extends "topologie/sidebar.html" %} +{% extends 'topologie/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -35,7 +35,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans " Add a room" %}
      {% acl_end %} - {% include "topologie/aff_chambres.html" with room_list=room_list %} + {% include 'topologie/aff_chambres.html' with room_list=room_list %}


      diff --git a/topologie/templates/topologie/sidebar.html b/topologie/templates/topologie/sidebar.html index 80317a16..249c4308 100644 --- a/topologie/templates/topologie/sidebar.html +++ b/topologie/templates/topologie/sidebar.html @@ -1,4 +1,4 @@ -{% extends "base.html" %} +{% extends 'base.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -26,31 +26,31 @@ with this program; if not, write to the Free Software Foundation, Inc., {% load i18n %} {% block sidebar %} - + {% trans "Rooms and premises" %} - + {% trans "Switches" %} - + - {% trans "Switches modules" %} + {% trans "Switch modules" %} - + {% trans "Port profiles" %} - + {% trans "Access points" %} - + {% trans "Physical grouping" %} - + {% trans "Switch models and constructors" %} diff --git a/topologie/templates/topologie/switch.html b/topologie/templates/topologie/switch.html index 48d220fc..5bb738f6 100644 --- a/topologie/templates/topologie/switch.html +++ b/topologie/templates/topologie/switch.html @@ -1,4 +1,4 @@ -{% extends "topologie/sidebar.html" %} +{% extends 'topologie/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -36,7 +36,7 @@ with this program; if not, write to the Free Software Foundation, Inc., -{% bootstrap_icon "list" %}{% trans " Go to the ports list" %} +{% bootstrap_icon "list" %}{% trans " Go to the ports list" %}
      {% csrf_token %} {% if topoform %} diff --git a/topologie/templates/topologie/topo.html b/topologie/templates/topologie/topo.html index a7824020..2f6449e5 100644 --- a/topologie/templates/topologie/topo.html +++ b/topologie/templates/topologie/topo.html @@ -1,4 +1,4 @@ -{% extends "topologie/sidebar.html" %} +{% extends 'topologie/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en @@ -33,7 +33,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% bootstrap_form_errors topoform %} {% if id_switch %} -{% bootstrap_icon "list" %}{% trans " Go to the ports list" %} +{% bootstrap_icon "list" %}{% trans " Go to the ports list" %} {% endif %} {% csrf_token %} diff --git a/topologie/templates/topologie/topo_more.html b/topologie/templates/topologie/topo_more.html index 02171bd0..89f6404d 100644 --- a/topologie/templates/topologie/topo_more.html +++ b/topologie/templates/topologie/topo_more.html @@ -1,4 +1,4 @@ -{% extends "topologie/sidebar.html" %} +{% extends 'topologie/sidebar.html' %} {% comment %} Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en diff --git a/topologie/views.py b/topologie/views.py index 55f0a060..2eeb3d55 100644 --- a/topologie/views.py +++ b/topologie/views.py @@ -344,10 +344,10 @@ def edit_vlanoptions(request, vlan_instance, **_kwargs): if vlan.is_valid(): if vlan.changed_data: vlan.save() - messages.success(request, "Vlan modifié") + messages.success(request, _("The VLAN was edited.")) return redirect(reverse('topologie:index-port-profile')) return form( - {'vlanform': vlan, 'action_name': 'Editer'}, + {'vlanform': vlan, 'action_name': _("Edit")}, 'machines/machine.html', request ) @@ -551,7 +551,7 @@ def create_ports(request, switchid): try: switch = Switch.objects.get(pk=switchid) except Switch.DoesNotExist: - messages.error(request, _("Nonexistent switch")) + messages.error(request, _("Nonexistent switch.")) return redirect(reverse('topologie:index')) first_port = getattr(switch.ports.order_by('port').first(), 'port', 1) @@ -742,7 +742,7 @@ def new_room(request): messages.success(request, _("The room was created.")) return redirect(reverse('topologie:index-room')) return form( - {'topoform': room, 'action_name': _("Add")}, + {'topoform': room, 'action_name': _("Create")}, 'topologie/topo.html', request ) @@ -794,10 +794,10 @@ def new_model_switch(request): model_switch = EditModelSwitchForm(request.POST or None) if model_switch.is_valid(): model_switch.save() - messages.success(request, _("The swich model was created.")) + messages.success(request, _("The switch model was created.")) return redirect(reverse('topologie:index-model-switch')) return form( - {'topoform': model_switch, 'action_name': _("Add")}, + {'topoform': model_switch, 'action_name': _("Create")}, 'topologie/topo.html', request ) @@ -856,7 +856,7 @@ def new_switch_bay(request): messages.success(request, _("The switch bay was created.")) return redirect(reverse('topologie:index-physical-grouping')) return form( - {'topoform': switch_bay, 'action_name': _("Add")}, + {'topoform': switch_bay, 'action_name': _("Create")}, 'topologie/topo.html', request ) @@ -911,7 +911,7 @@ def new_building(request): messages.success(request, _("The building was created.")) return redirect(reverse('topologie:index-physical-grouping')) return form( - {'topoform': building, 'action_name': _("Add")}, + {'topoform': building, 'action_name': _("Create")}, 'topologie/topo.html', request ) @@ -966,7 +966,7 @@ def new_constructor_switch(request): messages.success(request, _("The switch constructor was created.")) return redirect(reverse('topologie:index-model-switch')) return form( - {'topoform': constructor_switch, 'action_name': _("Add")}, + {'topoform': constructor_switch, 'action_name': _("Create")}, 'topologie/topo.html', request ) @@ -1078,7 +1078,7 @@ def add_module(request): messages.success(request, _("The module was created.")) return redirect(reverse('topologie:index-module')) return form( - {'topoform': module, 'action_name': _("Create a module")}, + {'topoform': module, 'action_name': _("Create")}, 'topologie/topo.html', request ) @@ -1129,10 +1129,10 @@ def add_module_on(request): module_switch = EditSwitchModuleForm(request.POST or None) if module_switch.is_valid(): module_switch.save() - messages.success(request, _("The module added to that switch")) + messages.success(request, _("The module was added.")) return redirect(reverse('topologie:index-module')) return form( - {'topoform': module_switch, 'action_name': _("Create")}, + {'topoform': module_switch, 'action_name': _("Add")}, 'topologie/topo.html', request ) From 1c28c2d1bc3aaf5cb35370e487b4759ab0b6d780 Mon Sep 17 00:00:00 2001 From: Laouen Fernet Date: Wed, 9 Jan 2019 00:40:59 +0100 Subject: [PATCH 10/10] add translations for users/ --- users/forms.py | 4 +- users/locale/fr/LC_MESSAGES/django.po | 771 +++++++++--------- users/migrations/0080_auto_20190108_1726.py | 20 + users/models.py | 22 +- users/templates/users/aff_bans.html | 12 +- users/templates/users/aff_clubs.html | 12 +- users/templates/users/aff_emailaddress.html | 4 +- users/templates/users/aff_listright.html | 14 +- users/templates/users/aff_schools.html | 6 +- users/templates/users/aff_users.html | 14 +- users/templates/users/aff_whitelists.html | 12 +- users/templates/users/delete.html | 4 +- users/templates/users/index.html | 4 +- users/templates/users/index_ban.html | 4 +- users/templates/users/index_clubs.html | 4 +- users/templates/users/index_emailaddress.html | 4 +- users/templates/users/index_listright.html | 4 +- users/templates/users/index_rights.html | 4 +- users/templates/users/index_schools.html | 6 +- users/templates/users/index_serviceusers.html | 4 +- users/templates/users/index_shell.html | 4 +- users/templates/users/index_whitelist.html | 4 +- users/templates/users/mass_archive.html | 4 +- users/templates/users/plugin_out.html | 2 +- users/templates/users/profil.html | 27 +- users/templates/users/sidebar.html | 24 +- users/templates/users/user.html | 2 +- users/templates/users/user_autocapture.html | 14 +- users/views.py | 2 +- 29 files changed, 507 insertions(+), 505 deletions(-) create mode 100644 users/migrations/0080_auto_20190108_1726.py diff --git a/users/forms.py b/users/forms.py index d4110dcd..6fcfea81 100644 --- a/users/forms.py +++ b/users/forms.py @@ -381,7 +381,7 @@ class AdherentCreationForm(AdherentForm): + "using the forgotten password button on the "\ + "login page or contacting support.") former_user_check = forms.BooleanField(required=True, help_text=former_user_check_info) - former_user_check.label = _("I certifie that I have not had an account before") + former_user_check.label = _("I certify that I have not had an account before") # Checkbox for GTU gtu_check = forms.BooleanField(required=True) @@ -439,7 +439,7 @@ class ClubForm(FormRevMixin, FieldPermissionFormMixin, ModelForm): self.fields['surname'].label = _("Name") self.fields['school'].label = _("School") self.fields['comment'].label = _("Comment") - self.fields['email'].label = _("Email Address") + self.fields['email'].label = _("Email address") if 'room' in self.fields: self.fields['room'].label = _("Room") self.fields['room'].empty_label = _("No room") diff --git a/users/locale/fr/LC_MESSAGES/django.po b/users/locale/fr/LC_MESSAGES/django.po index 7db3099a..965a1a8a 100644 --- a/users/locale/fr/LC_MESSAGES/django.po +++ b/users/locale/fr/LC_MESSAGES/django.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: 2.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-10-03 02:50+0200\n" +"POT-Creation-Date: 2019-01-09 00:27+0100\n" "PO-Revision-Date: 2018-06-27 23:35+0200\n" "Last-Translator: Laouen Fernet \n" "Language-Team: \n" @@ -35,116 +35,117 @@ msgstr "" msgid "You don't have the right to view this application." msgstr "Vous n'avez pas le droit de voir cette application." -#: forms.py:75 +#: forms.py:76 msgid "Current password" msgstr "Mot de passe actuel" -#: forms.py:80 forms.py:492 +#: forms.py:81 forms.py:507 forms.py:534 msgid "New password" msgstr "Nouveau mot de passe" -#: forms.py:86 +#: forms.py:87 msgid "New password confirmation" msgstr "Confirmation du nouveau mot de passe" -#: forms.py:103 +#: forms.py:104 msgid "The new passwords don't match." msgstr "Les nouveaux mots de passe ne correspondent pas." -#: forms.py:112 +#: forms.py:113 msgid "The current password is incorrect." msgstr "Le mot de passe actuel est incorrect." -#: forms.py:130 forms.py:183 models.py:1580 +#: forms.py:132 forms.py:185 models.py:1597 msgid "Password" msgstr "Mot de passe" -#: forms.py:136 forms.py:189 +#: forms.py:138 forms.py:191 msgid "Password confirmation" msgstr "Confirmation du mot de passe" -#: forms.py:141 forms.py:232 +#: forms.py:143 forms.py:234 msgid "Is admin" msgstr "Est admin" -#: forms.py:151 +#: forms.py:153 msgid "You can't use an internal address as your external address." msgstr "" "Vous ne pouvez pas utiliser une adresse interne pour votre adresse externe." -#: forms.py:164 forms.py:213 +#: forms.py:166 forms.py:215 msgid "The passwords don't match." msgstr "Les mots de passe ne correspondent pas." -#: forms.py:241 +#: forms.py:243 #, python-format msgid "User is admin: %s" msgstr "L'utilisateur est admin : %s" -#: forms.py:289 templates/users/aff_clubs.html:38 +#: forms.py:291 templates/users/aff_clubs.html:38 #: templates/users/aff_listright.html:63 templates/users/aff_listright.html:168 -#: templates/users/aff_users.html:39 templates/users/profil.html:169 -#: templates/users/profil.html:286 templates/users/profil.html:305 +#: templates/users/aff_users.html:39 templates/users/profil.html:177 +#: templates/users/profil.html:331 templates/users/profil.html:350 msgid "Username" msgstr "Pseudo" -#: forms.py:304 +#: forms.py:306 msgid "Impossible to archive users whose end access date is in the future." msgstr "" "Impossible d'archiver des utilisateurs dont la date de fin de connexion est " "dans le futur." -#: forms.py:316 templates/users/profil.html:285 templates/users/profil.html:304 +#: forms.py:318 templates/users/profil.html:166 templates/users/profil.html:330 +#: templates/users/profil.html:349 msgid "First name" msgstr "Prénom" -#: forms.py:317 templates/users/aff_users.html:37 -#: templates/users/profil.html:165 templates/users/profil.html:284 -#: templates/users/profil.html:303 +#: forms.py:319 templates/users/aff_users.html:37 +#: templates/users/profil.html:172 templates/users/profil.html:329 +#: templates/users/profil.html:348 msgid "Surname" msgstr "Nom" -#: forms.py:318 models.py:1581 templates/users/aff_emailaddress.html:36 -#: templates/users/profil.html:171 +#: forms.py:320 forms.py:442 models.py:1598 +#: templates/users/aff_emailaddress.html:36 templates/users/profil.html:182 msgid "Email address" msgstr "Adresse mail" -#: forms.py:319 forms.py:430 forms.py:561 templates/users/aff_schools.html:37 -#: templates/users/profil.html:181 +#: forms.py:321 forms.py:440 forms.py:590 templates/users/aff_schools.html:37 +#: templates/users/profil.html:200 msgid "School" msgstr "Établissement" -#: forms.py:320 forms.py:431 models.py:1234 -#: templates/users/aff_serviceusers.html:34 templates/users/profil.html:183 +#: forms.py:322 forms.py:441 models.py:1251 +#: templates/users/aff_serviceusers.html:34 templates/users/profil.html:205 msgid "Comment" msgstr "Commentaire" -#: forms.py:322 forms.py:433 templates/users/aff_clubs.html:40 -#: templates/users/aff_users.html:41 templates/users/profil.html:175 +#: forms.py:324 forms.py:444 templates/users/aff_clubs.html:40 +#: templates/users/aff_users.html:41 templates/users/profil.html:187 msgid "Room" msgstr "Chambre" -#: forms.py:323 forms.py:434 +#: forms.py:325 forms.py:445 msgid "No room" msgstr "Pas de chambre" -#: forms.py:324 forms.py:435 +#: forms.py:326 forms.py:446 msgid "Select a school" msgstr "Sélectionnez un établissement" -#: forms.py:331 forms.py:701 -msgid "You can't use a {} address." -msgstr "Vous ne pouvez pas utiliser une adresse {}." - -#: forms.py:354 forms.py:456 -msgid "A valid telephone number is required." -msgstr "Un numéro de téléphone valide est requis." - -#: forms.py:359 +#: forms.py:342 msgid "Force the move?" msgstr "Forcer le déménagement ?" -#: forms.py:377 +#: forms.py:352 forms.py:730 +msgid "You can't use a {} address." +msgstr "Vous ne pouvez pas utiliser une adresse {}." + +#: forms.py:361 forms.py:470 +msgid "A valid telephone number is required." +msgstr "Un numéro de téléphone valide est requis." + +#: forms.py:379 msgid "" "If you already have an account, please use it. If your lost access to it, " "please consider using the forgotten password button on the login page or " @@ -155,207 +156,218 @@ msgstr "" "passe oublié est à votre disposition. Si vous avez oublié votre login, " "contactez le support." -#: forms.py:382 -msgid "I certifie that I have not had an account before" +#: forms.py:384 +msgid "I certify that I have not had an account before" msgstr "Je certifie sur l'honneur ne pas déjà avoir de compte" -#: forms.py:387 -msgid "I commit to accept the" -msgstr "J'accepte les conditions générales" - -#: forms.py:387 -msgid "General Terms of Use" -msgstr "Conditions Générales d'Utilisation" - -#: forms.py:387 -msgid "." -msgstr "." - -#: forms.py:397 +#: forms.py:413 msgid "Leave empty if you don't have any GPG key." msgstr "Laissez vide si vous n'avez pas de clé GPG." -#: forms.py:399 +#: forms.py:415 msgid "Default shell" -msgstr "Interface système par défaut" +msgstr "Interface en ligne de commande par défaut" -#: forms.py:429 templates/users/aff_clubs.html:36 +#: forms.py:439 templates/users/aff_clubs.html:36 #: templates/users/aff_serviceusers.html:32 msgid "Name" msgstr "Nom" -#: forms.py:436 +#: forms.py:447 msgid "Use a mailing list" msgstr "Utiliser une liste de diffusion" -#: forms.py:549 templates/users/aff_listright.html:38 +#: forms.py:578 templates/users/aff_listright.html:38 msgid "Superuser" msgstr "Superutilisateur" -#: forms.py:573 +#: forms.py:602 msgid "Shell name" -msgstr "Nom de l'interface système" +msgstr "Nom de l'interface en ligne de commande" -#: forms.py:592 +#: forms.py:621 msgid "Name of the group of rights" msgstr "Nom du groupe de droits" -#: forms.py:603 +#: forms.py:632 msgid "GID. Warning: this field must not be edited after creation." msgstr "GID. Attention : ce champ ne doit pas être modifié après création." -#: forms.py:611 +#: forms.py:640 msgid "Current groups of rights" msgstr "Groupes de droits actuels" -#: forms.py:628 +#: forms.py:657 msgid "Current schools" msgstr "Établissements actuels" -#: forms.py:646 forms.py:660 templates/users/aff_bans.html:41 +#: forms.py:675 forms.py:689 templates/users/aff_bans.html:41 #: templates/users/aff_whitelists.html:41 msgid "End date" msgstr "Date de fin" -#: forms.py:674 models.py:1778 +#: forms.py:703 models.py:1795 msgid "Local part of the email address" msgstr "Partie locale de l'adresse mail" -#: forms.py:675 +#: forms.py:704 msgid "Can't contain @" msgstr "Ne peut pas contenir @" -#: forms.py:690 +#: forms.py:719 msgid "Main email address" msgstr "Adresse mail principale" -#: forms.py:692 +#: forms.py:721 msgid "Redirect local emails" msgstr "Rediriger les mails locaux" -#: forms.py:694 +#: forms.py:723 msgid "Use local emails" msgstr "Utiliser les mails locaux" -#: forms.py:734 +#: forms.py:763 msgid "This room is my room" msgstr "Il s'agit bien de ma chambre" -#: forms.py:738 +#: forms.py:767 msgid "This new connected device is mine" msgstr "Ce nouvel appareil connecté m'appartient" -#: models.py:105 +#: models.py:106 #, python-format msgid "The username '%(label)s' contains forbidden characters." msgstr "Le pseudo '%(label)s' contient des caractères interdits." -#: models.py:147 +#: models.py:148 msgid "Users must have an username." msgstr "Les utilisateurs doivent avoir un pseudo." -#: models.py:150 +#: models.py:151 msgid "Username should only contain [a-z0-9-]." msgstr "Le pseudo devrait seulement contenir [a-z0-9-]" -#: models.py:201 models.py:1225 +#: models.py:192 templates/users/aff_clubs.html:55 +#: templates/users/aff_users.html:57 templates/users/profil.html:249 +msgid "Active" +msgstr "Actif" + +#: models.py:193 templates/users/aff_clubs.html:57 +#: templates/users/aff_users.html:59 templates/users/profil.html:251 +#: templates/users/profil.html:265 +msgid "Disabled" +msgstr "Désactivé" + +#: models.py:194 templates/users/profil.html:253 +msgid "Archived" +msgstr "Archivé" + +#: models.py:195 +msgid "Not yet active" +msgstr "Pas encore adhéré" + +#: models.py:202 models.py:1242 msgid "Must only contain letters, numerals or dashes." msgstr "Doit seulement contenir des lettres, chiffres ou tirets." -#: models.py:207 +#: models.py:208 msgid "External email address allowing us to contact you." msgstr "Adresse mail externe nous permettant de vous contacter." -#: models.py:211 +#: models.py:212 msgid "" "Enable redirection of the local email messages to the main email address." msgstr "" "Activer la redirection des mails locaux vers l'adresse mail principale." -#: models.py:216 +#: models.py:217 msgid "Enable the local email account." msgstr "Activer le compte mail local" -#: models.py:231 +#: models.py:232 msgid "Comment, school year" msgstr "Commentaire, promotion" -#: models.py:257 +#: models.py:258 msgid "Can change the password of a user" msgstr "Peut changer le mot de passe d'un utilisateur" -#: models.py:258 +#: models.py:259 msgid "Can edit the state of a user" msgstr "Peut changer l'état d'un utilisateur" -#: models.py:259 +#: models.py:260 msgid "Can force the move" msgstr "Peut forcer le déménagement" -#: models.py:260 +#: models.py:261 msgid "Can edit the shell of a user" -msgstr "Peut modifier l'interface système d'un utilisateur" +msgstr "Peut modifier l'interface en ligne de commande d'un utilisateur" -#: models.py:262 +#: models.py:263 msgid "Can edit the groups of rights of a user (critical permission)" msgstr "" "Peut modifier les groupes de droits d'un utilisateur (permission critique)" -#: models.py:265 +#: models.py:266 msgid "Can edit all users, including those with rights." msgstr "" "Peut modifier tous les utilisateurs, y compris ceux possédant des droits." -#: models.py:267 +#: models.py:268 msgid "Can view a user object" msgstr "Peut voir un objet utilisateur" -#: models.py:269 +#: models.py:270 msgid "user (member or club)" msgstr "utilisateur (adhérent ou club)" -#: models.py:270 +#: models.py:271 msgid "users (members or clubs)" msgstr "utilisateurs (adhérents ou clubs)" -#: models.py:288 models.py:312 +#: models.py:289 models.py:313 msgid "Unknown type." msgstr "Type inconnu." -#: models.py:308 templates/users/aff_listright.html:75 +#: models.py:309 templates/users/aff_listright.html:75 #: templates/users/aff_listright.html:180 msgid "Member" msgstr "Adhérent" -#: models.py:310 +#: models.py:311 msgid "Club" msgstr "Club" -#: models.py:534 +#: models.py:536 msgid "IPv4 assigning" msgstr "Attribution de l'IPv4" -#: models.py:543 +#: models.py:545 msgid "IPv4 unassigning" msgstr "Désattribution de l'IPv4" -#: models.py:693 +#: models.py:701 msgid "Maximum number of registered machines reached." msgstr "Nombre maximum de machines enregistrées atteint." -#: models.py:695 +#: models.py:703 msgid "Re2o doesn't know wich machine type to assign." msgstr "Re2o ne sait pas quel type de machine attribuer." -#: models.py:791 models.py:828 +#: models.py:726 templates/users/user_autocapture.html:64 +msgid "OK" +msgstr "OK" + +#: models.py:799 models.py:836 msgid "You don't have the right to edit this club." msgstr "Vous n'avez pas le droit de modifier ce club." -#: models.py:799 +#: models.py:807 msgid "User with critical rights, can't be edited." msgstr "Utilisateur avec des droits critiques, ne peut être modifié." -#: models.py:802 +#: models.py:810 msgid "" "Impossible to edit the organisation's user without the 'change_all_users' " "right." @@ -363,52 +375,60 @@ msgstr "" "Impossible de modifier l'utilisateur de l'association sans le droit " "'change_all_users'." -#: models.py:810 models.py:839 +#: models.py:818 models.py:847 msgid "You don't have the right to edit another user." msgstr "Vous n'avez pas le droit de modifier un autre utilisateur." -#: models.py:858 models.py:871 +#: models.py:865 +msgid "Permission required to change the room." +msgstr "Permission requise pour changer la chambre." + +#: models.py:879 msgid "Permission required to change the state." msgstr "Permission requise pour changer l'état." -#: models.py:883 +#: models.py:891 msgid "Permission required to change the shell." -msgstr "Permission requise pour changer l'interface système." +msgstr "Permission requise pour changer l'interface en ligne de commande." -#: models.py:897 models.py:910 +#: models.py:905 models.py:918 msgid "Local email accounts must be enabled." msgstr "Les comptes mail locaux doivent être activés." -#: models.py:923 +#: models.py:931 msgid "Permission required to force the move." msgstr "Permission requise pour forcer le déménagement." -#: models.py:936 +#: models.py:944 msgid "Permission required to edit the user's groups of rights." msgstr "" "Permission requise pour modifier les groupes de droits de l'utilisateur." -#: models.py:948 +#: models.py:956 msgid "'superuser' right required to edit the superuser flag." msgstr "Droit 'superuser' requis pour modifier le signalement superuser." -#: models.py:966 +#: models.py:974 msgid "You don't have the right to view this club." msgstr "Vous n'avez pas le droit de voir ce club." -#: models.py:972 +#: models.py:980 msgid "You don't have the right to view another user." msgstr "Vous n'avez pas le droit de voir un autre utilisateur." -#: models.py:985 models.py:1157 +#: models.py:993 models.py:1174 msgid "You don't have the right to view the list of users." msgstr "Vous n'avez pas le droit de voir la liste des utilisateurs." -#: models.py:998 +#: models.py:1006 msgid "You don't have the right to delete this user." msgstr "Vous n'avez pas le droit de supprimer cet utilisateur." -#: models.py:1023 +#: models.py:1027 +msgid "This username is already used." +msgstr "Ce pseudo est déjà utilisé." + +#: models.py:1029 msgid "" "There is neither a local email address nor an external email address for " "this user." @@ -416,7 +436,7 @@ msgstr "" "Il n'y a pas d'adresse mail locale ni d'adresse mail externe pour cet " "utilisateur." -#: models.py:1030 +#: models.py:1033 msgid "" "You can't redirect your local emails if no external email address has been " "set." @@ -424,178 +444,178 @@ msgstr "" "Vous ne pouvez pas rediriger vos mails locaux si aucune adresse mail externe " "n'a été définie." -#: models.py:1055 -msgid "A GPG fingerprint must contain 40 hexadecimal characters." -msgstr "Une empreinte GPG doit contenir 40 caractères hexadécimaux." - -#: models.py:1061 +#: models.py:1059 msgid "member" msgstr "adhérent" -#: models.py:1062 +#: models.py:1060 msgid "members" msgstr "adhérents" -#: models.py:1091 +#: models.py:1071 +msgid "A GPG fingerprint must contain 40 hexadecimal characters" +msgstr "Une empreinte GPG doit contenir 40 caractères hexadécimaux" + +#: models.py:1101 msgid "You don't have the right to create a user." msgstr "Vous n'avez pas le droit de créer un utilisateur." -#: models.py:1120 +#: models.py:1137 msgid "club" msgstr "club" -#: models.py:1121 +#: models.py:1138 msgid "clubs" msgstr "clubs" -#: models.py:1139 +#: models.py:1156 msgid "You don't have the right to create a club." msgstr "Vous n'avez pas le droit de créer un club." -#: models.py:1244 +#: models.py:1261 msgid "Can view a service user object" msgstr "Peut voir un objet utilisateur service" -#: models.py:1246 +#: models.py:1263 msgid "service user" msgstr "utilisateur service" -#: models.py:1247 +#: models.py:1264 msgid "service users" msgstr "utilisateurs service" -#: models.py:1251 +#: models.py:1268 #, python-brace-format msgid "Service user <{name}>" msgstr "Utilisateur service <{name}>" -#: models.py:1313 +#: models.py:1330 msgid "Can view a school object" msgstr "Peut voir un objet établissement" -#: models.py:1315 +#: models.py:1332 msgid "school" msgstr "établissement" -#: models.py:1316 +#: models.py:1333 msgid "schools" msgstr "établissements" -#: models.py:1334 +#: models.py:1351 msgid "UNIX groups can only contain lower case letters." msgstr "Les groupes UNIX peuvent seulement contenir des lettres minuscules." -#: models.py:1340 +#: models.py:1357 msgid "Description" msgstr "Description" -#: models.py:1347 +#: models.py:1364 msgid "Can view a group of rights object" msgstr "Peut voir un objet groupe de droits" -#: models.py:1349 +#: models.py:1366 msgid "group of rights" msgstr "groupe de droits" -#: models.py:1350 +#: models.py:1367 msgid "groups of rights" msgstr "groupes de droits" -#: models.py:1397 +#: models.py:1414 msgid "Can view a shell object" -msgstr "Peut voir un objet interface système" +msgstr "Peut voir un objet interface en ligne de commande" -#: models.py:1399 +#: models.py:1416 msgid "shell" -msgstr "interface système" +msgstr "interface en ligne de commande" -#: models.py:1400 +#: models.py:1417 msgid "shells" -msgstr "interfaces système" +msgstr "interfaces en ligne de commande" -#: models.py:1419 +#: models.py:1436 msgid "HARD (no access)" msgstr "HARD (pas d'accès)" -#: models.py:1420 +#: models.py:1437 msgid "SOFT (local access only)" msgstr "SOFT (accès local uniquement)" -#: models.py:1421 +#: models.py:1438 msgid "RESTRICTED (speed limitation)" msgstr "RESTRICTED (limitation de vitesse)" -#: models.py:1432 +#: models.py:1449 msgid "Can view a ban object" msgstr "Peut voir un objet bannissement" -#: models.py:1434 +#: models.py:1451 msgid "ban" msgstr "bannissement" -#: models.py:1435 +#: models.py:1452 msgid "bans" msgstr "bannissements" -#: models.py:1469 +#: models.py:1486 msgid "You don't have the right to view bans other than yours." msgstr "" "Vous n'avez pas le droit de voir des bannissements autres que les vôtres." -#: models.py:1517 +#: models.py:1534 msgid "Can view a whitelist object" msgstr "Peut voir un objet accès gracieux" -#: models.py:1519 +#: models.py:1536 msgid "whitelist (free of charge access)" msgstr "Accès gracieux" -#: models.py:1520 +#: models.py:1537 msgid "whitelists (free of charge access)" msgstr "Accès gracieux" -#: models.py:1536 +#: models.py:1553 msgid "You don't have the right to view whitelists other than yours." msgstr "" "Vous n'avez pas le droit de voir des accès gracieux autres que les vôtres." -#: models.py:1773 +#: models.py:1790 msgid "User of the local email account" msgstr "Utilisateur du compte mail local" -#: models.py:1783 +#: models.py:1800 msgid "Can view a local email account object" msgstr "Peut voir un objet compte mail local" -#: models.py:1785 +#: models.py:1802 msgid "local email account" msgstr "compte mail local" -#: models.py:1786 +#: models.py:1803 msgid "local email accounts" msgstr "comptes mail locaux" -#: models.py:1810 models.py:1833 models.py:1855 models.py:1877 +#: models.py:1827 models.py:1850 models.py:1872 models.py:1894 msgid "The local email accounts are not enabled." msgstr "Les comptes mail locaux ne sont pas activés." -#: models.py:1812 +#: models.py:1829 msgid "You don't have the right to add a local email account to another user." msgstr "" "Vous n'avez pas le droit d'ajouter un compte mail local à un autre " "utilisateur." -#: models.py:1815 +#: models.py:1832 msgid "You reached the limit of {} local email accounts." msgstr "Vous avez atteint la limite de {} comptes mail locaux." -#: models.py:1836 models.py:1880 +#: models.py:1853 models.py:1897 msgid "You don't have the right to edit another user's local email account." msgstr "" "Vous n'avez pas le droit de modifier le compte mail local d'un autre " "utilisateur." -#: models.py:1850 +#: models.py:1867 msgid "" "You can't delete a local email account whose local part is the same as the " "username." @@ -603,13 +623,13 @@ msgstr "" "Vous ne pouvez pas supprimer un compte mail local dont la partie locale est " "la même que le pseudo." -#: models.py:1858 +#: models.py:1875 msgid "You don't have the right to delete another user's local email account" msgstr "" "Vous n'avez pas le droit de supprimer le compte mail local d'un autre " "utilisateur." -#: models.py:1872 +#: models.py:1889 msgid "" "You can't edit a local email account whose local part is the same as the " "username." @@ -617,9 +637,9 @@ msgstr "" "Vous ne pouvez pas modifier un compte mail local dont la partie locale est " "la même que le pseudo." -#: models.py:1886 -msgid "The local part must not contain @." -msgstr "La partie locale ne doit pas contenir @." +#: models.py:1903 +msgid "The local part must not contain @ or +." +msgstr "La partie locale ne doit pas contenir @ ou +." #: templates/users/aff_bans.html:36 templates/users/aff_whitelists.html:36 msgid "User" @@ -638,43 +658,38 @@ msgid "End of subscription on" msgstr "Fin de cotisation le" #: templates/users/aff_clubs.html:43 templates/users/aff_users.html:44 -#: templates/users/profil.html:225 +#: templates/users/profil.html:260 msgid "Internet access" msgstr "Accès Internet" #: templates/users/aff_clubs.html:44 templates/users/aff_users.html:45 -#: templates/users/profil.html:32 +#: templates/users/profil.html:31 msgid "Profile" msgstr "Profil" #: templates/users/aff_clubs.html:53 templates/users/aff_users.html:54 -#: templates/users/profil.html:197 +#: templates/users/profil.html:224 msgid "Not a member" msgstr "Non adhérent" -#: templates/users/aff_clubs.html:55 templates/users/aff_users.html:57 -#: templates/users/profil.html:214 -msgid "Active" -msgstr "Actif" - -#: templates/users/aff_clubs.html:57 templates/users/aff_users.html:59 -#: templates/users/profil.html:216 templates/users/profil.html:229 -msgid "Disabled" -msgstr "Désactivé" - #: templates/users/aff_listright.html:40 msgid "Django's specific pre-defined right that supersed any other rights." msgstr "" "Droit prédéfini spécifique à Django qui outrepasse tous les autres droits." #: templates/users/aff_listright.html:44 -msgid "Total: All permissions" -msgstr "Total: Toutes les permissions" +msgid "Total: all permissions" +msgstr "Total: toutes les permissions" -#: templates/users/aff_listright.html:56 +#: templates/users/aff_listright.html:49 templates/users/aff_listright.html:56 msgid "Users in Superuser" msgstr "Utilisateurs dans Superuser" +#: templates/users/aff_listright.html:53 templates/users/aff_listright.html:154 +#: widgets.py:35 +msgid "Close" +msgstr "Fermer" + #: templates/users/aff_listright.html:64 templates/users/aff_listright.html:169 msgid "Membership" msgstr "Adhésion" @@ -693,7 +708,7 @@ msgstr "Dernière action" #: templates/users/aff_listright.html:77 templates/users/aff_listright.html:182 msgid "No membership records" -msgstr "Aucune adhésion" +msgstr "Aucune adhésion enregistrée" #: templates/users/aff_listright.html:80 templates/users/aff_listright.html:185 #, python-format @@ -716,6 +731,19 @@ msgid_plural "Total: %(perm_count)s permissions" msgstr[0] "Total: %(perm_count)s permission" msgstr[1] "Total: %(perm_count)s permissions" +#: templates/users/aff_listright.html:150 templates/users/index.html:29 +#: templates/users/index.html:32 templates/users/index_ban.html:29 +#: templates/users/index_clubs.html:29 +#: templates/users/index_emailaddress.html:29 +#: templates/users/index_listright.html:30 templates/users/index_rights.html:29 +#: templates/users/index_schools.html:30 +#: templates/users/index_serviceusers.html:30 +#: templates/users/index_shell.html:30 templates/users/index_whitelist.html:29 +#: templates/users/plugin_out.html:31 templates/users/sidebar.html:52 +#: templates/users/user.html:30 templates/users/user_autocapture.html:30 +msgid "Users" +msgstr "Utilisateurs" + #: templates/users/aff_listright.html:158 #, python-format msgid "Users in %(right_name)s" @@ -725,17 +753,17 @@ msgstr "Utilisateurs dans %(right_name)s" msgid "Role" msgstr "Rôle" -#: templates/users/aff_shell.html:32 templates/users/profil.html:255 +#: templates/users/aff_shell.html:32 templates/users/profil.html:301 msgid "Shell" -msgstr "Interface système" +msgstr "Interface en ligne de commande" -#: templates/users/aff_users.html:35 templates/users/profil.html:162 +#: templates/users/aff_users.html:35 msgid "Firt name" msgstr "Prénom" #: templates/users/delete.html:29 -msgid "Deletion of objects" -msgstr "Suppression d'objets" +msgid "Deletion of users" +msgstr "Suppression d'utilisateurs" #: templates/users/delete.html:35 #, python-format @@ -750,19 +778,7 @@ msgstr "" msgid "Confirm" msgstr "Confirmer" -#: templates/users/index.html:29 templates/users/index.html:32 -#: templates/users/index_ban.html:29 templates/users/index_clubs.html:29 -#: templates/users/index_emailaddress.html:29 -#: templates/users/index_listright.html:30 templates/users/index_rights.html:29 -#: templates/users/index_schools.html:30 -#: templates/users/index_serviceusers.html:30 -#: templates/users/index_shell.html:30 templates/users/index_whitelist.html:29 -#: templates/users/plugin_out.html:31 templates/users/sidebar.html:52 -#: templates/users/user.html:30 templates/users/user_autocapture.html:30 -msgid "Users" -msgstr "Utilisateurs" - -#: templates/users/index_ban.html:32 templates/users/profil.html:380 +#: templates/users/index_ban.html:32 templates/users/profil.html:427 #: templates/users/sidebar.html:58 msgid "Bans" msgstr "Bannissements" @@ -796,8 +812,8 @@ msgid "List of schools" msgstr "Liste des établissements" #: templates/users/index_schools.html:34 -msgid "List of schools for created users." -msgstr "Liste des établissement pour les utilisateurs créés." +msgid "List of schools for created users" +msgstr "Liste des établissements pour les utilisateurs créés" #: templates/users/index_schools.html:36 msgid " Add a school" @@ -827,13 +843,13 @@ msgstr " Ajouter un utilisateur" #: templates/users/index_shell.html:33 msgid "List of shells" -msgstr "Liste des interaces système" +msgstr "Liste des interfaces en ligne de commande" #: templates/users/index_shell.html:35 msgid " Add a shell" -msgstr " Ajouter une interface système" +msgstr " Ajouter une interface en ligne de commande" -#: templates/users/index_whitelist.html:32 templates/users/profil.html:405 +#: templates/users/index_whitelist.html:32 templates/users/profil.html:452 #: templates/users/sidebar.html:64 msgid "Whitelists" msgstr "Accès gracieux" @@ -850,7 +866,7 @@ msgstr "Rechercher" #, python-format msgid "The following users will be archived (%(to_archive_list|length)s):" msgstr "" -"Les utilisateus suivants vont être archivés (%(to_archive_list|length)s :" +"Les utilisateus suivants vont être archivés (%(to_archive_list|length)s) :" #: templates/users/plugin_out.html:35 msgid "" @@ -861,44 +877,44 @@ msgstr "" "débrancher et rebrancher votre câble Ethernet pour bénéficier d'une " "connexion filaire." -#: templates/users/profil.html:37 +#: templates/users/profil.html:36 #, python-format msgid "Welcome %(name)s %(surname)s" msgstr "Bienvenue %(name)s %(surname)s" -#: templates/users/profil.html:39 +#: templates/users/profil.html:38 #, python-format msgid "Profile of %(name)s %(surname)s" msgstr "Profil de %(name)s %(surname)s" -#: templates/users/profil.html:47 +#: templates/users/profil.html:46 msgid "Your account has been banned" msgstr "Votre compte a été banni" -#: templates/users/profil.html:49 +#: templates/users/profil.html:48 #, python-format -msgid "End of the ban: %(end_ban)s" -msgstr "Fin du bannissement : %(end_ban)s" +msgid "End of the ban: %(end_ban_date)s" +msgstr "Fin du bannissement : %(end_ban_date)s" -#: templates/users/profil.html:54 +#: templates/users/profil.html:53 msgid "No connection" msgstr "Pas de connexion" -#: templates/users/profil.html:58 +#: templates/users/profil.html:57 msgid "Pay for a connection" msgstr "Payer une connexion" -#: templates/users/profil.html:61 +#: templates/users/profil.html:60 msgid "Ask for someone with the appropriate rights to pay for a connection." msgstr "" "Demandez à quelqu'un ayant les droits appropriés de payer une connexion." -#: templates/users/profil.html:67 +#: templates/users/profil.html:66 #, python-format -msgid "Connection (until %(end_connection)s )" -msgstr "Connexion (jusqu'au %(end_connection)s)" +msgid "Connection (until %(end_connection_date)s )" +msgstr "Connexion (jusqu'au %(end_connection_date)s)" -#: templates/users/profil.html:71 +#: templates/users/profil.html:70 msgid "Extend the connection period" msgstr "Étendre la durée de connexion" @@ -906,190 +922,184 @@ msgstr "Étendre la durée de connexion" msgid "Refill the balance" msgstr "Recharger le solde" -#: templates/users/profil.html:96 +#: templates/users/profil.html:97 msgid " Machines" msgstr " Machines" -#: templates/users/profil.html:100 templates/users/profil.html:109 +#: templates/users/profil.html:101 templates/users/profil.html:113 msgid " Add a machine" msgstr " Ajouter une machine" -#: templates/users/profil.html:106 templates/users/profil.html:340 +#: templates/users/profil.html:109 templates/users/profil.html:386 msgid "No machine" msgstr "Pas de machine" -#: templates/users/profil.html:122 +#: templates/users/profil.html:127 msgid " Detailed information" msgstr " Informations détaillées" -#: templates/users/profil.html:129 +#: templates/users/profil.html:134 msgid "Edit" msgstr "Modifier" -#: templates/users/profil.html:133 views.py:284 views.py:1081 +#: templates/users/profil.html:138 views.py:286 views.py:1084 msgid "Change the password" msgstr "Changer le mot de passe" -#: templates/users/profil.html:138 +#: templates/users/profil.html:143 msgid "Change the state" msgstr "Changer l'état" -#: templates/users/profil.html:144 views.py:262 +#: templates/users/profil.html:149 views.py:264 msgid "Edit the groups" msgstr "Modifier les groupes" -#: templates/users/profil.html:155 +#: templates/users/profil.html:159 msgid "Mailing" msgstr "Envoi de mails" -#: templates/users/profil.html:159 +#: templates/users/profil.html:163 msgid "Mailing disabled" msgstr "Envoi de mails désactivé" -#: templates/users/profil.html:177 +#: templates/users/profil.html:195 msgid "Telephone number" msgstr "Numéro de téléphone" -#: templates/users/profil.html:187 +#: templates/users/profil.html:210 msgid "Registration date" msgstr "Date d'inscription" -#: templates/users/profil.html:189 +#: templates/users/profil.html:215 msgid "Last login" msgstr "Dernière connexion" -#: templates/users/profil.html:193 +#: templates/users/profil.html:220 msgid "End of membership" msgstr "Fin d'adhésion" -#: templates/users/profil.html:199 +#: templates/users/profil.html:229 msgid "Whitelist" msgstr "Accès gracieux" -#: templates/users/profil.html:203 templates/users/profil.html:235 +#: templates/users/profil.html:233 templates/users/profil.html:274 msgid "None" msgstr "Aucun" -#: templates/users/profil.html:206 +#: templates/users/profil.html:238 msgid "Ban" msgstr "Bannissement" -#: templates/users/profil.html:210 +#: templates/users/profil.html:242 msgid "Not banned" msgstr "Non banni" -#: templates/users/profil.html:212 +#: templates/users/profil.html:247 msgid "State" msgstr "État" -#: templates/users/profil.html:218 -msgid "Archived" -msgstr "Archivé" +#: templates/users/profil.html:255 +msgid "Not yet member" +msgstr "Pas encore adhérent" -#: templates/users/profil.html:220 -#, fuzzy -#| msgid "Not a member" -msgid "Not yet Member" -msgstr "Non adhérent" - -#: templates/users/profil.html:227 +#: templates/users/profil.html:263 #, python-format msgid "Active (until %(end_access)s)" msgstr "Actif (jusqu'au %(end_access)s)" -#: templates/users/profil.html:231 templates/users/sidebar.html:82 +#: templates/users/profil.html:270 templates/users/sidebar.html:82 msgid "Groups of rights" msgstr "Groupes de droits" -#: templates/users/profil.html:239 +#: templates/users/profil.html:279 msgid "Balance" msgstr "Solde" -#: templates/users/profil.html:244 +#: templates/users/profil.html:286 msgid "Refill" msgstr "Recharger" -#: templates/users/profil.html:249 +#: templates/users/profil.html:294 msgid "GPG fingerprint" msgstr "Empreinte GPG" -#: templates/users/profil.html:268 +#: templates/users/profil.html:313 msgid " Manage the club" msgstr " Gérer le club" -#: templates/users/profil.html:275 +#: templates/users/profil.html:320 msgid "Manage the admins and members" msgstr "Gérer les admins et les membres" -#: templates/users/profil.html:279 +#: templates/users/profil.html:324 msgid "Club admins" msgstr "Admins du clubs" -#: templates/users/profil.html:298 +#: templates/users/profil.html:343 msgid "Members" msgstr "Adhérents" -#: templates/users/profil.html:325 +#: templates/users/profil.html:371 msgid "Machines" msgstr "Machines" -#: templates/users/profil.html:333 +#: templates/users/profil.html:379 msgid "Add a machine" msgstr "Ajouter une machine" -#: templates/users/profil.html:349 +#: templates/users/profil.html:396 msgid "Subscriptions" msgstr "Cotisations" -#: templates/users/profil.html:357 -msgid "Add as subscription" +#: templates/users/profil.html:404 +msgid "Add a subscription" msgstr "Ajouter une cotisation" -#: templates/users/profil.html:362 +#: templates/users/profil.html:409 msgid "Edit the balance" msgstr "Modifier le solde" -#: templates/users/profil.html:371 +#: templates/users/profil.html:418 msgid "No invoice" msgstr "Pas de facture" -#: templates/users/profil.html:388 views.py:386 +#: templates/users/profil.html:435 views.py:388 msgid "Add a ban" msgstr "Ajouter un bannissement" -#: templates/users/profil.html:396 +#: templates/users/profil.html:443 msgid "No ban" msgstr "Pas de bannissement" -#: templates/users/profil.html:413 +#: templates/users/profil.html:460 msgid "Grant a whitelist" msgstr "Donner un accès gracieux" -#: templates/users/profil.html:421 +#: templates/users/profil.html:468 msgid "No whitelist" msgstr "Pas d'accès gracieux" -#: templates/users/profil.html:429 +#: templates/users/profil.html:476 msgid " Email settings" msgstr " Paramètres mail" -#: templates/users/profil.html:436 +#: templates/users/profil.html:483 msgid " Edit email settings" msgstr " Modifier les paramètres mail" -#: templates/users/profil.html:445 templates/users/profil.html:471 +#: templates/users/profil.html:492 templates/users/profil.html:518 msgid "Contact email address" msgstr "Adresse mail de contact" -#: templates/users/profil.html:449 +#: templates/users/profil.html:496 msgid "Enable the local email account" msgstr "Activer le compte mail local" -#: templates/users/profil.html:451 +#: templates/users/profil.html:498 msgid "Enable the local email redirection" msgstr "Activer la redirection mail locale" -#: templates/users/profil.html:455 +#: templates/users/profil.html:502 msgid "" "The contact email address is the email address where we send emails to " "contact you. If you would like to use your external email address for that, " @@ -1101,7 +1111,7 @@ msgstr "" "cela, vous pouvez soit désactiver votre adresse mail locale soit activer la " "redirection des mails locaux." -#: templates/users/profil.html:460 +#: templates/users/profil.html:507 msgid " Add an email address" msgstr " Ajouter une adresse mail" @@ -1110,10 +1120,8 @@ msgid "Create a club or organisation" msgstr "Créer un club ou une association" #: templates/users/sidebar.html:39 -#, fuzzy -#| msgid "Create a club" msgid "Create a user" -msgstr "Créer un club" +msgstr "Créer un utilisateur" #: templates/users/sidebar.html:46 msgid "Clubs and organisations" @@ -1125,7 +1133,7 @@ msgstr "Établissements" #: templates/users/sidebar.html:76 msgid "Shells" -msgstr "Interfaces système" +msgstr "Interfaces en ligne de commande" #: templates/users/sidebar.html:88 msgid "Service users" @@ -1144,298 +1152,298 @@ msgid "Device and room register form" msgstr "Enregistrement de votre chambre et machine fixe" #: templates/users/user_autocapture.html:44 -msgid "Connected from :" -msgstr "Connecté depuis" +msgid "Connected from:" +msgstr "Connecté depuis :" #: templates/users/user_autocapture.html:46 -#, fuzzy -msgid "Room " -msgstr "Chambre" +#, python-format +msgid "Room %(room)s" +msgstr "Chambre %(room)s" #: templates/users/user_autocapture.html:47 -msgid "Port " -msgstr "Port " +#, python-format +msgid "Port %(port)s" +msgstr "Port %(port)s" #: templates/users/user_autocapture.html:54 -msgid "Connected with device :" -msgstr "Connecté avec l'appareil suivant :" +msgid "Connected with device:" +msgstr "Connecté avec l'appareil :" #: templates/users/user_autocapture.html:56 -#, fuzzy -#| msgid "Email address" -msgid "Mac address " -msgstr "Adresse mail" +#, python-format +msgid "MAC address %(mac)s" +msgstr "Adresse MAC %(mac)s" -#: views.py:124 +#: views.py:126 #, python-format msgid "The user %s was created, an email to set the password was sent." msgstr "" "L'utilisateur %s a été créé, un mail pour initialiser le mot de passe a été " "envoyé." -#: views.py:136 +#: views.py:138 msgid "Commit" msgstr "Valider" -#: views.py:153 +#: views.py:155 #, python-format msgid "The club %s was created, an email to set the password was sent." msgstr "" "Le club %s a été créé, un mail pour initialiser le mot de passe a été envoyé." -#: views.py:160 +#: views.py:162 msgid "Create a club" msgstr "Créer un club" -#: views.py:178 +#: views.py:180 msgid "The club was edited." msgstr "Le club a été modifié." -#: views.py:187 +#: views.py:189 msgid "Edit the admins and members" msgstr "Modifier les admins et les membres" -#: views.py:215 +#: views.py:217 msgid "The user was edited." msgstr "L'utilisateur a été modifié." -#: views.py:221 +#: views.py:223 msgid "Edit the user" msgstr "Modifier l'utilisateur" -#: views.py:235 +#: views.py:237 msgid "The state was edited." msgstr "L'état a été modifié." -#: views.py:241 +#: views.py:243 msgid "Edit the state" msgstr "Modifier l'état" -#: views.py:256 +#: views.py:258 msgid "The groups were edited." msgstr "Les groupes ont été modifiés." -#: views.py:278 views.py:1078 +#: views.py:280 views.py:1081 msgid "The password was changed." msgstr "Le mot de passe a été changé." -#: views.py:296 +#: views.py:298 #, python-format msgid "%s was removed from the group." msgstr "%s a été retiré du groupe." -#: views.py:306 +#: views.py:308 #, python-format msgid "%s is no longer superuser." msgstr "%s n'est plus superutilisateur." -#: views.py:319 +#: views.py:321 msgid "The service user was created." msgstr "L'utilisateur service a été créé." -#: views.py:323 +#: views.py:325 msgid "Create a service user" msgstr "Créer un utilisateur service" -#: views.py:340 +#: views.py:342 msgid "The service user was edited." msgstr "L'utilisateur service a été modifié." -#: views.py:343 +#: views.py:345 msgid "Edit a service user" msgstr "Modifier un utilisateur service" -#: views.py:355 +#: views.py:357 msgid "The service user was deleted." msgstr "L'utilisateur service a été supprimé." -#: views.py:375 +#: views.py:377 msgid "The ban was added." msgstr "Le bannissement a été ajouté." -#: views.py:383 +#: views.py:385 msgid "Warning: this user already has an active ban." msgstr "Attention : cet utilisateur a déjà un bannissement actif." -#: views.py:402 +#: views.py:404 msgid "The ban was edited." msgstr "Le bannissement a été modifié." -#: views.py:405 +#: views.py:407 msgid "Edit a ban" msgstr "Modifier un bannissement" -#: views.py:417 +#: views.py:419 msgid "The ban was deleted." msgstr "Le bannissement a été supprimé." -#: views.py:444 +#: views.py:446 msgid "The whitelist was added." msgstr "L'accès gracieux a été ajouté." -#: views.py:452 +#: views.py:454 msgid "Warning: this user already has an active whitelist." msgstr "Attention : cet utilisateur a déjà un accès gracieux actif." -#: views.py:455 +#: views.py:457 msgid "Add a whitelist" msgstr "Ajouter un accès gracieux" -#: views.py:475 +#: views.py:477 msgid "The whitelist was edited." msgstr "L'accès gracieux a été ajouté." -#: views.py:478 +#: views.py:480 msgid "Edit a whitelist" msgstr "Modifier un accès gracieux" -#: views.py:490 +#: views.py:492 msgid "The whitelist was deleted." msgstr "L'accès gracieux a été supprimé." -#: views.py:514 +#: views.py:516 msgid "The local email account was created." msgstr "Le compte mail local a été créé." -#: views.py:522 +#: views.py:524 msgid "Add a local email account" msgstr "Ajouter un compte mail local" -#: views.py:539 +#: views.py:541 msgid "The local email account was edited." msgstr "Le compte mail local a été modifié." -#: views.py:547 +#: views.py:549 msgid "Edit a local email account" msgstr "Modifier un compte mail local" -#: views.py:559 +#: views.py:561 msgid "The local email account was deleted." msgstr "Le compte mail local a été supprimé." -#: views.py:583 +#: views.py:585 msgid "The email settings were edited." msgstr "Les paramètres mail ont été modifiés." -#: views.py:592 +#: views.py:594 msgid "Edit the email settings" msgstr "Modifier les paramètres mail" -#: views.py:606 +#: views.py:608 msgid "The school was added." msgstr "L'établissement a été ajouté." -#: views.py:609 +#: views.py:611 msgid "Add a school" msgstr "Ajouter un établissement" -#: views.py:624 +#: views.py:626 msgid "The school was edited." msgstr "L'établissement a été modifié." -#: views.py:627 +#: views.py:629 msgid "Edit a school" msgstr "Modifier un établissement" -#: views.py:646 +#: views.py:648 msgid "The school was deleted." msgstr "L'établissement a été supprimé." -#: views.py:650 +#: views.py:652 #, python-format msgid "" "The school %s is assigned to at least one user, impossible to delete it." msgstr "" -"L'établissement %s est affecté à au moins un utilisateur, impossible de le " +"L'établissement %s est assigné à au moins un utilisateur, impossible de le " "supprimer." -#: views.py:654 views.py:766 +#: views.py:656 views.py:768 msgid "Delete" msgstr "Supprimer" -#: views.py:667 +#: views.py:669 msgid "The shell was added." -msgstr "L'interface système a été ajoutée." +msgstr "L'interface en ligne de commande a été ajoutée." -#: views.py:670 +#: views.py:672 msgid "Add a shell" -msgstr "Ajouter une interface système" +msgstr "Ajouter une interface en ligne de commande" -#: views.py:684 +#: views.py:686 msgid "The shell was edited." -msgstr "L'interface système a été modifiée." +msgstr "L'interface en ligne de commande a été modifiée." -#: views.py:687 +#: views.py:689 msgid "Edit a shell" -msgstr "Modifier une interface système" +msgstr "Modifier une interface en ligne de commande" -#: views.py:699 +#: views.py:701 msgid "The shell was deleted." -msgstr "L'interface système a été supprimée." +msgstr "L'interface en ligne de commande a été supprimée." -#: views.py:716 +#: views.py:718 msgid "The group of rights was added." msgstr "Le groupe de droits a été ajouté." -#: views.py:719 +#: views.py:721 msgid "Add a group of rights" msgstr "Ajouter un groupe de droits" -#: views.py:737 +#: views.py:739 msgid "The group of rights was edited." msgstr "Le groupe de droits a été modifié." -#: views.py:740 +#: views.py:742 msgid "Edit a group of rights" msgstr "Modifier un groupe de droits" -#: views.py:757 +#: views.py:759 msgid "The group of rights was deleted." msgstr "Le groupe de droits a été supprimé." -#: views.py:762 +#: views.py:764 #, python-format msgid "" "The group of rights %s is assigned to at least one user, impossible to " "delete it." msgstr "" -"Le groupe de droits %s est affecté à au moins un utilisateur, impossible de " +"Le groupe de droits %s est assigné à au moins un utilisateur, impossible de " "le supprimer." -#: views.py:790 +#: views.py:792 msgid "Archiving" msgstr "Archivage" -#: views.py:791 +#: views.py:793 #, python-format msgid "%s users were archived." msgstr "%s utilisateurs ont été archivés." -#: views.py:1040 +#: views.py:1043 msgid "The user doesn't exist." msgstr "L'utilisateur n'existe pas." -#: views.py:1042 views.py:1050 +#: views.py:1045 views.py:1053 msgid "Reset" msgstr "Réinitialiser" -#: views.py:1047 +#: views.py:1050 msgid "An email to reset the password was sent." msgstr "Un mail pour réinitialiser le mot de passe a été envoyé." -#: views.py:1064 +#: views.py:1067 msgid "Error: please contact an admin." msgstr "Erreur : veuillez contacter un admin." -#: views.py:1076 +#: views.py:1079 msgid "Password reset" msgstr "Réinitialisation du mot de passe" -#: views.py:1093 -msgid "Incorrect URL, or already registered device" -msgstr "URL incorrect, ou appareil déjà enregistré" +#: views.py:1096 +msgid "Incorrect URL, or already registered device." +msgstr "URL incorrect, ou appareil déjà enregistré." -#: views.py:1101 +#: views.py:1104 msgid "" "Successful registration! Please disconnect and reconnect your Ethernet cable " "to get Internet access." @@ -1443,14 +1451,10 @@ msgstr "" "Enregistrement réussi ! Veuillez débrancher et rebrancher votre câble " "Ethernet pour avoir accès à Internet." -#: views.py:1145 views.py:1169 views.py:1184 +#: views.py:1148 views.py:1172 views.py:1187 msgid "The mailing list doesn't exist." msgstr "La liste de diffusion n'existe pas." -#: widgets.py:35 -msgid "Close" -msgstr "Fermer" - #: widgets.py:36 msgid "Today" msgstr "Aujourd'hui" @@ -1466,24 +1470,3 @@ msgstr "Précédent" #: widgets.py:46 msgid "Wk" msgstr "Wk" - -#~ msgid "" -#~ "New connection from room %s. Is it yours? If that is the case, type OK." -#~ msgstr "" -#~ "Nouvelle connexion depuis la chambre %s. Est-ce la vôtre ? Si c'est le " -#~ "cas, tapez OK." - -#~ msgid "" -#~ "New connection from new device. Register it? Say Yes to get Internet " -#~ "access from it (MAC Address : %s)." -#~ msgstr "" -#~ "Nouvelle connexion depuis un nouvel appareil. L'enregistrer ? Dites Oui " -#~ "pour avoir accès à Internet depuis cet appareil (adresse MAC : %s)." - -#~ msgid "Register device or room" -#~ msgstr "Enregistrer un appareil ou une chambre" - -#~ msgid "By clicking 'Create or edit', the user commits to respect the " -#~ msgstr "" -#~ "En cliquant sur 'Créer ou modifier', l 'utilisateur s'engage à respecter " -#~ "les" diff --git a/users/migrations/0080_auto_20190108_1726.py b/users/migrations/0080_auto_20190108_1726.py new file mode 100644 index 00000000..f3f872bc --- /dev/null +++ b/users/migrations/0080_auto_20190108_1726.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.7 on 2019-01-08 23:26 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0079_auto_20181228_2039'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + name='state', + field=models.IntegerField(choices=[(0, 'Active'), (1, 'Disabled'), (2, 'Archived'), (3, 'Not yet active')], default=3), + ), + ] diff --git a/users/models.py b/users/models.py index a2798207..c1d0789a 100755 --- a/users/models.py +++ b/users/models.py @@ -189,10 +189,10 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser, STATE_ARCHIVE = 2 STATE_NOT_YET_ACTIVE = 3 STATES = ( - (0, 'STATE_ACTIVE'), - (1, 'STATE_DISABLED'), - (2, 'STATE_ARCHIVE'), - (3, 'STATE_NOT_YET_ACTIVE'), + (0, _("Active")), + (1, _("Disabled")), + (2, _("Archived")), + (3, _("Not yet active")), ) surname = models.CharField(max_length=255) @@ -356,7 +356,7 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser, """ Renvoie le nom complet de l'user formaté nom/prénom""" name = self.name if name: - return '%s %s' % (name, self.surname) + return "%s %s" % (name, self.surname) else: return self.surname @@ -510,7 +510,7 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser, )['total'] or 0 somme_credit = Vente.objects.filter( facture__in=Facture.objects.filter(user=self, valid=True), - name="solde" + name='solde' ).aggregate( total=models.Sum( models.F('prix')*models.F('number'), @@ -681,7 +681,7 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser, ), 'expire_in': str( GeneralOption.get_cached_value('req_expire_hrs') - ) + ' heures', + ) + ' hours', } send_mail( 'Changement de mot de passe du %(name)s / Password renewal for ' @@ -723,7 +723,7 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser, self.notif_auto_newmachine(interface_cible) except Exception as error: return False, traceback.format_exc() - return interface_cible, "Ok" + return interface_cible, _("OK") def notif_auto_newmachine(self, interface): """Notification mail lorsque une machine est automatiquement @@ -1024,7 +1024,7 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser, if (EMailAddress.objects .filter(local_part=self.pseudo.lower()).exclude(user_id=self.id) ): - raise ValidationError("This pseudo is already in use.") + raise ValidationError(_("This username is already used.")) if not self.local_email_enabled and not self.email and not (self.state == self.STATE_ARCHIVE): raise ValidationError(_("There is neither a local email address nor an external" " email address for this user.") @@ -1068,7 +1068,7 @@ class Adherent(User): if self.gpg_fingerprint: gpg_fingerprint = self.gpg_fingerprint.replace(' ', '').upper() if not re.match("^[0-9A-F]{40}$", gpg_fingerprint): - raise ValidationError(_("A gpg fingerprint must contain 40 hexadecimal carracters")) + raise ValidationError(_("A GPG fingerprint must contain 40 hexadecimal characters")) self.gpg_fingerprint = gpg_fingerprint @classmethod @@ -1461,7 +1461,7 @@ class Ban(RevMixin, AclMixin, models.Model): 'asso_name': AssoOption.get_cached_value('name'), }) send_mail( - 'Deconnexion disciplinaire', + 'Déconnexion disciplinaire / Disciplinary disconnection', template.render(context), GeneralOption.get_cached_value('email_from'), [self.user.email], diff --git a/users/templates/users/aff_bans.html b/users/templates/users/aff_bans.html index 1284bea8..30256747 100644 --- a/users/templates/users/aff_bans.html +++ b/users/templates/users/aff_bans.html @@ -27,19 +27,19 @@ with this program; if not, write to the Free Software Foundation, Inc., {% load i18n %} {% if ban_list.paginator %} -{% include "pagination.html" with list=ban_list %} + {% include 'pagination.html' with list=ban_list %} {% endif %} {% trans "User" as tr_user %} - + {% trans "Start date" as tr_start %} - + {% trans "End date" as tr_end %} - + @@ -49,7 +49,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% else %} {% endif %} - + @@ -67,6 +67,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
      {% include "buttons/sort.html" with prefix='ban' col="user" text=tr_user %}{% include 'buttons/sort.html' with prefix='ban' col="user" text=tr_user %} {% trans "Reason" %}{% include "buttons/sort.html" with prefix='ban' col="start" text=tr_start %}{% include 'buttons/sort.html' with prefix='ban' col="start" text=tr_start %}{% include "buttons/sort.html" with prefix='ban' col="end" text=tr_end %}{% include 'buttons/sort.html' with prefix='ban' col="end" text=tr_end %}
      {{ ban.user }} {{ ban.user }} {{ ban.raison }} {{ ban.date_start }} {{ ban.date_end }}
      {% if ban_list.paginator %} -{% include "pagination.html" with list=ban_list %} + {% include 'pagination.html' with list=ban_list %} {% endif %} diff --git a/users/templates/users/aff_clubs.html b/users/templates/users/aff_clubs.html index 1903a445..080dc031 100644 --- a/users/templates/users/aff_clubs.html +++ b/users/templates/users/aff_clubs.html @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% load i18n %} {% if clubs_list.paginator %} -{% include "pagination.html" with list=clubs_list %} + {% include 'pagination.html' with list=clubs_list %} {% endif %} {% load acl %} @@ -34,11 +34,11 @@ with this program; if not, write to the Free Software Foundation, Inc., {% trans "Name" as tr_name %} - {% include "buttons/sort.html" with prefix='club' col="surname" text=tr_name %} + {% include 'buttons/sort.html' with prefix='club' col="surname" text=tr_name %} {% trans "Username" as tr_username %} - {% include "buttons/sort.html" with prefix='club' col="pseudo" text=tr_username %} + {% include 'buttons/sort.html' with prefix='club' col="pseudo" text=tr_username %} {% trans "Room" as tr_room %} - {% include "buttons/sort.html" with prefix='club' col="room" text=tr_room %} + {% include 'buttons/sort.html' with prefix='club' col="room" text=tr_room %} {% trans "End of subscription on" %} {% trans "Internet access" %} {% trans "Profile" %} @@ -58,7 +58,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% endif %} - + @@ -68,6 +68,6 @@ with this program; if not, write to the Free Software Foundation, Inc., {% if clubs_list.paginator %} -{% include "pagination.html" with list=clubs_list %} + {% include 'pagination.html' with list=clubs_list %} {% endif %} diff --git a/users/templates/users/aff_emailaddress.html b/users/templates/users/aff_emailaddress.html index 25048d6c..f5d5dd1d 100644 --- a/users/templates/users/aff_emailaddress.html +++ b/users/templates/users/aff_emailaddress.html @@ -27,7 +27,7 @@ with this program; if not, write to the Free Software Foundation, Inc., {% load logs_extra %} {% if emailaddress_list.paginator %} -{% include "pagination.html" with list=emailaddress_list %} + {% include 'pagination.html' with list=emailaddress_list %} {% endif %} @@ -53,6 +53,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
      {% if emailaddress_list.paginator %} -{% include "pagination.html" with list=emailaddress_list %} + {% include 'pagination.html' with list=emailaddress_list %} {% endif %} diff --git a/users/templates/users/aff_listright.html b/users/templates/users/aff_listright.html index cf78e295..8a069529 100644 --- a/users/templates/users/aff_listright.html +++ b/users/templates/users/aff_listright.html @@ -30,7 +30,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,

      @@ -41,16 +41,16 @@ with this program; if not, write to the Free Software Foundation, Inc.,

      -

      {% trans "Total: All permissions" %}

      +

      {% trans "Total: all permissions" %}

      -