mirror of
https://github.com/dkmstr/openuds.git
synced 2025-01-03 01:17:56 +03:00
* Added responsive tables to admin
* Added language selection over REST API * Added "renderers" so we can add icons or whatever to cells before rendering * Lots of improvements
This commit is contained in:
parent
6bb538d941
commit
47be643eac
@ -10,6 +10,11 @@
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>com.eclipsesource.jshint.ui.builder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.python.pydev.pythonNature</nature>
|
||||
|
3
server/.settings/com.eclipsesource.jshint.ui.prefs
Normal file
3
server/.settings/com.eclipsesource.jshint.ui.prefs
Normal file
@ -0,0 +1,3 @@
|
||||
eclipse.preferences.version=1
|
||||
excluded=//*.min.js\://PluginDetect_Java.js
|
||||
included=//*.js
|
@ -0,0 +1 @@
|
||||
ujson
|
@ -39,6 +39,7 @@ from django.utils.translation import ugettext as _, activate
|
||||
from django.conf import settings
|
||||
from handlers import Handler, HandlerError, AccessDenied
|
||||
|
||||
import time
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@ -136,10 +137,14 @@ class Dispatcher(View):
|
||||
|
||||
# Invokes the handler's operation, add headers to response and returns
|
||||
try:
|
||||
if handler.raw: # Raw handlers will return an HttpResponse Object
|
||||
response = operation()
|
||||
else:
|
||||
response = processor.getResponse(operation())
|
||||
start = time.time();
|
||||
response = operation()
|
||||
logger.debug('Execution time for method: {0}'.format(time.time() - start))
|
||||
|
||||
if not handler.raw: # Raw handlers will return an HttpResponse Object
|
||||
start = time.time()
|
||||
response = processor.getResponse(response)
|
||||
logger.debug('Execution time for encoding: {0}'.format(time.time() - start))
|
||||
for k, v in handler.headers().iteritems():
|
||||
response[k] = v
|
||||
return response
|
||||
|
@ -72,7 +72,7 @@ class TableInfo(ModelTableHandlerMixin, Handler):
|
||||
|
||||
title = _('Current authenticators')
|
||||
fields = [
|
||||
{ 'name': {'title': _('Name'), 'visible': True } },
|
||||
{ 'name': {'title': _('Name'), 'visible': True, 'type': 'iconType' } },
|
||||
{ 'comments': {'title': _('Comments')}},
|
||||
{ 'users_count': {'title': _('Users'), 'type': 'numeric', 'width': '5em'}}
|
||||
]
|
||||
|
@ -81,7 +81,6 @@ class Login(Handler):
|
||||
class Logout(Handler):
|
||||
path = 'auth'
|
||||
authenticated = True # By default, all handlers needs authentication
|
||||
needs_staff = True # By default, staff
|
||||
|
||||
def get(self):
|
||||
# Remove auth token
|
||||
@ -103,4 +102,10 @@ class Auths(Handler):
|
||||
def get(self):
|
||||
return list(self.auths())
|
||||
|
||||
class Locale(Handler):
|
||||
authenticated = True
|
||||
|
||||
def get(self):
|
||||
if len(self._args) > 0:
|
||||
self.setValue('locale', self._args[1])
|
||||
return ''
|
||||
|
@ -65,7 +65,7 @@ class TableInfo(ModelTableHandlerMixin, Handler):
|
||||
path = 'networks'
|
||||
title = _('Current Networks')
|
||||
fields = [
|
||||
{ 'name': {'title': _('Name'), 'visible': True } },
|
||||
{ 'name': {'title': _('Name'), 'visible': True, 'type': 'icon', 'icon': 'fa fa-globe text-success' } },
|
||||
{ 'net_string': {'title': _('Networks')}},
|
||||
{ 'networks_count': {'title': _('Used by'), 'type': 'numeric', 'width': '8em'}}
|
||||
]
|
||||
|
@ -68,7 +68,7 @@ class TableInfo(ModelTableHandlerMixin, Handler):
|
||||
path = 'osmanagers'
|
||||
title = _('Current OS Managers')
|
||||
fields = [
|
||||
{ 'name': {'title': _('Name'), 'visible': True } },
|
||||
{ 'name': {'title': _('Name'), 'visible': True, 'type': 'iconType' } },
|
||||
{ 'comments': {'title': _('Comments')}},
|
||||
{ 'deployed_count': {'title': _('Used by'), 'type': 'numeric', 'width': '8em'}}
|
||||
]
|
||||
|
@ -66,7 +66,7 @@ class TableInfo(ModelTableHandlerMixin, Handler):
|
||||
path = 'providers'
|
||||
title = _('Current service providers')
|
||||
fields = [
|
||||
{ 'name': {'title': _('Name') } },
|
||||
{ 'name': {'title': _('Name'), 'type': 'iconType' } },
|
||||
{ 'comments': {'title': _('Comments')}},
|
||||
{ 'services_count': {'title': _('Services'), 'type': 'numeric', 'width': '5em'}}
|
||||
]
|
||||
|
@ -68,7 +68,7 @@ class TableInfo(ModelTableHandlerMixin, Handler):
|
||||
path = 'transports'
|
||||
title = _('Current Transports')
|
||||
fields = [
|
||||
{ 'name': {'title': _('Name'), 'visible': True } },
|
||||
{ 'name': {'title': _('Name'), 'visible': True, 'type': 'iconType' } },
|
||||
{ 'comments': {'title': _('Comments')}},
|
||||
{ 'deployed_count': {'title': _('Used by'), 'type': 'numeric', 'width': '8em'}}
|
||||
]
|
||||
|
@ -32,8 +32,10 @@
|
||||
'''
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import time
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.utils import formats
|
||||
from uds.core.util.State import State
|
||||
|
||||
from uds.models import Authenticator, User
|
||||
|
||||
@ -47,19 +49,6 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
class Users(DetailHandler):
|
||||
|
||||
def user_as_dict(self, user):
|
||||
return {
|
||||
'id': user.id,
|
||||
'name': user.name,
|
||||
'real_name': user.real_name,
|
||||
'comments': user.comments,
|
||||
'state': user.state,
|
||||
'staff_member': user.staff_member,
|
||||
'is_admin': user.is_admin,
|
||||
'last_access': formats.date_format(user.last_access, 'DATETIME_FORMAT'),
|
||||
'parent': user.parent
|
||||
}
|
||||
|
||||
def get(self):
|
||||
logger.debug(self._parent)
|
||||
logger.debug(self._kwargs)
|
||||
@ -69,12 +58,9 @@ class Users(DetailHandler):
|
||||
|
||||
try:
|
||||
if len(self._args) == 0:
|
||||
res = []
|
||||
for u in auth.users.all():
|
||||
res.append(self.user_as_dict(u))
|
||||
return res
|
||||
return list(auth.users.all().values('id','name','real_name','comments','state','staff_member','is_admin','last_access','parent'))
|
||||
else:
|
||||
return self.user_as_dict(auth.get(pk=self._args[0]))
|
||||
return auth.get(pk=self._args[0]).values('id','name','real_name','comments','state','staff_member','is_admin','last_access','parent')
|
||||
except:
|
||||
logger.exception('En users')
|
||||
return { 'error': 'not found' }
|
||||
@ -87,12 +73,11 @@ class Users(DetailHandler):
|
||||
|
||||
def getFields(self):
|
||||
return [
|
||||
{ 'name': {'title': _('User Id'), 'visible': True } },
|
||||
{ 'name': {'title': _('User Id'), 'visible': True, 'type': 'icon', 'icon': 'fa fa-user text-success' } },
|
||||
{ 'real_name': { 'title': _('Name') } },
|
||||
{ 'comments': { 'title': _('Comments') } },
|
||||
{ 'state': { 'title': _('state') } },
|
||||
{ 'last_access': { 'title': _('Last access') } },
|
||||
{ 'state': { 'title': _('state'), 'type': 'dict', 'dict': State.dictionary() } },
|
||||
{ 'last_access': { 'title': _('Last access'), 'type': 'datetime' } },
|
||||
]
|
||||
|
||||
|
||||
|
@ -173,7 +173,7 @@ class ModelTableHandlerMixin(object):
|
||||
for k1, v1 in f.iteritems():
|
||||
dct = {}
|
||||
for k2, v2 in v1.iteritems():
|
||||
if type(v2) in (bool, int, long, float, unicode):
|
||||
if type(v2) in (bool, int, long, float, unicode, list, tuple, dict):
|
||||
dct[k2] = v2
|
||||
else:
|
||||
dct[k2] = unicode(v2)
|
||||
|
@ -32,13 +32,15 @@
|
||||
'''
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.utils import simplejson
|
||||
#from django.utils import simplejson
|
||||
import ujson as json
|
||||
from django import http
|
||||
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class ParametersException(Exception):
|
||||
pass
|
||||
|
||||
@ -69,7 +71,7 @@ class JsonProcessor(ContentProcessor):
|
||||
try:
|
||||
if len(self._request.body) == 0:
|
||||
return {}
|
||||
res = simplejson.loads(self._request.body)
|
||||
res = json.loads(self._request.body)
|
||||
logger.debug(res)
|
||||
return res
|
||||
except Exception as e:
|
||||
@ -77,7 +79,7 @@ class JsonProcessor(ContentProcessor):
|
||||
raise ParametersException(unicode(e))
|
||||
|
||||
def render(self, obj):
|
||||
return simplejson.dumps(obj)
|
||||
return json.dumps(obj)
|
||||
|
||||
# ---------------
|
||||
# Json Processor
|
||||
|
@ -32,7 +32,7 @@
|
||||
'''
|
||||
|
||||
|
||||
from django.utils.translation import ugettext_noop as _
|
||||
from django.utils.translation import ugettext_noop as _, ugettext
|
||||
|
||||
# States for different objects. Not all objects supports all States
|
||||
class State(object):
|
||||
@ -135,3 +135,13 @@ class State(object):
|
||||
except Exception:
|
||||
return ''
|
||||
|
||||
@staticmethod
|
||||
def dictionary():
|
||||
'''
|
||||
Returns a dictionary with current active locale translation of States to States String
|
||||
'''
|
||||
res = {}
|
||||
for k, v in State.string.iteritems():
|
||||
res[k] = ugettext(v)
|
||||
return res
|
||||
|
||||
|
Binary file not shown.
@ -32,7 +32,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-11-14 11:59+0100\n"
|
||||
"POT-Creation-Date: 2013-11-17 04:20+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -42,35 +42,86 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: REST/methods/authenticators.py:72
|
||||
#: REST/methods/authenticators.py:73
|
||||
msgid "Current authenticators"
|
||||
msgstr "Aktuelle Authentifikatoren"
|
||||
|
||||
#: REST/methods/authenticators.py:74 REST/methods/providers.py:71
|
||||
#: REST/methods/authenticators.py:75 REST/methods/networks.py:68
|
||||
#: REST/methods/osmanagers.py:71 REST/methods/providers.py:69
|
||||
#: REST/methods/transports.py:71 REST/methods/users.py:77
|
||||
msgid "Name"
|
||||
msgstr "Name"
|
||||
|
||||
#: REST/methods/authenticators.py:75 REST/methods/providers.py:72
|
||||
#: REST/methods/authenticators.py:76 REST/methods/osmanagers.py:72
|
||||
#: REST/methods/providers.py:70 REST/methods/transports.py:72
|
||||
#: REST/methods/users.py:78
|
||||
msgid "Comments"
|
||||
msgstr "Kommentare"
|
||||
|
||||
#: REST/methods/authenticators.py:76
|
||||
#: REST/methods/authenticators.py:77
|
||||
msgid "Users"
|
||||
msgstr "Benutzer"
|
||||
|
||||
#: REST/methods/providers.py:69
|
||||
#: REST/methods/networks.py:66
|
||||
msgid "Current Networks"
|
||||
msgstr "Aktuellen Netze"
|
||||
|
||||
#: REST/methods/networks.py:69 templates/uds/index.html:79
|
||||
#: templates/uds/html5/index.html:127
|
||||
msgid "Networks"
|
||||
msgstr "Netzwerke"
|
||||
|
||||
#: REST/methods/networks.py:70 REST/methods/osmanagers.py:73
|
||||
#: REST/methods/transports.py:73
|
||||
msgid "Used by"
|
||||
msgstr "Von verwendet"
|
||||
|
||||
#: REST/methods/osmanagers.py:69
|
||||
msgid "Current OS Managers"
|
||||
msgstr "Aktuelle OS-Manager"
|
||||
|
||||
#: REST/methods/providers.py:67
|
||||
msgid "Current service providers"
|
||||
msgstr "Aktuelle Service-Provider"
|
||||
|
||||
#: REST/methods/providers.py:73 templates/uds/index.html:51
|
||||
#: REST/methods/providers.py:71 templates/uds/index.html:51
|
||||
#: templates/uds/html5/index.html:68
|
||||
msgid "Services"
|
||||
msgstr "Dienstleistungen"
|
||||
|
||||
#: admin/views.py:53 admin/views.py:61 web/views.py:422
|
||||
#: REST/methods/transports.py:69
|
||||
msgid "Current Transports"
|
||||
msgstr "Aktuelle Transporte"
|
||||
|
||||
#: REST/methods/users.py:70
|
||||
#, python-brace-format
|
||||
msgid "Users of {0}"
|
||||
msgstr "Benutzer von {0}"
|
||||
|
||||
#: REST/methods/users.py:72
|
||||
msgid "Current users"
|
||||
msgstr "Momentane Benutzer"
|
||||
|
||||
#: REST/methods/users.py:76
|
||||
msgid "User Id"
|
||||
msgstr "Benutzer-Id"
|
||||
|
||||
#: REST/methods/users.py:79
|
||||
msgid "state"
|
||||
msgstr "Zustand"
|
||||
|
||||
#: REST/methods/users.py:80
|
||||
msgid "Last access"
|
||||
msgstr "Zuletzt online"
|
||||
|
||||
#: admin/views.py:55 admin/views.py:63 admin/views.py:76 web/views.py:422
|
||||
msgid "Forbidden"
|
||||
msgstr "Verboten"
|
||||
|
||||
#: admin/views.py:69
|
||||
msgid "requested a template that do not exists"
|
||||
msgstr "gefordert, dass eine Vorlage, die nicht vorhanden ist"
|
||||
|
||||
#: auths/IP/Authenticator.py:48 auths/IP/Authenticator.py:50
|
||||
msgid "IP Authenticator"
|
||||
msgstr "IP-Authenticator"
|
||||
@ -162,8 +213,9 @@ msgstr "Benutzernamen mit lesen Berechtigungen auf der Basis ausgewählt"
|
||||
#: osmanagers/WindowsOsManager/WinRandomPassOsManager.py:30
|
||||
#: services/OVirt/OVirtProvider.py:94 services/Sample/SampleService.py:131
|
||||
#: transports/HTML5RDP/HTML5RDP.py:65 transports/NX/NXTransport.py:62
|
||||
#: transports/RDP/RDPTransport.py:60 transports/RDP/TSRDPTransport.py:64
|
||||
#: transports/TSNX/TSNXTransport.py:67 web/forms/LoginForm.py:70
|
||||
#: transports/NX/TSNXTransport.py:67 transports/RDP/RDPTransport.py:60
|
||||
#: transports/RDP/TSRDPTransport.py:64 transports/TSNX/TSNXTransport.py:67
|
||||
#: web/forms/LoginForm.py:70
|
||||
msgid "Password"
|
||||
msgstr "Passwort"
|
||||
|
||||
@ -231,9 +283,9 @@ msgstr "Reguläre Ausdrücke LDAP-Authentifizierungsserver"
|
||||
|
||||
#: auths/RegexLdap/Authenticator.py:72 auths/SimpleLDAP/Authenticator.py:73
|
||||
#: services/OVirt/OVirtProvider.py:93 transports/HTML5RDP/HTML5RDP.py:64
|
||||
#: transports/NX/NXTransport.py:61 transports/RDP/RDPTransport.py:59
|
||||
#: transports/RDP/TSRDPTransport.py:63 transports/TSNX/TSNXTransport.py:66
|
||||
#: web/forms/LoginForm.py:69
|
||||
#: transports/NX/NXTransport.py:61 transports/NX/TSNXTransport.py:66
|
||||
#: transports/RDP/RDPTransport.py:59 transports/RDP/TSRDPTransport.py:63
|
||||
#: transports/TSNX/TSNXTransport.py:66 web/forms/LoginForm.py:69
|
||||
msgid "Username"
|
||||
msgstr "Benutzername"
|
||||
|
||||
@ -1093,10 +1145,6 @@ msgstr "und Browser neu starten"
|
||||
msgid "Ip"
|
||||
msgstr "IP"
|
||||
|
||||
#: templates/uds/index.html:79 templates/uds/html5/index.html:127
|
||||
msgid "Networks"
|
||||
msgstr "Netzwerke"
|
||||
|
||||
#: templates/uds/index.html:80 templates/uds/html5/index.html:128
|
||||
msgid "Transports"
|
||||
msgstr "Transporte"
|
||||
@ -1153,35 +1201,44 @@ msgstr ""
|
||||
msgid "toggle navigation"
|
||||
msgstr "Toggle navigation"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:17
|
||||
#: templates/uds/admin/snippets/navbar.html:18
|
||||
msgid "Service providers"
|
||||
msgstr "Service-Provider"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:18
|
||||
#: templates/uds/admin/snippets/navbar.html:19
|
||||
#: templates/uds/admin/tmpl/authenticators.html:4
|
||||
msgid "Authenticators"
|
||||
msgstr "Authentifikatoren"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:20
|
||||
#: templates/uds/admin/snippets/navbar.html:21
|
||||
msgid "Connectivity"
|
||||
msgstr "Konnektivität"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:21
|
||||
#: templates/uds/admin/snippets/navbar.html:22
|
||||
msgid "Deployed services"
|
||||
msgstr "Bereitgestellten Dienste"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:25
|
||||
#: templates/uds/admin/snippets/navbar.html:26
|
||||
msgid "Configuration"
|
||||
msgstr "Konfiguration"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:57
|
||||
#: templates/uds/admin/snippets/navbar.html:56
|
||||
msgid "Exit dashboard"
|
||||
msgstr "Ausfahrt dashboard"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:58
|
||||
#: templates/uds/admin/snippets/navbar.html:57
|
||||
#: templates/uds/html5/snippets/navbar.html:47
|
||||
msgid "logout"
|
||||
msgstr "Logout"
|
||||
|
||||
#: templates/uds/admin/tmpl/authenticators.html:4
|
||||
msgid "administration of authenticators"
|
||||
msgstr "Verwaltung von Authentifikatoren"
|
||||
|
||||
#: templates/uds/admin/tmpl/dashboard.html:4
|
||||
msgid "overview"
|
||||
msgstr "Übersicht"
|
||||
|
||||
#: templates/uds/html5/detectJava.html:4
|
||||
msgid "Login redirection to UDS"
|
||||
msgstr "Login-Umleitung zu UDS"
|
||||
@ -1273,7 +1330,7 @@ msgstr "Über"
|
||||
msgid "Dashboard"
|
||||
msgstr "Dashboard"
|
||||
|
||||
#: templates/uds/html5/templates/base.html:51
|
||||
#: templates/uds/html5/templates/base.html:52
|
||||
msgid ""
|
||||
"Your browser is supported only partially. Please, upgrade it to a modern "
|
||||
"html5 browser like Firefox, Chrome, Opera, ... (IE must be 10 or better)"
|
||||
@ -1311,30 +1368,30 @@ msgstr ""
|
||||
"zugänglich von Benutzern"
|
||||
|
||||
#: transports/HTML5RDP/HTML5RDP.py:63 transports/NX/NXTransport.py:60
|
||||
#: transports/RDP/RDPTransport.py:58 transports/RDP/TSRDPTransport.py:62
|
||||
#: transports/TSNX/TSNXTransport.py:65
|
||||
#: transports/NX/TSNXTransport.py:65 transports/RDP/RDPTransport.py:58
|
||||
#: transports/RDP/TSRDPTransport.py:62 transports/TSNX/TSNXTransport.py:65
|
||||
msgid "Empty creds"
|
||||
msgstr "Leere creds"
|
||||
|
||||
#: transports/HTML5RDP/HTML5RDP.py:63 transports/NX/NXTransport.py:60
|
||||
#: transports/RDP/RDPTransport.py:58 transports/RDP/TSRDPTransport.py:62
|
||||
#: transports/TSNX/TSNXTransport.py:65
|
||||
#: transports/NX/TSNXTransport.py:65 transports/RDP/RDPTransport.py:58
|
||||
#: transports/RDP/TSRDPTransport.py:62 transports/TSNX/TSNXTransport.py:65
|
||||
msgid "If checked, the credentials used to connect will be emtpy"
|
||||
msgstr ""
|
||||
"Wenn diese Option aktiviert, werden die Anmeldeinformationen zum Herstellen "
|
||||
"einer leer sein."
|
||||
|
||||
#: transports/HTML5RDP/HTML5RDP.py:64 transports/NX/NXTransport.py:61
|
||||
#: transports/RDP/RDPTransport.py:59 transports/RDP/TSRDPTransport.py:63
|
||||
#: transports/TSNX/TSNXTransport.py:66
|
||||
#: transports/NX/TSNXTransport.py:66 transports/RDP/RDPTransport.py:59
|
||||
#: transports/RDP/TSRDPTransport.py:63 transports/TSNX/TSNXTransport.py:66
|
||||
msgid "If not empty, this username will be always used as credential"
|
||||
msgstr ""
|
||||
"Wenn nicht leer ist, dieser Benutzername wird immer als verwendet "
|
||||
"Anmeldeinformationen"
|
||||
|
||||
#: transports/HTML5RDP/HTML5RDP.py:65 transports/NX/NXTransport.py:62
|
||||
#: transports/RDP/RDPTransport.py:60 transports/RDP/TSRDPTransport.py:64
|
||||
#: transports/TSNX/TSNXTransport.py:67
|
||||
#: transports/NX/TSNXTransport.py:67 transports/RDP/RDPTransport.py:60
|
||||
#: transports/RDP/TSRDPTransport.py:64 transports/TSNX/TSNXTransport.py:67
|
||||
msgid "If not empty, this password will be always used as credential"
|
||||
msgstr ""
|
||||
"Wenn nicht leer ist, dieses Kennwort immer verwendet werden als "
|
||||
@ -1389,46 +1446,98 @@ msgstr "NX Transport (direkt)"
|
||||
msgid "NX Transport for direct connection"
|
||||
msgstr "NX-Transport für den direkten Anschluss"
|
||||
|
||||
#: transports/NX/NXTransport.py:63 transports/TSNX/TSNXTransport.py:68
|
||||
#: transports/NX/NXTransport.py:63 transports/NX/TSNXTransport.py:68
|
||||
#: transports/TSNX/TSNXTransport.py:68
|
||||
msgid "Listen port"
|
||||
msgstr "-Listenanschluss"
|
||||
|
||||
#: transports/NX/NXTransport.py:63 transports/TSNX/TSNXTransport.py:68
|
||||
#: transports/NX/NXTransport.py:63 transports/NX/TSNXTransport.py:68
|
||||
#: transports/TSNX/TSNXTransport.py:68
|
||||
msgid "Listening port of NX (ssh) at client machine"
|
||||
msgstr "Hören Port des NX (ssh) bei Client-Rechner"
|
||||
|
||||
#: transports/NX/NXTransport.py:64 transports/TSNX/TSNXTransport.py:69
|
||||
#: transports/NX/NXTransport.py:64 transports/NX/TSNXTransport.py:69
|
||||
#: transports/TSNX/TSNXTransport.py:69
|
||||
msgid "Connection"
|
||||
msgstr "Verbindung"
|
||||
|
||||
#: transports/NX/NXTransport.py:64 transports/TSNX/TSNXTransport.py:69
|
||||
#: transports/NX/NXTransport.py:64 transports/NX/TSNXTransport.py:69
|
||||
#: transports/TSNX/TSNXTransport.py:69
|
||||
msgid "Connection speed for this transport (quality)"
|
||||
msgstr "Verbindungsgeschwindigkeit für diesen Transport (Qualität)"
|
||||
|
||||
#: transports/NX/NXTransport.py:71 transports/TSNX/TSNXTransport.py:76
|
||||
#: transports/NX/NXTransport.py:71 transports/NX/TSNXTransport.py:76
|
||||
#: transports/TSNX/TSNXTransport.py:76
|
||||
msgid "Session"
|
||||
msgstr "Sitzung"
|
||||
|
||||
#: transports/NX/NXTransport.py:71 transports/TSNX/TSNXTransport.py:76
|
||||
#: transports/NX/NXTransport.py:71 transports/NX/TSNXTransport.py:76
|
||||
#: transports/TSNX/TSNXTransport.py:76
|
||||
msgid "Desktop session"
|
||||
msgstr "Desktop-Sitzung"
|
||||
|
||||
#: transports/NX/NXTransport.py:76 transports/TSNX/TSNXTransport.py:81
|
||||
#: transports/NX/NXTransport.py:76 transports/NX/TSNXTransport.py:81
|
||||
#: transports/TSNX/TSNXTransport.py:81
|
||||
msgid "Disk Cache"
|
||||
msgstr "Festplatten-Cache"
|
||||
|
||||
#: transports/NX/NXTransport.py:76 transports/TSNX/TSNXTransport.py:81
|
||||
#: transports/NX/NXTransport.py:76 transports/NX/TSNXTransport.py:81
|
||||
#: transports/TSNX/TSNXTransport.py:81
|
||||
msgid "Cache size en Mb stored at disk"
|
||||
msgstr "Cache-Größe de Mb auf der Festplatte gespeichert"
|
||||
|
||||
#: transports/NX/NXTransport.py:84 transports/TSNX/TSNXTransport.py:89
|
||||
#: transports/NX/NXTransport.py:84 transports/NX/TSNXTransport.py:89
|
||||
#: transports/TSNX/TSNXTransport.py:89
|
||||
msgid "Memory Cache"
|
||||
msgstr "Memory-Caches"
|
||||
|
||||
#: transports/NX/NXTransport.py:84 transports/TSNX/TSNXTransport.py:89
|
||||
#: transports/NX/NXTransport.py:84 transports/NX/TSNXTransport.py:89
|
||||
#: transports/TSNX/TSNXTransport.py:89
|
||||
msgid "Cache size en Mb keept at memory"
|
||||
msgstr "Cache Größe de Mb Keept auf Speicher"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:55 transports/TSNX/TSNXTransport.py:55
|
||||
msgid "NX Transport (tunneled)"
|
||||
msgstr "NX-Transport (Tunneling)"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:57 transports/TSNX/TSNXTransport.py:57
|
||||
msgid "NX Transport for tunneled connection"
|
||||
msgstr "NX-Transport für getunnelte Verbindung"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:62 transports/RDP/TSRDPTransport.py:59
|
||||
#: transports/TSNX/TSNXTransport.py:62
|
||||
msgid "Tunnel server"
|
||||
msgstr "Tunnel-server"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:62 transports/RDP/TSRDPTransport.py:59
|
||||
#: transports/TSNX/TSNXTransport.py:62
|
||||
msgid ""
|
||||
"IP or Hostname of tunnel server send to client device (\"public\" ip) and "
|
||||
"port. (use HOST:PORT format)"
|
||||
msgstr ""
|
||||
"IP-Adresse oder Hostname des Tunnel-Server senden an Client-Gerät "
|
||||
"(\"öffentliche\" IP-Adresse) und Port. (verwenden Sie HOST: PORT-Format)"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:63 transports/RDP/TSRDPTransport.py:60
|
||||
#: transports/TSNX/TSNXTransport.py:63
|
||||
msgid "Tunnel host check"
|
||||
msgstr "Tunnel Host-Prüfung"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:63 transports/RDP/TSRDPTransport.py:60
|
||||
#: transports/TSNX/TSNXTransport.py:63
|
||||
msgid ""
|
||||
"If not empty, this server will be used to check if service is running before "
|
||||
"assigning it to user. (use HOST:PORT format)"
|
||||
msgstr ""
|
||||
"Wenn nicht leer ist, wird dieser Server zu überprüfen, ob der Dienst "
|
||||
"ausgeführt wird, bevor Sie verwendet werden Benutzer zuweisen. (verwenden "
|
||||
"Sie HOST: PORT-Format)"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:103 transports/RDP/TSRDPTransport.py:75
|
||||
#: transports/TSNX/TSNXTransport.py:103
|
||||
msgid "Must use HOST:PORT in Tunnel Server Field"
|
||||
msgstr "HOST: PORT muss in Feld der Tunnel-Server verwendet werden."
|
||||
|
||||
#: transports/NX/__init__.py:45 transports/TSNX/__init__.py:44
|
||||
msgid "NX Protocol"
|
||||
msgstr "NX-Protokoll"
|
||||
@ -1525,35 +1634,6 @@ msgstr "RDP-Verkehr (Tunneling)"
|
||||
msgid "RDP Transport for tunneled connection"
|
||||
msgstr "RDP-Verkehr für getunnelte Verbindung"
|
||||
|
||||
#: transports/RDP/TSRDPTransport.py:59 transports/TSNX/TSNXTransport.py:62
|
||||
msgid "Tunnel server"
|
||||
msgstr "Tunnel-server"
|
||||
|
||||
#: transports/RDP/TSRDPTransport.py:59 transports/TSNX/TSNXTransport.py:62
|
||||
msgid ""
|
||||
"IP or Hostname of tunnel server send to client device (\"public\" ip) and "
|
||||
"port. (use HOST:PORT format)"
|
||||
msgstr ""
|
||||
"IP-Adresse oder Hostname des Tunnel-Server senden an Client-Gerät "
|
||||
"(\"öffentliche\" IP-Adresse) und Port. (verwenden Sie HOST: PORT-Format)"
|
||||
|
||||
#: transports/RDP/TSRDPTransport.py:60 transports/TSNX/TSNXTransport.py:63
|
||||
msgid "Tunnel host check"
|
||||
msgstr "Tunnel Host-Prüfung"
|
||||
|
||||
#: transports/RDP/TSRDPTransport.py:60 transports/TSNX/TSNXTransport.py:63
|
||||
msgid ""
|
||||
"If not empty, this server will be used to check if service is running before "
|
||||
"assigning it to user. (use HOST:PORT format)"
|
||||
msgstr ""
|
||||
"Wenn nicht leer ist, wird dieser Server zu überprüfen, ob der Dienst "
|
||||
"ausgeführt wird, bevor Sie verwendet werden Benutzer zuweisen. (verwenden "
|
||||
"Sie HOST: PORT-Format)"
|
||||
|
||||
#: transports/RDP/TSRDPTransport.py:75 transports/TSNX/TSNXTransport.py:103
|
||||
msgid "Must use HOST:PORT in Tunnel Server Field"
|
||||
msgstr "HOST: PORT muss in Feld der Tunnel-Server verwendet werden."
|
||||
|
||||
#: transports/RDP/__init__.py:39
|
||||
msgid "Remote Desktop Protocol"
|
||||
msgstr "Remote Desktop-Protokoll"
|
||||
@ -1570,14 +1650,6 @@ msgstr "Erhalten Sie es aus"
|
||||
msgid "CoRD Website"
|
||||
msgstr "CoRD-Website"
|
||||
|
||||
#: transports/TSNX/TSNXTransport.py:55
|
||||
msgid "NX Transport (tunneled)"
|
||||
msgstr "NX-Transport (Tunneling)"
|
||||
|
||||
#: transports/TSNX/TSNXTransport.py:57
|
||||
msgid "NX Transport for tunneled connection"
|
||||
msgstr "NX-Transport für getunnelte Verbindung"
|
||||
|
||||
#: web/errors.py:60
|
||||
msgid "Unknown error"
|
||||
msgstr "Unbekannter Fehler"
|
||||
@ -1639,6 +1711,10 @@ msgstr ""
|
||||
msgid "Authenticator do not provides information"
|
||||
msgstr "Authentifikator informiert nicht"
|
||||
|
||||
#: web/forms/LoginForm.py:50
|
||||
msgid "Select authenticator"
|
||||
msgstr "Wählen Sie Authentifikator"
|
||||
|
||||
#: web/forms/LoginForm.py:54
|
||||
msgid "authenticator"
|
||||
msgstr "Authentifikator"
|
||||
|
Binary file not shown.
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-11-14 11:59+0100\n"
|
||||
"POT-Creation-Date: 2013-11-17 04:21+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -18,70 +18,146 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: static/adm/js/api.js:23
|
||||
msgid "Success on \""
|
||||
msgstr "Erfolg auf\""
|
||||
|
||||
#: static/adm/js/api.js:24
|
||||
msgid "Received "
|
||||
msgstr "Empfangen "
|
||||
|
||||
#: static/adm/js/gui.js:17
|
||||
msgid "Display _MENU_ records per page"
|
||||
msgstr "_MENU_-Einträge pro Seite anzeigen"
|
||||
|
||||
#: static/adm/js/gui.js:18
|
||||
msgid "Nothing found - sorry"
|
||||
msgstr "Nichts gefunden - sorry"
|
||||
|
||||
#: static/adm/js/gui.js:19
|
||||
msgid "Showing record _START_ to _END_ of _TOTAL_"
|
||||
msgstr "Ergebnis Rekord _START_ zu _END_ von _TOTAL_"
|
||||
|
||||
#: static/adm/js/gui.js:20
|
||||
msgid "Showing 0 to 0 of 0 records"
|
||||
msgstr "Anzeigen 0 bis 0 von 0 Einträge"
|
||||
|
||||
#: static/adm/js/gui.js:21
|
||||
msgid "(filtered from _MAX_ total records)"
|
||||
msgstr "(von _MAX_ Datensätze gefiltert)"
|
||||
|
||||
#: static/adm/js/gui.js:22
|
||||
msgid "Please wait, processing"
|
||||
msgstr "Bitte warten, Verarbeitung"
|
||||
|
||||
#: static/adm/js/gui.js:23
|
||||
msgid "Search"
|
||||
msgstr "Suche"
|
||||
|
||||
#: static/adm/js/gui.js:26
|
||||
msgid "First"
|
||||
msgstr "Erste"
|
||||
|
||||
#: static/adm/js/gui.js:27
|
||||
msgid "Last"
|
||||
msgstr "Letzter"
|
||||
|
||||
#: static/adm/js/gui.js:28
|
||||
msgid "Next"
|
||||
msgstr "Nächste"
|
||||
|
||||
#: static/adm/js/gui.js:29
|
||||
msgid "Previous"
|
||||
msgstr "Vorherige"
|
||||
|
||||
#: static/adm/js/gui.js:83
|
||||
msgid "Connectivity"
|
||||
msgstr "Konnektivität"
|
||||
|
||||
#: static/adm/js/gui.js:88
|
||||
msgid "Deployed services"
|
||||
msgstr "Bereitgestellten Dienste"
|
||||
|
||||
#: static/adm/js/gui.js:181
|
||||
#: static/adm/js/gui-elements.js:7
|
||||
msgid "Service Providers"
|
||||
msgstr "Service-Provider"
|
||||
|
||||
#: static/adm/js/gui.js:191
|
||||
msgid "Authenticators"
|
||||
msgstr "Authentifikatoren"
|
||||
#: static/adm/js/gui-elements.js:81
|
||||
msgid "Connectivity"
|
||||
msgstr "Konnektivität"
|
||||
|
||||
#: static/adm/js/gui.js:18
|
||||
msgid "_MENU_ records per page"
|
||||
msgstr "_MENU_ Datensätze pro Seite"
|
||||
|
||||
#: static/adm/js/gui.js:19
|
||||
msgid "Empty"
|
||||
msgstr "Leer"
|
||||
|
||||
#: static/adm/js/gui.js:20
|
||||
msgid "Records _START_ to _END_ of _TOTAL_"
|
||||
msgstr "Zeichnet _START_, _END_ von _TOTAL_"
|
||||
|
||||
#: static/adm/js/gui.js:21
|
||||
msgid "No records"
|
||||
msgstr "Keine Datensätze"
|
||||
|
||||
#: static/adm/js/gui.js:22
|
||||
msgid "(filtered from _MAX_ total records)"
|
||||
msgstr "(von _MAX_ Datensätze gefiltert)"
|
||||
|
||||
#: static/adm/js/gui.js:23
|
||||
msgid "Please wait, processing"
|
||||
msgstr "Bitte warten, Verarbeitung"
|
||||
|
||||
#: static/adm/js/gui.js:24
|
||||
msgid "Filter"
|
||||
msgstr "Filter"
|
||||
|
||||
#: static/adm/js/gui.js:27
|
||||
msgid "First"
|
||||
msgstr "Erste"
|
||||
|
||||
#: static/adm/js/gui.js:28
|
||||
msgid "Last"
|
||||
msgstr "Letzter"
|
||||
|
||||
#: static/adm/js/gui.js:29
|
||||
msgid "Next"
|
||||
msgstr "Nächste"
|
||||
|
||||
#: static/adm/js/gui.js:30
|
||||
msgid "Previous"
|
||||
msgstr "Vorherige"
|
||||
|
||||
#: static/adm/js/gui.js:80
|
||||
msgid "Deployed services"
|
||||
msgstr "Bereitgestellten Dienste"
|
||||
|
||||
#: static/adm/js/gui.js:349
|
||||
msgid "Edit"
|
||||
msgstr "Bearbeiten"
|
||||
|
||||
#: static/adm/js/gui.js:358
|
||||
msgid "Delete"
|
||||
msgstr "Löschen"
|
||||
|
||||
#: static/adm/js/gui.js:367
|
||||
msgid "Refresh"
|
||||
msgstr "Aktualisieren"
|
||||
|
||||
#: static/adm/js/strftime.js:30
|
||||
msgid "Sunday"
|
||||
msgstr "Sonntag"
|
||||
|
||||
#: static/adm/js/strftime.js:30
|
||||
msgid "Monday"
|
||||
msgstr "Montag"
|
||||
|
||||
#: static/adm/js/strftime.js:30
|
||||
msgid "Tuesday"
|
||||
msgstr "Dienstag"
|
||||
|
||||
#: static/adm/js/strftime.js:31
|
||||
msgid "Wednesday"
|
||||
msgstr "Mittwoch"
|
||||
|
||||
#: static/adm/js/strftime.js:31
|
||||
msgid "Thursday"
|
||||
msgstr "Donnerstag"
|
||||
|
||||
#: static/adm/js/strftime.js:31
|
||||
msgid "Friday"
|
||||
msgstr "Freitag"
|
||||
|
||||
#: static/adm/js/strftime.js:31
|
||||
msgid "Saturday"
|
||||
msgstr "Samstag"
|
||||
|
||||
#: static/adm/js/strftime.js:32
|
||||
msgid "January"
|
||||
msgstr "Januar"
|
||||
|
||||
#: static/adm/js/strftime.js:32
|
||||
msgid "February"
|
||||
msgstr "Februar"
|
||||
|
||||
#: static/adm/js/strftime.js:32
|
||||
msgid "March"
|
||||
msgstr "März"
|
||||
|
||||
#: static/adm/js/strftime.js:33
|
||||
msgid "April"
|
||||
msgstr "April"
|
||||
|
||||
#: static/adm/js/strftime.js:33
|
||||
msgid "May"
|
||||
msgstr "Mai"
|
||||
|
||||
#: static/adm/js/strftime.js:33
|
||||
msgid "June"
|
||||
msgstr "Juni"
|
||||
|
||||
#: static/adm/js/strftime.js:33
|
||||
msgid "July"
|
||||
msgstr "Juli"
|
||||
|
||||
#: static/adm/js/strftime.js:34
|
||||
msgid "August"
|
||||
msgstr "August"
|
||||
|
||||
#: static/adm/js/strftime.js:34
|
||||
msgid "September"
|
||||
msgstr "September"
|
||||
|
||||
#: static/adm/js/strftime.js:34
|
||||
msgid "October"
|
||||
msgstr "Oktober"
|
||||
|
||||
#: static/adm/js/strftime.js:34
|
||||
msgid "November"
|
||||
msgstr "November"
|
||||
|
||||
#: static/adm/js/strftime.js:35
|
||||
msgid "December"
|
||||
msgstr "Dezember"
|
||||
|
Binary file not shown.
@ -31,7 +31,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-11-14 11:59+0100\n"
|
||||
"POT-Creation-Date: 2013-11-17 04:20+0100\n"
|
||||
"PO-Revision-Date: 2013-04-22 06:24+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Spanish <kde-i18n-doc@kde.org>\n"
|
||||
@ -42,35 +42,86 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"X-Generator: Lokalize 1.4\n"
|
||||
|
||||
#: REST/methods/authenticators.py:72
|
||||
#: REST/methods/authenticators.py:73
|
||||
msgid "Current authenticators"
|
||||
msgstr "Autenticadores actuales"
|
||||
|
||||
#: REST/methods/authenticators.py:74 REST/methods/providers.py:71
|
||||
#: REST/methods/authenticators.py:75 REST/methods/networks.py:68
|
||||
#: REST/methods/osmanagers.py:71 REST/methods/providers.py:69
|
||||
#: REST/methods/transports.py:71 REST/methods/users.py:77
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
#: REST/methods/authenticators.py:75 REST/methods/providers.py:72
|
||||
#: REST/methods/authenticators.py:76 REST/methods/osmanagers.py:72
|
||||
#: REST/methods/providers.py:70 REST/methods/transports.py:72
|
||||
#: REST/methods/users.py:78
|
||||
msgid "Comments"
|
||||
msgstr "Comentarios"
|
||||
|
||||
#: REST/methods/authenticators.py:76
|
||||
#: REST/methods/authenticators.py:77
|
||||
msgid "Users"
|
||||
msgstr "Usuarios"
|
||||
|
||||
#: REST/methods/providers.py:69
|
||||
#: REST/methods/networks.py:66
|
||||
msgid "Current Networks"
|
||||
msgstr "Redes actuales"
|
||||
|
||||
#: REST/methods/networks.py:69 templates/uds/index.html:79
|
||||
#: templates/uds/html5/index.html:127
|
||||
msgid "Networks"
|
||||
msgstr "Redes"
|
||||
|
||||
#: REST/methods/networks.py:70 REST/methods/osmanagers.py:73
|
||||
#: REST/methods/transports.py:73
|
||||
msgid "Used by"
|
||||
msgstr "Utilizado por"
|
||||
|
||||
#: REST/methods/osmanagers.py:69
|
||||
msgid "Current OS Managers"
|
||||
msgstr "Actual OS administradores"
|
||||
|
||||
#: REST/methods/providers.py:67
|
||||
msgid "Current service providers"
|
||||
msgstr "Proveedores de servicio actuales"
|
||||
|
||||
#: REST/methods/providers.py:73 templates/uds/index.html:51
|
||||
#: REST/methods/providers.py:71 templates/uds/index.html:51
|
||||
#: templates/uds/html5/index.html:68
|
||||
msgid "Services"
|
||||
msgstr "Servicios"
|
||||
|
||||
#: admin/views.py:53 admin/views.py:61 web/views.py:422
|
||||
#: REST/methods/transports.py:69
|
||||
msgid "Current Transports"
|
||||
msgstr "Transportes actuales"
|
||||
|
||||
#: REST/methods/users.py:70
|
||||
#, python-brace-format
|
||||
msgid "Users of {0}"
|
||||
msgstr "Usuarios de {0}"
|
||||
|
||||
#: REST/methods/users.py:72
|
||||
msgid "Current users"
|
||||
msgstr "Usuarios actuales"
|
||||
|
||||
#: REST/methods/users.py:76
|
||||
msgid "User Id"
|
||||
msgstr "Id de usuario"
|
||||
|
||||
#: REST/methods/users.py:79
|
||||
msgid "state"
|
||||
msgstr "estado"
|
||||
|
||||
#: REST/methods/users.py:80
|
||||
msgid "Last access"
|
||||
msgstr "Último acceso"
|
||||
|
||||
#: admin/views.py:55 admin/views.py:63 admin/views.py:76 web/views.py:422
|
||||
msgid "Forbidden"
|
||||
msgstr "Prohibido"
|
||||
|
||||
#: admin/views.py:69
|
||||
msgid "requested a template that do not exists"
|
||||
msgstr "solicitó una plantilla que no existe"
|
||||
|
||||
#: auths/IP/Authenticator.py:48 auths/IP/Authenticator.py:50
|
||||
msgid "IP Authenticator"
|
||||
msgstr "Autenticador por IP"
|
||||
@ -160,8 +211,9 @@ msgstr "Usuario con privilegios de lectura en la base elegida"
|
||||
#: osmanagers/WindowsOsManager/WinRandomPassOsManager.py:30
|
||||
#: services/OVirt/OVirtProvider.py:94 services/Sample/SampleService.py:131
|
||||
#: transports/HTML5RDP/HTML5RDP.py:65 transports/NX/NXTransport.py:62
|
||||
#: transports/RDP/RDPTransport.py:60 transports/RDP/TSRDPTransport.py:64
|
||||
#: transports/TSNX/TSNXTransport.py:67 web/forms/LoginForm.py:70
|
||||
#: transports/NX/TSNXTransport.py:67 transports/RDP/RDPTransport.py:60
|
||||
#: transports/RDP/TSRDPTransport.py:64 transports/TSNX/TSNXTransport.py:67
|
||||
#: web/forms/LoginForm.py:70
|
||||
msgid "Password"
|
||||
msgstr "Contraseña"
|
||||
|
||||
@ -230,9 +282,9 @@ msgstr "Autenticador LDAP de expresiones regulares"
|
||||
|
||||
#: auths/RegexLdap/Authenticator.py:72 auths/SimpleLDAP/Authenticator.py:73
|
||||
#: services/OVirt/OVirtProvider.py:93 transports/HTML5RDP/HTML5RDP.py:64
|
||||
#: transports/NX/NXTransport.py:61 transports/RDP/RDPTransport.py:59
|
||||
#: transports/RDP/TSRDPTransport.py:63 transports/TSNX/TSNXTransport.py:66
|
||||
#: web/forms/LoginForm.py:69
|
||||
#: transports/NX/NXTransport.py:61 transports/NX/TSNXTransport.py:66
|
||||
#: transports/RDP/RDPTransport.py:59 transports/RDP/TSRDPTransport.py:63
|
||||
#: transports/TSNX/TSNXTransport.py:66 web/forms/LoginForm.py:69
|
||||
msgid "Username"
|
||||
msgstr "Usuario"
|
||||
|
||||
@ -1079,10 +1131,6 @@ msgstr "y reinicie el navegador"
|
||||
msgid "Ip"
|
||||
msgstr "IP"
|
||||
|
||||
#: templates/uds/index.html:79 templates/uds/html5/index.html:127
|
||||
msgid "Networks"
|
||||
msgstr "Redes"
|
||||
|
||||
#: templates/uds/index.html:80 templates/uds/html5/index.html:128
|
||||
msgid "Transports"
|
||||
msgstr "Transportes"
|
||||
@ -1139,35 +1187,44 @@ msgstr ""
|
||||
msgid "toggle navigation"
|
||||
msgstr "Toggle navegación"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:17
|
||||
#: templates/uds/admin/snippets/navbar.html:18
|
||||
msgid "Service providers"
|
||||
msgstr "Proveedores de servicios"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:18
|
||||
#: templates/uds/admin/snippets/navbar.html:19
|
||||
#: templates/uds/admin/tmpl/authenticators.html:4
|
||||
msgid "Authenticators"
|
||||
msgstr "Autenticadores"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:20
|
||||
#: templates/uds/admin/snippets/navbar.html:21
|
||||
msgid "Connectivity"
|
||||
msgstr "Conectividad"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:21
|
||||
#: templates/uds/admin/snippets/navbar.html:22
|
||||
msgid "Deployed services"
|
||||
msgstr "Servicios desplegados"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:25
|
||||
#: templates/uds/admin/snippets/navbar.html:26
|
||||
msgid "Configuration"
|
||||
msgstr "Configuración"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:57
|
||||
#: templates/uds/admin/snippets/navbar.html:56
|
||||
msgid "Exit dashboard"
|
||||
msgstr "Tablero de salida"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:58
|
||||
#: templates/uds/admin/snippets/navbar.html:57
|
||||
#: templates/uds/html5/snippets/navbar.html:47
|
||||
msgid "logout"
|
||||
msgstr "logout"
|
||||
|
||||
#: templates/uds/admin/tmpl/authenticators.html:4
|
||||
msgid "administration of authenticators"
|
||||
msgstr "Administración de autenticadores"
|
||||
|
||||
#: templates/uds/admin/tmpl/dashboard.html:4
|
||||
msgid "overview"
|
||||
msgstr "Resumen"
|
||||
|
||||
#: templates/uds/html5/detectJava.html:4
|
||||
msgid "Login redirection to UDS"
|
||||
msgstr "Redirección de inicio de sesión para UDS"
|
||||
@ -1259,7 +1316,7 @@ msgstr "Acerca de"
|
||||
msgid "Dashboard"
|
||||
msgstr "Tablero de instrumentos"
|
||||
|
||||
#: templates/uds/html5/templates/base.html:51
|
||||
#: templates/uds/html5/templates/base.html:52
|
||||
msgid ""
|
||||
"Your browser is supported only partially. Please, upgrade it to a modern "
|
||||
"html5 browser like Firefox, Chrome, Opera, ... (IE must be 10 or better)"
|
||||
@ -1297,28 +1354,28 @@ msgstr ""
|
||||
"accesible de los usuarios"
|
||||
|
||||
#: transports/HTML5RDP/HTML5RDP.py:63 transports/NX/NXTransport.py:60
|
||||
#: transports/RDP/RDPTransport.py:58 transports/RDP/TSRDPTransport.py:62
|
||||
#: transports/TSNX/TSNXTransport.py:65
|
||||
#: transports/NX/TSNXTransport.py:65 transports/RDP/RDPTransport.py:58
|
||||
#: transports/RDP/TSRDPTransport.py:62 transports/TSNX/TSNXTransport.py:65
|
||||
msgid "Empty creds"
|
||||
msgstr "Sin credenciales"
|
||||
|
||||
#: transports/HTML5RDP/HTML5RDP.py:63 transports/NX/NXTransport.py:60
|
||||
#: transports/RDP/RDPTransport.py:58 transports/RDP/TSRDPTransport.py:62
|
||||
#: transports/TSNX/TSNXTransport.py:65
|
||||
#: transports/NX/TSNXTransport.py:65 transports/RDP/RDPTransport.py:58
|
||||
#: transports/RDP/TSRDPTransport.py:62 transports/TSNX/TSNXTransport.py:65
|
||||
msgid "If checked, the credentials used to connect will be emtpy"
|
||||
msgstr ""
|
||||
"Si está activada, las credenciales utilizadas para conectar estarán vacías"
|
||||
|
||||
#: transports/HTML5RDP/HTML5RDP.py:64 transports/NX/NXTransport.py:61
|
||||
#: transports/RDP/RDPTransport.py:59 transports/RDP/TSRDPTransport.py:63
|
||||
#: transports/TSNX/TSNXTransport.py:66
|
||||
#: transports/NX/TSNXTransport.py:66 transports/RDP/RDPTransport.py:59
|
||||
#: transports/RDP/TSRDPTransport.py:63 transports/TSNX/TSNXTransport.py:66
|
||||
msgid "If not empty, this username will be always used as credential"
|
||||
msgstr ""
|
||||
"Si no está vacio, este nombre de usuario será utilizado como credencial fija"
|
||||
|
||||
#: transports/HTML5RDP/HTML5RDP.py:65 transports/NX/NXTransport.py:62
|
||||
#: transports/RDP/RDPTransport.py:60 transports/RDP/TSRDPTransport.py:64
|
||||
#: transports/TSNX/TSNXTransport.py:67
|
||||
#: transports/NX/TSNXTransport.py:67 transports/RDP/RDPTransport.py:60
|
||||
#: transports/RDP/TSRDPTransport.py:64 transports/TSNX/TSNXTransport.py:67
|
||||
msgid "If not empty, this password will be always used as credential"
|
||||
msgstr "Si no está vacio, este password será utiizado como credencial fija"
|
||||
|
||||
@ -1371,46 +1428,97 @@ msgstr "Transporte NX (directo)"
|
||||
msgid "NX Transport for direct connection"
|
||||
msgstr "Transporte NX para conexión directa"
|
||||
|
||||
#: transports/NX/NXTransport.py:63 transports/TSNX/TSNXTransport.py:68
|
||||
#: transports/NX/NXTransport.py:63 transports/NX/TSNXTransport.py:68
|
||||
#: transports/TSNX/TSNXTransport.py:68
|
||||
msgid "Listen port"
|
||||
msgstr "Puerto de escucha"
|
||||
|
||||
#: transports/NX/NXTransport.py:63 transports/TSNX/TSNXTransport.py:68
|
||||
#: transports/NX/NXTransport.py:63 transports/NX/TSNXTransport.py:68
|
||||
#: transports/TSNX/TSNXTransport.py:68
|
||||
msgid "Listening port of NX (ssh) at client machine"
|
||||
msgstr "Puerto de escucha de NX (ssh) en el equipo cliente"
|
||||
|
||||
#: transports/NX/NXTransport.py:64 transports/TSNX/TSNXTransport.py:69
|
||||
#: transports/NX/NXTransport.py:64 transports/NX/TSNXTransport.py:69
|
||||
#: transports/TSNX/TSNXTransport.py:69
|
||||
msgid "Connection"
|
||||
msgstr "Conexión"
|
||||
|
||||
#: transports/NX/NXTransport.py:64 transports/TSNX/TSNXTransport.py:69
|
||||
#: transports/NX/NXTransport.py:64 transports/NX/TSNXTransport.py:69
|
||||
#: transports/TSNX/TSNXTransport.py:69
|
||||
msgid "Connection speed for this transport (quality)"
|
||||
msgstr "Velocidad de conexión de este transporte (calidad)"
|
||||
|
||||
#: transports/NX/NXTransport.py:71 transports/TSNX/TSNXTransport.py:76
|
||||
#: transports/NX/NXTransport.py:71 transports/NX/TSNXTransport.py:76
|
||||
#: transports/TSNX/TSNXTransport.py:76
|
||||
msgid "Session"
|
||||
msgstr "Sesiones"
|
||||
|
||||
#: transports/NX/NXTransport.py:71 transports/TSNX/TSNXTransport.py:76
|
||||
#: transports/NX/NXTransport.py:71 transports/NX/TSNXTransport.py:76
|
||||
#: transports/TSNX/TSNXTransport.py:76
|
||||
msgid "Desktop session"
|
||||
msgstr "Sesión de escritorio"
|
||||
|
||||
#: transports/NX/NXTransport.py:76 transports/TSNX/TSNXTransport.py:81
|
||||
#: transports/NX/NXTransport.py:76 transports/NX/TSNXTransport.py:81
|
||||
#: transports/TSNX/TSNXTransport.py:81
|
||||
msgid "Disk Cache"
|
||||
msgstr "Caché de disco"
|
||||
|
||||
#: transports/NX/NXTransport.py:76 transports/TSNX/TSNXTransport.py:81
|
||||
#: transports/NX/NXTransport.py:76 transports/NX/TSNXTransport.py:81
|
||||
#: transports/TSNX/TSNXTransport.py:81
|
||||
msgid "Cache size en Mb stored at disk"
|
||||
msgstr "Tamaño de ca Caché en MB almacenada en disco"
|
||||
|
||||
#: transports/NX/NXTransport.py:84 transports/TSNX/TSNXTransport.py:89
|
||||
#: transports/NX/NXTransport.py:84 transports/NX/TSNXTransport.py:89
|
||||
#: transports/TSNX/TSNXTransport.py:89
|
||||
msgid "Memory Cache"
|
||||
msgstr "Memoria Caché"
|
||||
|
||||
#: transports/NX/NXTransport.py:84 transports/TSNX/TSNXTransport.py:89
|
||||
#: transports/NX/NXTransport.py:84 transports/NX/TSNXTransport.py:89
|
||||
#: transports/TSNX/TSNXTransport.py:89
|
||||
msgid "Cache size en Mb keept at memory"
|
||||
msgstr "Tamaño del Caché en Mb a mantener en memoria"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:55 transports/TSNX/TSNXTransport.py:55
|
||||
msgid "NX Transport (tunneled)"
|
||||
msgstr "Transporte NX (vía túnel)"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:57 transports/TSNX/TSNXTransport.py:57
|
||||
msgid "NX Transport for tunneled connection"
|
||||
msgstr "Transporte NX para conexión vía túnel"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:62 transports/RDP/TSRDPTransport.py:59
|
||||
#: transports/TSNX/TSNXTransport.py:62
|
||||
msgid "Tunnel server"
|
||||
msgstr "Servidor de túnel"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:62 transports/RDP/TSRDPTransport.py:59
|
||||
#: transports/TSNX/TSNXTransport.py:62
|
||||
msgid ""
|
||||
"IP or Hostname of tunnel server send to client device (\"public\" ip) and "
|
||||
"port. (use HOST:PORT format)"
|
||||
msgstr ""
|
||||
"IP o nombre de host del servidor de túnel enviar a dispositivo de cliente "
|
||||
"(ip \"pública\") y puerto. (utilice el formato HOST: puerto)"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:63 transports/RDP/TSRDPTransport.py:60
|
||||
#: transports/TSNX/TSNXTransport.py:63
|
||||
msgid "Tunnel host check"
|
||||
msgstr "Verificación de host de túnel"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:63 transports/RDP/TSRDPTransport.py:60
|
||||
#: transports/TSNX/TSNXTransport.py:63
|
||||
msgid ""
|
||||
"If not empty, this server will be used to check if service is running before "
|
||||
"assigning it to user. (use HOST:PORT format)"
|
||||
msgstr ""
|
||||
"Si no vacía, este servidor se utilizará para comprobar si el servicio se "
|
||||
"ejecuta antes de asignarle al usuario. (utilice el formato HOST: puerto)"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:103 transports/RDP/TSRDPTransport.py:75
|
||||
#: transports/TSNX/TSNXTransport.py:103
|
||||
msgid "Must use HOST:PORT in Tunnel Server Field"
|
||||
msgstr "Debe utilizar HOST: puerto en el campo servidor de túnel"
|
||||
|
||||
#: transports/NX/__init__.py:45 transports/TSNX/__init__.py:44
|
||||
msgid "NX Protocol"
|
||||
msgstr "Protocolo NX"
|
||||
@ -1504,34 +1612,6 @@ msgstr "Transporte RDP (vía túnel)"
|
||||
msgid "RDP Transport for tunneled connection"
|
||||
msgstr "Transporte RDP para conexión vía túnel"
|
||||
|
||||
#: transports/RDP/TSRDPTransport.py:59 transports/TSNX/TSNXTransport.py:62
|
||||
msgid "Tunnel server"
|
||||
msgstr "Servidor de túnel"
|
||||
|
||||
#: transports/RDP/TSRDPTransport.py:59 transports/TSNX/TSNXTransport.py:62
|
||||
msgid ""
|
||||
"IP or Hostname of tunnel server send to client device (\"public\" ip) and "
|
||||
"port. (use HOST:PORT format)"
|
||||
msgstr ""
|
||||
"IP o nombre de host del servidor de túnel enviar a dispositivo de cliente "
|
||||
"(ip \"pública\") y puerto. (utilice el formato HOST: puerto)"
|
||||
|
||||
#: transports/RDP/TSRDPTransport.py:60 transports/TSNX/TSNXTransport.py:63
|
||||
msgid "Tunnel host check"
|
||||
msgstr "Verificación de host de túnel"
|
||||
|
||||
#: transports/RDP/TSRDPTransport.py:60 transports/TSNX/TSNXTransport.py:63
|
||||
msgid ""
|
||||
"If not empty, this server will be used to check if service is running before "
|
||||
"assigning it to user. (use HOST:PORT format)"
|
||||
msgstr ""
|
||||
"Si no vacía, este servidor se utilizará para comprobar si el servicio se "
|
||||
"ejecuta antes de asignarle al usuario. (utilice el formato HOST: puerto)"
|
||||
|
||||
#: transports/RDP/TSRDPTransport.py:75 transports/TSNX/TSNXTransport.py:103
|
||||
msgid "Must use HOST:PORT in Tunnel Server Field"
|
||||
msgstr "Debe utilizar HOST: puerto en el campo servidor de túnel"
|
||||
|
||||
#: transports/RDP/__init__.py:39
|
||||
msgid "Remote Desktop Protocol"
|
||||
msgstr "Protocolo de Escritorio remoto (RDP)"
|
||||
@ -1548,14 +1628,6 @@ msgstr "Puede obtenerlo de"
|
||||
msgid "CoRD Website"
|
||||
msgstr "Sitio Web de CoRD"
|
||||
|
||||
#: transports/TSNX/TSNXTransport.py:55
|
||||
msgid "NX Transport (tunneled)"
|
||||
msgstr "Transporte NX (vía túnel)"
|
||||
|
||||
#: transports/TSNX/TSNXTransport.py:57
|
||||
msgid "NX Transport for tunneled connection"
|
||||
msgstr "Transporte NX para conexión vía túnel"
|
||||
|
||||
#: web/errors.py:60
|
||||
msgid "Unknown error"
|
||||
msgstr "Error desconocido"
|
||||
@ -1619,6 +1691,10 @@ msgstr ""
|
||||
msgid "Authenticator do not provides information"
|
||||
msgstr "El autenticador no proporciona información alguna"
|
||||
|
||||
#: web/forms/LoginForm.py:50
|
||||
msgid "Select authenticator"
|
||||
msgstr "Seleccione autenticador"
|
||||
|
||||
#: web/forms/LoginForm.py:54
|
||||
msgid "authenticator"
|
||||
msgstr "autenticador"
|
||||
|
Binary file not shown.
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-11-14 11:59+0100\n"
|
||||
"POT-Creation-Date: 2013-11-17 04:21+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -18,70 +18,146 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: static/adm/js/api.js:23
|
||||
msgid "Success on \""
|
||||
msgstr "Éxito de\""
|
||||
|
||||
#: static/adm/js/api.js:24
|
||||
msgid "Received "
|
||||
msgstr "Recibido "
|
||||
|
||||
#: static/adm/js/gui.js:17
|
||||
msgid "Display _MENU_ records per page"
|
||||
msgstr "Pantalla _MENU_ registros por página"
|
||||
|
||||
#: static/adm/js/gui.js:18
|
||||
msgid "Nothing found - sorry"
|
||||
msgstr "No encontrado - lo siento"
|
||||
|
||||
#: static/adm/js/gui.js:19
|
||||
msgid "Showing record _START_ to _END_ of _TOTAL_"
|
||||
msgstr "Mostrando registro _START_ a _END_ de _TOTAL_"
|
||||
|
||||
#: static/adm/js/gui.js:20
|
||||
msgid "Showing 0 to 0 of 0 records"
|
||||
msgstr "Mostrando 0 a 0 de 0 registros"
|
||||
|
||||
#: static/adm/js/gui.js:21
|
||||
msgid "(filtered from _MAX_ total records)"
|
||||
msgstr "(filtrado de registros total _MAX_)"
|
||||
|
||||
#: static/adm/js/gui.js:22
|
||||
msgid "Please wait, processing"
|
||||
msgstr "Por favor espere, procesando"
|
||||
|
||||
#: static/adm/js/gui.js:23
|
||||
msgid "Search"
|
||||
msgstr "Búsqueda de"
|
||||
|
||||
#: static/adm/js/gui.js:26
|
||||
msgid "First"
|
||||
msgstr "Primero"
|
||||
|
||||
#: static/adm/js/gui.js:27
|
||||
msgid "Last"
|
||||
msgstr "Duran"
|
||||
|
||||
#: static/adm/js/gui.js:28
|
||||
msgid "Next"
|
||||
msgstr "Próxima"
|
||||
|
||||
#: static/adm/js/gui.js:29
|
||||
msgid "Previous"
|
||||
msgstr "Anterior"
|
||||
|
||||
#: static/adm/js/gui.js:83
|
||||
msgid "Connectivity"
|
||||
msgstr "Conectividad"
|
||||
|
||||
#: static/adm/js/gui.js:88
|
||||
msgid "Deployed services"
|
||||
msgstr "Servicios desplegados"
|
||||
|
||||
#: static/adm/js/gui.js:181
|
||||
#: static/adm/js/gui-elements.js:7
|
||||
msgid "Service Providers"
|
||||
msgstr "Proveedores de servicios"
|
||||
|
||||
#: static/adm/js/gui.js:191
|
||||
msgid "Authenticators"
|
||||
msgstr "Autenticadores"
|
||||
#: static/adm/js/gui-elements.js:81
|
||||
msgid "Connectivity"
|
||||
msgstr "Conectividad"
|
||||
|
||||
#: static/adm/js/gui.js:18
|
||||
msgid "_MENU_ records per page"
|
||||
msgstr "Registros _MENU_ por página"
|
||||
|
||||
#: static/adm/js/gui.js:19
|
||||
msgid "Empty"
|
||||
msgstr "Vacío"
|
||||
|
||||
#: static/adm/js/gui.js:20
|
||||
msgid "Records _START_ to _END_ of _TOTAL_"
|
||||
msgstr "Registros de _START_ a _END_ de _TOTAL_"
|
||||
|
||||
#: static/adm/js/gui.js:21
|
||||
msgid "No records"
|
||||
msgstr "No hay registros"
|
||||
|
||||
#: static/adm/js/gui.js:22
|
||||
msgid "(filtered from _MAX_ total records)"
|
||||
msgstr "(filtrado de registros total _MAX_)"
|
||||
|
||||
#: static/adm/js/gui.js:23
|
||||
msgid "Please wait, processing"
|
||||
msgstr "Por favor espere, procesando"
|
||||
|
||||
#: static/adm/js/gui.js:24
|
||||
msgid "Filter"
|
||||
msgstr "Filtro"
|
||||
|
||||
#: static/adm/js/gui.js:27
|
||||
msgid "First"
|
||||
msgstr "Primero"
|
||||
|
||||
#: static/adm/js/gui.js:28
|
||||
msgid "Last"
|
||||
msgstr "Duran"
|
||||
|
||||
#: static/adm/js/gui.js:29
|
||||
msgid "Next"
|
||||
msgstr "Próxima"
|
||||
|
||||
#: static/adm/js/gui.js:30
|
||||
msgid "Previous"
|
||||
msgstr "Anterior"
|
||||
|
||||
#: static/adm/js/gui.js:80
|
||||
msgid "Deployed services"
|
||||
msgstr "Servicios desplegados"
|
||||
|
||||
#: static/adm/js/gui.js:349
|
||||
msgid "Edit"
|
||||
msgstr "Editar"
|
||||
|
||||
#: static/adm/js/gui.js:358
|
||||
msgid "Delete"
|
||||
msgstr "Borrar"
|
||||
|
||||
#: static/adm/js/gui.js:367
|
||||
msgid "Refresh"
|
||||
msgstr "Actualización"
|
||||
|
||||
#: static/adm/js/strftime.js:30
|
||||
msgid "Sunday"
|
||||
msgstr "Domingo"
|
||||
|
||||
#: static/adm/js/strftime.js:30
|
||||
msgid "Monday"
|
||||
msgstr "Lunes"
|
||||
|
||||
#: static/adm/js/strftime.js:30
|
||||
msgid "Tuesday"
|
||||
msgstr "Martes"
|
||||
|
||||
#: static/adm/js/strftime.js:31
|
||||
msgid "Wednesday"
|
||||
msgstr "Miércoles"
|
||||
|
||||
#: static/adm/js/strftime.js:31
|
||||
msgid "Thursday"
|
||||
msgstr "Jueves"
|
||||
|
||||
#: static/adm/js/strftime.js:31
|
||||
msgid "Friday"
|
||||
msgstr "Viernes"
|
||||
|
||||
#: static/adm/js/strftime.js:31
|
||||
msgid "Saturday"
|
||||
msgstr "Sábado"
|
||||
|
||||
#: static/adm/js/strftime.js:32
|
||||
msgid "January"
|
||||
msgstr "Enero"
|
||||
|
||||
#: static/adm/js/strftime.js:32
|
||||
msgid "February"
|
||||
msgstr "Febrero"
|
||||
|
||||
#: static/adm/js/strftime.js:32
|
||||
msgid "March"
|
||||
msgstr "Marzo"
|
||||
|
||||
#: static/adm/js/strftime.js:33
|
||||
msgid "April"
|
||||
msgstr "Abril"
|
||||
|
||||
#: static/adm/js/strftime.js:33
|
||||
msgid "May"
|
||||
msgstr "Mayo"
|
||||
|
||||
#: static/adm/js/strftime.js:33
|
||||
msgid "June"
|
||||
msgstr "Junio"
|
||||
|
||||
#: static/adm/js/strftime.js:33
|
||||
msgid "July"
|
||||
msgstr "Julio"
|
||||
|
||||
#: static/adm/js/strftime.js:34
|
||||
msgid "August"
|
||||
msgstr "Agosto"
|
||||
|
||||
#: static/adm/js/strftime.js:34
|
||||
msgid "September"
|
||||
msgstr "Septiembre"
|
||||
|
||||
#: static/adm/js/strftime.js:34
|
||||
msgid "October"
|
||||
msgstr "Octubre"
|
||||
|
||||
#: static/adm/js/strftime.js:34
|
||||
msgid "November"
|
||||
msgstr "Noviembre"
|
||||
|
||||
#: static/adm/js/strftime.js:35
|
||||
msgid "December"
|
||||
msgstr "Diciembre"
|
||||
|
Binary file not shown.
@ -32,7 +32,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-11-14 11:59+0100\n"
|
||||
"POT-Creation-Date: 2013-11-17 04:20+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -42,35 +42,86 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
|
||||
|
||||
#: REST/methods/authenticators.py:72
|
||||
#: REST/methods/authenticators.py:73
|
||||
msgid "Current authenticators"
|
||||
msgstr "Authentificateurs actuels"
|
||||
|
||||
#: REST/methods/authenticators.py:74 REST/methods/providers.py:71
|
||||
#: REST/methods/authenticators.py:75 REST/methods/networks.py:68
|
||||
#: REST/methods/osmanagers.py:71 REST/methods/providers.py:69
|
||||
#: REST/methods/transports.py:71 REST/methods/users.py:77
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
#: REST/methods/authenticators.py:75 REST/methods/providers.py:72
|
||||
#: REST/methods/authenticators.py:76 REST/methods/osmanagers.py:72
|
||||
#: REST/methods/providers.py:70 REST/methods/transports.py:72
|
||||
#: REST/methods/users.py:78
|
||||
msgid "Comments"
|
||||
msgstr "Commentaires"
|
||||
|
||||
#: REST/methods/authenticators.py:76
|
||||
#: REST/methods/authenticators.py:77
|
||||
msgid "Users"
|
||||
msgstr "Utilisateurs"
|
||||
|
||||
#: REST/methods/providers.py:69
|
||||
#: REST/methods/networks.py:66
|
||||
msgid "Current Networks"
|
||||
msgstr "Réseaux actuels"
|
||||
|
||||
#: REST/methods/networks.py:69 templates/uds/index.html:79
|
||||
#: templates/uds/html5/index.html:127
|
||||
msgid "Networks"
|
||||
msgstr "Réseaux"
|
||||
|
||||
#: REST/methods/networks.py:70 REST/methods/osmanagers.py:73
|
||||
#: REST/methods/transports.py:73
|
||||
msgid "Used by"
|
||||
msgstr "Utilisé par"
|
||||
|
||||
#: REST/methods/osmanagers.py:69
|
||||
msgid "Current OS Managers"
|
||||
msgstr "Dirigeants de OS actuels"
|
||||
|
||||
#: REST/methods/providers.py:67
|
||||
msgid "Current service providers"
|
||||
msgstr "Fournisseurs de services actuels"
|
||||
|
||||
#: REST/methods/providers.py:73 templates/uds/index.html:51
|
||||
#: REST/methods/providers.py:71 templates/uds/index.html:51
|
||||
#: templates/uds/html5/index.html:68
|
||||
msgid "Services"
|
||||
msgstr "Services"
|
||||
|
||||
#: admin/views.py:53 admin/views.py:61 web/views.py:422
|
||||
#: REST/methods/transports.py:69
|
||||
msgid "Current Transports"
|
||||
msgstr "Transports actuels"
|
||||
|
||||
#: REST/methods/users.py:70
|
||||
#, python-brace-format
|
||||
msgid "Users of {0}"
|
||||
msgstr "Utilisateurs de {0}"
|
||||
|
||||
#: REST/methods/users.py:72
|
||||
msgid "Current users"
|
||||
msgstr "Utilisateurs actuels"
|
||||
|
||||
#: REST/methods/users.py:76
|
||||
msgid "User Id"
|
||||
msgstr "Id de l'utilisateur"
|
||||
|
||||
#: REST/methods/users.py:79
|
||||
msgid "state"
|
||||
msgstr "État"
|
||||
|
||||
#: REST/methods/users.py:80
|
||||
msgid "Last access"
|
||||
msgstr "Dernier accès"
|
||||
|
||||
#: admin/views.py:55 admin/views.py:63 admin/views.py:76 web/views.py:422
|
||||
msgid "Forbidden"
|
||||
msgstr "Interdit"
|
||||
|
||||
#: admin/views.py:69
|
||||
msgid "requested a template that do not exists"
|
||||
msgstr "demandé un modèle qui ne sont pas existe"
|
||||
|
||||
#: auths/IP/Authenticator.py:48 auths/IP/Authenticator.py:50
|
||||
msgid "IP Authenticator"
|
||||
msgstr "Authentificateur IP"
|
||||
@ -161,8 +212,9 @@ msgstr ""
|
||||
#: osmanagers/WindowsOsManager/WinRandomPassOsManager.py:30
|
||||
#: services/OVirt/OVirtProvider.py:94 services/Sample/SampleService.py:131
|
||||
#: transports/HTML5RDP/HTML5RDP.py:65 transports/NX/NXTransport.py:62
|
||||
#: transports/RDP/RDPTransport.py:60 transports/RDP/TSRDPTransport.py:64
|
||||
#: transports/TSNX/TSNXTransport.py:67 web/forms/LoginForm.py:70
|
||||
#: transports/NX/TSNXTransport.py:67 transports/RDP/RDPTransport.py:60
|
||||
#: transports/RDP/TSRDPTransport.py:64 transports/TSNX/TSNXTransport.py:67
|
||||
#: web/forms/LoginForm.py:70
|
||||
msgid "Password"
|
||||
msgstr "Mot de passe"
|
||||
|
||||
@ -232,9 +284,9 @@ msgstr "Authentificateur de LDAP d'Expressions régulière"
|
||||
|
||||
#: auths/RegexLdap/Authenticator.py:72 auths/SimpleLDAP/Authenticator.py:73
|
||||
#: services/OVirt/OVirtProvider.py:93 transports/HTML5RDP/HTML5RDP.py:64
|
||||
#: transports/NX/NXTransport.py:61 transports/RDP/RDPTransport.py:59
|
||||
#: transports/RDP/TSRDPTransport.py:63 transports/TSNX/TSNXTransport.py:66
|
||||
#: web/forms/LoginForm.py:69
|
||||
#: transports/NX/NXTransport.py:61 transports/NX/TSNXTransport.py:66
|
||||
#: transports/RDP/RDPTransport.py:59 transports/RDP/TSRDPTransport.py:63
|
||||
#: transports/TSNX/TSNXTransport.py:66 web/forms/LoginForm.py:69
|
||||
msgid "Username"
|
||||
msgstr "Nom d'utilisateur"
|
||||
|
||||
@ -1091,10 +1143,6 @@ msgstr "Redémarrez le navigateur"
|
||||
msgid "Ip"
|
||||
msgstr "IP"
|
||||
|
||||
#: templates/uds/index.html:79 templates/uds/html5/index.html:127
|
||||
msgid "Networks"
|
||||
msgstr "Réseaux"
|
||||
|
||||
#: templates/uds/index.html:80 templates/uds/html5/index.html:128
|
||||
msgid "Transports"
|
||||
msgstr "Transports"
|
||||
@ -1151,35 +1199,44 @@ msgstr ""
|
||||
msgid "toggle navigation"
|
||||
msgstr "activer/désactiver navigation"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:17
|
||||
#: templates/uds/admin/snippets/navbar.html:18
|
||||
msgid "Service providers"
|
||||
msgstr "Fournisseurs de services"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:18
|
||||
#: templates/uds/admin/snippets/navbar.html:19
|
||||
#: templates/uds/admin/tmpl/authenticators.html:4
|
||||
msgid "Authenticators"
|
||||
msgstr "Authentificateurs"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:20
|
||||
#: templates/uds/admin/snippets/navbar.html:21
|
||||
msgid "Connectivity"
|
||||
msgstr "Connectivité"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:21
|
||||
#: templates/uds/admin/snippets/navbar.html:22
|
||||
msgid "Deployed services"
|
||||
msgstr "Services déployés"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:25
|
||||
#: templates/uds/admin/snippets/navbar.html:26
|
||||
msgid "Configuration"
|
||||
msgstr "Configuration"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:57
|
||||
#: templates/uds/admin/snippets/navbar.html:56
|
||||
msgid "Exit dashboard"
|
||||
msgstr "Tableau de bord de sortie"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:58
|
||||
#: templates/uds/admin/snippets/navbar.html:57
|
||||
#: templates/uds/html5/snippets/navbar.html:47
|
||||
msgid "logout"
|
||||
msgstr "logout"
|
||||
|
||||
#: templates/uds/admin/tmpl/authenticators.html:4
|
||||
msgid "administration of authenticators"
|
||||
msgstr "administration des authentificateurs"
|
||||
|
||||
#: templates/uds/admin/tmpl/dashboard.html:4
|
||||
msgid "overview"
|
||||
msgstr "vue d'ensemble"
|
||||
|
||||
#: templates/uds/html5/detectJava.html:4
|
||||
msgid "Login redirection to UDS"
|
||||
msgstr "Redirection de connexion à l'UDS"
|
||||
@ -1271,7 +1328,7 @@ msgstr "Sur"
|
||||
msgid "Dashboard"
|
||||
msgstr "Tableau de bord"
|
||||
|
||||
#: templates/uds/html5/templates/base.html:51
|
||||
#: templates/uds/html5/templates/base.html:52
|
||||
msgid ""
|
||||
"Your browser is supported only partially. Please, upgrade it to a modern "
|
||||
"html5 browser like Firefox, Chrome, Opera, ... (IE must be 10 or better)"
|
||||
@ -1309,30 +1366,30 @@ msgstr ""
|
||||
"si nécessaire) des utilisateurs"
|
||||
|
||||
#: transports/HTML5RDP/HTML5RDP.py:63 transports/NX/NXTransport.py:60
|
||||
#: transports/RDP/RDPTransport.py:58 transports/RDP/TSRDPTransport.py:62
|
||||
#: transports/TSNX/TSNXTransport.py:65
|
||||
#: transports/NX/TSNXTransport.py:65 transports/RDP/RDPTransport.py:58
|
||||
#: transports/RDP/TSRDPTransport.py:62 transports/TSNX/TSNXTransport.py:65
|
||||
msgid "Empty creds"
|
||||
msgstr "Références vide"
|
||||
|
||||
#: transports/HTML5RDP/HTML5RDP.py:63 transports/NX/NXTransport.py:60
|
||||
#: transports/RDP/RDPTransport.py:58 transports/RDP/TSRDPTransport.py:62
|
||||
#: transports/TSNX/TSNXTransport.py:65
|
||||
#: transports/NX/TSNXTransport.py:65 transports/RDP/RDPTransport.py:58
|
||||
#: transports/RDP/TSRDPTransport.py:62 transports/TSNX/TSNXTransport.py:65
|
||||
msgid "If checked, the credentials used to connect will be emtpy"
|
||||
msgstr ""
|
||||
"Si coché, les informations d'identification utilisées pour se connecter sera "
|
||||
"vide"
|
||||
|
||||
#: transports/HTML5RDP/HTML5RDP.py:64 transports/NX/NXTransport.py:61
|
||||
#: transports/RDP/RDPTransport.py:59 transports/RDP/TSRDPTransport.py:63
|
||||
#: transports/TSNX/TSNXTransport.py:66
|
||||
#: transports/NX/TSNXTransport.py:66 transports/RDP/RDPTransport.py:59
|
||||
#: transports/RDP/TSRDPTransport.py:63 transports/TSNX/TSNXTransport.py:66
|
||||
msgid "If not empty, this username will be always used as credential"
|
||||
msgstr ""
|
||||
"Si ce n'est vide, ce nom d'utilisateur sera toujours utilisé comme des "
|
||||
"titres de compétences"
|
||||
|
||||
#: transports/HTML5RDP/HTML5RDP.py:65 transports/NX/NXTransport.py:62
|
||||
#: transports/RDP/RDPTransport.py:60 transports/RDP/TSRDPTransport.py:64
|
||||
#: transports/TSNX/TSNXTransport.py:67
|
||||
#: transports/NX/TSNXTransport.py:67 transports/RDP/RDPTransport.py:60
|
||||
#: transports/RDP/TSRDPTransport.py:64 transports/TSNX/TSNXTransport.py:67
|
||||
msgid "If not empty, this password will be always used as credential"
|
||||
msgstr ""
|
||||
"Si ce n'est vide, ce mot de passe sera toujours utilisé comme des titres de "
|
||||
@ -1387,46 +1444,98 @@ msgstr "NX Transport (direct)"
|
||||
msgid "NX Transport for direct connection"
|
||||
msgstr "NX Transport pour une connexion directe"
|
||||
|
||||
#: transports/NX/NXTransport.py:63 transports/TSNX/TSNXTransport.py:68
|
||||
#: transports/NX/NXTransport.py:63 transports/NX/TSNXTransport.py:68
|
||||
#: transports/TSNX/TSNXTransport.py:68
|
||||
msgid "Listen port"
|
||||
msgstr "Écouter le port"
|
||||
|
||||
#: transports/NX/NXTransport.py:63 transports/TSNX/TSNXTransport.py:68
|
||||
#: transports/NX/NXTransport.py:63 transports/NX/TSNXTransport.py:68
|
||||
#: transports/TSNX/TSNXTransport.py:68
|
||||
msgid "Listening port of NX (ssh) at client machine"
|
||||
msgstr "Écoute le port de NX (ssh) à la machine client"
|
||||
|
||||
#: transports/NX/NXTransport.py:64 transports/TSNX/TSNXTransport.py:69
|
||||
#: transports/NX/NXTransport.py:64 transports/NX/TSNXTransport.py:69
|
||||
#: transports/TSNX/TSNXTransport.py:69
|
||||
msgid "Connection"
|
||||
msgstr "Connexion"
|
||||
|
||||
#: transports/NX/NXTransport.py:64 transports/TSNX/TSNXTransport.py:69
|
||||
#: transports/NX/NXTransport.py:64 transports/NX/TSNXTransport.py:69
|
||||
#: transports/TSNX/TSNXTransport.py:69
|
||||
msgid "Connection speed for this transport (quality)"
|
||||
msgstr "Vitesse de connexion pour ce transport (qualité)"
|
||||
|
||||
#: transports/NX/NXTransport.py:71 transports/TSNX/TSNXTransport.py:76
|
||||
#: transports/NX/NXTransport.py:71 transports/NX/TSNXTransport.py:76
|
||||
#: transports/TSNX/TSNXTransport.py:76
|
||||
msgid "Session"
|
||||
msgstr "Session"
|
||||
|
||||
#: transports/NX/NXTransport.py:71 transports/TSNX/TSNXTransport.py:76
|
||||
#: transports/NX/NXTransport.py:71 transports/NX/TSNXTransport.py:76
|
||||
#: transports/TSNX/TSNXTransport.py:76
|
||||
msgid "Desktop session"
|
||||
msgstr "Session de bureau"
|
||||
|
||||
#: transports/NX/NXTransport.py:76 transports/TSNX/TSNXTransport.py:81
|
||||
#: transports/NX/NXTransport.py:76 transports/NX/TSNXTransport.py:81
|
||||
#: transports/TSNX/TSNXTransport.py:81
|
||||
msgid "Disk Cache"
|
||||
msgstr "Cache disque"
|
||||
|
||||
#: transports/NX/NXTransport.py:76 transports/TSNX/TSNXTransport.py:81
|
||||
#: transports/NX/NXTransport.py:76 transports/NX/TSNXTransport.py:81
|
||||
#: transports/TSNX/TSNXTransport.py:81
|
||||
msgid "Cache size en Mb stored at disk"
|
||||
msgstr "Cache en taille que Mo stocké à disque"
|
||||
|
||||
#: transports/NX/NXTransport.py:84 transports/TSNX/TSNXTransport.py:89
|
||||
#: transports/NX/NXTransport.py:84 transports/NX/TSNXTransport.py:89
|
||||
#: transports/TSNX/TSNXTransport.py:89
|
||||
msgid "Memory Cache"
|
||||
msgstr "Mémoire Cache"
|
||||
|
||||
#: transports/NX/NXTransport.py:84 transports/TSNX/TSNXTransport.py:89
|
||||
#: transports/NX/NXTransport.py:84 transports/NX/TSNXTransport.py:89
|
||||
#: transports/TSNX/TSNXTransport.py:89
|
||||
msgid "Cache size en Mb keept at memory"
|
||||
msgstr "Taille en Mb montagne à la mémoire de cache."
|
||||
|
||||
#: transports/NX/TSNXTransport.py:55 transports/TSNX/TSNXTransport.py:55
|
||||
msgid "NX Transport (tunneled)"
|
||||
msgstr "Transport NX (tunnel)"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:57 transports/TSNX/TSNXTransport.py:57
|
||||
msgid "NX Transport for tunneled connection"
|
||||
msgstr "Transport NX pour connexion tunnelée"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:62 transports/RDP/TSRDPTransport.py:59
|
||||
#: transports/TSNX/TSNXTransport.py:62
|
||||
msgid "Tunnel server"
|
||||
msgstr "Serveur de tunnel"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:62 transports/RDP/TSRDPTransport.py:59
|
||||
#: transports/TSNX/TSNXTransport.py:62
|
||||
msgid ""
|
||||
"IP or Hostname of tunnel server send to client device (\"public\" ip) and "
|
||||
"port. (use HOST:PORT format)"
|
||||
msgstr ""
|
||||
"IP ou nom d'hôte du serveur de tunnel envoyer à la machine cliente (« public "
|
||||
"» ip) et port. (utilisez le format de l'hôte : PORT)"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:63 transports/RDP/TSRDPTransport.py:60
|
||||
#: transports/TSNX/TSNXTransport.py:63
|
||||
msgid "Tunnel host check"
|
||||
msgstr "Tunnel hôte cocher"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:63 transports/RDP/TSRDPTransport.py:60
|
||||
#: transports/TSNX/TSNXTransport.py:63
|
||||
msgid ""
|
||||
"If not empty, this server will be used to check if service is running before "
|
||||
"assigning it to user. (use HOST:PORT format)"
|
||||
msgstr ""
|
||||
"Si ce n'est vide, ce serveur sera utilisé pour vérifier si le service "
|
||||
"s'exécute avant assignant à l'utilisateur. (utilisez le format de l'hôte : "
|
||||
"PORT)"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:103 transports/RDP/TSRDPTransport.py:75
|
||||
#: transports/TSNX/TSNXTransport.py:103
|
||||
msgid "Must use HOST:PORT in Tunnel Server Field"
|
||||
msgstr "Devez utiliser HOST : PORT dans le champ serveur Tunnel"
|
||||
|
||||
#: transports/NX/__init__.py:45 transports/TSNX/__init__.py:44
|
||||
msgid "NX Protocol"
|
||||
msgstr "Protocole de NX"
|
||||
@ -1518,35 +1627,6 @@ msgstr "Transport de RDP (tunnel)"
|
||||
msgid "RDP Transport for tunneled connection"
|
||||
msgstr "Transport de RDP de connexion tunnelée"
|
||||
|
||||
#: transports/RDP/TSRDPTransport.py:59 transports/TSNX/TSNXTransport.py:62
|
||||
msgid "Tunnel server"
|
||||
msgstr "Serveur de tunnel"
|
||||
|
||||
#: transports/RDP/TSRDPTransport.py:59 transports/TSNX/TSNXTransport.py:62
|
||||
msgid ""
|
||||
"IP or Hostname of tunnel server send to client device (\"public\" ip) and "
|
||||
"port. (use HOST:PORT format)"
|
||||
msgstr ""
|
||||
"IP ou nom d'hôte du serveur de tunnel envoyer à la machine cliente (« public "
|
||||
"» ip) et port. (utilisez le format de l'hôte : PORT)"
|
||||
|
||||
#: transports/RDP/TSRDPTransport.py:60 transports/TSNX/TSNXTransport.py:63
|
||||
msgid "Tunnel host check"
|
||||
msgstr "Tunnel hôte cocher"
|
||||
|
||||
#: transports/RDP/TSRDPTransport.py:60 transports/TSNX/TSNXTransport.py:63
|
||||
msgid ""
|
||||
"If not empty, this server will be used to check if service is running before "
|
||||
"assigning it to user. (use HOST:PORT format)"
|
||||
msgstr ""
|
||||
"Si ce n'est vide, ce serveur sera utilisé pour vérifier si le service "
|
||||
"s'exécute avant assignant à l'utilisateur. (utilisez le format de l'hôte : "
|
||||
"PORT)"
|
||||
|
||||
#: transports/RDP/TSRDPTransport.py:75 transports/TSNX/TSNXTransport.py:103
|
||||
msgid "Must use HOST:PORT in Tunnel Server Field"
|
||||
msgstr "Devez utiliser HOST : PORT dans le champ serveur Tunnel"
|
||||
|
||||
#: transports/RDP/__init__.py:39
|
||||
msgid "Remote Desktop Protocol"
|
||||
msgstr "Protocole Bureau distant"
|
||||
@ -1563,14 +1643,6 @@ msgstr "Vous pouvez l'obtenir de"
|
||||
msgid "CoRD Website"
|
||||
msgstr "Site Web du cordon"
|
||||
|
||||
#: transports/TSNX/TSNXTransport.py:55
|
||||
msgid "NX Transport (tunneled)"
|
||||
msgstr "Transport NX (tunnel)"
|
||||
|
||||
#: transports/TSNX/TSNXTransport.py:57
|
||||
msgid "NX Transport for tunneled connection"
|
||||
msgstr "Transport NX pour connexion tunnelée"
|
||||
|
||||
#: web/errors.py:60
|
||||
msgid "Unknown error"
|
||||
msgstr "Erreur inconnue"
|
||||
@ -1633,6 +1705,10 @@ msgstr ""
|
||||
msgid "Authenticator do not provides information"
|
||||
msgstr "Authentificateur ne fournit pas d'informations"
|
||||
|
||||
#: web/forms/LoginForm.py:50
|
||||
msgid "Select authenticator"
|
||||
msgstr "Sélectionnez authentificateur"
|
||||
|
||||
#: web/forms/LoginForm.py:54
|
||||
msgid "authenticator"
|
||||
msgstr "authentificateur"
|
||||
|
Binary file not shown.
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-11-14 11:59+0100\n"
|
||||
"POT-Creation-Date: 2013-11-17 04:21+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -18,70 +18,146 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: static/adm/js/api.js:23
|
||||
msgid "Success on \""
|
||||
msgstr "Succès sur\""
|
||||
|
||||
#: static/adm/js/api.js:24
|
||||
msgid "Received "
|
||||
msgstr "Reçu "
|
||||
|
||||
#: static/adm/js/gui.js:17
|
||||
msgid "Display _MENU_ records per page"
|
||||
msgstr "Afficher _MENU_ enregistrements par page"
|
||||
|
||||
#: static/adm/js/gui.js:18
|
||||
msgid "Nothing found - sorry"
|
||||
msgstr "Rien trouvé - Désolé"
|
||||
|
||||
#: static/adm/js/gui.js:19
|
||||
msgid "Showing record _START_ to _END_ of _TOTAL_"
|
||||
msgstr "Affichage des enregistrement _START_ à _END_ de _TOTAL_"
|
||||
|
||||
#: static/adm/js/gui.js:20
|
||||
msgid "Showing 0 to 0 of 0 records"
|
||||
msgstr "Affichage de 0 à 0 sur 0 documents"
|
||||
|
||||
#: static/adm/js/gui.js:21
|
||||
msgid "(filtered from _MAX_ total records)"
|
||||
msgstr "(filtrée de total d'enregistrements _MAX_)"
|
||||
|
||||
#: static/adm/js/gui.js:22
|
||||
msgid "Please wait, processing"
|
||||
msgstr "Veuillez patienter, traitement"
|
||||
|
||||
#: static/adm/js/gui.js:23
|
||||
msgid "Search"
|
||||
msgstr "Rechercher"
|
||||
|
||||
#: static/adm/js/gui.js:26
|
||||
msgid "First"
|
||||
msgstr "Première"
|
||||
|
||||
#: static/adm/js/gui.js:27
|
||||
msgid "Last"
|
||||
msgstr "Dernière"
|
||||
|
||||
#: static/adm/js/gui.js:28
|
||||
msgid "Next"
|
||||
msgstr "Prochaine"
|
||||
|
||||
#: static/adm/js/gui.js:29
|
||||
msgid "Previous"
|
||||
msgstr "Précédent"
|
||||
|
||||
#: static/adm/js/gui.js:83
|
||||
msgid "Connectivity"
|
||||
msgstr "Connectivité"
|
||||
|
||||
#: static/adm/js/gui.js:88
|
||||
msgid "Deployed services"
|
||||
msgstr "Services déployés"
|
||||
|
||||
#: static/adm/js/gui.js:181
|
||||
#: static/adm/js/gui-elements.js:7
|
||||
msgid "Service Providers"
|
||||
msgstr "Fournisseurs de services"
|
||||
|
||||
#: static/adm/js/gui.js:191
|
||||
msgid "Authenticators"
|
||||
msgstr "Authentificateurs"
|
||||
#: static/adm/js/gui-elements.js:81
|
||||
msgid "Connectivity"
|
||||
msgstr "Connectivité"
|
||||
|
||||
#: static/adm/js/gui.js:18
|
||||
msgid "_MENU_ records per page"
|
||||
msgstr "Documents _MENU_ par page"
|
||||
|
||||
#: static/adm/js/gui.js:19
|
||||
msgid "Empty"
|
||||
msgstr "Vide"
|
||||
|
||||
#: static/adm/js/gui.js:20
|
||||
msgid "Records _START_ to _END_ of _TOTAL_"
|
||||
msgstr "Dossiers _START_ à _END_ de _TOTAL_"
|
||||
|
||||
#: static/adm/js/gui.js:21
|
||||
msgid "No records"
|
||||
msgstr "Aucun enregistrement"
|
||||
|
||||
#: static/adm/js/gui.js:22
|
||||
msgid "(filtered from _MAX_ total records)"
|
||||
msgstr "(filtrée de total d'enregistrements _MAX_)"
|
||||
|
||||
#: static/adm/js/gui.js:23
|
||||
msgid "Please wait, processing"
|
||||
msgstr "Veuillez patienter, traitement"
|
||||
|
||||
#: static/adm/js/gui.js:24
|
||||
msgid "Filter"
|
||||
msgstr "Filtre"
|
||||
|
||||
#: static/adm/js/gui.js:27
|
||||
msgid "First"
|
||||
msgstr "Première"
|
||||
|
||||
#: static/adm/js/gui.js:28
|
||||
msgid "Last"
|
||||
msgstr "Dernière"
|
||||
|
||||
#: static/adm/js/gui.js:29
|
||||
msgid "Next"
|
||||
msgstr "Prochaine"
|
||||
|
||||
#: static/adm/js/gui.js:30
|
||||
msgid "Previous"
|
||||
msgstr "Précédent"
|
||||
|
||||
#: static/adm/js/gui.js:80
|
||||
msgid "Deployed services"
|
||||
msgstr "Services déployés"
|
||||
|
||||
#: static/adm/js/gui.js:349
|
||||
msgid "Edit"
|
||||
msgstr "Edit"
|
||||
|
||||
#: static/adm/js/gui.js:358
|
||||
msgid "Delete"
|
||||
msgstr "Supprimer"
|
||||
|
||||
#: static/adm/js/gui.js:367
|
||||
msgid "Refresh"
|
||||
msgstr "Actualisation"
|
||||
|
||||
#: static/adm/js/strftime.js:30
|
||||
msgid "Sunday"
|
||||
msgstr "Dimanche"
|
||||
|
||||
#: static/adm/js/strftime.js:30
|
||||
msgid "Monday"
|
||||
msgstr "Lundi"
|
||||
|
||||
#: static/adm/js/strftime.js:30
|
||||
msgid "Tuesday"
|
||||
msgstr "Mardi"
|
||||
|
||||
#: static/adm/js/strftime.js:31
|
||||
msgid "Wednesday"
|
||||
msgstr "Mercredi"
|
||||
|
||||
#: static/adm/js/strftime.js:31
|
||||
msgid "Thursday"
|
||||
msgstr "Jeudi"
|
||||
|
||||
#: static/adm/js/strftime.js:31
|
||||
msgid "Friday"
|
||||
msgstr "Vendredi"
|
||||
|
||||
#: static/adm/js/strftime.js:31
|
||||
msgid "Saturday"
|
||||
msgstr "Samedi"
|
||||
|
||||
#: static/adm/js/strftime.js:32
|
||||
msgid "January"
|
||||
msgstr "Janvier"
|
||||
|
||||
#: static/adm/js/strftime.js:32
|
||||
msgid "February"
|
||||
msgstr "Février"
|
||||
|
||||
#: static/adm/js/strftime.js:32
|
||||
msgid "March"
|
||||
msgstr "Mars"
|
||||
|
||||
#: static/adm/js/strftime.js:33
|
||||
msgid "April"
|
||||
msgstr "Avril"
|
||||
|
||||
#: static/adm/js/strftime.js:33
|
||||
msgid "May"
|
||||
msgstr "Mai"
|
||||
|
||||
#: static/adm/js/strftime.js:33
|
||||
msgid "June"
|
||||
msgstr "Juin"
|
||||
|
||||
#: static/adm/js/strftime.js:33
|
||||
msgid "July"
|
||||
msgstr "Juillet"
|
||||
|
||||
#: static/adm/js/strftime.js:34
|
||||
msgid "August"
|
||||
msgstr "Août"
|
||||
|
||||
#: static/adm/js/strftime.js:34
|
||||
msgid "September"
|
||||
msgstr "Septembre"
|
||||
|
||||
#: static/adm/js/strftime.js:34
|
||||
msgid "October"
|
||||
msgstr "Octobre"
|
||||
|
||||
#: static/adm/js/strftime.js:34
|
||||
msgid "November"
|
||||
msgstr "Novembre"
|
||||
|
||||
#: static/adm/js/strftime.js:35
|
||||
msgid "December"
|
||||
msgstr "Décembre"
|
||||
|
Binary file not shown.
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-11-14 11:59+0100\n"
|
||||
"POT-Creation-Date: 2013-11-17 04:20+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -18,35 +18,86 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: REST/methods/authenticators.py:72
|
||||
#: REST/methods/authenticators.py:73
|
||||
msgid "Current authenticators"
|
||||
msgstr "Autenticatori correnti"
|
||||
|
||||
#: REST/methods/authenticators.py:74 REST/methods/providers.py:71
|
||||
#: REST/methods/authenticators.py:75 REST/methods/networks.py:68
|
||||
#: REST/methods/osmanagers.py:71 REST/methods/providers.py:69
|
||||
#: REST/methods/transports.py:71 REST/methods/users.py:77
|
||||
msgid "Name"
|
||||
msgstr "Nome"
|
||||
|
||||
#: REST/methods/authenticators.py:75 REST/methods/providers.py:72
|
||||
#: REST/methods/authenticators.py:76 REST/methods/osmanagers.py:72
|
||||
#: REST/methods/providers.py:70 REST/methods/transports.py:72
|
||||
#: REST/methods/users.py:78
|
||||
msgid "Comments"
|
||||
msgstr "Commenti"
|
||||
|
||||
#: REST/methods/authenticators.py:76
|
||||
#: REST/methods/authenticators.py:77
|
||||
msgid "Users"
|
||||
msgstr "Utenti"
|
||||
|
||||
#: REST/methods/providers.py:69
|
||||
#: REST/methods/networks.py:66
|
||||
msgid "Current Networks"
|
||||
msgstr "Reti attuali"
|
||||
|
||||
#: REST/methods/networks.py:69 templates/uds/index.html:79
|
||||
#: templates/uds/html5/index.html:127
|
||||
msgid "Networks"
|
||||
msgstr "Reti"
|
||||
|
||||
#: REST/methods/networks.py:70 REST/methods/osmanagers.py:73
|
||||
#: REST/methods/transports.py:73
|
||||
msgid "Used by"
|
||||
msgstr "Utilizzato da"
|
||||
|
||||
#: REST/methods/osmanagers.py:69
|
||||
msgid "Current OS Managers"
|
||||
msgstr "Attuale OS Manager"
|
||||
|
||||
#: REST/methods/providers.py:67
|
||||
msgid "Current service providers"
|
||||
msgstr "Attuali fornitori di servizi"
|
||||
|
||||
#: REST/methods/providers.py:73 templates/uds/index.html:51
|
||||
#: REST/methods/providers.py:71 templates/uds/index.html:51
|
||||
#: templates/uds/html5/index.html:68
|
||||
msgid "Services"
|
||||
msgstr "Servizi"
|
||||
|
||||
#: admin/views.py:53 admin/views.py:61 web/views.py:422
|
||||
#: REST/methods/transports.py:69
|
||||
msgid "Current Transports"
|
||||
msgstr "Trasporti correnti"
|
||||
|
||||
#: REST/methods/users.py:70
|
||||
#, python-brace-format
|
||||
msgid "Users of {0}"
|
||||
msgstr "Utenti di {0}"
|
||||
|
||||
#: REST/methods/users.py:72
|
||||
msgid "Current users"
|
||||
msgstr "Utenti correnti"
|
||||
|
||||
#: REST/methods/users.py:76
|
||||
msgid "User Id"
|
||||
msgstr "Id utente"
|
||||
|
||||
#: REST/methods/users.py:79
|
||||
msgid "state"
|
||||
msgstr "stato"
|
||||
|
||||
#: REST/methods/users.py:80
|
||||
msgid "Last access"
|
||||
msgstr "Ultimo accesso"
|
||||
|
||||
#: admin/views.py:55 admin/views.py:63 admin/views.py:76 web/views.py:422
|
||||
msgid "Forbidden"
|
||||
msgstr "Vietato"
|
||||
|
||||
#: admin/views.py:69
|
||||
msgid "requested a template that do not exists"
|
||||
msgstr "richiesto da un modello che non esiste"
|
||||
|
||||
#: auths/IP/Authenticator.py:48 auths/IP/Authenticator.py:50
|
||||
msgid "IP Authenticator"
|
||||
msgstr "IP autenticatore"
|
||||
@ -136,8 +187,9 @@ msgstr "Nome utente con privilegi di lettura sulla base selezionata"
|
||||
#: osmanagers/WindowsOsManager/WinRandomPassOsManager.py:30
|
||||
#: services/OVirt/OVirtProvider.py:94 services/Sample/SampleService.py:131
|
||||
#: transports/HTML5RDP/HTML5RDP.py:65 transports/NX/NXTransport.py:62
|
||||
#: transports/RDP/RDPTransport.py:60 transports/RDP/TSRDPTransport.py:64
|
||||
#: transports/TSNX/TSNXTransport.py:67 web/forms/LoginForm.py:70
|
||||
#: transports/NX/TSNXTransport.py:67 transports/RDP/RDPTransport.py:60
|
||||
#: transports/RDP/TSRDPTransport.py:64 transports/TSNX/TSNXTransport.py:67
|
||||
#: web/forms/LoginForm.py:70
|
||||
msgid "Password"
|
||||
msgstr "Password"
|
||||
|
||||
@ -205,9 +257,9 @@ msgstr "Autenticatore di LDAP di espressioni regolari"
|
||||
|
||||
#: auths/RegexLdap/Authenticator.py:72 auths/SimpleLDAP/Authenticator.py:73
|
||||
#: services/OVirt/OVirtProvider.py:93 transports/HTML5RDP/HTML5RDP.py:64
|
||||
#: transports/NX/NXTransport.py:61 transports/RDP/RDPTransport.py:59
|
||||
#: transports/RDP/TSRDPTransport.py:63 transports/TSNX/TSNXTransport.py:66
|
||||
#: web/forms/LoginForm.py:69
|
||||
#: transports/NX/NXTransport.py:61 transports/NX/TSNXTransport.py:66
|
||||
#: transports/RDP/RDPTransport.py:59 transports/RDP/TSRDPTransport.py:63
|
||||
#: transports/TSNX/TSNXTransport.py:66 web/forms/LoginForm.py:69
|
||||
msgid "Username"
|
||||
msgstr "Nome utente"
|
||||
|
||||
@ -1059,10 +1111,6 @@ msgstr "e riavviare il browser"
|
||||
msgid "Ip"
|
||||
msgstr "IP"
|
||||
|
||||
#: templates/uds/index.html:79 templates/uds/html5/index.html:127
|
||||
msgid "Networks"
|
||||
msgstr "Reti"
|
||||
|
||||
#: templates/uds/index.html:80 templates/uds/html5/index.html:128
|
||||
msgid "Transports"
|
||||
msgstr "Trasporti"
|
||||
@ -1119,35 +1167,44 @@ msgstr ""
|
||||
msgid "toggle navigation"
|
||||
msgstr "navigazione Toggle"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:17
|
||||
#: templates/uds/admin/snippets/navbar.html:18
|
||||
msgid "Service providers"
|
||||
msgstr "Fornitori di servizi"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:18
|
||||
#: templates/uds/admin/snippets/navbar.html:19
|
||||
#: templates/uds/admin/tmpl/authenticators.html:4
|
||||
msgid "Authenticators"
|
||||
msgstr "Autenticatori"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:20
|
||||
#: templates/uds/admin/snippets/navbar.html:21
|
||||
msgid "Connectivity"
|
||||
msgstr "Connettività"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:21
|
||||
#: templates/uds/admin/snippets/navbar.html:22
|
||||
msgid "Deployed services"
|
||||
msgstr "Servizi distribuiti"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:25
|
||||
#: templates/uds/admin/snippets/navbar.html:26
|
||||
msgid "Configuration"
|
||||
msgstr "Configurazione"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:57
|
||||
#: templates/uds/admin/snippets/navbar.html:56
|
||||
msgid "Exit dashboard"
|
||||
msgstr "Cruscotto di uscita"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:58
|
||||
#: templates/uds/admin/snippets/navbar.html:57
|
||||
#: templates/uds/html5/snippets/navbar.html:47
|
||||
msgid "logout"
|
||||
msgstr "logout"
|
||||
|
||||
#: templates/uds/admin/tmpl/authenticators.html:4
|
||||
msgid "administration of authenticators"
|
||||
msgstr "amministrazione di autenticatori"
|
||||
|
||||
#: templates/uds/admin/tmpl/dashboard.html:4
|
||||
msgid "overview"
|
||||
msgstr "Panoramica"
|
||||
|
||||
#: templates/uds/html5/detectJava.html:4
|
||||
msgid "Login redirection to UDS"
|
||||
msgstr "Reindirizzamento login a UDS"
|
||||
@ -1239,7 +1296,7 @@ msgstr "Circa"
|
||||
msgid "Dashboard"
|
||||
msgstr "Cruscotto"
|
||||
|
||||
#: templates/uds/html5/templates/base.html:51
|
||||
#: templates/uds/html5/templates/base.html:52
|
||||
msgid ""
|
||||
"Your browser is supported only partially. Please, upgrade it to a modern "
|
||||
"html5 browser like Firefox, Chrome, Opera, ... (IE must be 10 or better)"
|
||||
@ -1277,27 +1334,27 @@ msgstr ""
|
||||
"accessibile da parte degli utenti"
|
||||
|
||||
#: transports/HTML5RDP/HTML5RDP.py:63 transports/NX/NXTransport.py:60
|
||||
#: transports/RDP/RDPTransport.py:58 transports/RDP/TSRDPTransport.py:62
|
||||
#: transports/TSNX/TSNXTransport.py:65
|
||||
#: transports/NX/TSNXTransport.py:65 transports/RDP/RDPTransport.py:58
|
||||
#: transports/RDP/TSRDPTransport.py:62 transports/TSNX/TSNXTransport.py:65
|
||||
msgid "Empty creds"
|
||||
msgstr "Vuoto creds"
|
||||
|
||||
#: transports/HTML5RDP/HTML5RDP.py:63 transports/NX/NXTransport.py:60
|
||||
#: transports/RDP/RDPTransport.py:58 transports/RDP/TSRDPTransport.py:62
|
||||
#: transports/TSNX/TSNXTransport.py:65
|
||||
#: transports/NX/TSNXTransport.py:65 transports/RDP/RDPTransport.py:58
|
||||
#: transports/RDP/TSRDPTransport.py:62 transports/TSNX/TSNXTransport.py:65
|
||||
msgid "If checked, the credentials used to connect will be emtpy"
|
||||
msgstr "Se selezionata, le credenziali utilizzate per connettersi sarà emtpy"
|
||||
|
||||
#: transports/HTML5RDP/HTML5RDP.py:64 transports/NX/NXTransport.py:61
|
||||
#: transports/RDP/RDPTransport.py:59 transports/RDP/TSRDPTransport.py:63
|
||||
#: transports/TSNX/TSNXTransport.py:66
|
||||
#: transports/NX/TSNXTransport.py:66 transports/RDP/RDPTransport.py:59
|
||||
#: transports/RDP/TSRDPTransport.py:63 transports/TSNX/TSNXTransport.py:66
|
||||
msgid "If not empty, this username will be always used as credential"
|
||||
msgstr ""
|
||||
"Se non vuota, questo nome utente verrà sempre utilizzato come credenziale"
|
||||
|
||||
#: transports/HTML5RDP/HTML5RDP.py:65 transports/NX/NXTransport.py:62
|
||||
#: transports/RDP/RDPTransport.py:60 transports/RDP/TSRDPTransport.py:64
|
||||
#: transports/TSNX/TSNXTransport.py:67
|
||||
#: transports/NX/TSNXTransport.py:67 transports/RDP/RDPTransport.py:60
|
||||
#: transports/RDP/TSRDPTransport.py:64 transports/TSNX/TSNXTransport.py:67
|
||||
msgid "If not empty, this password will be always used as credential"
|
||||
msgstr "Se non vuota, questa password verrà sempre utilizzata come credenziale"
|
||||
|
||||
@ -1350,46 +1407,98 @@ msgstr "Trasporto NX (diretto)"
|
||||
msgid "NX Transport for direct connection"
|
||||
msgstr "Trasporto di NX per connessione diretta"
|
||||
|
||||
#: transports/NX/NXTransport.py:63 transports/TSNX/TSNXTransport.py:68
|
||||
#: transports/NX/NXTransport.py:63 transports/NX/TSNXTransport.py:68
|
||||
#: transports/TSNX/TSNXTransport.py:68
|
||||
msgid "Listen port"
|
||||
msgstr "Porta di ascolto"
|
||||
|
||||
#: transports/NX/NXTransport.py:63 transports/TSNX/TSNXTransport.py:68
|
||||
#: transports/NX/NXTransport.py:63 transports/NX/TSNXTransport.py:68
|
||||
#: transports/TSNX/TSNXTransport.py:68
|
||||
msgid "Listening port of NX (ssh) at client machine"
|
||||
msgstr "Porto di NX (ssh) in computer client in ascolto"
|
||||
|
||||
#: transports/NX/NXTransport.py:64 transports/TSNX/TSNXTransport.py:69
|
||||
#: transports/NX/NXTransport.py:64 transports/NX/TSNXTransport.py:69
|
||||
#: transports/TSNX/TSNXTransport.py:69
|
||||
msgid "Connection"
|
||||
msgstr "Connessione"
|
||||
|
||||
#: transports/NX/NXTransport.py:64 transports/TSNX/TSNXTransport.py:69
|
||||
#: transports/NX/NXTransport.py:64 transports/NX/TSNXTransport.py:69
|
||||
#: transports/TSNX/TSNXTransport.py:69
|
||||
msgid "Connection speed for this transport (quality)"
|
||||
msgstr "Velocità di connessione per questo trasporto (qualità)"
|
||||
|
||||
#: transports/NX/NXTransport.py:71 transports/TSNX/TSNXTransport.py:76
|
||||
#: transports/NX/NXTransport.py:71 transports/NX/TSNXTransport.py:76
|
||||
#: transports/TSNX/TSNXTransport.py:76
|
||||
msgid "Session"
|
||||
msgstr "Sessione"
|
||||
|
||||
#: transports/NX/NXTransport.py:71 transports/TSNX/TSNXTransport.py:76
|
||||
#: transports/NX/NXTransport.py:71 transports/NX/TSNXTransport.py:76
|
||||
#: transports/TSNX/TSNXTransport.py:76
|
||||
msgid "Desktop session"
|
||||
msgstr "Sessione desktop"
|
||||
|
||||
#: transports/NX/NXTransport.py:76 transports/TSNX/TSNXTransport.py:81
|
||||
#: transports/NX/NXTransport.py:76 transports/NX/TSNXTransport.py:81
|
||||
#: transports/TSNX/TSNXTransport.py:81
|
||||
msgid "Disk Cache"
|
||||
msgstr "Cache disco"
|
||||
|
||||
#: transports/NX/NXTransport.py:76 transports/TSNX/TSNXTransport.py:81
|
||||
#: transports/NX/NXTransport.py:76 transports/NX/TSNXTransport.py:81
|
||||
#: transports/TSNX/TSNXTransport.py:81
|
||||
msgid "Cache size en Mb stored at disk"
|
||||
msgstr "Memorizzare nella cache en dimensione che MB conservati a disco"
|
||||
|
||||
#: transports/NX/NXTransport.py:84 transports/TSNX/TSNXTransport.py:89
|
||||
#: transports/NX/NXTransport.py:84 transports/NX/TSNXTransport.py:89
|
||||
#: transports/TSNX/TSNXTransport.py:89
|
||||
msgid "Memory Cache"
|
||||
msgstr "Memoria Cache"
|
||||
|
||||
#: transports/NX/NXTransport.py:84 transports/TSNX/TSNXTransport.py:89
|
||||
#: transports/NX/NXTransport.py:84 transports/NX/TSNXTransport.py:89
|
||||
#: transports/TSNX/TSNXTransport.py:89
|
||||
msgid "Cache size en Mb keept at memory"
|
||||
msgstr "Cache size it Mb keept a memoria"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:55 transports/TSNX/TSNXTransport.py:55
|
||||
msgid "NX Transport (tunneled)"
|
||||
msgstr "Trasporto NX (con tunnel)"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:57 transports/TSNX/TSNXTransport.py:57
|
||||
msgid "NX Transport for tunneled connection"
|
||||
msgstr "Trasporto di NX per connessione con tunnel"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:62 transports/RDP/TSRDPTransport.py:59
|
||||
#: transports/TSNX/TSNXTransport.py:62
|
||||
msgid "Tunnel server"
|
||||
msgstr "Server per il tunnel"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:62 transports/RDP/TSRDPTransport.py:59
|
||||
#: transports/TSNX/TSNXTransport.py:62
|
||||
msgid ""
|
||||
"IP or Hostname of tunnel server send to client device (\"public\" ip) and "
|
||||
"port. (use HOST:PORT format)"
|
||||
msgstr ""
|
||||
"IP o l'Hostname del server per il tunnel invia a dispositivo client (ip "
|
||||
"\"pubblico\") e porto. (utilizzare il formato HOST: PORT)"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:63 transports/RDP/TSRDPTransport.py:60
|
||||
#: transports/TSNX/TSNXTransport.py:63
|
||||
msgid "Tunnel host check"
|
||||
msgstr "Controllo host tunnel"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:63 transports/RDP/TSRDPTransport.py:60
|
||||
#: transports/TSNX/TSNXTransport.py:63
|
||||
msgid ""
|
||||
"If not empty, this server will be used to check if service is running before "
|
||||
"assigning it to user. (use HOST:PORT format)"
|
||||
msgstr ""
|
||||
"Se non vuota, questo server verrà utilizzato per verificare se il servizio è "
|
||||
"in esecuzione prima di assegnandolo all'utente. (utilizzare il formato HOST: "
|
||||
"PORT)"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:103 transports/RDP/TSRDPTransport.py:75
|
||||
#: transports/TSNX/TSNXTransport.py:103
|
||||
msgid "Must use HOST:PORT in Tunnel Server Field"
|
||||
msgstr "Necessario utilizzare HOST: porta nel campo Server di Tunnel"
|
||||
|
||||
#: transports/NX/__init__.py:45 transports/TSNX/__init__.py:44
|
||||
msgid "NX Protocol"
|
||||
msgstr "Protocollo NX"
|
||||
@ -1481,35 +1590,6 @@ msgstr "Trasporto di RDP (con tunnel)"
|
||||
msgid "RDP Transport for tunneled connection"
|
||||
msgstr "Trasporto di RDP per connessione con tunnel"
|
||||
|
||||
#: transports/RDP/TSRDPTransport.py:59 transports/TSNX/TSNXTransport.py:62
|
||||
msgid "Tunnel server"
|
||||
msgstr "Server per il tunnel"
|
||||
|
||||
#: transports/RDP/TSRDPTransport.py:59 transports/TSNX/TSNXTransport.py:62
|
||||
msgid ""
|
||||
"IP or Hostname of tunnel server send to client device (\"public\" ip) and "
|
||||
"port. (use HOST:PORT format)"
|
||||
msgstr ""
|
||||
"IP o l'Hostname del server per il tunnel invia a dispositivo client (ip "
|
||||
"\"pubblico\") e porto. (utilizzare il formato HOST: PORT)"
|
||||
|
||||
#: transports/RDP/TSRDPTransport.py:60 transports/TSNX/TSNXTransport.py:63
|
||||
msgid "Tunnel host check"
|
||||
msgstr "Controllo host tunnel"
|
||||
|
||||
#: transports/RDP/TSRDPTransport.py:60 transports/TSNX/TSNXTransport.py:63
|
||||
msgid ""
|
||||
"If not empty, this server will be used to check if service is running before "
|
||||
"assigning it to user. (use HOST:PORT format)"
|
||||
msgstr ""
|
||||
"Se non vuota, questo server verrà utilizzato per verificare se il servizio è "
|
||||
"in esecuzione prima di assegnandolo all'utente. (utilizzare il formato HOST: "
|
||||
"PORT)"
|
||||
|
||||
#: transports/RDP/TSRDPTransport.py:75 transports/TSNX/TSNXTransport.py:103
|
||||
msgid "Must use HOST:PORT in Tunnel Server Field"
|
||||
msgstr "Necessario utilizzare HOST: porta nel campo Server di Tunnel"
|
||||
|
||||
#: transports/RDP/__init__.py:39
|
||||
msgid "Remote Desktop Protocol"
|
||||
msgstr "Remote Desktop Protocol"
|
||||
@ -1527,14 +1607,6 @@ msgstr "Si può ottenere da"
|
||||
msgid "CoRD Website"
|
||||
msgstr "Sito Web di cavo"
|
||||
|
||||
#: transports/TSNX/TSNXTransport.py:55
|
||||
msgid "NX Transport (tunneled)"
|
||||
msgstr "Trasporto NX (con tunnel)"
|
||||
|
||||
#: transports/TSNX/TSNXTransport.py:57
|
||||
msgid "NX Transport for tunneled connection"
|
||||
msgstr "Trasporto di NX per connessione con tunnel"
|
||||
|
||||
#: web/errors.py:60
|
||||
msgid "Unknown error"
|
||||
msgstr "Errore sconosciuto"
|
||||
@ -1598,6 +1670,10 @@ msgstr ""
|
||||
msgid "Authenticator do not provides information"
|
||||
msgstr "Autenticatore do non fornisce informazioni"
|
||||
|
||||
#: web/forms/LoginForm.py:50
|
||||
msgid "Select authenticator"
|
||||
msgstr "Selezionare autenticatore"
|
||||
|
||||
#: web/forms/LoginForm.py:54
|
||||
msgid "authenticator"
|
||||
msgstr "autenticatore"
|
||||
|
Binary file not shown.
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-11-14 11:59+0100\n"
|
||||
"POT-Creation-Date: 2013-11-17 04:21+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -18,70 +18,146 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: static/adm/js/api.js:23
|
||||
msgid "Success on \""
|
||||
msgstr "Successo su\""
|
||||
|
||||
#: static/adm/js/api.js:24
|
||||
msgid "Received "
|
||||
msgstr "Ricevuto "
|
||||
|
||||
#: static/adm/js/gui.js:17
|
||||
msgid "Display _MENU_ records per page"
|
||||
msgstr "Visualizzare _MENU_ record per pagina"
|
||||
|
||||
#: static/adm/js/gui.js:18
|
||||
msgid "Nothing found - sorry"
|
||||
msgstr "Trovato nulla - ci dispiace"
|
||||
|
||||
#: static/adm/js/gui.js:19
|
||||
msgid "Showing record _START_ to _END_ of _TOTAL_"
|
||||
msgstr "Risultati record _START_ per _END_ di _TOTAL_"
|
||||
|
||||
#: static/adm/js/gui.js:20
|
||||
msgid "Showing 0 to 0 of 0 records"
|
||||
msgstr "Mostrando 0-0 di 0 record"
|
||||
|
||||
#: static/adm/js/gui.js:21
|
||||
msgid "(filtered from _MAX_ total records)"
|
||||
msgstr "(filtrato da record totale _MAX_)"
|
||||
|
||||
#: static/adm/js/gui.js:22
|
||||
msgid "Please wait, processing"
|
||||
msgstr "Attendere prego, elaborazione"
|
||||
|
||||
#: static/adm/js/gui.js:23
|
||||
msgid "Search"
|
||||
msgstr "Ricerca"
|
||||
|
||||
#: static/adm/js/gui.js:26
|
||||
msgid "First"
|
||||
msgstr "Primo"
|
||||
|
||||
#: static/adm/js/gui.js:27
|
||||
msgid "Last"
|
||||
msgstr "Ultima"
|
||||
|
||||
#: static/adm/js/gui.js:28
|
||||
msgid "Next"
|
||||
msgstr "Prossimo"
|
||||
|
||||
#: static/adm/js/gui.js:29
|
||||
msgid "Previous"
|
||||
msgstr "Precedente"
|
||||
|
||||
#: static/adm/js/gui.js:83
|
||||
msgid "Connectivity"
|
||||
msgstr "Connettività"
|
||||
|
||||
#: static/adm/js/gui.js:88
|
||||
msgid "Deployed services"
|
||||
msgstr "Servizi distribuiti"
|
||||
|
||||
#: static/adm/js/gui.js:181
|
||||
#: static/adm/js/gui-elements.js:7
|
||||
msgid "Service Providers"
|
||||
msgstr "Fornitori di servizi"
|
||||
|
||||
#: static/adm/js/gui.js:191
|
||||
msgid "Authenticators"
|
||||
msgstr "Autenticatori"
|
||||
#: static/adm/js/gui-elements.js:81
|
||||
msgid "Connectivity"
|
||||
msgstr "Connettività"
|
||||
|
||||
#: static/adm/js/gui.js:18
|
||||
msgid "_MENU_ records per page"
|
||||
msgstr "Record _MENU_ per pagina"
|
||||
|
||||
#: static/adm/js/gui.js:19
|
||||
msgid "Empty"
|
||||
msgstr "Vuoto"
|
||||
|
||||
#: static/adm/js/gui.js:20
|
||||
msgid "Records _START_ to _END_ of _TOTAL_"
|
||||
msgstr "Registra _START_ a _END_ di _TOTAL_"
|
||||
|
||||
#: static/adm/js/gui.js:21
|
||||
msgid "No records"
|
||||
msgstr "Nessun record"
|
||||
|
||||
#: static/adm/js/gui.js:22
|
||||
msgid "(filtered from _MAX_ total records)"
|
||||
msgstr "(filtrato da record totale _MAX_)"
|
||||
|
||||
#: static/adm/js/gui.js:23
|
||||
msgid "Please wait, processing"
|
||||
msgstr "Attendere prego, elaborazione"
|
||||
|
||||
#: static/adm/js/gui.js:24
|
||||
msgid "Filter"
|
||||
msgstr "Filtro"
|
||||
|
||||
#: static/adm/js/gui.js:27
|
||||
msgid "First"
|
||||
msgstr "Primo"
|
||||
|
||||
#: static/adm/js/gui.js:28
|
||||
msgid "Last"
|
||||
msgstr "Ultima"
|
||||
|
||||
#: static/adm/js/gui.js:29
|
||||
msgid "Next"
|
||||
msgstr "Prossimo"
|
||||
|
||||
#: static/adm/js/gui.js:30
|
||||
msgid "Previous"
|
||||
msgstr "Precedente"
|
||||
|
||||
#: static/adm/js/gui.js:80
|
||||
msgid "Deployed services"
|
||||
msgstr "Servizi distribuiti"
|
||||
|
||||
#: static/adm/js/gui.js:349
|
||||
msgid "Edit"
|
||||
msgstr "Modifica"
|
||||
|
||||
#: static/adm/js/gui.js:358
|
||||
msgid "Delete"
|
||||
msgstr "Eliminare"
|
||||
|
||||
#: static/adm/js/gui.js:367
|
||||
msgid "Refresh"
|
||||
msgstr "Aggiornamento"
|
||||
|
||||
#: static/adm/js/strftime.js:30
|
||||
msgid "Sunday"
|
||||
msgstr "Domenica"
|
||||
|
||||
#: static/adm/js/strftime.js:30
|
||||
msgid "Monday"
|
||||
msgstr "Lunedì"
|
||||
|
||||
#: static/adm/js/strftime.js:30
|
||||
msgid "Tuesday"
|
||||
msgstr "Martedì"
|
||||
|
||||
#: static/adm/js/strftime.js:31
|
||||
msgid "Wednesday"
|
||||
msgstr "Mercoledì"
|
||||
|
||||
#: static/adm/js/strftime.js:31
|
||||
msgid "Thursday"
|
||||
msgstr "Giovedì"
|
||||
|
||||
#: static/adm/js/strftime.js:31
|
||||
msgid "Friday"
|
||||
msgstr "Venerdì"
|
||||
|
||||
#: static/adm/js/strftime.js:31
|
||||
msgid "Saturday"
|
||||
msgstr "Sabato"
|
||||
|
||||
#: static/adm/js/strftime.js:32
|
||||
msgid "January"
|
||||
msgstr "Gennaio"
|
||||
|
||||
#: static/adm/js/strftime.js:32
|
||||
msgid "February"
|
||||
msgstr "Febbraio"
|
||||
|
||||
#: static/adm/js/strftime.js:32
|
||||
msgid "March"
|
||||
msgstr "Marzo"
|
||||
|
||||
#: static/adm/js/strftime.js:33
|
||||
msgid "April"
|
||||
msgstr "Aprile"
|
||||
|
||||
#: static/adm/js/strftime.js:33
|
||||
msgid "May"
|
||||
msgstr "Maggio"
|
||||
|
||||
#: static/adm/js/strftime.js:33
|
||||
msgid "June"
|
||||
msgstr "Giugno"
|
||||
|
||||
#: static/adm/js/strftime.js:33
|
||||
msgid "July"
|
||||
msgstr "Luglio"
|
||||
|
||||
#: static/adm/js/strftime.js:34
|
||||
msgid "August"
|
||||
msgstr "Agosto"
|
||||
|
||||
#: static/adm/js/strftime.js:34
|
||||
msgid "September"
|
||||
msgstr "Settembre"
|
||||
|
||||
#: static/adm/js/strftime.js:34
|
||||
msgid "October"
|
||||
msgstr "Ottobre"
|
||||
|
||||
#: static/adm/js/strftime.js:34
|
||||
msgid "November"
|
||||
msgstr "Novembre"
|
||||
|
||||
#: static/adm/js/strftime.js:35
|
||||
msgid "December"
|
||||
msgstr "Dicembre"
|
||||
|
Binary file not shown.
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-11-14 11:59+0100\n"
|
||||
"POT-Creation-Date: 2013-11-17 04:20+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -18,35 +18,86 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: REST/methods/authenticators.py:72
|
||||
#: REST/methods/authenticators.py:73
|
||||
msgid "Current authenticators"
|
||||
msgstr "Autenticadores atuais"
|
||||
|
||||
#: REST/methods/authenticators.py:74 REST/methods/providers.py:71
|
||||
#: REST/methods/authenticators.py:75 REST/methods/networks.py:68
|
||||
#: REST/methods/osmanagers.py:71 REST/methods/providers.py:69
|
||||
#: REST/methods/transports.py:71 REST/methods/users.py:77
|
||||
msgid "Name"
|
||||
msgstr "Nome"
|
||||
|
||||
#: REST/methods/authenticators.py:75 REST/methods/providers.py:72
|
||||
#: REST/methods/authenticators.py:76 REST/methods/osmanagers.py:72
|
||||
#: REST/methods/providers.py:70 REST/methods/transports.py:72
|
||||
#: REST/methods/users.py:78
|
||||
msgid "Comments"
|
||||
msgstr "Comentários"
|
||||
|
||||
#: REST/methods/authenticators.py:76
|
||||
#: REST/methods/authenticators.py:77
|
||||
msgid "Users"
|
||||
msgstr "Usuários"
|
||||
|
||||
#: REST/methods/providers.py:69
|
||||
#: REST/methods/networks.py:66
|
||||
msgid "Current Networks"
|
||||
msgstr "Redes atuais"
|
||||
|
||||
#: REST/methods/networks.py:69 templates/uds/index.html:79
|
||||
#: templates/uds/html5/index.html:127
|
||||
msgid "Networks"
|
||||
msgstr "Redes"
|
||||
|
||||
#: REST/methods/networks.py:70 REST/methods/osmanagers.py:73
|
||||
#: REST/methods/transports.py:73
|
||||
msgid "Used by"
|
||||
msgstr "Usado por"
|
||||
|
||||
#: REST/methods/osmanagers.py:69
|
||||
msgid "Current OS Managers"
|
||||
msgstr "Atual OS gerentes"
|
||||
|
||||
#: REST/methods/providers.py:67
|
||||
msgid "Current service providers"
|
||||
msgstr "Provedores de serviço atual"
|
||||
|
||||
#: REST/methods/providers.py:73 templates/uds/index.html:51
|
||||
#: REST/methods/providers.py:71 templates/uds/index.html:51
|
||||
#: templates/uds/html5/index.html:68
|
||||
msgid "Services"
|
||||
msgstr "Serviços"
|
||||
|
||||
#: admin/views.py:53 admin/views.py:61 web/views.py:422
|
||||
#: REST/methods/transports.py:69
|
||||
msgid "Current Transports"
|
||||
msgstr "Atuais transportes"
|
||||
|
||||
#: REST/methods/users.py:70
|
||||
#, python-brace-format
|
||||
msgid "Users of {0}"
|
||||
msgstr "Usuários de {0}"
|
||||
|
||||
#: REST/methods/users.py:72
|
||||
msgid "Current users"
|
||||
msgstr "Usuários atuais"
|
||||
|
||||
#: REST/methods/users.py:76
|
||||
msgid "User Id"
|
||||
msgstr "Id de usuário"
|
||||
|
||||
#: REST/methods/users.py:79
|
||||
msgid "state"
|
||||
msgstr "Estado"
|
||||
|
||||
#: REST/methods/users.py:80
|
||||
msgid "Last access"
|
||||
msgstr "Último acesso"
|
||||
|
||||
#: admin/views.py:55 admin/views.py:63 admin/views.py:76 web/views.py:422
|
||||
msgid "Forbidden"
|
||||
msgstr "Proibido"
|
||||
|
||||
#: admin/views.py:69
|
||||
msgid "requested a template that do not exists"
|
||||
msgstr "solicitado um modelo que não existe"
|
||||
|
||||
#: auths/IP/Authenticator.py:48 auths/IP/Authenticator.py:50
|
||||
msgid "IP Authenticator"
|
||||
msgstr "Autenticador IP"
|
||||
@ -136,8 +187,9 @@ msgstr "Nome de usuário com privilégios de leitura da base selecionada"
|
||||
#: osmanagers/WindowsOsManager/WinRandomPassOsManager.py:30
|
||||
#: services/OVirt/OVirtProvider.py:94 services/Sample/SampleService.py:131
|
||||
#: transports/HTML5RDP/HTML5RDP.py:65 transports/NX/NXTransport.py:62
|
||||
#: transports/RDP/RDPTransport.py:60 transports/RDP/TSRDPTransport.py:64
|
||||
#: transports/TSNX/TSNXTransport.py:67 web/forms/LoginForm.py:70
|
||||
#: transports/NX/TSNXTransport.py:67 transports/RDP/RDPTransport.py:60
|
||||
#: transports/RDP/TSRDPTransport.py:64 transports/TSNX/TSNXTransport.py:67
|
||||
#: web/forms/LoginForm.py:70
|
||||
msgid "Password"
|
||||
msgstr "Senha"
|
||||
|
||||
@ -206,9 +258,9 @@ msgstr "Autenticador de LDAP de expressões regular"
|
||||
|
||||
#: auths/RegexLdap/Authenticator.py:72 auths/SimpleLDAP/Authenticator.py:73
|
||||
#: services/OVirt/OVirtProvider.py:93 transports/HTML5RDP/HTML5RDP.py:64
|
||||
#: transports/NX/NXTransport.py:61 transports/RDP/RDPTransport.py:59
|
||||
#: transports/RDP/TSRDPTransport.py:63 transports/TSNX/TSNXTransport.py:66
|
||||
#: web/forms/LoginForm.py:69
|
||||
#: transports/NX/NXTransport.py:61 transports/NX/TSNXTransport.py:66
|
||||
#: transports/RDP/RDPTransport.py:59 transports/RDP/TSRDPTransport.py:63
|
||||
#: transports/TSNX/TSNXTransport.py:66 web/forms/LoginForm.py:69
|
||||
msgid "Username"
|
||||
msgstr "Nome de usuário"
|
||||
|
||||
@ -1061,10 +1113,6 @@ msgstr "e reinicie o navegador"
|
||||
msgid "Ip"
|
||||
msgstr "IP"
|
||||
|
||||
#: templates/uds/index.html:79 templates/uds/html5/index.html:127
|
||||
msgid "Networks"
|
||||
msgstr "Redes"
|
||||
|
||||
#: templates/uds/index.html:80 templates/uds/html5/index.html:128
|
||||
msgid "Transports"
|
||||
msgstr "Transportes"
|
||||
@ -1121,35 +1169,44 @@ msgstr ""
|
||||
msgid "toggle navigation"
|
||||
msgstr "navegação toggle"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:17
|
||||
#: templates/uds/admin/snippets/navbar.html:18
|
||||
msgid "Service providers"
|
||||
msgstr "Prestadores de serviços"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:18
|
||||
#: templates/uds/admin/snippets/navbar.html:19
|
||||
#: templates/uds/admin/tmpl/authenticators.html:4
|
||||
msgid "Authenticators"
|
||||
msgstr "Autenticadores"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:20
|
||||
#: templates/uds/admin/snippets/navbar.html:21
|
||||
msgid "Connectivity"
|
||||
msgstr "Conectividade"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:21
|
||||
#: templates/uds/admin/snippets/navbar.html:22
|
||||
msgid "Deployed services"
|
||||
msgstr "Serviços implantados"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:25
|
||||
#: templates/uds/admin/snippets/navbar.html:26
|
||||
msgid "Configuration"
|
||||
msgstr "Configuração"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:57
|
||||
#: templates/uds/admin/snippets/navbar.html:56
|
||||
msgid "Exit dashboard"
|
||||
msgstr "Painel de saída"
|
||||
|
||||
#: templates/uds/admin/snippets/navbar.html:58
|
||||
#: templates/uds/admin/snippets/navbar.html:57
|
||||
#: templates/uds/html5/snippets/navbar.html:47
|
||||
msgid "logout"
|
||||
msgstr "logout"
|
||||
|
||||
#: templates/uds/admin/tmpl/authenticators.html:4
|
||||
msgid "administration of authenticators"
|
||||
msgstr "Administração de autenticadores"
|
||||
|
||||
#: templates/uds/admin/tmpl/dashboard.html:4
|
||||
msgid "overview"
|
||||
msgstr "Visão geral"
|
||||
|
||||
#: templates/uds/html5/detectJava.html:4
|
||||
msgid "Login redirection to UDS"
|
||||
msgstr "Redirecionamento de login para UDS"
|
||||
@ -1241,7 +1298,7 @@ msgstr "Sobre"
|
||||
msgid "Dashboard"
|
||||
msgstr "Painel de controle"
|
||||
|
||||
#: templates/uds/html5/templates/base.html:51
|
||||
#: templates/uds/html5/templates/base.html:52
|
||||
msgid ""
|
||||
"Your browser is supported only partially. Please, upgrade it to a modern "
|
||||
"html5 browser like Firefox, Chrome, Opera, ... (IE must be 10 or better)"
|
||||
@ -1279,27 +1336,27 @@ msgstr ""
|
||||
"accesible de usuários"
|
||||
|
||||
#: transports/HTML5RDP/HTML5RDP.py:63 transports/NX/NXTransport.py:60
|
||||
#: transports/RDP/RDPTransport.py:58 transports/RDP/TSRDPTransport.py:62
|
||||
#: transports/TSNX/TSNXTransport.py:65
|
||||
#: transports/NX/TSNXTransport.py:65 transports/RDP/RDPTransport.py:58
|
||||
#: transports/RDP/TSRDPTransport.py:62 transports/TSNX/TSNXTransport.py:65
|
||||
msgid "Empty creds"
|
||||
msgstr "Creds vazio"
|
||||
|
||||
#: transports/HTML5RDP/HTML5RDP.py:63 transports/NX/NXTransport.py:60
|
||||
#: transports/RDP/RDPTransport.py:58 transports/RDP/TSRDPTransport.py:62
|
||||
#: transports/TSNX/TSNXTransport.py:65
|
||||
#: transports/NX/TSNXTransport.py:65 transports/RDP/RDPTransport.py:58
|
||||
#: transports/RDP/TSRDPTransport.py:62 transports/TSNX/TSNXTransport.py:65
|
||||
msgid "If checked, the credentials used to connect will be emtpy"
|
||||
msgstr "Se marcada, as credenciais usadas para se conectar será vazio"
|
||||
|
||||
#: transports/HTML5RDP/HTML5RDP.py:64 transports/NX/NXTransport.py:61
|
||||
#: transports/RDP/RDPTransport.py:59 transports/RDP/TSRDPTransport.py:63
|
||||
#: transports/TSNX/TSNXTransport.py:66
|
||||
#: transports/NX/TSNXTransport.py:66 transports/RDP/RDPTransport.py:59
|
||||
#: transports/RDP/TSRDPTransport.py:63 transports/TSNX/TSNXTransport.py:66
|
||||
msgid "If not empty, this username will be always used as credential"
|
||||
msgstr ""
|
||||
"Se não for vazio, este nome de utilizador será sempre usado como credencial"
|
||||
|
||||
#: transports/HTML5RDP/HTML5RDP.py:65 transports/NX/NXTransport.py:62
|
||||
#: transports/RDP/RDPTransport.py:60 transports/RDP/TSRDPTransport.py:64
|
||||
#: transports/TSNX/TSNXTransport.py:67
|
||||
#: transports/NX/TSNXTransport.py:67 transports/RDP/RDPTransport.py:60
|
||||
#: transports/RDP/TSRDPTransport.py:64 transports/TSNX/TSNXTransport.py:67
|
||||
msgid "If not empty, this password will be always used as credential"
|
||||
msgstr "Se não for vazio, essa senha será sempre usada como credencial"
|
||||
|
||||
@ -1352,46 +1409,97 @@ msgstr "Transporte NX (direto)"
|
||||
msgid "NX Transport for direct connection"
|
||||
msgstr "Transporte de NX para conexão direta"
|
||||
|
||||
#: transports/NX/NXTransport.py:63 transports/TSNX/TSNXTransport.py:68
|
||||
#: transports/NX/NXTransport.py:63 transports/NX/TSNXTransport.py:68
|
||||
#: transports/TSNX/TSNXTransport.py:68
|
||||
msgid "Listen port"
|
||||
msgstr "Porta"
|
||||
|
||||
#: transports/NX/NXTransport.py:63 transports/TSNX/TSNXTransport.py:68
|
||||
#: transports/NX/NXTransport.py:63 transports/NX/TSNXTransport.py:68
|
||||
#: transports/TSNX/TSNXTransport.py:68
|
||||
msgid "Listening port of NX (ssh) at client machine"
|
||||
msgstr "Ouvindo a porta do NX (ssh) na máquina cliente"
|
||||
|
||||
#: transports/NX/NXTransport.py:64 transports/TSNX/TSNXTransport.py:69
|
||||
#: transports/NX/NXTransport.py:64 transports/NX/TSNXTransport.py:69
|
||||
#: transports/TSNX/TSNXTransport.py:69
|
||||
msgid "Connection"
|
||||
msgstr "Conexão"
|
||||
|
||||
#: transports/NX/NXTransport.py:64 transports/TSNX/TSNXTransport.py:69
|
||||
#: transports/NX/NXTransport.py:64 transports/NX/TSNXTransport.py:69
|
||||
#: transports/TSNX/TSNXTransport.py:69
|
||||
msgid "Connection speed for this transport (quality)"
|
||||
msgstr "Velocidade de conexão para esse transporte (qualidade)"
|
||||
|
||||
#: transports/NX/NXTransport.py:71 transports/TSNX/TSNXTransport.py:76
|
||||
#: transports/NX/NXTransport.py:71 transports/NX/TSNXTransport.py:76
|
||||
#: transports/TSNX/TSNXTransport.py:76
|
||||
msgid "Session"
|
||||
msgstr "Sessão"
|
||||
|
||||
#: transports/NX/NXTransport.py:71 transports/TSNX/TSNXTransport.py:76
|
||||
#: transports/NX/NXTransport.py:71 transports/NX/TSNXTransport.py:76
|
||||
#: transports/TSNX/TSNXTransport.py:76
|
||||
msgid "Desktop session"
|
||||
msgstr "Sessão de desktop"
|
||||
|
||||
#: transports/NX/NXTransport.py:76 transports/TSNX/TSNXTransport.py:81
|
||||
#: transports/NX/NXTransport.py:76 transports/NX/TSNXTransport.py:81
|
||||
#: transports/TSNX/TSNXTransport.py:81
|
||||
msgid "Disk Cache"
|
||||
msgstr "Cache de disco"
|
||||
|
||||
#: transports/NX/NXTransport.py:76 transports/TSNX/TSNXTransport.py:81
|
||||
#: transports/NX/NXTransport.py:76 transports/NX/TSNXTransport.py:81
|
||||
#: transports/TSNX/TSNXTransport.py:81
|
||||
msgid "Cache size en Mb stored at disk"
|
||||
msgstr "Pt-br tamanho que MB armazenado no disco em cache"
|
||||
|
||||
#: transports/NX/NXTransport.py:84 transports/TSNX/TSNXTransport.py:89
|
||||
#: transports/NX/NXTransport.py:84 transports/NX/TSNXTransport.py:89
|
||||
#: transports/TSNX/TSNXTransport.py:89
|
||||
msgid "Memory Cache"
|
||||
msgstr "Memória Cache"
|
||||
|
||||
#: transports/NX/NXTransport.py:84 transports/TSNX/TSNXTransport.py:89
|
||||
#: transports/NX/NXTransport.py:84 transports/NX/TSNXTransport.py:89
|
||||
#: transports/TSNX/TSNXTransport.py:89
|
||||
msgid "Cache size en Mb keept at memory"
|
||||
msgstr "Cache tamanho en Mb keept na memória"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:55 transports/TSNX/TSNXTransport.py:55
|
||||
msgid "NX Transport (tunneled)"
|
||||
msgstr "Transporte NX (um túnel)"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:57 transports/TSNX/TSNXTransport.py:57
|
||||
msgid "NX Transport for tunneled connection"
|
||||
msgstr "Transporte de NX para ligação em túnel"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:62 transports/RDP/TSRDPTransport.py:59
|
||||
#: transports/TSNX/TSNXTransport.py:62
|
||||
msgid "Tunnel server"
|
||||
msgstr "Servidor de túnel"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:62 transports/RDP/TSRDPTransport.py:59
|
||||
#: transports/TSNX/TSNXTransport.py:62
|
||||
msgid ""
|
||||
"IP or Hostname of tunnel server send to client device (\"public\" ip) and "
|
||||
"port. (use HOST:PORT format)"
|
||||
msgstr ""
|
||||
"IP ou nome do host do servidor de túnel enviar para dispositivo cliente (ip "
|
||||
"\"público\") e Port. (usar formato HOST: PORT)"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:63 transports/RDP/TSRDPTransport.py:60
|
||||
#: transports/TSNX/TSNXTransport.py:63
|
||||
msgid "Tunnel host check"
|
||||
msgstr "Seleção de anfitrião do túnel"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:63 transports/RDP/TSRDPTransport.py:60
|
||||
#: transports/TSNX/TSNXTransport.py:63
|
||||
msgid ""
|
||||
"If not empty, this server will be used to check if service is running before "
|
||||
"assigning it to user. (use HOST:PORT format)"
|
||||
msgstr ""
|
||||
"Se não for vazio, este servidor será usado para verificar se o serviço está "
|
||||
"sendo executado antes atribuí-la ao usuário. (usar formato HOST: PORT)"
|
||||
|
||||
#: transports/NX/TSNXTransport.py:103 transports/RDP/TSRDPTransport.py:75
|
||||
#: transports/TSNX/TSNXTransport.py:103
|
||||
msgid "Must use HOST:PORT in Tunnel Server Field"
|
||||
msgstr "Deve usar HOST: PORT no campo servidor de túnel"
|
||||
|
||||
#: transports/NX/__init__.py:45 transports/TSNX/__init__.py:44
|
||||
msgid "NX Protocol"
|
||||
msgstr "Protocolo NX"
|
||||
@ -1481,34 +1589,6 @@ msgstr "Transporte de RDP (um túnel)"
|
||||
msgid "RDP Transport for tunneled connection"
|
||||
msgstr "Transporte de RDP para ligação em túnel"
|
||||
|
||||
#: transports/RDP/TSRDPTransport.py:59 transports/TSNX/TSNXTransport.py:62
|
||||
msgid "Tunnel server"
|
||||
msgstr "Servidor de túnel"
|
||||
|
||||
#: transports/RDP/TSRDPTransport.py:59 transports/TSNX/TSNXTransport.py:62
|
||||
msgid ""
|
||||
"IP or Hostname of tunnel server send to client device (\"public\" ip) and "
|
||||
"port. (use HOST:PORT format)"
|
||||
msgstr ""
|
||||
"IP ou nome do host do servidor de túnel enviar para dispositivo cliente (ip "
|
||||
"\"público\") e Port. (usar formato HOST: PORT)"
|
||||
|
||||
#: transports/RDP/TSRDPTransport.py:60 transports/TSNX/TSNXTransport.py:63
|
||||
msgid "Tunnel host check"
|
||||
msgstr "Seleção de anfitrião do túnel"
|
||||
|
||||
#: transports/RDP/TSRDPTransport.py:60 transports/TSNX/TSNXTransport.py:63
|
||||
msgid ""
|
||||
"If not empty, this server will be used to check if service is running before "
|
||||
"assigning it to user. (use HOST:PORT format)"
|
||||
msgstr ""
|
||||
"Se não for vazio, este servidor será usado para verificar se o serviço está "
|
||||
"sendo executado antes atribuí-la ao usuário. (usar formato HOST: PORT)"
|
||||
|
||||
#: transports/RDP/TSRDPTransport.py:75 transports/TSNX/TSNXTransport.py:103
|
||||
msgid "Must use HOST:PORT in Tunnel Server Field"
|
||||
msgstr "Deve usar HOST: PORT no campo servidor de túnel"
|
||||
|
||||
#: transports/RDP/__init__.py:39
|
||||
msgid "Remote Desktop Protocol"
|
||||
msgstr "Protocolo de área de trabalho remoto"
|
||||
@ -1525,14 +1605,6 @@ msgstr "Você pode obtê-lo de"
|
||||
msgid "CoRD Website"
|
||||
msgstr "Site medula"
|
||||
|
||||
#: transports/TSNX/TSNXTransport.py:55
|
||||
msgid "NX Transport (tunneled)"
|
||||
msgstr "Transporte NX (um túnel)"
|
||||
|
||||
#: transports/TSNX/TSNXTransport.py:57
|
||||
msgid "NX Transport for tunneled connection"
|
||||
msgstr "Transporte de NX para ligação em túnel"
|
||||
|
||||
#: web/errors.py:60
|
||||
msgid "Unknown error"
|
||||
msgstr "Erro desconhecido"
|
||||
@ -1595,6 +1667,10 @@ msgstr ""
|
||||
msgid "Authenticator do not provides information"
|
||||
msgstr "Autenticador que não fornece informações"
|
||||
|
||||
#: web/forms/LoginForm.py:50
|
||||
msgid "Select authenticator"
|
||||
msgstr "Selecione o autenticador"
|
||||
|
||||
#: web/forms/LoginForm.py:54
|
||||
msgid "authenticator"
|
||||
msgstr "autenticador"
|
||||
|
Binary file not shown.
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-11-14 11:59+0100\n"
|
||||
"POT-Creation-Date: 2013-11-17 04:21+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -18,70 +18,146 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: static/adm/js/api.js:23
|
||||
msgid "Success on \""
|
||||
msgstr "Sucesso na\""
|
||||
|
||||
#: static/adm/js/api.js:24
|
||||
msgid "Received "
|
||||
msgstr "Recebido "
|
||||
|
||||
#: static/adm/js/gui.js:17
|
||||
msgid "Display _MENU_ records per page"
|
||||
msgstr "Exibir _MENU_ de registros por página"
|
||||
|
||||
#: static/adm/js/gui.js:18
|
||||
msgid "Nothing found - sorry"
|
||||
msgstr "Nada foi encontrado - Desculpe"
|
||||
|
||||
#: static/adm/js/gui.js:19
|
||||
msgid "Showing record _START_ to _END_ of _TOTAL_"
|
||||
msgstr "Mostrando registro _START_ para _END_ de _TOTAL_"
|
||||
|
||||
#: static/adm/js/gui.js:20
|
||||
msgid "Showing 0 to 0 of 0 records"
|
||||
msgstr "Mostrando 0 a 0 de 0 registros"
|
||||
|
||||
#: static/adm/js/gui.js:21
|
||||
msgid "(filtered from _MAX_ total records)"
|
||||
msgstr "(filtrada de registros total de _MAX_)"
|
||||
|
||||
#: static/adm/js/gui.js:22
|
||||
msgid "Please wait, processing"
|
||||
msgstr "Aguarde, processamento"
|
||||
|
||||
#: static/adm/js/gui.js:23
|
||||
msgid "Search"
|
||||
msgstr "Pesquisa"
|
||||
|
||||
#: static/adm/js/gui.js:26
|
||||
msgid "First"
|
||||
msgstr "Primeiro"
|
||||
|
||||
#: static/adm/js/gui.js:27
|
||||
msgid "Last"
|
||||
msgstr "Última"
|
||||
|
||||
#: static/adm/js/gui.js:28
|
||||
msgid "Next"
|
||||
msgstr "Próxima"
|
||||
|
||||
#: static/adm/js/gui.js:29
|
||||
msgid "Previous"
|
||||
msgstr "Anterior"
|
||||
|
||||
#: static/adm/js/gui.js:83
|
||||
msgid "Connectivity"
|
||||
msgstr "Conectividade"
|
||||
|
||||
#: static/adm/js/gui.js:88
|
||||
msgid "Deployed services"
|
||||
msgstr "Serviços implantados"
|
||||
|
||||
#: static/adm/js/gui.js:181
|
||||
#: static/adm/js/gui-elements.js:7
|
||||
msgid "Service Providers"
|
||||
msgstr "Prestadores de serviços"
|
||||
|
||||
#: static/adm/js/gui.js:191
|
||||
msgid "Authenticators"
|
||||
msgstr "Autenticadores"
|
||||
#: static/adm/js/gui-elements.js:81
|
||||
msgid "Connectivity"
|
||||
msgstr "Conectividade"
|
||||
|
||||
#: static/adm/js/gui.js:18
|
||||
msgid "_MENU_ records per page"
|
||||
msgstr "Registros _MENU_ por página"
|
||||
|
||||
#: static/adm/js/gui.js:19
|
||||
msgid "Empty"
|
||||
msgstr "Vazio"
|
||||
|
||||
#: static/adm/js/gui.js:20
|
||||
msgid "Records _START_ to _END_ of _TOTAL_"
|
||||
msgstr "Registros _START_ para _END_ de _TOTAL_"
|
||||
|
||||
#: static/adm/js/gui.js:21
|
||||
msgid "No records"
|
||||
msgstr "Não há registros"
|
||||
|
||||
#: static/adm/js/gui.js:22
|
||||
msgid "(filtered from _MAX_ total records)"
|
||||
msgstr "(filtrada de registros total de _MAX_)"
|
||||
|
||||
#: static/adm/js/gui.js:23
|
||||
msgid "Please wait, processing"
|
||||
msgstr "Aguarde, processamento"
|
||||
|
||||
#: static/adm/js/gui.js:24
|
||||
msgid "Filter"
|
||||
msgstr "Filtro"
|
||||
|
||||
#: static/adm/js/gui.js:27
|
||||
msgid "First"
|
||||
msgstr "Primeiro"
|
||||
|
||||
#: static/adm/js/gui.js:28
|
||||
msgid "Last"
|
||||
msgstr "Última"
|
||||
|
||||
#: static/adm/js/gui.js:29
|
||||
msgid "Next"
|
||||
msgstr "Próxima"
|
||||
|
||||
#: static/adm/js/gui.js:30
|
||||
msgid "Previous"
|
||||
msgstr "Anterior"
|
||||
|
||||
#: static/adm/js/gui.js:80
|
||||
msgid "Deployed services"
|
||||
msgstr "Serviços implantados"
|
||||
|
||||
#: static/adm/js/gui.js:349
|
||||
msgid "Edit"
|
||||
msgstr "Editar"
|
||||
|
||||
#: static/adm/js/gui.js:358
|
||||
msgid "Delete"
|
||||
msgstr "Excluir"
|
||||
|
||||
#: static/adm/js/gui.js:367
|
||||
msgid "Refresh"
|
||||
msgstr "Atualização"
|
||||
|
||||
#: static/adm/js/strftime.js:30
|
||||
msgid "Sunday"
|
||||
msgstr "Domingo"
|
||||
|
||||
#: static/adm/js/strftime.js:30
|
||||
msgid "Monday"
|
||||
msgstr "Segunda-feira"
|
||||
|
||||
#: static/adm/js/strftime.js:30
|
||||
msgid "Tuesday"
|
||||
msgstr "Terça-feira"
|
||||
|
||||
#: static/adm/js/strftime.js:31
|
||||
msgid "Wednesday"
|
||||
msgstr "Quarta-feira"
|
||||
|
||||
#: static/adm/js/strftime.js:31
|
||||
msgid "Thursday"
|
||||
msgstr "Quinta-feira"
|
||||
|
||||
#: static/adm/js/strftime.js:31
|
||||
msgid "Friday"
|
||||
msgstr "Sexta-feira"
|
||||
|
||||
#: static/adm/js/strftime.js:31
|
||||
msgid "Saturday"
|
||||
msgstr "Sábado"
|
||||
|
||||
#: static/adm/js/strftime.js:32
|
||||
msgid "January"
|
||||
msgstr "Janeiro de"
|
||||
|
||||
#: static/adm/js/strftime.js:32
|
||||
msgid "February"
|
||||
msgstr "Fevereiro"
|
||||
|
||||
#: static/adm/js/strftime.js:32
|
||||
msgid "March"
|
||||
msgstr "Março de"
|
||||
|
||||
#: static/adm/js/strftime.js:33
|
||||
msgid "April"
|
||||
msgstr "Abril"
|
||||
|
||||
#: static/adm/js/strftime.js:33
|
||||
msgid "May"
|
||||
msgstr "Maio"
|
||||
|
||||
#: static/adm/js/strftime.js:33
|
||||
msgid "June"
|
||||
msgstr "Junho de"
|
||||
|
||||
#: static/adm/js/strftime.js:33
|
||||
msgid "July"
|
||||
msgstr "Julho"
|
||||
|
||||
#: static/adm/js/strftime.js:34
|
||||
msgid "August"
|
||||
msgstr "Agosto"
|
||||
|
||||
#: static/adm/js/strftime.js:34
|
||||
msgid "September"
|
||||
msgstr "Setembro"
|
||||
|
||||
#: static/adm/js/strftime.js:34
|
||||
msgid "October"
|
||||
msgstr "Outubro"
|
||||
|
||||
#: static/adm/js/strftime.js:34
|
||||
msgid "November"
|
||||
msgstr "Novembro"
|
||||
|
||||
#: static/adm/js/strftime.js:35
|
||||
msgid "December"
|
||||
msgstr "Dezembro de"
|
||||
|
@ -1,140 +1,138 @@
|
||||
(function(api, $, undefined) {
|
||||
|
||||
// "public" methods
|
||||
api.doLog = function(data) {
|
||||
if( api.debug ) {
|
||||
try {
|
||||
console.log(data);
|
||||
} catch (e) {
|
||||
// nothing can be logged
|
||||
}
|
||||
// "public" methods
|
||||
api.doLog = function(data) {
|
||||
if (api.debug) {
|
||||
try {
|
||||
console.log(data);
|
||||
} catch (e) {
|
||||
// nothing can be logged
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
api.getJson = function (path, success_fnc) {
|
||||
url = api.url_for(path)
|
||||
api.doLog('Ajax GET Json for "' + url + '"');
|
||||
$.ajax({
|
||||
url: url,
|
||||
type: "GET",
|
||||
dataType: "json",
|
||||
success: function(data) {
|
||||
api.doLog('Success on "' + url + '".');
|
||||
api.doLog('Received ' + JSON.stringify(data));
|
||||
if( success_fnc != undefined ){
|
||||
api.doLog('Executing success method')
|
||||
success_fnc(data);
|
||||
}
|
||||
},
|
||||
beforeSend: function (request) {
|
||||
request.setRequestHeader(api.auth_header, api.token);
|
||||
},
|
||||
});
|
||||
};
|
||||
api.getJson = function(path, success_fnc) {
|
||||
url = api.url_for(path);
|
||||
api.doLog('Ajax GET Json for "' + url + '"');
|
||||
$.ajax({
|
||||
url : url,
|
||||
type : "GET",
|
||||
dataType : "json",
|
||||
success : function(data) {
|
||||
api.doLog('Success on "' + url + '".');
|
||||
api.doLog('Received ' + JSON.stringify(data));
|
||||
if (success_fnc !== undefined) {
|
||||
api.doLog('Executing success method');
|
||||
success_fnc(data);
|
||||
}
|
||||
},
|
||||
beforeSend : function(request) {
|
||||
request.setRequestHeader(api.auth_header, api.token);
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
// Public attributes
|
||||
api.debug = false;
|
||||
// Public attributes
|
||||
api.debug = false;
|
||||
}(window.api = window.api || {}, jQuery));
|
||||
|
||||
|
||||
// Great part of UDS REST api provides same methods.
|
||||
// We will take advantage of this and save a lot of nonsense, prone to failure code :-)
|
||||
// We will take advantage of this and save a lot of nonsense, prone to failure
|
||||
// code :-)
|
||||
|
||||
function BasicModelRest(path) {
|
||||
this.path = path || "";
|
||||
this.cached_types = undefined;
|
||||
this.cached_tableInfo = undefined;
|
||||
this.path = path || "";
|
||||
this.cached_types = undefined;
|
||||
this.cached_tableInfo = undefined;
|
||||
}
|
||||
|
||||
BasicModelRest.prototype = {
|
||||
get: function(options, alternate_url) {
|
||||
if( options == undefined ){
|
||||
options = {};
|
||||
}
|
||||
var path = alternate_url || this.path;
|
||||
if( options.id != undefined )
|
||||
path += '/' + options.id;
|
||||
api.getJson(path, options.success);
|
||||
},
|
||||
types: function(success_fnc, alternate_url) {
|
||||
// Cache types locally, will not change unless new broker version
|
||||
if( this.cached_types ) {
|
||||
if( success_fnc ) {
|
||||
success_fnc(this.cached_types);
|
||||
}
|
||||
}
|
||||
else {
|
||||
var $this = this;
|
||||
var path = this.path + '/types';
|
||||
if( alternate_url != undefined )
|
||||
path = alternate_url;
|
||||
api.getJson( path, function(data) {
|
||||
$this.cached_types = data;
|
||||
if( success_fnc ) {
|
||||
success_fnc($this.cached_types);
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
get : function(options, alternate_url) {
|
||||
if (options === undefined) {
|
||||
options = {};
|
||||
}
|
||||
var path = alternate_url || this.path;
|
||||
if (options.id !== undefined)
|
||||
path += '/' + options.id;
|
||||
api.getJson(path, options.success);
|
||||
},
|
||||
types : function(success_fnc, alternate_url) {
|
||||
// Cache types locally, will not change unless new broker version
|
||||
if (this.cached_types) {
|
||||
if (success_fnc) {
|
||||
success_fnc(this.cached_types);
|
||||
}
|
||||
} else {
|
||||
var $this = this;
|
||||
var path = this.path + '/types';
|
||||
if (alternate_url !== undefined)
|
||||
path = alternate_url;
|
||||
api.getJson(path, function(data) {
|
||||
$this.cached_types = data;
|
||||
if (success_fnc) {
|
||||
success_fnc($this.cached_types);
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
tableInfo: function(success_fnc, alternate_url) {
|
||||
// Cache types locally, will not change unless new broker version
|
||||
if( this.cached_tableInfo ) {
|
||||
if( success_fnc ) {
|
||||
success_fnc(this.cached_tableInfo);
|
||||
}
|
||||
return;
|
||||
}
|
||||
var $this = this;
|
||||
var path = this.path + '/tableinfo';
|
||||
if( alternate_url != undefined )
|
||||
path = alternate_url;
|
||||
tableInfo : function(success_fnc, alternate_url) {
|
||||
// Cache types locally, will not change unless new broker version
|
||||
if (this.cached_tableInfo) {
|
||||
if (success_fnc) {
|
||||
success_fnc(this.cached_tableInfo);
|
||||
}
|
||||
return;
|
||||
}
|
||||
var $this = this;
|
||||
var path = this.path + '/tableinfo';
|
||||
if (alternate_url !== undefined)
|
||||
path = alternate_url;
|
||||
|
||||
api.getJson( path, function(data) {
|
||||
$this.cached_tableInfo = data;
|
||||
if( success_fnc ) {
|
||||
success_fnc($this.cached_tableInfo);
|
||||
}
|
||||
});
|
||||
api.getJson(path, function(data) {
|
||||
$this.cached_tableInfo = data;
|
||||
if (success_fnc) {
|
||||
success_fnc($this.cached_tableInfo);
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
},
|
||||
|
||||
};
|
||||
|
||||
// For REST of type /auth/[id]/users, /services/[id]/users, ...
|
||||
function DetailModelRestApi(parentApi, path) {
|
||||
this.parentPath = parentApi.path;
|
||||
this.path = path;
|
||||
this.parentPath = parentApi.path;
|
||||
this.path = path;
|
||||
}
|
||||
|
||||
DetailModelRestApi.prototype = {
|
||||
// Generates a basic model with fixed methods for "detail" models
|
||||
detail: function(parentId) {
|
||||
var $this = this;
|
||||
var rest = new BasicModelRest(this.parentPath + '/' + parentId + '/' + this.path);
|
||||
// Generates a basic model with fixed methods for "detail" models
|
||||
detail : function(parentId) {
|
||||
var $this = this;
|
||||
var rest = new BasicModelRest(this.parentPath + '/' + parentId + '/' + this.path);
|
||||
|
||||
// Overwrite types, detail do not have types
|
||||
rest.types = function() {
|
||||
return []; // No types at all
|
||||
}
|
||||
// Overwrite types, detail do not have types
|
||||
rest.types = function() {
|
||||
return []; // No types at all
|
||||
};
|
||||
|
||||
// And overwrite tableInfo
|
||||
var parentTableInfo = rest.tableInfo;
|
||||
rest.tableInfo = function(success_fnc, alternate_url) {
|
||||
if( alternate_url == undefined )
|
||||
alternate_url = $this.parentPath + '/tableinfo/' + parentId + '/' + $this.path;
|
||||
parentTableInfo( success_fnc, alternate_url )
|
||||
}
|
||||
return rest;
|
||||
}
|
||||
// And overwrite tableInfo
|
||||
var parentTableInfo = rest.tableInfo;
|
||||
rest.tableInfo = function(success_fnc, alternate_url) {
|
||||
if (alternate_url === undefined)
|
||||
alternate_url = $this.parentPath + '/tableinfo/' + parentId + '/' + $this.path;
|
||||
parentTableInfo(success_fnc, alternate_url);
|
||||
};
|
||||
return rest;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
// Populate api
|
||||
|
||||
api.providers = new BasicModelRest('providers');
|
||||
//api.services = new BasicModelRest('services');
|
||||
// api.services = new BasicModelRest('services');
|
||||
api.authenticators = new BasicModelRest('authenticators');
|
||||
api.authenticators.users = new DetailModelRestApi(api.authenticators, 'users');
|
||||
|
||||
@ -142,64 +140,69 @@ api.osmanagers = new BasicModelRest('osmanagers');
|
||||
api.transports = new BasicModelRest('transports');
|
||||
api.networks = new BasicModelRest('networks');
|
||||
|
||||
// Locale related
|
||||
api.locale = new BasicModelRest('locale');
|
||||
api.locale.tableInfo = api.locale.types = undefined;
|
||||
|
||||
// -------------------------------
|
||||
// Templates related
|
||||
// This is not part of REST api provided by UDS, but it's part of the api needed for the admin app
|
||||
// This is not part of REST api provided by UDS, but it's part of the api needed
|
||||
// for the admin app
|
||||
// -------------------------------
|
||||
(function(templates, $){
|
||||
templates.cache = {}; // Will cache templates locally. If name contains '?', data will not be cached and always re-requested
|
||||
templates.get = function(name, success_fnc) {
|
||||
if( !name.contains('?') ) {
|
||||
if( templates.cache[name] != undefined ) {
|
||||
if( success_fnc != undefined ) {
|
||||
success_fnc(templates.cache[name]);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
$.ajax({
|
||||
url: '/adm/tmpl/' + name,
|
||||
type: "GET",
|
||||
dataType: "text",
|
||||
success: function(data) {
|
||||
templates.cache[name] = data;
|
||||
api.doLog('Success getting template "' + name + '".');
|
||||
api.doLog('Received: ' + data);
|
||||
if( success_fnc != undefined ){
|
||||
api.doLog('Executing success method')
|
||||
success_fnc(data);
|
||||
}
|
||||
},
|
||||
});
|
||||
};
|
||||
(function(templates, $) {
|
||||
templates.cache = {}; // Will cache templates locally. If name contains
|
||||
// '?', data will not be cached and always
|
||||
// re-requested
|
||||
templates.get = function(name, success_fnc) {
|
||||
api.doLog('Getting tempkate ' + name);
|
||||
if (name.indexOf('?') != -1) {
|
||||
if (templates.cache[name] !== undefined) {
|
||||
if (success_fnc !== undefined) {
|
||||
success_fnc(templates.cache[name]);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
$.ajax({
|
||||
url : '/adm/tmpl/' + name,
|
||||
type : "GET",
|
||||
dataType : "text",
|
||||
success : function(data) {
|
||||
templates.cache[name] = data;
|
||||
api.doLog('Success getting template "' + name + '".');
|
||||
api.doLog('Received: ' + data);
|
||||
if (success_fnc !== undefined) {
|
||||
api.doLog('Executing success method');
|
||||
success_fnc(data);
|
||||
}
|
||||
},
|
||||
fail: function( jqXHR, textStatus, errorThrown ) {
|
||||
api.doLog(jqXHR);
|
||||
api.doLog(textStatus);
|
||||
apid.doLog(errorThrown);
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
// Simple JavaScript Templating
|
||||
// Based on John Resig - http://ejohn.org/ - MIT Licensed
|
||||
templates.eval = function tmpl(str, data){
|
||||
// Figure out if we're getting a template, or if we need to
|
||||
// load the template - and be sure to cache the result.
|
||||
var fn =
|
||||
// Generate a reusable function that will serve as a template
|
||||
// generator (and which will be cached).
|
||||
new Function("obj",
|
||||
"var p=[],print=function(){p.push.apply(p,arguments);};" +
|
||||
// Simple JavaScript Templating
|
||||
// Based on John Resig - http://ejohn.org/ - MIT Licensed
|
||||
templates.evaluate = function tmpl(str, data) {
|
||||
// Figure out if we're getting a template, or if we need to
|
||||
// load the template - and be sure to cache the result.
|
||||
var fn =
|
||||
// Generate a reusable function that will serve as a template
|
||||
// generator (and which will be cached).
|
||||
new Function("obj", "var p=[],print=function(){p.push.apply(p,arguments);};" +
|
||||
|
||||
// Introduce the data as local variables using with(){}
|
||||
"with(obj){p.push('" +
|
||||
// Introduce the data as local variables using with(){}
|
||||
"with(obj){p.push('" +
|
||||
|
||||
// Convert the template into pure JavaScript
|
||||
str
|
||||
.replace(/[\r\t\n]/g, " ")
|
||||
.split("<%").join("\t")
|
||||
.replace(/((^|%>)[^\t]*)'/g, "$1\r")
|
||||
.replace(/\t=(.*?)%>/g, "',$1,'")
|
||||
.split("\t").join("');")
|
||||
.split("%>").join("p.push('")
|
||||
.split("\r").join("\\'")
|
||||
+ "');}return p.join('');");
|
||||
// Convert the template into pure JavaScript
|
||||
str.replace(/[\r\t\n]/g, " ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g, "$1\r").replace(
|
||||
/\t=(.*?)%>/g, "',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join(
|
||||
"\\'") + "');}return p.join('');");
|
||||
|
||||
// Provide some basic currying to the user
|
||||
return data ? fn( data ) : fn;
|
||||
};
|
||||
// Provide some basic currying to the user
|
||||
return data ? fn(data) : fn;
|
||||
};
|
||||
}(api.templates = api.templates || {}, jQuery));
|
||||
|
@ -3,20 +3,20 @@
|
||||
// Service providers
|
||||
gui.providers = new GuiElement(api.providers, 'provi');
|
||||
gui.providers.link = function(event) {
|
||||
gui.clearWorkspace();
|
||||
gui.appendToWorkspace(gui.breadcrumbs(gettext('Service Providers')));
|
||||
gui.clearWorkspace();
|
||||
gui.appendToWorkspace(gui.breadcrumbs(gettext('Service Providers')));
|
||||
|
||||
var tableId = gui.providers.table({
|
||||
rowSelect: 'multi',
|
||||
rowSelectFnc: function(nodes){
|
||||
gui.doLog(nodes);
|
||||
gui.doLog(this);
|
||||
gui.doLog(this.fnGetSelectedData());
|
||||
},
|
||||
buttons: ['edit', 'refresh', 'delete'],
|
||||
});
|
||||
var tableId = gui.providers.table({
|
||||
rowSelect : 'multi',
|
||||
rowSelectFnc : function(nodes) {
|
||||
gui.doLog(nodes);
|
||||
gui.doLog(this);
|
||||
gui.doLog(this.fnGetSelectedData());
|
||||
},
|
||||
buttons : [ 'edit', 'refresh', 'delete' ],
|
||||
});
|
||||
|
||||
return false;
|
||||
return false;
|
||||
};
|
||||
|
||||
// --------------..
|
||||
@ -25,63 +25,71 @@ gui.providers.link = function(event) {
|
||||
gui.authenticators = new GuiElement(api.authenticators, 'auth');
|
||||
|
||||
gui.authenticators.link = function(event) {
|
||||
api.templates.get('authenticators', function(tmpl){
|
||||
gui.clearWorkspace();
|
||||
gui.appendToWorkspace(api.templates.eval(tmpl, { auths: 'auths-placeholder', users: 'users-placeholder' }));
|
||||
gui.setLinksEvents();
|
||||
gui.doLog('enter auths');
|
||||
api.templates.get('authenticators', function(tmpl) {
|
||||
gui.clearWorkspace();
|
||||
gui.appendToWorkspace(api.templates.evaluate(tmpl, {
|
||||
auths : 'auths-placeholder',
|
||||
users : 'users-placeholder'
|
||||
}));
|
||||
gui.setLinksEvents();
|
||||
|
||||
gui.authenticators.table({
|
||||
container: 'auths-placeholder',
|
||||
rowSelect: 'single',
|
||||
buttons: ['edit', 'refresh', 'delete'],
|
||||
rowSelectFnc: function(nodes){
|
||||
var id = this.fnGetSelectedData()[0].id;
|
||||
var user = new GuiElement(api.authenticators.users.detail(id), 'users');
|
||||
user.table({
|
||||
container: 'users-placeholder',
|
||||
rowSelect: 'multi',
|
||||
buttons: ['edit', 'refresh', 'delete'],
|
||||
scroll: true,
|
||||
});
|
||||
return false;
|
||||
},
|
||||
});
|
||||
});
|
||||
gui.authenticators.table({
|
||||
container : 'auths-placeholder',
|
||||
rowSelect : 'single',
|
||||
buttons : [ 'edit', 'refresh', 'delete' ],
|
||||
onRowSelect : function(nodes) {
|
||||
var id = this.fnGetSelectedData()[0].id;
|
||||
var user = new GuiElement(api.authenticators.users.detail(id), 'users');
|
||||
user.table({
|
||||
container : 'users-placeholder',
|
||||
rowSelect : 'multi',
|
||||
buttons : [ 'edit', 'refresh', 'delete' ],
|
||||
scroll : true,
|
||||
});
|
||||
return false;
|
||||
},
|
||||
onRefresh : function() {
|
||||
$('#users-placeholder').empty(); // Remove detail on parent refresh
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
return false;
|
||||
return false;
|
||||
};
|
||||
|
||||
gui.osmanagers = new GuiElement(api.osmanagers, 'osm');
|
||||
gui.osmanagers.link = function(event) {
|
||||
gui.clearWorkspace();
|
||||
gui.appendToWorkspace(gui.breadcrumbs('Os Managers'));
|
||||
gui.clearWorkspace();
|
||||
gui.appendToWorkspace(gui.breadcrumbs('Os Managers'));
|
||||
|
||||
gui.osmanagers.table({
|
||||
rowSelect: 'single',
|
||||
buttons: ['edit', 'refresh', 'delete'],
|
||||
});
|
||||
gui.osmanagers.table({
|
||||
rowSelect : 'single',
|
||||
buttons : [ 'edit', 'refresh', 'delete' ],
|
||||
});
|
||||
|
||||
return false;
|
||||
return false;
|
||||
};
|
||||
|
||||
gui.connectivity = {
|
||||
transports: new GuiElement(api.transports, 'trans'),
|
||||
networks: new GuiElement(api.networks, 'nets'),
|
||||
transports : new GuiElement(api.transports, 'trans'),
|
||||
networks : new GuiElement(api.networks, 'nets'),
|
||||
};
|
||||
|
||||
gui.connectivity.link = function(event) {
|
||||
gui.clearWorkspace();
|
||||
gui.appendToWorkspace(gui.breadcrumbs(gettext('Connectivity')));
|
||||
gui.appendToWorkspace('<div class="row"><div class="col-lg-6" id="ttbl"></div><div class="col-lg-6" id="ntbl"></div></div>');
|
||||
gui.clearWorkspace();
|
||||
gui.appendToWorkspace(gui.breadcrumbs(gettext('Connectivity')));
|
||||
gui
|
||||
.appendToWorkspace('<div class="row"><div class="col-lg-6" id="ttbl"></div><div class="col-lg-6" id="ntbl"></div></div>');
|
||||
|
||||
gui.connectivity.transports.table({
|
||||
rowSelect: 'multi',
|
||||
container: 'ttbl',
|
||||
buttons: ['edit', 'refresh', 'delete', 'pdf'],
|
||||
});
|
||||
gui.connectivity.networks.table({
|
||||
rowSelect: 'single',
|
||||
container: 'ntbl',
|
||||
buttons: ['edit', 'refresh', 'delete'],
|
||||
});
|
||||
}
|
||||
gui.connectivity.transports.table({
|
||||
rowSelect : 'multi',
|
||||
container : 'ttbl',
|
||||
buttons : [ 'edit', 'refresh', 'delete', 'pdf' ],
|
||||
});
|
||||
gui.connectivity.networks.table({
|
||||
rowSelect : 'multi',
|
||||
container : 'ntbl',
|
||||
buttons : [ 'edit', 'refresh', 'delete' ],
|
||||
});
|
||||
};
|
||||
|
@ -1,342 +1,430 @@
|
||||
/* jshint strict: true */
|
||||
(function(gui, $, undefined) {
|
||||
"use strict";
|
||||
// "public" methods
|
||||
gui.doLog = function(data) {
|
||||
if (gui.debug) {
|
||||
try {
|
||||
console.log(data);
|
||||
} catch (e) {
|
||||
// nothing can be logged
|
||||
}
|
||||
|
||||
// "public" methods
|
||||
gui.doLog = function(data) {
|
||||
if( gui.debug ) {
|
||||
try {
|
||||
console.log(data);
|
||||
} catch (e) {
|
||||
// nothing can be logged
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
// Several convenience "constants"
|
||||
gui.dataTablesLanguage = {
|
||||
"sLengthMenu" : gettext("_MENU_ records per page"),
|
||||
"sZeroRecords" : gettext("Empty"),
|
||||
"sInfo" : gettext("Records _START_ to _END_ of _TOTAL_"),
|
||||
"sInfoEmpty" : gettext("No records"),
|
||||
"sInfoFiltered" : gettext("(filtered from _MAX_ total records)"),
|
||||
"sProcessing" : gettext("Please wait, processing"),
|
||||
"sSearch" : gettext("Filter"),
|
||||
"sInfoThousands" : django.formats.THOUSAND_SEPARATOR,
|
||||
"oPaginate" : {
|
||||
"sFirst" : gettext("First"),
|
||||
"sLast" : gettext("Last"),
|
||||
"sNext" : gettext("Next"),
|
||||
"sPrevious" : gettext("Previous"),
|
||||
}
|
||||
};
|
||||
|
||||
// Several convenience "constants"
|
||||
gui.dataTablesLanguage = {
|
||||
"sLengthMenu": gettext("_MENU_ records per page"),
|
||||
"sZeroRecords": gettext("Empty"),
|
||||
"sInfo": gettext("Records _START_ to _END_ of _TOTAL_"),
|
||||
"sInfoEmpty": gettext("No records"),
|
||||
"sInfoFiltered": gettext("(filtered from _MAX_ total records)"),
|
||||
"sProcessing": gettext("Please wait, processing"),
|
||||
"sSearch": gettext("Filter"),
|
||||
"sInfoThousands": django.formats.THOUSAND_SEPARATOR,
|
||||
"oPaginate": {
|
||||
"sFirst": gettext("First"),
|
||||
"sLast": gettext("Last"),
|
||||
"sNext": gettext("Next"),
|
||||
"sPrevious": gettext("Previous"),
|
||||
}
|
||||
};
|
||||
gui.table = function(title, table_id, options) {
|
||||
if (options === undefined)
|
||||
options = {
|
||||
'size' : 12,
|
||||
'icon' : 'table'
|
||||
};
|
||||
if (options.size === undefined)
|
||||
options.size = 12;
|
||||
if (options.icon === undefined)
|
||||
options.icon = 'table';
|
||||
|
||||
gui.table = function(title, table_id, options) {
|
||||
if( options == undefined )
|
||||
options = { 'size': 12, 'icon': 'table'};
|
||||
if( options.size == undefined )
|
||||
options.size = 12;
|
||||
if( options.icon == undefined )
|
||||
options.icon = 'table';
|
||||
return '<div class="panel panel-primary"><div class="panel-heading">' +
|
||||
'<h3 class="panel-title"><span class="fa fa-' + options.icon + '"></span> ' + title + '</h3></div>' +
|
||||
'<div class="panel-body"><table class="table table-striped table-bordered table-hover" id="' +
|
||||
table_id + '" border="0" cellpadding="0" cellspacing="0" width="100%"></table></div></div>';
|
||||
};
|
||||
|
||||
return '<div class="panel panel-primary"><div class="panel-heading">'+
|
||||
'<h3 class="panel-title"><span class="fa fa-'+ options.icon + '"></span> ' + title + '</h3></div>'+
|
||||
'<div class="panel-body"><table class="table table-striped table-bordered table-hover" id="' + table_id + '" border="0" cellpadding="0" cellspacing="0" width="100%"></table></div></div>';
|
||||
}
|
||||
gui.breadcrumbs = function(path) {
|
||||
var items = path.split('/');
|
||||
var active = items.pop();
|
||||
var list = '';
|
||||
$.each(items, function(index, value) {
|
||||
list += '<li><a href="#">' + value + '</a></li>';
|
||||
});
|
||||
list += '<li class="active">' + active + '</li>';
|
||||
|
||||
gui.breadcrumbs = function(path) {
|
||||
var items = path.split('/');
|
||||
var active = items.pop();
|
||||
var list = '';
|
||||
$.each(items, function(index, value){
|
||||
list += '<li><a href="#">' + value + '</a></li>';
|
||||
});
|
||||
list += '<li class="active">' + active + '</li>';
|
||||
return '<div class="row"><div class="col-lg-12"><ol class="breadcrumb">' + list + "</ol></div></div>";
|
||||
};
|
||||
|
||||
return '<div class="row"><div class="col-lg-12"><ol class="breadcrumb">'+ list + "</ol></div></div>";
|
||||
gui.clearWorkspace = function() {
|
||||
$('#page-wrapper').empty();
|
||||
};
|
||||
|
||||
}
|
||||
gui.appendToWorkspace = function(data) {
|
||||
$(data).appendTo('#page-wrapper');
|
||||
};
|
||||
|
||||
gui.clearWorkspace = function() {
|
||||
$('#page-wrapper').empty();
|
||||
};
|
||||
// Links methods
|
||||
gui.dashboard = function() {
|
||||
gui.clearWorkspace();
|
||||
gui.appendToWorkspace(gui.breadcrumbs('Dasboard'));
|
||||
gui.doLog(this);
|
||||
};
|
||||
|
||||
gui.appendToWorkspace = function(data) {
|
||||
$(data).appendTo('#page-wrapper');
|
||||
};
|
||||
gui.deployed_services = function() {
|
||||
gui.clearWorkspace();
|
||||
gui.appendToWorkspace(gui.breadcrumbs(gettext('Deployed services')));
|
||||
};
|
||||
|
||||
|
||||
// Links methods
|
||||
gui.dashboard = function() {
|
||||
gui.clearWorkspace();
|
||||
gui.appendToWorkspace(gui.breadcrumbs('Dasboard'));
|
||||
gui.doLog(this);
|
||||
};
|
||||
|
||||
gui.deployed_services = function() {
|
||||
gui.clearWorkspace();
|
||||
gui.appendToWorkspace(gui.breadcrumbs(gettext('Deployed services')));
|
||||
}
|
||||
|
||||
gui.setLinksEvents = function() {
|
||||
var sidebarLinks = [
|
||||
{ id: 'lnk-dashboard', exec: gui.dashboard },
|
||||
{ id: 'lnk-service_providers', exec: gui.providers.link },
|
||||
{ id: 'lnk-authenticators', exec: gui.authenticators.link },
|
||||
{ id: 'lnk-osmanagers', exec: gui.osmanagers.link },
|
||||
{ id: 'lnk-connectivity', exec: gui.connectivity.link },
|
||||
{ id: 'lnk-deployed_services', exec: gui.deployed_services },
|
||||
];
|
||||
$.each(sidebarLinks, function(index, value){
|
||||
gui.doLog('Adding ' + value.id)
|
||||
$('.'+value.id).unbind('click').click(function(event) {
|
||||
if($('.navbar-toggle').css('display') !='none') {
|
||||
$(".navbar-toggle").trigger( "click" );
|
||||
gui.setLinksEvents = function() {
|
||||
var sidebarLinks = [ {
|
||||
id : 'lnk-dashboard',
|
||||
exec : gui.dashboard
|
||||
}, {
|
||||
id : 'lnk-service_providers',
|
||||
exec : gui.providers.link
|
||||
}, {
|
||||
id : 'lnk-authenticators',
|
||||
exec : gui.authenticators.link
|
||||
}, {
|
||||
id : 'lnk-osmanagers',
|
||||
exec : gui.osmanagers.link
|
||||
}, {
|
||||
id : 'lnk-connectivity',
|
||||
exec : gui.connectivity.link
|
||||
}, {
|
||||
id : 'lnk-deployed_services',
|
||||
exec : gui.deployed_services
|
||||
}, ];
|
||||
$.each(sidebarLinks, function(index, value) {
|
||||
gui.doLog('Adding ' + value.id);
|
||||
$('.' + value.id).unbind('click').click(function(event) {
|
||||
if ($('.navbar-toggle').css('display') != 'none') {
|
||||
$(".navbar-toggle").trigger("click");
|
||||
}
|
||||
$('html, body').scrollTop(0);
|
||||
value.exec(event);
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
gui.init = function() {
|
||||
gui.setLinksEvents();
|
||||
};
|
||||
|
||||
gui.init = function() {
|
||||
gui.setLinksEvents();
|
||||
};
|
||||
|
||||
// Public attributes
|
||||
gui.debug = true;
|
||||
// Public attributes
|
||||
gui.debug = true;
|
||||
}(window.gui = window.gui || {}, jQuery));
|
||||
|
||||
function GuiElement(restItem, name) {
|
||||
this.rest = restItem;
|
||||
this.name = name;
|
||||
this.types = {}
|
||||
this.init();
|
||||
"use strict";
|
||||
this.rest = restItem;
|
||||
this.name = name;
|
||||
this.types = {};
|
||||
this.init();
|
||||
}
|
||||
|
||||
// all gui elements has, at least, name && type
|
||||
// Types must include, at least: type, icon
|
||||
GuiElement.prototype = {
|
||||
init: function() {
|
||||
gui.doLog('Initializing ' + this.name);
|
||||
var $this = this;
|
||||
this.rest.types(function(data){
|
||||
var styles = '';
|
||||
$.each(data, function(index, value){
|
||||
var className = $this.name + '-' + value.type;
|
||||
$this.types[value.type] = { css: className, name: value.name || '', description: value.description || '' };
|
||||
gui.doLog('Creating style for ' + className )
|
||||
var style = '.' + className +
|
||||
' { display:inline-block; background: url(data:image/png;base64,' + value.icon + '); ' +
|
||||
'width: 16px; height: 16px; vertical-align: middle; } ';
|
||||
styles += style;
|
||||
});
|
||||
if(styles != '') {
|
||||
styles = '<style media="screen">' + styles + '</style>'
|
||||
$(styles).appendTo('head');
|
||||
}
|
||||
});
|
||||
},
|
||||
table: function(options) {
|
||||
// Options (all are optionals)
|
||||
// rowSelect: 'single' or 'multi'
|
||||
// container: ID of the element that will hold this table (will be emptied)
|
||||
// rowSelectFnc: function to invoke on row selection. receives 1 array - node : TR elements that were selected
|
||||
// rowDeselectFnc: function to invoke on row deselection. receives 1 array - node : TR elements that were selected
|
||||
gui.doLog('Composing table for ' + this.name);
|
||||
var tableId = this.name + '-table';
|
||||
var $this = this;
|
||||
this.rest.tableInfo(function(data){
|
||||
var title = data.title;
|
||||
var columns = [];
|
||||
$.each(data.fields,function(index, value) {
|
||||
for( var v in value ){
|
||||
var options = value[v];
|
||||
var column = { mData: v };
|
||||
column.sTitle = options.title;
|
||||
if( options.type )
|
||||
column.sType = options.type;
|
||||
if( options.width )
|
||||
column.sWidth = options.width;
|
||||
if( options.visible != undefined )
|
||||
column.bVisible = options.visible;
|
||||
if( options.sortable != undefined )
|
||||
column.bSortable = options.sortable;
|
||||
if( options.searchable != undefined )
|
||||
column.bSearchable = options.searchable;
|
||||
init : function() {
|
||||
"use strict";
|
||||
gui.doLog('Initializing ' + this.name);
|
||||
var $this = this;
|
||||
this.rest.types(function(data) {
|
||||
var styles = '';
|
||||
$.each(data, function(index, value) {
|
||||
var className = $this.name + '-' + value.type;
|
||||
$this.types[value.type] = {
|
||||
css : className,
|
||||
name : value.name || '',
|
||||
description : value.description || ''
|
||||
};
|
||||
gui.doLog('Creating style for ' + className);
|
||||
var style = '.' + className + ' { display:inline-block; background: url(data:image/png;base64,' +
|
||||
value.icon + '); ' + 'width: 16px; height: 16px; vertical-align: middle; } ';
|
||||
styles += style;
|
||||
});
|
||||
if (styles !== '') {
|
||||
styles = '<style media="screen">' + styles + '</style>';
|
||||
$(styles).appendTo('head');
|
||||
}
|
||||
});
|
||||
},
|
||||
table : function(options) {
|
||||
"use strict";
|
||||
// Options (all are optionals)
|
||||
// rowSelect: 'single' or 'multi'
|
||||
// container: ID of the element that will hold this table (will be
|
||||
// emptied)
|
||||
// rowSelectFnc: function to invoke on row selection. receives 1 array -
|
||||
// node : TR elements that were selected
|
||||
// rowDeselectFnc: function to invoke on row deselection. receives 1
|
||||
// array - node : TR elements that were selected
|
||||
gui.doLog('Composing table for ' + this.name);
|
||||
var tableId = this.name + '-table';
|
||||
var $this = this;
|
||||
|
||||
// Fix name columm so we can add a class icon
|
||||
if( v == 'name' ) {
|
||||
column.sType ='html'
|
||||
}
|
||||
// Empty cells transform
|
||||
var renderEmptyCell = function(data) {
|
||||
if( data === '' )
|
||||
return '-';
|
||||
return data;
|
||||
};
|
||||
|
||||
columns.push(column);
|
||||
}
|
||||
});
|
||||
gui.doLog(columns);
|
||||
// Datetime renderer (with specified format)
|
||||
var renderDate = function(format) {
|
||||
return function(data, type, full) {
|
||||
return strftime(format, new Date(data*1000));
|
||||
};
|
||||
};
|
||||
|
||||
var processResponse = function(data) {
|
||||
// If it has a "type" column
|
||||
try {
|
||||
if( data[0].type != undefined ) {
|
||||
$.each(data, function(index, value){
|
||||
var type = $this.types[value.type];
|
||||
data[index].name = '<span class="' + type.css + '"> </span> ' + value.name
|
||||
});
|
||||
}
|
||||
} catch (e) {
|
||||
return;
|
||||
}
|
||||
};
|
||||
// Icon renderer, based on type (created on init methods in styles)
|
||||
var renderTypeIcon = function(data, type, value){
|
||||
if( type == 'display' ) {
|
||||
var css = $this.types[value.type].css;
|
||||
return '<span class="' + css + '"></span> ' + renderEmptyCell(data);
|
||||
} else {
|
||||
return renderEmptyCell(data);
|
||||
}
|
||||
};
|
||||
|
||||
$this.rest.get({
|
||||
success: function(data) {
|
||||
processResponse(data);
|
||||
var table = gui.table(title, tableId);
|
||||
if( options.container == undefined ) {
|
||||
gui.appendToWorkspace('<div class="row"><div class="col-lg-12">' + table + '</div></div>');
|
||||
} else {
|
||||
$('#'+options.container).empty();
|
||||
$('#'+options.container).append(table);
|
||||
}
|
||||
// Custom icon renderer, in fact span with defined class
|
||||
var renderIcon = function(icon) {
|
||||
return function(data, type, full) {
|
||||
if( type == 'display' ) {
|
||||
return '<span class="' + icon + '"></span> ' + renderEmptyCell(data);
|
||||
} else {
|
||||
return renderEmptyCell(data);
|
||||
}
|
||||
};
|
||||
};
|
||||
// Text transformation, dictionary based
|
||||
var renderTextTransform = function(dict) {
|
||||
return function(data, type, full) {
|
||||
return dict[data] || renderEmptyCell('');
|
||||
};
|
||||
};
|
||||
|
||||
var btns = [
|
||||
];
|
||||
this.rest.tableInfo(function(data) {
|
||||
var title = data.title;
|
||||
var columns = [];
|
||||
$.each(data.fields, function(index, value) {
|
||||
for ( var v in value) {
|
||||
var options = value[v];
|
||||
var column = {
|
||||
mData : v,
|
||||
};
|
||||
column.sTitle = options.title;
|
||||
column.mRender = renderEmptyCell;
|
||||
if (options.type !== undefined) {
|
||||
switch(options.type) {
|
||||
case 'date':
|
||||
column.sType = 'date';
|
||||
column.mRender = renderDate(djangoFormat(get_format('SHORT_DATE_FORMAT')));
|
||||
break;
|
||||
case 'datetime':
|
||||
column.sType = 'date';
|
||||
column.mRender = renderDate(djangoFormat(get_format('SHORT_DATETIME_FORMAT')));
|
||||
break;
|
||||
case 'time':
|
||||
column.mRender = renderDate(djangoFormat(get_format('TIME_FORMAT')));
|
||||
break;
|
||||
case 'iconType':
|
||||
//columnt.sType = 'html'; // html is default, so this is not needed
|
||||
column.mRender = renderTypeIcon;
|
||||
break;
|
||||
case 'icon':
|
||||
if( options.icon !== undefined ) {
|
||||
column.mRender = renderIcon(options.icon);
|
||||
}
|
||||
break;
|
||||
case 'dict':
|
||||
if( options.dict !== undefined ) {
|
||||
column.mRender = renderTextTransform(options.dict);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
column.sType = options.type;
|
||||
}
|
||||
}
|
||||
if (options.width)
|
||||
column.sWidth = options.width;
|
||||
if (options.visible !== undefined)
|
||||
column.bVisible = options.visible;
|
||||
if (options.sortable !== undefined)
|
||||
column.bSortable = options.sortable;
|
||||
if (options.searchable !== undefined)
|
||||
column.bSearchable = options.searchable;
|
||||
columns.push(column);
|
||||
}
|
||||
});
|
||||
// Generate styles for responsibe table, just the name of fields
|
||||
var respStyles = [];
|
||||
var counter = 0;
|
||||
$.each(columns, function(col, value) {
|
||||
if( value.bVisible === false )
|
||||
return;
|
||||
counter += 1;
|
||||
respStyles.push('#' + tableId + ' td:nth-of-type(' + counter + '):before { content: "' +
|
||||
(value.sTitle || '') + '";}\n');
|
||||
respStyles.push('#' + tableId + ' td:nth-of-type(' + counter + '):empty { background-color: red ;}\n');
|
||||
});
|
||||
// If styles already exists, remove them before adding new ones
|
||||
$('style-' + tableId).remove();
|
||||
$('<style id="style-' + tableId + '" media="screen">@media (max-width: 979px) { ' + respStyles.join('') + '};</style>').appendTo('head')
|
||||
|
||||
if( options.buttons ) {
|
||||
$this.rest.get({
|
||||
success : function(data) {
|
||||
var table = gui.table(title, tableId);
|
||||
if (options.container === undefined) {
|
||||
gui.appendToWorkspace('<div class="row"><div class="col-lg-12">' + table + '</div></div>');
|
||||
} else {
|
||||
$('#' + options.container).empty();
|
||||
$('#' + options.container).append(table);
|
||||
}
|
||||
|
||||
// methods for buttons click
|
||||
var editFnc = function() {
|
||||
gui.doLog('Edit');
|
||||
gui.doLog(this);
|
||||
};
|
||||
var deleteFnc = function() {
|
||||
gui.doLog('Delete');
|
||||
gui.doLog(this);
|
||||
};
|
||||
var refreshFnc = function(btn) {
|
||||
// Refreshes table content
|
||||
gui.doLog('Refresh');
|
||||
gui.doLog(this);
|
||||
gui.doLog(btn);
|
||||
var tbl = $('#' + tableId).dataTable();
|
||||
var width = $(btn).width();
|
||||
var saved = $(btn).html();
|
||||
$(btn).addClass('disabled').html('<span class="fa fa-spinner fa-spin"></span>').width(width);
|
||||
$this.rest.get({
|
||||
success: function(data) {
|
||||
processResponse(data);
|
||||
tbl.fnClearTable();
|
||||
tbl.fnAddData(data);
|
||||
$(btn).removeClass('disabled').html(saved);
|
||||
}
|
||||
});
|
||||
}
|
||||
var btns = [];
|
||||
|
||||
// methods for buttons on row select
|
||||
var editSelected = function(btn, obj, node) {
|
||||
var sel = this.fnGetSelectedData();
|
||||
if( sel.length == 1) {
|
||||
$(btn).removeClass('disabled').addClass('btn-info');
|
||||
} else {
|
||||
$(btn).removeClass('btn-info').addClass('disabled');
|
||||
}
|
||||
};
|
||||
var deleteSelected = function(btn, obj, node) {
|
||||
var sel = this.fnGetSelectedData();
|
||||
if( sel.length > 0) {
|
||||
$(btn).removeClass('disabled').addClass('btn-warning');
|
||||
} else {
|
||||
$(btn).removeClass('btn-warning').addClass('disabled');
|
||||
}
|
||||
};
|
||||
if (options.buttons) {
|
||||
|
||||
$.each(options.buttons, function(index, value){
|
||||
var btn = undefined;
|
||||
switch(value) {
|
||||
case 'edit':
|
||||
btn = {
|
||||
"sExtends": "text",
|
||||
"sButtonText": gettext('Edit'),
|
||||
"fnSelect": editSelected,
|
||||
"fnClick": editFnc,
|
||||
"sButtonClass": "disabled"
|
||||
};
|
||||
break;
|
||||
case 'delete':
|
||||
btn = {
|
||||
"sExtends": "text",
|
||||
"sButtonText": gettext('Delete'),
|
||||
"fnSelect": deleteSelected,
|
||||
"fnClick": deleteFnc,
|
||||
"sButtonClass": "disabled"
|
||||
};
|
||||
break;
|
||||
case 'refresh':
|
||||
btn = {
|
||||
"sExtends": "text",
|
||||
"sButtonText": gettext('Refresh'),
|
||||
"fnClick": refreshFnc,
|
||||
"sButtonClass": "btn-info"
|
||||
};
|
||||
break;
|
||||
case 'csb':
|
||||
btn = {
|
||||
"sExtends": "csv",
|
||||
"sTitle": title,
|
||||
"sFileName": title + '.csv',
|
||||
};
|
||||
break;
|
||||
case 'pdf':
|
||||
btn = {
|
||||
"sExtends": "pdf",
|
||||
"sTitle": title,
|
||||
"sPdfMessage": "Summary Info",
|
||||
"sFileName": title + '.pdf',
|
||||
"sPdfOrientation": "portrait"
|
||||
};
|
||||
break;
|
||||
}
|
||||
// methods for buttons click
|
||||
var editFnc = function() {
|
||||
gui.doLog('Edit');
|
||||
gui.doLog(this);
|
||||
};
|
||||
var deleteFnc = function() {
|
||||
gui.doLog('Delete');
|
||||
gui.doLog(this);
|
||||
};
|
||||
|
||||
if( btn != undefined )
|
||||
btns.push(btn);
|
||||
});
|
||||
}
|
||||
// What execute on refresh button push
|
||||
var onRefresh = options.onRefresh || function(){};
|
||||
|
||||
// Initializes oTableTools
|
||||
oTableTools = {
|
||||
"aButtons": btns
|
||||
};
|
||||
if( options.rowSelect ) {
|
||||
oTableTools.sRowSelect = options.rowSelect
|
||||
}
|
||||
if( options.rowSelectFnc ) {
|
||||
oTableTools.fnRowSelected = options.rowSelectFnc
|
||||
}
|
||||
if( options.rowDeselectFnc ) {
|
||||
oTableTools.fnRowDeselected = options.rowDeselectFnc
|
||||
}
|
||||
var refreshFnc = function(btn) {
|
||||
// Refreshes table content
|
||||
var tbl = $('#' + tableId).dataTable();
|
||||
var width = $(btn).width();
|
||||
var saved = $(btn).html();
|
||||
$(btn).addClass('disabled').html('<span class="fa fa-spinner fa-spin"></span>')
|
||||
.width(width);
|
||||
onRefresh();
|
||||
$this.rest.get({
|
||||
success : function(data) {
|
||||
tbl.fnClearTable();
|
||||
tbl.fnAddData(data);
|
||||
$(btn).removeClass('disabled').html(saved);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// methods for buttons on row select
|
||||
var editSelected = function(btn, obj, node) {
|
||||
var sel = this.fnGetSelectedData();
|
||||
if (sel.length == 1) {
|
||||
$(btn).removeClass('disabled').addClass('btn-info');
|
||||
} else {
|
||||
$(btn).removeClass('btn-info').addClass('disabled');
|
||||
}
|
||||
};
|
||||
var deleteSelected = function(btn, obj, node) {
|
||||
var sel = this.fnGetSelectedData();
|
||||
if (sel.length > 0) {
|
||||
$(btn).removeClass('disabled').addClass('btn-warning');
|
||||
} else {
|
||||
$(btn).removeClass('btn-warning').addClass('disabled');
|
||||
}
|
||||
};
|
||||
|
||||
$('#' + tableId).dataTable({
|
||||
"aaData": data,
|
||||
"aoColumns": columns,
|
||||
"oLanguage": gui.dataTablesLanguage,
|
||||
"oTableTools": oTableTools,
|
||||
// First is upper row, second row is lower (pagination) row
|
||||
"sDom": "<'row'<'col-xs-6'T><'col-xs-6'f>r>t<'row'<'col-xs-5'i><'col-xs-7'p>>",
|
||||
$.each(options.buttons, function(index, value) {
|
||||
var btn;
|
||||
switch (value) {
|
||||
case 'edit':
|
||||
btn = {
|
||||
"sExtends" : "text",
|
||||
"sButtonText" : gettext('Edit'),
|
||||
"fnSelect" : editSelected,
|
||||
"fnClick" : editFnc,
|
||||
"sButtonClass" : "disabled"
|
||||
};
|
||||
break;
|
||||
case 'delete':
|
||||
btn = {
|
||||
"sExtends" : "text",
|
||||
"sButtonText" : gettext('Delete'),
|
||||
"fnSelect" : deleteSelected,
|
||||
"fnClick" : deleteFnc,
|
||||
"sButtonClass" : "disabled"
|
||||
};
|
||||
break;
|
||||
case 'refresh':
|
||||
btn = {
|
||||
"sExtends" : "text",
|
||||
"sButtonText" : gettext('Refresh'),
|
||||
"fnClick" : refreshFnc,
|
||||
"sButtonClass" : "btn-info"
|
||||
};
|
||||
break;
|
||||
case 'csb':
|
||||
btn = {
|
||||
"sExtends" : "csv",
|
||||
"sTitle" : title,
|
||||
"sFileName" : title + '.csv',
|
||||
};
|
||||
break;
|
||||
case 'pdf':
|
||||
btn = {
|
||||
"sExtends" : "pdf",
|
||||
"sTitle" : title,
|
||||
"sPdfMessage" : "Summary Info",
|
||||
"sFileName" : title + '.pdf',
|
||||
"sPdfOrientation" : "portrait"
|
||||
};
|
||||
break;
|
||||
}
|
||||
|
||||
});
|
||||
$('#' + tableId + '_filter input').addClass('form-control');
|
||||
var tableTop = $('#'+tableId).offset().top;
|
||||
gui.doLog(tableTop);
|
||||
//$('html, body').animate({ scrollTop: tableTop });
|
||||
if( options.scroll )
|
||||
$('html, body').scrollTop(tableTop);
|
||||
}
|
||||
});
|
||||
});
|
||||
return '#' + tableId;
|
||||
}
|
||||
if (btn !== undefined)
|
||||
btns.push(btn);
|
||||
});
|
||||
}
|
||||
|
||||
// Initializes oTableTools
|
||||
var oTableTools = {
|
||||
"aButtons" : btns
|
||||
};
|
||||
if (options.rowSelect) {
|
||||
oTableTools.sRowSelect = options.rowSelect;
|
||||
}
|
||||
if (options.onRowSelect) {
|
||||
oTableTools.fnRowSelected = options.onRowSelect;
|
||||
}
|
||||
if (options.onRowDeselect) {
|
||||
oTableTools.fnRowDeselected = options.onRowDeselect;
|
||||
}
|
||||
|
||||
$('#' + tableId).dataTable({
|
||||
"aaData" : data,
|
||||
"aoColumns" : columns,
|
||||
"oLanguage" : gui.dataTablesLanguage,
|
||||
"oTableTools" : oTableTools,
|
||||
// First is upper row,
|
||||
// second row is lower
|
||||
// (pagination) row
|
||||
"sDom" : "<'row'<'col-xs-6'T><'col-xs-6'f>r>t<'row'<'col-xs-5'i><'col-xs-7'p>>",
|
||||
|
||||
});
|
||||
$('#' + tableId + '_filter input').addClass('form-control');
|
||||
var tableTop = $('#' + tableId).offset().top;
|
||||
if (options.scroll)
|
||||
$('html, body').scrollTop(tableTop);
|
||||
}
|
||||
});
|
||||
});
|
||||
return '#' + tableId;
|
||||
}
|
||||
|
||||
};
|
||||
|
345
server/src/uds/static/adm/js/strftime.js
Normal file
345
server/src/uds/static/adm/js/strftime.js
Normal file
@ -0,0 +1,345 @@
|
||||
//
|
||||
// strftime
|
||||
// github.com/samsonjs/strftime
|
||||
// @_sjs
|
||||
//
|
||||
// Copyright 2010 - 2013 Sami Samhuri <sami@samhuri.net>
|
||||
//
|
||||
// MIT License
|
||||
// http://sjs.mit-license.org
|
||||
//
|
||||
|
||||
;(function() {
|
||||
|
||||
// // Where to export the API
|
||||
var namespace;
|
||||
|
||||
// CommonJS / Node module
|
||||
if (typeof module !== 'undefined') {
|
||||
namespace = module.exports = strftime;
|
||||
}
|
||||
|
||||
// Browsers and other environments
|
||||
else {
|
||||
// Get the global object. Works in ES3, ES5, and ES5 strict mode.
|
||||
namespace = (function(){ return this || (1,eval)('this'); }());
|
||||
}
|
||||
|
||||
function words(s) { return (s || '').split(' '); }
|
||||
|
||||
var dayNames = [gettext('Sunday'), gettext('Monday'), gettext('Tuesday'),
|
||||
gettext('Wednesday'), gettext('Thursday'), gettext('Friday'), gettext('Saturday')];
|
||||
var monthNames = [gettext('January'), gettext('February'), gettext('March'),
|
||||
gettext('April'), gettext('May'), gettext('June'), gettext('July'),
|
||||
gettext('August'), gettext('September'), gettext('October'), gettext('November'),
|
||||
gettext('December')];
|
||||
|
||||
function initialsOf(arr) {
|
||||
var res = [];
|
||||
for( var v in arr ) {
|
||||
res.push(arr[v].substr(0,3));
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
var DefaultLocale = {
|
||||
days: dayNames,
|
||||
shortDays: initialsOf(dayNames),
|
||||
months: monthNames,
|
||||
shortMonths: initialsOf(monthNames),
|
||||
AM: 'AM',
|
||||
PM: 'PM',
|
||||
am: 'am',
|
||||
pm: 'pm',
|
||||
};
|
||||
|
||||
// Added this to convert django format strings to c format string
|
||||
// This is ofc, a "simplified" version, aimed to use date format used by DJANGO
|
||||
namespace.djangoFormat = function(format) {
|
||||
return format.replace(/./g, function(c) {
|
||||
switch(c) {
|
||||
case 'a':
|
||||
case 'A':
|
||||
return '%p';
|
||||
case 'b':
|
||||
case 'd':
|
||||
case 'm':
|
||||
case 'w':
|
||||
case 'W':
|
||||
case 'y':
|
||||
case 'Y':
|
||||
return '%' + c;
|
||||
case 'c': return '%FT%TZ';
|
||||
case 'D': return '%a';
|
||||
case 'e': return '%z';
|
||||
case 'f': return '%I:%M';
|
||||
case 'F': return '%F';
|
||||
case 'h':
|
||||
case 'g':
|
||||
return '%I';
|
||||
case 'H':
|
||||
case 'G':
|
||||
return '%H';
|
||||
case 'i': return '%M';
|
||||
case 'I': return ''; // daylight saving
|
||||
case 'j': return '%d';
|
||||
case 'l': return '%A';
|
||||
case 'L': return ''; // if it is leap year
|
||||
case 'M': return '%b';
|
||||
case 'n': return '%m';
|
||||
case 'N': return '%b';
|
||||
case 'o': return '%W'; // Not so sure, not important i thing anyway :-)
|
||||
case 'O': return '%z';
|
||||
case 'P': return '%R %p';
|
||||
case 'r': return '%a, %d %b %Y %T %z';
|
||||
case 's': return '%S';
|
||||
case 'S': return ''; // english ordinal suffix for day of month
|
||||
case 't': return ''; // number of days of specified month, not important
|
||||
case 'T': return '%Z';
|
||||
case 'u': return '0'; // microseconds
|
||||
case 'U': return ''; // Seconds since EPOCH, not used
|
||||
case 'z': return '%j';
|
||||
case 'Z': return 'z'; // Time zone offset in seconds, replaced by offset in ours/minutes :-)
|
||||
default:
|
||||
return c;
|
||||
}
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
namespace.strftime = strftime;
|
||||
function strftime(fmt, d, locale) {
|
||||
return _strftime(fmt, d, locale);
|
||||
}
|
||||
|
||||
// locale is optional
|
||||
namespace.strftimeTZ = strftime.strftimeTZ = strftimeTZ;
|
||||
function strftimeTZ(fmt, d, locale, timezone) {
|
||||
if (typeof locale == 'number' && timezone == null) {
|
||||
timezone = locale;
|
||||
locale = undefined;
|
||||
}
|
||||
return _strftime(fmt, d, locale, { timezone: timezone });
|
||||
}
|
||||
|
||||
namespace.strftimeUTC = strftime.strftimeUTC = strftimeUTC;
|
||||
function strftimeUTC(fmt, d, locale) {
|
||||
return _strftime(fmt, d, locale, { utc: true });
|
||||
}
|
||||
|
||||
namespace.localizedStrftime = strftime.localizedStrftime = localizedStrftime;
|
||||
function localizedStrftime(locale) {
|
||||
return function(fmt, d, options) {
|
||||
return strftime(fmt, d, locale, options);
|
||||
};
|
||||
}
|
||||
|
||||
// d, locale, and options are optional, but you can't leave
|
||||
// holes in the argument list. If you pass options you have to pass
|
||||
// in all the preceding args as well.
|
||||
//
|
||||
// options:
|
||||
// - locale [object] an object with the same structure as DefaultLocale
|
||||
// - timezone [number] timezone offset in minutes from GMT
|
||||
function _strftime(fmt, d, locale, options) {
|
||||
options = options || {};
|
||||
|
||||
// d and locale are optional so check if d is really the locale
|
||||
if (d && !quacksLikeDate(d)) {
|
||||
locale = d;
|
||||
d = undefined;
|
||||
}
|
||||
d = d || new Date();
|
||||
|
||||
locale = locale || DefaultLocale;
|
||||
locale.formats = locale.formats || {};
|
||||
|
||||
// Hang on to this Unix timestamp because we might mess with it directly
|
||||
// below.
|
||||
var timestamp = d.getTime();
|
||||
|
||||
if (options.utc || typeof options.timezone == 'number') {
|
||||
d = dateToUTC(d);
|
||||
}
|
||||
|
||||
if (typeof options.timezone == 'number') {
|
||||
d = new Date(d.getTime() + (options.timezone * 60000));
|
||||
}
|
||||
|
||||
// Most of the specifiers supported by C's strftime, and some from Ruby.
|
||||
// Some other syntax extensions from Ruby are supported: %-, %_, and %0
|
||||
// to pad with nothing, space, or zero (respectively).
|
||||
return fmt.replace(/%([-_0]?.)/g, function(_, c) {
|
||||
var mod, padding;
|
||||
if (c.length == 2) {
|
||||
mod = c[0];
|
||||
// omit padding
|
||||
if (mod == '-') {
|
||||
padding = '';
|
||||
}
|
||||
// pad with space
|
||||
else if (mod == '_') {
|
||||
padding = ' ';
|
||||
}
|
||||
// pad with zero
|
||||
else if (mod == '0') {
|
||||
padding = '0';
|
||||
}
|
||||
else {
|
||||
// unrecognized, return the format
|
||||
return _;
|
||||
}
|
||||
c = c[1];
|
||||
}
|
||||
switch (c) {
|
||||
case 'A': return locale.days[d.getDay()];
|
||||
case 'a': return locale.shortDays[d.getDay()];
|
||||
case 'B': return locale.months[d.getMonth()];
|
||||
case 'b': return locale.shortMonths[d.getMonth()];
|
||||
case 'C': return pad(Math.floor(d.getFullYear() / 100), padding);
|
||||
case 'D': return _strftime(locale.formats.D || '%m/%d/%y', d, locale);
|
||||
case 'd': return pad(d.getDate(), padding);
|
||||
case 'e': return d.getDate();
|
||||
case 'F': return _strftime(locale.formats.F || '%Y-%m-%d', d, locale);
|
||||
case 'H': return pad(d.getHours(), padding);
|
||||
case 'h': return locale.shortMonths[d.getMonth()];
|
||||
case 'I': return pad(hours12(d), padding);
|
||||
case 'j':
|
||||
var y = new Date(d.getFullYear(), 0, 1);
|
||||
var day = Math.ceil((d.getTime() - y.getTime()) / (1000 * 60 * 60 * 24));
|
||||
return pad(day, 3);
|
||||
case 'k': return pad(d.getHours(), padding == null ? ' ' : padding);
|
||||
case 'L': return pad(Math.floor(timestamp % 1000), 3);
|
||||
case 'l': return pad(hours12(d), padding == null ? ' ' : padding);
|
||||
case 'M': return pad(d.getMinutes(), padding);
|
||||
case 'm': return pad(d.getMonth() + 1, padding);
|
||||
case 'n': return '\n';
|
||||
case 'o': return String(d.getDate()) + ordinal(d.getDate());
|
||||
case 'P': return d.getHours() < 12 ? locale.am : locale.pm;
|
||||
case 'p': return d.getHours() < 12 ? locale.AM : locale.PM;
|
||||
case 'R': return _strftime(locale.formats.R || '%H:%M', d, locale);
|
||||
case 'r': return _strftime(locale.formats.r || '%I:%M:%S %p', d, locale);
|
||||
case 'S': return pad(d.getSeconds(), padding);
|
||||
case 's': return Math.floor(timestamp / 1000);
|
||||
case 'T': return _strftime(locale.formats.T || '%H:%M:%S', d, locale);
|
||||
case 't': return '\t';
|
||||
case 'U': return pad(weekNumber(d, 'sunday'), padding);
|
||||
case 'u':
|
||||
var day = d.getDay();
|
||||
return day == 0 ? 7 : day; // 1 - 7, Monday is first day of the
|
||||
// week
|
||||
case 'v': return _strftime(locale.formats.v || '%e-%b-%Y', d, locale);
|
||||
case 'W': return pad(weekNumber(d, 'monday'), padding);
|
||||
case 'w': return d.getDay(); // 0 - 6, Sunday is first day of the
|
||||
// week
|
||||
case 'Y': return d.getFullYear();
|
||||
case 'y':
|
||||
var y = String(d.getFullYear());
|
||||
return y.slice(y.length - 2);
|
||||
case 'Z':
|
||||
if (options.utc) {
|
||||
return "GMT";
|
||||
}
|
||||
else {
|
||||
var tz = d.toString().match(/\((\w+)\)/);
|
||||
return tz && tz[1] || '';
|
||||
}
|
||||
case 'z':
|
||||
if (options.utc) {
|
||||
return "+0000";
|
||||
}
|
||||
else {
|
||||
var off = typeof options.timezone == 'number' ? options.timezone : -d.getTimezoneOffset();
|
||||
return (off < 0 ? '-' : '+') + pad(Math.abs(off / 60)) + pad(off % 60);
|
||||
}
|
||||
default: return c;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function dateToUTC(d) {
|
||||
var msDelta = (d.getTimezoneOffset() || 0) * 60000;
|
||||
return new Date(d.getTime() + msDelta);
|
||||
}
|
||||
|
||||
var RequiredDateMethods = ['getTime', 'getTimezoneOffset', 'getDay', 'getDate', 'getMonth', 'getFullYear', 'getYear', 'getHours', 'getMinutes', 'getSeconds'];
|
||||
function quacksLikeDate(x) {
|
||||
var i = 0
|
||||
, n = RequiredDateMethods.length
|
||||
;
|
||||
for (i = 0; i < n; ++i) {
|
||||
if (typeof x[RequiredDateMethods[i]] != 'function') {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// Default padding is '0' and default length is 2, both are optional.
|
||||
function pad(n, padding, length) {
|
||||
// pad(n, <length>)
|
||||
if (typeof padding === 'number') {
|
||||
length = padding;
|
||||
padding = '0';
|
||||
}
|
||||
|
||||
// Defaults handle pad(n) and pad(n, <padding>)
|
||||
if (padding == null) {
|
||||
padding = '0';
|
||||
}
|
||||
length = length || 2;
|
||||
|
||||
var s = String(n);
|
||||
// padding may be an empty string, don't loop forever if it is
|
||||
if (padding) {
|
||||
while (s.length < length) s = padding + s;
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
function hours12(d) {
|
||||
var hour = d.getHours();
|
||||
if (hour == 0) hour = 12;
|
||||
else if (hour > 12) hour -= 12;
|
||||
return hour;
|
||||
}
|
||||
|
||||
// Get the ordinal suffix for a number: st, nd, rd, or th
|
||||
function ordinal(n) {
|
||||
var i = n % 10
|
||||
, ii = n % 100
|
||||
;
|
||||
if ((ii >= 11 && ii <= 13) || i === 0 || i >= 4) {
|
||||
return 'th';
|
||||
}
|
||||
switch (i) {
|
||||
case 1: return 'st';
|
||||
case 2: return 'nd';
|
||||
case 3: return 'rd';
|
||||
}
|
||||
}
|
||||
|
||||
// firstWeekday: 'sunday' or 'monday', default is 'sunday'
|
||||
//
|
||||
// Pilfered & ported from Ruby's strftime implementation.
|
||||
function weekNumber(d, firstWeekday) {
|
||||
firstWeekday = firstWeekday || 'sunday';
|
||||
|
||||
// This works by shifting the weekday back by one day if we
|
||||
// are treating Monday as the first day of the week.
|
||||
var wday = d.getDay();
|
||||
if (firstWeekday == 'monday') {
|
||||
if (wday == 0) // Sunday
|
||||
wday = 6;
|
||||
else
|
||||
wday--;
|
||||
}
|
||||
var firstDayOfYear = new Date(d.getFullYear(), 0, 1)
|
||||
, yday = (d - firstDayOfYear) / 86400000
|
||||
, weekNum = (yday + 7 - wday) / 7
|
||||
;
|
||||
return Math.floor(weekNum);
|
||||
}
|
||||
|
||||
}());
|
@ -1 +0,0 @@
|
||||
|
9266
server/src/uds/static/js/jquery-1.7.1.js
vendored
9266
server/src/uds/static/js/jquery-1.7.1.js
vendored
File diff suppressed because it is too large
Load Diff
@ -9,9 +9,8 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
{% block meta %}{% endblock %}
|
||||
|
||||
{% block icon %}<link href="{% get_static_prefix %}img/favicon.ico" rel="icon" type="image/x-icon" />{% endblock %}
|
||||
<link href="{% get_static_prefix %}img/favicon.ico" rel="icon" type="image/x-icon" />
|
||||
|
||||
<!-- Bootstrap -->
|
||||
<link href="{% get_static_prefix %}css/bootstrap.min.css" rel="stylesheet" media="screen">
|
||||
@ -23,9 +22,8 @@
|
||||
<link href="{% get_static_prefix %}adm/css/TableTools.css" rel="stylesheet" media="screen">
|
||||
<link href="{% get_static_prefix %}adm/css/dataTables.bootstrap.css" rel="stylesheet" media="screen">
|
||||
|
||||
<!-- <link href="{% get_static_prefix %}css/tables.css" rel="stylesheet" media="screen"> -->
|
||||
<link href="{% get_static_prefix %}css/tables.css" rel="stylesheet" media="screen">
|
||||
<link href="{% get_static_prefix %}adm/css/uds-admin.css" rel="stylesheet" media="screen">
|
||||
{% block css %}{% endblock %}
|
||||
</head>
|
||||
|
||||
<body>
|
||||
@ -50,13 +48,14 @@
|
||||
<script src="{% get_static_prefix %}adm/js/jquery.dataTables.min.js"></script>
|
||||
|
||||
<script src="{% get_static_prefix %}adm/js/TableTools.min.js"></script>
|
||||
|
||||
<!-- strftime -->
|
||||
<script src="{% get_static_prefix %}adm/js/strftime.js"></script>
|
||||
|
||||
<!-- <script src="{% get_static_prefix %}adm/js/ZeroClipboard.js"></script> -->
|
||||
|
||||
<script src="{% get_static_prefix %}adm/js/dataTables.bootstrap.js"></script>
|
||||
|
||||
|
||||
<script src="{% get_static_prefix %}adm/js/templating.js"></script>
|
||||
|
||||
<script>
|
||||
// Initialize a few settings, needed for api to work
|
||||
(function(api, $, undefined){
|
||||
|
@ -45,7 +45,8 @@
|
||||
<ul class="dropdown-menu">
|
||||
{% for lang in LANGUAGES %}
|
||||
{% if lang.0 != LANGUAGE_CODE %}
|
||||
<li><a href="#" onclick='$("#id_language").val("{{ lang.0 }}"); $("#form_language").submit()'><i class="glyphicon bfh-flag-{{ lang.0|country }}"></i>{% trans lang.1|capfirst %}</a></li>
|
||||
<!-- here we force an update of locale of REST api -->
|
||||
<li><a href="#" onclick='$("#id_language").val("{{ lang.0 }}"); api.locale.get({id:"{{ lang.0 }}", success:function(){ $("#form_language").submit() }});'><i class="glyphicon bfh-flag-{{ lang.0|country }}"></i>{% trans lang.1|capfirst %}</a></li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
@ -62,7 +62,7 @@ urlpatterns = patterns('uds',
|
||||
# Change Language
|
||||
(r'^i18n/', include('django.conf.urls.i18n')),
|
||||
# Downloadables
|
||||
(r'^download/(?P<idDownload>[a-zA-Z0-9]*)$', 'web.views.download'),
|
||||
(r'^download/(?P<idDownload>[a-zA-Z0-9-]*)$', 'web.views.download'),
|
||||
# Custom authentication callback
|
||||
(r'^auth/(?P<authName>.+)', 'web.views.authCallback'),
|
||||
(r'^authJava/(?P<idAuth>.+)/(?P<hasJava>.*)$', 'web.views.authJava'),
|
||||
@ -80,7 +80,7 @@ urlpatterns = patterns('uds',
|
||||
|
||||
# Internacionalization in javascript
|
||||
# Javascript catalog
|
||||
(r'^jsi18n/(?P<lang>.*)$', 'web.views.jsCatalog', js_info_dict),
|
||||
(r'^jsi18n/(?P<lang>[a-z]*)$', 'web.views.jsCatalog', js_info_dict),
|
||||
|
||||
)
|
||||
|
||||
|
@ -431,4 +431,6 @@ def download(request, idDownload):
|
||||
last_modified_date = timezone.now()
|
||||
@last_modified(lambda req, **kw: last_modified_date)
|
||||
def jsCatalog(request, lang, domain='djangojs', packages=None):
|
||||
if lang != '':
|
||||
request.GET = { 'language': lang } # Fake args for catalog :-)
|
||||
return javascript_catalog(request, domain, packages)
|
||||
|
Loading…
Reference in New Issue
Block a user