else:
return self.cleaned_data["source"]
except Exception:
- error_text = 'Invalid network address format'
+ error_text = _('Invalid network address format')
if private_error:
- error_text = 'Private addresses not allowed'
+ error_text = _('Private addresses not allowed')
if protected_error:
- error_text = 'You have no authority on this subnet'
+ error_text = _('You have no authority on this subnet')
raise forms.ValidationError(error_text)
def clean_destination(self):
settings.NOTIFY_ADMIN_MAILS, fail_silently=True)
raise Exception
if address.prefixlen < settings.PREFIX_LENGTH:
- error = "Currently no prefix lengths < %s are allowed" %settings.PREFIX_LENGTH
+ error = _("Currently no prefix lengths < %s are allowed") %settings.PREFIX_LENGTH
raise Exception
return self.cleaned_data["destination"]
except Exception:
- error_text = 'Invalid network address format'
+ error_text = _('Invalid network address format')
if error:
error_text = error
if protected_error:
- error_text = 'You have no authority on this subnet'
+ error_text = _('You have no authority on this subnet')
raise forms.ValidationError(error_text)
def clean_expires(self):
def clean(self):
if self.errors:
- raise forms.ValidationError('Errors in form. Please review and fix them')
+ raise forms.ValidationError(_('Errors in form. Please review and fix them'))
name = self.cleaned_data.get('name', None)
source = self.cleaned_data.get('source', None)
sourceports = self.cleaned_data.get('sourceport', None)
if IPNetwork(destination) in net:
mynetwork = True
if not mynetwork:
- raise forms.ValidationError('Destination address/network should belong to your administrative address space. Check My Profile to review your networks')
+ raise forms.ValidationError(_('Destination address/network should belong to your administrative address space. Check My Profile to review your networks'))
if (sourceports and ports):
- raise forms.ValidationError('Cannot create rule for source ports and ports at the same time. Select either ports or source ports')
+ raise forms.ValidationError(_('Cannot create rule for source ports and ports at the same time. Select either ports or source ports'))
if (destinationports and ports):
- raise forms.ValidationError('Cannot create rule for destination ports and ports at the same time. Select either ports or destination ports')
+ raise forms.ValidationError(_('Cannot create rule for destination ports and ports at the same time. Select either ports or destination ports'))
if sourceports and not source:
- raise forms.ValidationError('Once source port is matched, source has to be filled as well. Either deselect source port or fill source address')
+ raise forms.ValidationError(_('Once source port is matched, source has to be filled as well. Either deselect source port or fill source address'))
if destinationports and not destination:
- raise forms.ValidationError('Once destination port is matched, destination has to be filled as well. Either deselect destination port or fill destination address')
+ raise forms.ValidationError(_('Once destination port is matched, destination has to be filled as well. Either deselect destination port or fill destination address'))
if not (source or sourceports or ports or destination or destinationports):
- raise forms.ValidationError('Fill at least a Rule Match Condition')
+ raise forms.ValidationError(_('Fill at least a Rule Match Condition'))
if not user.is_superuser and then[0].action not in settings.UI_USER_THEN_ACTIONS:
- raise forms.ValidationError('This action "%s" is not permitted' %(then[0].action))
+ raise forms.ValidationError(_('This action "%s" is not permitted') %(then[0].action))
existing_routes = Route.objects.exclude(status='EXPIRED').exclude(status='ERROR').exclude(status='ADMININACTIVE')
existing_routes = existing_routes.filter(applier__userprofile__peer=peer)
if source:
try:
assert(int(action_value))
if int(action_value) < 50:
- raise forms.ValidationError('Rate-limiting cannot be < 50kbps')
+ raise forms.ValidationError(_('Rate-limiting cannot be < 50kbps'))
return "%s" %self.cleaned_data["action_value"]
except:
- raise forms.ValidationError('Rate-limiting should be an integer < 50')
+ raise forms.ValidationError(_('Rate-limiting should be an integer < 50'))
else:
- raise forms.ValidationError('Cannot be empty')
+ raise forms.ValidationError(_('Cannot be empty'))
def clean_action(self):
action = self.cleaned_data['action']
if action != 'rate-limit':
- raise forms.ValidationError('Cannot select something other than rate-limit')
+ raise forms.ValidationError(_('Cannot select something other than rate-limit'))
else:
return self.cleaned_data["action"]
assert(int(port))
return "%s" %self.cleaned_data["port"]
except:
- raise forms.ValidationError('Port should be an integer')
+ raise forms.ValidationError(_('Port should be an integer'))
else:
- raise forms.ValidationError('Cannot be empty')
+ raise forms.ValidationError(_('Cannot be empty'))
def value_list_to_list(valuelist):
vl = []
from django.core.context_processors import request
from django.template.context import RequestContext
from django.template.loader import get_template, render_to_string
+from django.utils.translation import ugettext as _
from django.core.urlresolvers import reverse
from django.contrib import messages
from flowspy.accounts.models import *
applier_peer_networks = request.user.get_profile().peer.networks.all()
if not applier_peer_networks:
messages.add_message(request, messages.WARNING,
- "Insufficient rights on administrative networks. Cannot add rule. Contact your administrator")
+ _("Insufficient rights on administrative networks. Cannot add rule. Contact your administrator"))
return HttpResponseRedirect(reverse("group-routes"))
if request.method == "GET":
form = RouteForm()
route_edit_applier_peer = route_edit.applier.get_profile().peer
if applier_peer != route_edit_applier_peer:
messages.add_message(request, messages.WARNING,
- "Insufficient rights to edit rule %s" %(route_slug))
+ _("Insufficient rights to edit rule %s") %(route_slug))
return HttpResponseRedirect(reverse("group-routes"))
# if route_edit.status == "ADMININACTIVE" :
# messages.add_message(request, messages.WARNING,
# return HttpResponseRedirect(reverse("group-routes"))
if route_edit.status == "PENDING" :
messages.add_message(request, messages.WARNING,
- "Cannot edit a pending rule: %s." %(route_slug))
+ _("Cannot edit a pending rule: %s.") %(route_slug))
return HttpResponseRedirect(reverse("group-routes"))
route_original = deepcopy(route_edit)
if request.POST:
if not mail:
error_mail = True
if error_username:
- error = "Your idP should release the HTTP_EPPN attribute towards this service<br>"
+ error = _("Your idP should release the HTTP_EPPN attribute towards this service<br>")
if error_orgname:
- error = error + "Your idP should release the HTTP_SHIB_HOMEORGANIZATION attribute towards this service<br>"
+ error = error + _("Your idP should release the HTTP_SHIB_HOMEORGANIZATION attribute towards this service<br>")
if error_entitlement:
- error = error + "Your idP should release an appropriate HTTP_SHIB_EP_ENTITLEMENT attribute towards this service<br>"
+ error = error + _("Your idP should release an appropriate HTTP_SHIB_EP_ENTITLEMENT attribute towards this service<br>")
if error_mail:
- error = error + "Your idP should release the HTTP_SHIB_INETORGPERSON_MAIL attribute towards this service"
+ error = error + _("Your idP should release the HTTP_SHIB_INETORGPERSON_MAIL attribute towards this service")
if error_username or error_orgname or error_entitlement or error_mail:
return render_to_response('error.html', {'error': error, "missing_attributes": True},
context_instance=RequestContext(request))
peer = Peer.objects.get(domain_name=organization)
up = UserProfile.objects.get_or_create(user=user,peer=peer)
except:
- error = "Your organization's domain name does not match our peers' domain names<br>Please contact Helpdesk to resolve this issue"
+ error = _("Your organization's domain name does not match our peers' domain names<br>Please contact Helpdesk to resolve this issue")
return render_to_response('error.html', {'error': error})
if not user_exists:
user_activation_notify(user)
login(request, user)
return HttpResponseRedirect(reverse("group-routes"))
else:
- error = "User account <strong>%s</strong> is pending activation. Administrators have been notified and will activate this account within the next days. <br>If this account has remained inactive for a long time contact your technical coordinator or GRNET Helpdesk" %user.username
+ error = _("User account <strong>%s</strong> is pending activation. Administrators have been notified and will activate this account within the next days. <br>If this account has remained inactive for a long time contact your technical coordinator or GRNET Helpdesk") %user.username
return render_to_response('error.html', {'error': error, 'inactive': True},
context_instance=RequestContext(request))
else:
- error = "Something went wrong during user authentication. Contact your administrator"
+ error = _("Something went wrong during user authentication. Contact your administrator")
return render_to_response('error.html', {'error': error,},
context_instance=RequestContext(request))
except Exception:
- error = "Invalid login procedure"
+ error = _("Invalid login procedure")
return render_to_response('error.html', {'error': error,},
context_instance=RequestContext(request))
# Return an 'invalid login' error message.
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-02-23 11:58+0200\n"
+"POT-Creation-Date: 2012-02-23 16:03+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Leonidas Poulopoulos <leopoul@grnet.gr>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
#: accounts/views.py:22
#, python-format
msgid "%sUser account activated"
+msgstr "%s Ενεργοποιήθηκε ο λογαριασμός του χρήστη"
+
+#: flowspec/forms.py:52 flowspec/forms.py:81
+msgid "Invalid network address format"
+msgstr "Λανθασμένη μορφή διεύθυνσης δικυου στο πεδίο Πηγή"
+
+#: flowspec/forms.py:54
+msgid "Private addresses not allowed"
+msgstr "Δεν επιτρέπονται οι private διευθύνσεις"
+
+#: flowspec/forms.py:56 flowspec/forms.py:85
+msgid "You have no authority on this subnet"
+msgstr "Δεν έχετε δικαιώματα σε αυτό το υποδίκτυο"
+
+#: flowspec/forms.py:77
+#, python-format
+msgid "Currently no prefix lengths < %s are allowed"
+msgstr "Προς το παρόν δεν επιτρέπονται υποδίκτυα <%s"
+
+#: flowspec/forms.py:99
+msgid "Errors in form. Please review and fix them"
+msgstr "Σφάλματα στη φόρμα. Παρακαλώ διορθώστε τα"
+
+#: flowspec/forms.py:119
+msgid ""
+"Destination address/network should belong to your administrative address "
+"space. Check My Profile to review your networks"
+msgstr ""
+"Η διεύθυνση προορισμού πρέπει να ανήκει στα διαχειριστικά σας δίκτυα. "
+"Επισκεφθείτε 'Το Προφίλ μου' για την προβολή των διαχειριστικών σας δικτύων"
+
+#: flowspec/forms.py:121
+msgid ""
+"Cannot create rule for source ports and ports at the same time. Select "
+"either ports or source ports"
+msgstr ""
+
+#: flowspec/forms.py:123
+msgid ""
+"Cannot create rule for destination ports and ports at the same time. Select "
+"either ports or destination ports"
+msgstr ""
+
+#: flowspec/forms.py:125
+msgid ""
+"Once source port is matched, source has to be filled as well. Either "
+"deselect source port or fill source address"
+msgstr ""
+
+#: flowspec/forms.py:127
+msgid ""
+"Once destination port is matched, destination has to be filled as well. "
+"Either deselect destination port or fill destination address"
+msgstr ""
+
+#: flowspec/forms.py:129
+msgid "Fill at least a Rule Match Condition"
+msgstr "Συμπληρώστε τουλάχιστον έναν όρο ταύτισης"
+
+#: flowspec/forms.py:131
+#, python-format
+msgid "This action \"%s\" is not permitted"
+msgstr "Η ενέργεια %s δεν επιτρέπεται"
+
+#: flowspec/forms.py:183
+msgid "Rate-limiting cannot be < 50kbps"
+msgstr ""
+
+#: flowspec/forms.py:186
+msgid "Rate-limiting should be an integer < 50"
msgstr ""
+#: flowspec/forms.py:188 flowspec/forms.py:212
+msgid "Cannot be empty"
+msgstr "Το πεδίο δεν μπορεί να είναι κενό"
+
+#: flowspec/forms.py:193
+msgid "Cannot select something other than rate-limit"
+msgstr ""
+
+#: flowspec/forms.py:210
+msgid "Port should be an integer"
+msgstr "Η port θα πρέπει να είναι ένας ακέραιος αριθμός"
+
#: flowspec/models.py:107 templates/review.html:49
-#: templates/review.html.py:107 templates/user_routes.html:257
+#: templates/review.html.py:107 templates/user_routes.html:271
msgid "Name"
msgstr "Όνομα"
#: flowspec/models.py:110
msgid "Source Port"
-msgstr "Πόρτα Πηγής"
+msgstr "Port Πηγής"
#: flowspec/models.py:111
msgid "Destination Address"
#: flowspec/models.py:112
msgid "Destination Port"
-msgstr "Πόρτα Προορισμού"
+msgstr "Port Προορισμού"
-#: flowspec/models.py:113
+#: flowspec/models.py:113 templates/add_port.html:14 templates/apply.html:308
+#: templates/apply.html.py:327 templates/apply.html:346
msgid "Port"
-msgstr "Πόρτα"
+msgstr "Port"
#: flowspec/models.py:119
msgid "Protocol"
msgstr "Πρωτόκολλο"
-#: flowspec/models.py:121 templates/user_routes.html:259
+#: flowspec/models.py:121 templates/user_routes.html:273
msgid "Then"
msgstr "Ενέργειες"
-#: flowspec/models.py:124 templates/user_routes.html:260
+#: flowspec/models.py:124 templates/user_routes.html:274
msgid "Status"
msgstr "Κατάσταση"
-#: flowspec/models.py:127 templates/user_routes.html:263
+#: flowspec/models.py:127 templates/user_routes.html:277
msgid "Expires"
msgstr "Λήγει"
-#: flowspec/models.py:128 templates/user_routes.html:264
+#: flowspec/models.py:128 templates/user_routes.html:278
msgid "Response"
-msgstr "Απόκριση Συσκευής"
+msgstr "Απόκριση Δικτύου"
#: flowspec/models.py:129 templates/review.html:57
#: templates/review.html.py:115
msgid "Invalid network address format at Source Field"
msgstr "Λανθασμένη μορφή διεύθυνσης δικυου στο πεδίο Πηγή"
+#: flowspec/views.py:83
+msgid ""
+"Insufficient rights on administrative networks. Cannot add rule. Contact "
+"your administrator"
+msgstr ""
+
+#: flowspec/views.py:128
+#, python-format
+msgid "Insufficient rights to edit rule %s"
+msgstr "Μη επαρκή δικαιώματα για την επεξεργασία του φίλτρου %s"
+
+#: flowspec/views.py:140
+#, python-format
+msgid "Cannot edit a pending rule: %s."
+msgstr "Δεν είναι δυνατή η επεξεργασία ενός φίλτρου (%s) σε κατάσταση pending "
+
+#: flowspec/views.py:242
+msgid ""
+"Your idP should release the HTTP_EPPN attribute towards this service<br>"
+msgstr ""
+"Ο idP σας θα πρέπει να παρέχει την HTTP_EPPN παράμετερο στην υπηρεσία<br>"
+
+#: flowspec/views.py:244
+msgid ""
+"Your idP should release the HTTP_SHIB_HOMEORGANIZATION attribute towards "
+"this service<br>"
+msgstr ""
+"Ο idP σας θα πρέπει να παρέχει την HTTP_SHIB_HOMEORGANIZATION παράμετερο "
+"στην υπηρεσία<br>"
+
+#: flowspec/views.py:246
+msgid ""
+"Your idP should release an appropriate HTTP_SHIB_EP_ENTITLEMENT attribute "
+"towards this service<br>"
+msgstr ""
+"Ο idP σας θα πρέπει να παρέχει την HTTP_SHIB_EP_ENTITLEMENT παράμετερο στην "
+"υπηρεσία<br>"
+
+#: flowspec/views.py:248
+msgid ""
+"Your idP should release the HTTP_SHIB_INETORGPERSON_MAIL attribute towards "
+"this service"
+msgstr ""
+"Ο idP σας θα πρέπει να παρέχει την HTTP_SHIB_INETORGPERSON_MAIL παράμετερο "
+"στην υπηρεσία<br>"
+
+#: flowspec/views.py:263
+msgid ""
+"Your organization's domain name does not match our peers' domain "
+"names<br>Please contact Helpdesk to resolve this issue"
+msgstr ""
+"Το domain name του οργανισμού σας δε βρέθηκε στ βάση φορέων μας.<br>Παρακαλώ "
+"επικοινωνήστε με το Helpdesk για τη διευθέτηση του προβλήματος"
+
+#: flowspec/views.py:271
+#, python-format
+msgid ""
+"User account <strong>%s</strong> is pending activation. Administrators have "
+"been notified and will activate this account within the next days. <br>If "
+"this account has remained inactive for a long time contact your technical "
+"coordinator or GRNET Helpdesk"
+msgstr ""
+
+#: flowspec/views.py:275
+msgid ""
+"Something went wrong during user authentication. Contact your administrator"
+msgstr ""
+"Παρουσιάστηκε ένα σφάλμα κατά την είσοδο του χρήστη. Επικοινωνήστε με το "
+"διαχειριστή σας"
+
+#: flowspec/views.py:279
+msgid "Invalid login procedure"
+msgstr "Εσφαλμένη διαδικασία εισόδου"
+
#: monkey_patch/forms.py:11
#, python-format
msgid ""
msgid "Create rule"
msgstr "Δημιουργία φίλτρου"
+#: templates/apply.html:35 templates/apply.html.py:67
+msgid "Add"
+msgstr "Προσθήκη"
+
+#: templates/apply.html:55 templates/apply.html.py:88
+#: templates/user_routes.html:32
+msgid "Cancel"
+msgstr "Άκυρο"
+
#: templates/apply.html:229
msgid "Apply for a new rule"
msgstr "Αίτηση δημιουργίας νέου φίλτρου"
#: templates/apply.html:261
msgid "Rule Match Conditions"
-msgstr "Όροι ταύτισης"
+msgstr "Όροι ταύτισης φίλτρου"
+
+#: templates/apply.html:297
+msgid "Advanced Settings (Ports)"
+msgstr "Προηγμένες Ρυθμίσεις (Ports)"
+
+#: templates/apply.html:299
+msgid ""
+"Select source/destination port(s), or select common port(s) for both source/"
+"destination"
+msgstr ""
#: templates/apply.html:364
msgid "Rule Actions"
msgid "Apply"
msgstr "Εφαρμογή"
+#: templates/apply.html:415
+msgid "Add new port"
+msgstr ""
+
#: templates/base.html:40 templates/error.html:48 templates/welcome.html:7
msgid "Welcome"
msgstr "Καλωσήρθατε"
msgid "Shibboleth Login"
msgstr "Είσοδος με Shibboleth"
-#: templates/base.html:68 templates/user_routes.html:216
-#: templates/user_routes.html.py:220
+#: templates/base.html:68 templates/user_routes.html:230
+#: templates/user_routes.html.py:234
msgid "My rules"
msgstr "Τα φίλτρα μου"
msgid "My routes"
msgstr "Τα φίλτρα μου"
+#: templates/profile.html:9
+msgid "My data"
+msgstr "Τα στοιχεία μου"
+
+#: templates/profile.html:10
+msgid "First name"
+msgstr "Όνομα"
+
+#: templates/profile.html:11
+msgid "Last name"
+msgstr "Επώνυμο"
+
+#: templates/profile.html:12 templates/review.html:50
+#: templates/review.html.py:108
+msgid "Email"
+msgstr ""
+
+#: templates/profile.html:13
+msgid "Organization"
+msgstr "Φορέας"
+
+#: templates/profile.html:14
+msgid "Admin Networks"
+msgstr "Δίκτυα Διαχείρισης"
+
+#: templates/profile.html:18
+msgid ""
+"Ooops! Seems you have no networks associated with your peer. Contact "
+"Helpdesk to resolve this issue."
+msgstr ""
+
#: templates/review.html:3 templates/review.html.py:27
msgid "Review application"
msgstr ""
msgid "Administrative contact"
msgstr ""
-#: templates/review.html:50 templates/review.html.py:108
-msgid "Email"
-msgstr ""
-
#: templates/review.html:51 templates/review.html.py:109
msgid "Phone"
msgstr ""
msgid "Add key"
msgstr ""
-#: templates/user_routes.html:96
+#: templates/user_routes.html:19 templates/user_routes.html.py:311
+msgid "Suspend"
+msgstr "Κατάργηση"
+
+#: templates/user_routes.html:97
msgid "Display"
msgstr "Προβολή"
-#: templates/user_routes.html:96
+#: templates/user_routes.html:97
msgid "All"
-msgstr "Όλα"
+msgstr "όλων των"
+
+#: templates/user_routes.html:97
+msgid "rules"
+msgstr "φίλτρων"
+
+#: templates/user_routes.html:99
+msgid "No records to display"
+msgstr "Δεν βρέθηκαν εγγραφές"
+
+#: templates/user_routes.html:101
+msgid "Showing 0 to 0 of 0 entries"
+msgstr "Δείχνοντας 0 εως 0 από 0 εγγραφές"
+
+#: templates/user_routes.html:104
+msgid "Search:"
+msgstr "Αναζήτηση:"
+
+#: templates/user_routes.html:107
+msgid "First"
+msgstr "Πρώτη"
+
+#: templates/user_routes.html:108
+msgid "Previous"
+msgstr "Προηγούμενη"
+
+#: templates/user_routes.html:109
+msgid "Next"
+msgstr "Επόμενη"
+
+#: templates/user_routes.html:110
+msgid "Last"
+msgstr "Τελευταία"
+
+#: templates/user_routes.html:237 templates/user_routes.html.py:336
+msgid "Console"
+msgstr "Κονσόλα"
+
+#: templates/user_routes.html:237
+msgid "Add Rule"
+msgstr "Δημιουργία φίλτρου"
-#: templates/user_routes.html:258
+#: templates/user_routes.html:272
msgid "Match"
msgstr "Όροι"
-#: templates/user_routes.html:261
+#: templates/user_routes.html:275
msgid "Details"
msgstr "Λεπτομέρειες"
-#: templates/user_routes.html:262
+#: templates/user_routes.html:276
msgid "Applier"
msgstr "Χρήστης"
-#: templates/user_routes.html:265
+#: templates/user_routes.html:279
msgid "Actions"
msgstr "Ενέργειες"
+#: templates/user_routes.html:307
+msgid "Rule expired"
+msgstr "Λήξη Φίλτρου"
+
+#: templates/user_routes.html:307
+msgid "Suspended by administrator"
+msgstr "Απενεργοποιήθηκε από το διαχειριστή"
+
+#: templates/user_routes.html:307
+msgid "Suspended by user"
+msgstr "Απενεργοποιήθηκε από το χρήστη"
+
+#: templates/user_routes.html:310
+msgid "Edit"
+msgstr "Επεξεργασία"
+
+#: templates/user_routes.html:315
+msgid "Reactivate"
+msgstr ""
+
+#: templates/user_routes.html:318
+msgid "ReSync"
+msgstr ""
+
+#: templates/user_routes.html:332
+msgid "You are about to suspend rule"
+msgstr "Πρόκειται να απενεργοποιήσετε το φίλτρο"
+
+#: templates/user_routes.html:333
+msgid ""
+"Suspending the rule will automatically remove the configuration from the "
+"network and mark this rule as inactive."
+msgstr ""
+"Η απενεργοποίηση του φίλτρου θα προκαλέσει την αυτόματη αφαίρεση της "
+"συγκρότησης από το δίκτυο."
+
+#: templates/user_routes.html:334
+msgid "Are you sure you want to proceed?"
+msgstr "Είστε βέβαιοι ότι επιθυμείτε να συνεχίσετε;"
+
#: templates/welcome.html:3
msgid "Login"
msgstr "Είσοδος"
+{% load i18n %}
<script type="text/javascript">
$(document).ready(function(){
$("#add_port_form").unbind('submit');
<form id="add_port_form" method="POST">
{% csrf_token %}
<table>
-<tr><th>Port</th><td>{{ form.port }}<span class="error" id='rl_error'>{{ form.port.errors|join:", " }}</span></td></tr>
+<tr><th>{% trans "Port" %}</th><td>{{ form.port }}<span class="error" id='rl_error'>{{ form.port.errors|join:", " }}</span></td></tr>
</table>
</form>
modal: true,
autoOpen: false,
buttons: {
- 'Add': function() {
+ '{% trans "Add" %}': function() {
console.log($("#add_rl_form").serialize());
$.ajax({
url:"{% url add-rate-limit %}",
}
});
},
- Cancel: function() {
+ '{% trans "Cancel" %}': function() {
$('#then_diag').dialog('close');
}
}
modal: true,
autoOpen: false,
buttons: {
- 'Add': function() {
+ '{% trans "Add" %}': function() {
$.ajax({
url:"{% url add-port %}",
data:$("#add_port_form").serialize(),
}
});
},
- Cancel: function() {
+ '{% trans "Cancel" %}': function() {
$('#port_diag').dialog('close');
}
}
{% endif %}
</div>
<div id='portsacc'>
- <h3 style="padding: 0.5em 0.5em 0.5em 0.7em;">Advanced Settings (Ports)</h3>
+ <h3 style="padding: 0.5em 0.5em 0.5em 0.7em;">{% trans "Advanced Settings (Ports)" %}</h3>
<div class='accord_wrapper' style="height: 452px !important;">
- Select source/destination port(s), or select common port(s) for both source/destination
+ {% trans "Select source/destination port(s), or select common port(s) for both source/destination" %}
<table>
<tr>
<th>
<td>
{{ form.sourceport }}
<button class="new_port">
- Port
+ {% trans "Port" %}
</button>
<span class="error">{{ form.sourceport.errors|join:", " }}</span>
</td>
<td>
{{ form.destinationport }}
<button class="new_port">
- Port
+ {% trans "Port" %}
</button>
<span class="error">{{ form.destinationport.errors|join:", " }}</span>
</td>
<td>
{{ form.port }}
<button class="new_port">
- Port
+ {% trans "Port" %}
</button>
<span class="error">{{ form.port.errors|join:", " }}</span>
</td>
</div>
<div id="then_diag" title="Add new rate-limit value">
</div>
-<div id="port_diag" title="Add new port">
+<div id="port_diag" title="{% trans "Add new port" %}">
</div>
{% endblock %}
<h3>{% trans "My profile" %}</h3>
<div id="profile">
- My data:<br>
- <strong>First name:</strong> {{user.first_name}} <br>
- <strong>Last name:</strong> {{user.last_name}} <br>
- <strong>Email:</strong> {{user.email}}<br>
- <strong>Organization:</strong> {{peer}} <br>
- <strong>Admin Networks:</strong> <br>
+ {% trans "My data" %}:<br>
+ <strong>{% trans "First name" %}:</strong> {{user.first_name}} <br>
+ <strong>{% trans "Last name" %}:</strong> {{user.last_name}} <br>
+ <strong>{% trans "Email" %}:</strong> {{user.email}}<br>
+ <strong>{% trans "Organization" %}:</strong> {{peer}} <br>
+ <strong>{% trans "Admin Networks" %}:</strong> <br>
{% for network in peer.networks.all %}
{{network}}<br>
{% empty %}
- <span style="color:red">Ooops! Seems you have no networks associated with your peer. Contact Helpdesk to resolve this issue.</span>
+ <span style="color:red">{% blocktrans %}Ooops! Seems you have no networks associated with your peer. Contact Helpdesk to resolve this issue.{% endblocktrans %}</span>
{% endfor %}
</div>
modal: true,
autoOpen: false,
buttons: {
- 'Suspend': function(){
+ '{% trans "Suspend" %}': function(){
route = $('#route_to_delete').text();
route_url_id = '#del_route_' + route;
url = $(route_url_id).attr('href');
}
});
},
- Cancel: function(){
+ '{% trans "Cancel" %}': function(){
$('#dialog').dialog('close');
},
"bSortable": false
}],
"aaSorting": [[0, 'desc']],
- "oLanguage": {
- "sLengthMenu": '{% trans "Display" %} <select><option value="25">25</option><option value="50">50</option><option value="-1">{% trans "All" %}</option></select> rules'
- },
"iDisplayLength": 25,
+ "oLanguage": {
+ "sLengthMenu": '{% trans "Display" %} <select><option value="25">25</option><option value="50">50</option><option value="-1">{% trans "All" %}</option></select> {% trans "rules" %}',
+ "sProcessing": "Processing...",
+ "sZeroRecords": '{% trans "No records to display" %}',
+ "sInfo": "Showing _START_ to _END_ of _TOTAL_ entries",
+ "sInfoEmpty": "{% trans "Showing 0 to 0 of 0 entries" %}",
+ "sInfoFiltered": "(filtered from _MAX_ total entries)",
+ "sInfoPostFix": "",
+ "sSearch": '{% trans "Search:" %}',
+ "sUrl": "",
+ "oPaginate": {
+ "sFirst": '{% trans "First" %}',
+ "sPrevious": '{% trans "Previous" %}',
+ "sNext": '{% trans "Next" %}',
+ "sLast": '{% trans "Last" %}'
+ }
+ }
});
oTable.fnDraw();
<h3 style="margin-top: 0px;">{% trans "My rules" %}</h3>
</div>
<div class='button_place' style="float:right">
- <button id="consolebutton">Console</button> <a href="{% url add-route %}" id="routebutton">Add Rule</a>
+ <button id="consolebutton">{% trans "Console" %}</button> <a href="{% url add-route %}" id="routebutton">{% trans "Add Rule" %}</a>
</div>
<br><br>
style="border-bottom:2px dashed red;"
title="Expires {% ifequal route.days_to_expire '0' %}today{% else%}in {{route.days_to_expire}} day{{ route.days_to_expire|pluralize }}{% endifequal %}"
{% endif %}{% endif %}>{{ route.expires }}</span></td>
- <td style="text-align: center;">{% if route.status == 'EXPIRED' %}Rule expired{% else %}{% if route.status == 'ADMININACTIVE' %}Suspended by administrator{% else %}{% if route.status == 'INACTIVE' %}Suspended by user{% else %}{{ route.response }}{% endif %}{% endif %}{% endif %}</td>
+ <td style="text-align: center;">{% if route.status == 'EXPIRED' %}{% trans "Rule expired" %}{% else %}{% if route.status == 'ADMININACTIVE' %}{% trans "Suspended by administrator" %}{% else %}{% if route.status == 'INACTIVE' %}{% trans "Suspended by user" %}{% else %}{{ route.response }}{% endif %}{% endif %}{% endif %}</td>
<td style="text-align: center; width:180px;">
{% ifequal route.status 'ACTIVE' %}
- <a href="{% url edit-route route.name %}" class="edit_button" id="edit_button_{{route.pk}}">Edit</a>
- <button class="del_button" id="{{route.name}}" onclick="javascript:delete_route(this.id)">Suspend</button>
+ <a href="{% url edit-route route.name %}" class="edit_button" id="edit_button_{{route.pk}}">{% trans "Edit" %}</a>
+ <button class="del_button" id="{{route.name}}" onclick="javascript:delete_route(this.id)">{% trans "Suspend" %}</button>
<a href="{% url delete-route route.name %}" style="display:none" id="del_route_{{route.name}}"></a>
{% else %}
{% if route.status == 'EXPIRED' or route.status == 'ADMININACTIVE' or route.status == 'INACTIVE' %}
- <a href="{% url edit-route route.name %}" class="edit_button" id="edit_button_{{route.pk}}">Reactivate</a>
+ <a href="{% url edit-route route.name %}" class="edit_button" id="edit_button_{{route.pk}}">{% trans "Reactivate" %}</a>
{% else %}
{% ifequal route.status 'OUTOFSYNC' %}
- <a href="{% url edit-route route.name %}" class="edit_button" id="edit_button_{{route.pk}}">ReSync</a>
+ <a href="{% url edit-route route.name %}" class="edit_button" id="edit_button_{{route.pk}}">{% trans "ReSync" %}</a>
{% else %}
-
{% endifequal %}
</table>
<div id="dialog" title="Suspend Rule">
- <p>You are about to suspend rule <strong><span id="route_to_delete"></span></strong></p>
- <p>Suspending the rule will automatically remove the configuration from the network and mark this rule as inactive.</p>
- <p>Are you sure you want to proceed?</p>
+ <p>{% blocktrans %}You are about to suspend rule{% endblocktrans %} <strong><span id="route_to_delete"></span></strong></p>
+ <p>{% blocktrans %}Suspending the rule will automatically remove the configuration from the network and mark this rule as inactive.{% endblocktrans %}</p>
+ <p>{% blocktrans %}Are you sure you want to proceed?{% endblocktrans %}</p>
</div>
-<div id="console" title="Console">
+<div id="console" title="{% trans "Console" %}">
{% include "poll.html" %}
</div>
{% endblock %}