diff options
Diffstat (limited to 'data')
22 files changed, 1240 insertions, 25 deletions
diff --git a/data/branding/cacert.pem b/data/branding/cacert.pem deleted file mode 100644 index ed12e159..00000000 --- a/data/branding/cacert.pem +++ /dev/null @@ -1,24 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIECzCCAl2gAwIBAgIEUFDp9TANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRU -RVNUMB4XDTEyMDkxMjIwMDA1M1oXDTEzMDkxMjIwMDA1M1owDzENMAsGA1UEAxME -VEVTVDCCAbgwDQYJKoZIhvcNAQEBBQADggGlADCCAaACggGXANsoS1m9wj9iv+UV -BXfeq14SR94gSot96eJu7PZVRrcGlGe/PRfbmfxF3j/gXM9B8sIkyM2L46OMtOKw -1iOTKtYYdMhtnUSd3FRshWGtYeuy+OCe9umU0jfZDBZ2pXlUmSqCNqfD0OPkksYL -GDjQUKjaEd1oURwpCG8uEU+3tjBNCMuEwhcMEoUYmI8t4vss2hdFb+LKefVMPTzz -oiNM/o8Z/ANzWCC0qSW5FsB4wGhUS5HKLDOr4tACgdxaJSWtAqFFAnyMeG9g8aqe -PTM+URlqVnzzGckrJwBbd4y0zEpv/R7SAiSAP725cnB1GKptwdrcNIIHnQjOdAOl -uNg6JlRXrv6fV1gApka4INfJAf1yMf+fA0WdZ22UJQ9Up7tdzi8lL+3HsEpEx4Pz -NyzuqzEw9LJ6SUmMcE/VP00t4RjTOVoncwcLjvURY8jt2DQ9E36JEPwUoyALq/De -bGBjeK2KGzBZcOu1HZAwWLLWR2++WKuCEXbRbahwSIlbMfmAe8xGx4bbHol0D1A+ -wmu0uxjAze6FvUkCAwEAAaNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8E -BQMDBwQAMB0GA1UdDgQWBBT/PX8XZ0Y2jDkppz6PHs23IgzQEDANBgkqhkiG9w0B -AQsFAAOCAZcAMfi+HLbcFaB0/Mv8/GkIdjpThUBVEeFrIiDy9GmGWUDOXgP1Skld -5H4eY5inE5lFfB69yacHIGS4OiZIBuBKfKNl5d6XO+ztJEJpG3yrbF4MtGV/aHEp -OlbJCncnk3fspBk6tFGrv4Inak4gza6SQPfBEZj29ciwfwrqrtuWZ7km+og0Clcd -pIB0g+DK0K//NtaDZDK0havQw2AFJKyXlNfI8XZ2jsNmQYR1wtiMci+UfGQr7bjn -Kw9yyVCf0ohXvnSK4ortz/bDQbcMWkK0m/VCCEK8PSldk+XFzPWFWn5ndKCczcvd -1BQc392n12ZstEuzm6+d9A0D3kCxralJUXUC+4kThq4Rtjey/gBjyZQnZ+5tIxMF -5ZFAStEglNxqm6HB17q7owJqTvIg9Cf9GATsvoFFQDJrBXewRX7cWVeSr0zNSQB4 -ydIlSUOkyE3AyfLN+lx8NVS/I7gp4fWDuHrh27NKKDtMxalxPL5pTGO7l4uTybLY -4aVzQYGvzA5HVS++VAtcTQ6TP9p4HURL2cllEU9u9A== ------END CERTIFICATE----- diff --git a/data/images/Dialog-accept.png b/data/images/Dialog-accept.png Binary files differnew file mode 100644 index 00000000..5a8a0bdb --- /dev/null +++ b/data/images/Dialog-accept.png diff --git a/data/images/Dialog-error.png b/data/images/Dialog-error.png Binary files differnew file mode 100644 index 00000000..51da2f5b --- /dev/null +++ b/data/images/Dialog-error.png diff --git a/data/images/Emblem-question.png b/data/images/Emblem-question.png Binary files differnew file mode 100644 index 00000000..b2163e5b --- /dev/null +++ b/data/images/Emblem-question.png diff --git a/data/images/conn_connected.png b/data/images/conn_connected.png Binary files differindex 6a5bcba9..a5d20497 100644 --- a/data/images/conn_connected.png +++ b/data/images/conn_connected.png diff --git a/data/images/conn_connecting.png b/data/images/conn_connecting.png Binary files differindex 35cb0f6a..31b6e617 100644 --- a/data/images/conn_connecting.png +++ b/data/images/conn_connecting.png diff --git a/data/images/conn_error.png b/data/images/conn_error.png Binary files differindex ac1391df..85669af6 100644 --- a/data/images/conn_error.png +++ b/data/images/conn_error.png diff --git a/data/images/favicon.ico b/data/images/favicon.ico Binary files differnew file mode 100644 index 00000000..b5f3505a --- /dev/null +++ b/data/images/favicon.ico diff --git a/data/images/leap-client.icns b/data/images/leap-client.icns Binary files differnew file mode 100644 index 00000000..d5d52cdc --- /dev/null +++ b/data/images/leap-client.icns diff --git a/data/images/leap-color-small.png b/data/images/leap-color-small.png Binary files differindex afabe2c9..bc9d4e7f 100644 --- a/data/images/leap-color-small.png +++ b/data/images/leap-color-small.png diff --git a/data/images/leapfrog.jpg b/data/images/leapfrog.jpg Binary files differdeleted file mode 100644 index a1ddf4bb..00000000 --- a/data/images/leapfrog.jpg +++ /dev/null diff --git a/data/leap_client.pro b/data/leap_client.pro new file mode 100644 index 00000000..57764a23 --- /dev/null +++ b/data/leap_client.pro @@ -0,0 +1,25 @@ +# qmake file + +# is not there a f*** way of expanding this? other to template with python I mean... + +SOURCES += ../src/leap/base/exceptions.py +SOURCES += ../src/leap/eip/exceptions.py +SOURCES += ../src/leap/baseapp/eip.py +SOURCES += ../src/leap/baseapp/log.py +SOURCES += ../src/leap/baseapp/systray.py +SOURCES += ../src/leap/gui/firstrun/intro.py +SOURCES += ../src/leap/gui/firstrun/last.py +SOURCES += ../src/leap/gui/firstrun/login.py +SOURCES += ../src/leap/gui/firstrun/providerinfo.py +SOURCES += ../src/leap/gui/firstrun/providerselect.py +SOURCES += ../src/leap/gui/firstrun/providersetup.py +SOURCES += ../src/leap/gui/firstrun/register.py +SOURCES += ../src/leap/gui/firstrun/connect.py +SOURCES += ../src/leap/gui/firstrun/wizard.py + +# where to generate ts files -- tx will pick from here + +# original file, english + +TRANSLATIONS += ts/en_US.ts + diff --git a/data/mkpyqt.py b/data/mkpyqt.py new file mode 100755 index 00000000..1ce2cd28 --- /dev/null +++ b/data/mkpyqt.py @@ -0,0 +1,271 @@ +#!/usr/bin/env python +# Copyright (c) 2007-10 Qtrac Ltd. All rights reserved. +# This program or module is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as published +# by the Free Software Foundation, either version 2 of the License, or +# version 3 of the License, or (at your option) any later version. It is +# provided for educational purposes and is distributed in the hope that +# it will be useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +# the GNU General Public License for more details. + +import os +import platform +import stat +import subprocess +import sys +import PyQt4.QtCore + +__version__ = "1.0.4" + +Windows = sys.platform.lower().startswith(("win", "microsoft")) +if Windows: + PATH = os.path.join(os.path.dirname(sys.executable), + "Lib/site-packages/PyQt4") + if os.access(os.path.join(PATH, "bin"), os.R_OK): + PATH = os.path.join(PATH, "bin") +else: + app = PyQt4.QtCore.QCoreApplication([]) + PATH = unicode(app.applicationDirPath()) + del app +if sys.platform.startswith("darwin"): + i = PATH.find("Resources") + if i > -1: + PATH = PATH[:i] + "bin" +PYUIC4 = os.path.join(PATH, "pyuic4") # e.g. PYUIC4 = "/usr/bin/pyuic4" +if sys.platform.startswith("darwin"): + PYUIC4 = os.path.dirname(sys.executable) + i = PYUIC4.find("Resources") + if i > -1: + PYUIC4 = PYUIC4[:i] + "Lib/python2.5/site-packages/PyQt4/uic/pyuic.py" +PYRCC4 = os.path.join(PATH, "pyrcc4") +PYLUPDATE4 = os.path.join(PATH, "pylupdate4") +LRELEASE = "lrelease" +if Windows: + PYUIC4 = PYUIC4.replace("/", "\\") + ".bat" + PYRCC4 = PYRCC4.replace("/", "\\") + ".exe" + PYLUPDATE4 = PYLUPDATE4.replace("/", "\\") + ".exe" + +msg = [] +shell = lambda command: subprocess.Popen(['which', command], + stdout=subprocess.PIPE).communicate() + +if not os.access(PYUIC4, os.F_OK): + PYUIC4 = shell('pyuic4')[0].strip('\n') + if not os.access(PYUIC4, os.F_OK): + msg.append("failed to find pyuic4; tried %s" % PYUIC4) + +if not os.access(PYRCC4, os.F_OK): + PYRCC4 = shell('pyrcc4')[0].strip('\n') + if not os.access(PYRCC4, os.F_OK): + msg.append("failed to find pyrcc4; tried %s" % PYRCC4) + +if not os.access(PYLUPDATE4, os.F_OK): + PYLUPDATE4 = shell('pylupdate4')[0].strip('\n') + if not os.access(PYLUPDATE4, os.F_OK): + msg.append("failed to find pylupdate4; tried %s" % PYLUPDATE4) + +if msg: + print "\n".join(msg) + print "try manually editing this program to put the correct " + \ + "paths in place" + sys.exit() + +Debug = False +Verbose = False + +def usage(): + print """usage: mkpyqt.py [options] [path] + +Options (which can be given in any of the forms shown): +-b --build build [default] +-c --clean clean +-f --force force +-t --translate translate +-r --recurse recurse +-v --verbose verbose +-D --debug debug +path defaults to . + +If executed with no arguments (or with a build argument) it does a +build, i.e., it looks for all *.ui and *.qrc files and makes sure that +the corresponding ui_*.py and qrc_*.py files exist and are up-to-date. + +If executed with clean, deletes all ui_*.py and qrc_*.py files that have +corresponding *.ui and *.qrc files, and all *.pyc and *.pyo files. + +If executed with force, it does a clean followed by a build. + +If building and the translate option is given, after building, it runs +pylupdate4 on all .py and .pyw files it encounters, and then runs lrelease +on all .ts files it encounters. It does not use a .pro file so the .ts +files must be created in the first place, e.g., using pylupdate4 on one +of the source files and using its -ts option. + +WARNING: Do not give any hand-coded files names that match ui_*.py or +qrc_*.py since these will be deleted by mkpyqt.py clean! + +NOTE: If any tool fails to run, e.g., pyuic4, then edit this program and +hard-code the path; the variables with the tool paths are near the top +of the file. + +mkpyqt.py v %s. Copyright (c) 2007-9 Qtrac Ltd. All rights reserved. +""" % __version__ + sys.exit() + + +def report_failure(command, args, process): + msg = "" + ba = process.readAllStandardError() + if not ba.isEmpty(): + msg = ": " + str(QString(ba)) + print "failed", command, " ".join(args), msg + + +def build(path): + for name in os.listdir(path): + source = os.path.join(path, name) + target = None + if source.endswith(".ui"): + target = os.path.join(path, + "ui_" + name.replace(".ui", ".py")) + command = PYUIC4 + elif source.endswith(".qrc"): + target = os.path.join(path, + "qrc_" + name.replace(".qrc", ".py")) + command = PYRCC4 + process = PyQt4.QtCore.QProcess() + if target is not None: + if not os.access(target, os.F_OK) or ( + os.stat(source)[stat.ST_MTIME] > \ + os.stat(target)[stat.ST_MTIME]): + args = ["-o", target, source] + if sys.platform.startswith("darwin") and command == PYUIC4: + command = sys.executable + args = [PYUIC4] + args + if Debug: + print "# %s %s" % (command, " ".join(args)) + else: + process.start(command, args) + if not process.waitForFinished(2 * 60 * 1000): + report_failure(command, args, process) + else: + print source, "->", target + elif Verbose: + print source, "is up-to-date" + + +def clean(path): + deletelist = [] + for name in os.listdir(path): + target = os.path.join(path, name) + source = None + if target.endswith(".py") or target.endswith(".pyc") or \ + target.endswith(".pyo"): + if name.startswith("ui_") and not name[-1] in "oc": + source = os.path.join(path, name[3:-3] + ".ui") + elif name.startswith("qrc_"): + if target[-1] in "oc": + source = os.path.join(path, name[4:-4] + ".qrc") + else: + source = os.path.join(path, name[4:-3] + ".qrc") + elif target[-1] in "oc": + source = target[:-1] + if source is not None: + if os.access(source, os.F_OK): + if Debug: + print "# delete ", target + else: + deletelist.append(target) + else: + print "will not remove '%s' since `%s' not found" % ( + target, source) + if not Debug: + for target in deletelist: + if Verbose: + print "deleted", target + os.remove(target) + + +def translate(path): + files = [] + tsfiles = [] + for name in os.listdir(path): + if name.endswith((".py", ".pyw")): + files.append(os.path.join(path, name)) + elif name.endswith(".ts"): + tsfiles.append(os.path.join(path, name)) + if not tsfiles: + return + verbose = "-verbose" if Verbose else "" + silent = "-silent" if not Verbose else "" + process = PyQt4.QtCore.QProcess() + for ts in tsfiles: + qm = ts[:-3] + ".qm" + command1 = PYLUPDATE4 + args1 = [verbose] + files + ["-ts", ts] + command2 = LRELEASE + args2 = [silent, ts, "-qm", qm] + if Debug: + print "updated", ts + print "generated", qm + else: + process.start(command1, args1) + if not process.waitForFinished(2 * 60 * 1000): + report_failure(command1, args1, process) + process.start(command2, args2) + if not process.waitForFinished(2 * 60 * 1000): + report_failure(command2, args2, process) + + +def apply(recurse, function, path): + if not recurse: + function(path) + else: + for root, dirs, files in os.walk(path): + for dir in dirs: + function(os.path.join(root, dir)) + + +def main(): + global Debug, Verbose + function = build + recurse = False + trans = False + force = False + path = "." + args = sys.argv[1:] + while args: + arg = args.pop(0) + if arg in ("-D", "--debug", "debug"): + Debug = True + elif arg in ("-b", "--build", "build"): + pass # This is the default + elif arg in ("-c", "--clean", "clean"): + function = clean + elif arg in ("-f", "--force", "force"): + force = True + elif arg in ("-t", "--translate", "translate"): + trans = True + elif arg in ("-r", "--recurse", "recurse"): + recurse = True + elif arg in ("-v", "--verbose", "verbose"): + Verbose = True + elif arg in ("-h", "--help", "help"): + usage() + else: + path = arg + if not force: + apply(recurse, function, path) + else: + apply(recurse, clean, path) + apply(recurse, build, path) + if trans and (function == build or force): + apply(recurse, translate, path) + +main() + +# 1.0.1 Fixed bug reported by Brian Downing where paths that contained +# spaces were not handled correctly. +# 1.0.2 Changed default path on Windows to match PyQt 4.4 +# 1.0.3 Tried to make the paths work on Mac OS X diff --git a/data/resources/locale.qrc b/data/resources/locale.qrc new file mode 100644 index 00000000..47fb5243 --- /dev/null +++ b/data/resources/locale.qrc @@ -0,0 +1,6 @@ +<!DOCTYPE RCC><RCC version="1.0"> +<qresource> +<file>../translations/es.qm</file> +<file>../translations/de.qm</file> +</qresource> +</RCC> diff --git a/data/resources/mainwindow.qrc b/data/resources/mainwindow.qrc index f62c531e..58f59c9d 100644 --- a/data/resources/mainwindow.qrc +++ b/data/resources/mainwindow.qrc @@ -3,7 +3,9 @@ <file>../images/conn_error.png</file> <file>../images/conn_connecting.png</file> <file>../images/conn_connected.png</file> - <file>../images/leapfrog.jpg</file> <file>../images/leap-color-small.png</file> + <file>../images/Dialog-accept.png</file> + <file>../images/Dialog-error.png</file> + <file>../images/Emblem-question.png</file> </qresource> </RCC> diff --git a/data/translations/README.rst b/data/translations/README.rst new file mode 100644 index 00000000..1f3dd0b3 --- /dev/null +++ b/data/translations/README.rst @@ -0,0 +1,8 @@ +data/translations +================= + +We expect finished translations (i.e., those downloaded from ``transifex``) to live here. + +Translator object will pick them from here. + +(Actually, from the embedded locale_rc) diff --git a/data/translations/de.qm b/data/translations/de.qm Binary files differnew file mode 100644 index 00000000..b2f04f22 --- /dev/null +++ b/data/translations/de.qm diff --git a/data/translations/de.ts b/data/translations/de.ts new file mode 100644 index 00000000..f2ab6fa4 --- /dev/null +++ b/data/translations/de.ts @@ -0,0 +1,218 @@ +<?xml version="1.0" ?><!DOCTYPE TS><TS language="de" version="2.0"> +<context> + <name>IntroPage</name> + <message> + <location filename="../src/leap/gui/firstrun/intro.py" line="14"/> + <source>First run wizard.</source> + <translation>Assistent für erstmaligen Start</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/intro.py" line="24"/> + <source>Now we will guide you through some configuration that is needed before you can connect for the first time.<br><br>If you ever need to modify these options again, you can find the wizard in the '<i>Settings</i>' menu from the main window.<br><br>Do you want to <b>sign up</b> for a new account, or <b>log in</b> with an already existing username?<br></source> + <translation>Wir werden dich nun durch einige Konfigurationen führen, die du für den ersten Start benötigst.<br><br>Wenn du diese Konfigurationen jemals ändern musst, findest du den Assistenten im '<i>Einstellungen</i>'-Menü des Haupfensters.<br><br>Möchtest du dich für einen neuen Account <b>anmelden</b> oder mit einem bestehenden Usernamen <b>einloggen</b>?</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/intro.py" line="37"/> + <source>Sign up for a new account.</source> + <translation>Für einen neuen Account anmelden.</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/intro.py" line="40"/> + <source>Log In with my credentials.</source> + <translation>Mit bestehenden Daten einloggen.</translation> + </message> +</context> +<context> + <name>LogInPage</name> + <message> + <location filename="../src/leap/gui/firstrun/login.py" line="96"/> + <source>Username must be in the username@provider form.</source> + <translation>Der Username muss in der Form username@provider sein.</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/login.py" line="140"/> + <source>Resolving domain name</source> + <translation>Auflösen des Domain-Namens</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/login.py" line="163"/> + <source>Authentication error: %s</source> + <translation>Authentifizierungsfehler: %s</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/login.py" line="179"/> + <source>Credentials validated.</source> + <translation>Anmeldedaten korrekt.</translation> + </message> +</context> +<context> + <name>ProviderInfoPage</name> + <message> + <location filename="../src/leap/gui/firstrun/providerinfo.py" line="18"/> + <source>Provider Info</source> + <translation>Provider-info</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerinfo.py" line="19"/> + <source>This is what provider says.</source> + <translation>Das ist, was der Provider sagt.</translation> + </message> +</context> +<context> + <name>ProviderSetupValidationPage</name> + <message> + <location filename="../src/leap/gui/firstrun/providersetup.py" line="26"/> + <source>Provider setup</source> + <translation>Provider-Setup</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providersetup.py" line="27"/> + <source>Doing autoconfig.</source> + <translation>Führe autoconfig durch.</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providersetup.py" line="83"/> + <source>Fetching CA certificate</source> + <translation>Hole CA-Zertifikat</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providersetup.py" line="105"/> + <source>Checking CA fingerprint</source> + <translation>Überprüfe CA-Fingerprint</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providersetup.py" line="134"/> + <source>Validating api certificate</source> + <translation>Überprüfe API-Zertifikat</translation> + </message> +</context> +<context> + <name>RegisterUserPage</name> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="31"/> + <source>Sign Up</source> + <translation>Anmelden</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="208"/> + <source>Registration succeeded!</source> + <translation>Registrierung erfolgreich!</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="238"/> + <source>Password does not match..</source> + <translation>Passwort stimmt nicht überien.</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="242"/> + <source>Password too short.</source> + <translation>Passwort zu kurz</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="247"/> + <source>Password too obvious.</source> + <translation>Passwort zu simpel.</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="279"/> + <source>Error connecting to provider (timeout)</source> + <translation>Verbindungsfehler zu Provider (timeout)</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="284"/> + <source>Error Connecting to provider (connerr).</source> + <translation>Verbindungsfehler zu Provider (connerr)</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="292"/> + <source>Error during registration (%s)</source> + <translation>Fehler während der Registrierung (%s)</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="302"/> + <source>Could not register (bad response)</source> + <translation>Konnte nicht registrieren (bad response)</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="309"/> + <source>Username not available.</source> + <translation>Username nicht verfügbar.</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="375"/> + <source>Register a new user with provider %s.</source> + <translation>Registriere einen neuen User bei Provider %s</translation> + </message> +</context> +<context> + <name>RegisterUserValidationPage</name> + <message> + <location filename="../src/leap/gui/firstrun/regvalidation.py" line="95"/> + <source>Fetching provider config...</source> + <translation>Hole Provider-Konfiguration...</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/regvalidation.py" line="112"/> + <source>Authentication error: %s</source> + <translation>Authentifizierungsfehler: %s</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/regvalidation.py" line="117"/> + <source>Fetching eip certificate</source> + <translation>Hole EIP-Zertifikat</translation> + </message> +</context> +<context> + <name>SelectProviderPage</name> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="32"/> + <source>Enter Provider</source> + <translation>Gib Provider ein</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="33"/> + <source>Please enter the domain of the provider you want to use for your connection.</source> + <translation>Bitte gib die Domain des Providers an, den du für deine Verbindung nutzen möchtest.</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="87"/> + <source>chec&k!</source> + <translation type="unfinished"/> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="97"/> + <source>Server certificate could not be verified.</source> + <translation>Server-Zertifikat konnte nicht bestätigt werden.</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="136"/> + <source>Certificate validation</source> + <translation>Zertifikatsüberprüfung</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="222"/> + <source>checking domain name</source> + <translation>Prüfe Domain-Name</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="276"/> + <source>checking https connection</source> + <translation>Prüfe HTTPS-Verbindung</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="292"/> + <source>Could not get info from provider.</source> + <translation>Konnte keine Information vom Provider bekommen.</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="295"/> + <source>Could not download provider info (refused conn.).</source> + <translation>Konnte Provider-Info nicht herunterladen (refused conn.).</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="305"/> + <source>fetching provider info</source> + <translation>Hole Provider-Info</translation> + </message> +</context> +</TS>
\ No newline at end of file diff --git a/data/translations/es.qm b/data/translations/es.qm Binary files differnew file mode 100644 index 00000000..8daa2037 --- /dev/null +++ b/data/translations/es.qm diff --git a/data/translations/es.ts b/data/translations/es.ts new file mode 100644 index 00000000..84aa6f0a --- /dev/null +++ b/data/translations/es.ts @@ -0,0 +1,218 @@ +<?xml version="1.0" ?><!DOCTYPE TS><TS language="es" version="2.0"> +<context> + <name>IntroPage</name> + <message> + <location filename="../src/leap/gui/firstrun/intro.py" line="14"/> + <source>First run wizard.</source> + <translation>Primera Conexion.</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/intro.py" line="24"/> + <source>Now we will guide you through some configuration that is needed before you can connect for the first time.<br><br>If you ever need to modify these options again, you can find the wizard in the '<i>Settings</i>' menu from the main window.<br><br>Do you want to <b>sign up</b> for a new account, or <b>log in</b> with an already existing username?<br></source> + <translation>Vamos a configurar algunas cosas antes de que te puedas conectar por primera vez.<br><br>Si necesitas modificar estas opciones de nuevo, puedes encontrar este asistente en el menu de '<i>Opciones</i>' en la ventana principal.<br><br>Quieres <b>registrar</b> una nueva cuenta, o <b>loguearte</b> con tu usuario?<br> </translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/intro.py" line="37"/> + <source>Sign up for a new account.</source> + <translation>Registrar una cuenta nueva.</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/intro.py" line="40"/> + <source>Log In with my credentials.</source> + <translation>Loguearme con un usuario que ya tengo.</translation> + </message> +</context> +<context> + <name>LogInPage</name> + <message> + <location filename="../src/leap/gui/firstrun/login.py" line="96"/> + <source>Username must be in the username@provider form.</source> + <translation>El usuario tiene que ser usuario@tu.proveedor</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/login.py" line="140"/> + <source>Resolving domain name</source> + <translation>Resolviendo nombre de dominio</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/login.py" line="163"/> + <source>Authentication error: %s</source> + <translation>Error de autenticacion: %s</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/login.py" line="179"/> + <source>Credentials validated.</source> + <translation>Credenciales validadas.</translation> + </message> +</context> +<context> + <name>ProviderInfoPage</name> + <message> + <location filename="../src/leap/gui/firstrun/providerinfo.py" line="18"/> + <source>Provider Info</source> + <translation>Info del Proveedor</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerinfo.py" line="19"/> + <source>This is what provider says.</source> + <translation>Esto es lo que dice el proveedor.</translation> + </message> +</context> +<context> + <name>ProviderSetupValidationPage</name> + <message> + <location filename="../src/leap/gui/firstrun/providersetup.py" line="26"/> + <source>Provider setup</source> + <translation>Configuracion del Proveedor</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providersetup.py" line="27"/> + <source>Doing autoconfig.</source> + <translation>Autoconfigurando.</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providersetup.py" line="83"/> + <source>Fetching CA certificate</source> + <translation>Obteniendo certificado de la CA</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providersetup.py" line="105"/> + <source>Checking CA fingerprint</source> + <translation>Comprobando el fingerprint de la CA</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providersetup.py" line="134"/> + <source>Validating api certificate</source> + <translation>Validando certificado de la api</translation> + </message> +</context> +<context> + <name>RegisterUserPage</name> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="31"/> + <source>Sign Up</source> + <translation>Nueva Cuenta</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="208"/> + <source>Registration succeeded!</source> + <translation>Cuenta creada con exito!</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="238"/> + <source>Password does not match..</source> + <translation>Las contrasenas no son iguales..</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="242"/> + <source>Password too short.</source> + <translation>Contrasena demasiado corta.</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="247"/> + <source>Password too obvious.</source> + <translation>Contrasena demasiado obvia.</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="279"/> + <source>Error connecting to provider (timeout)</source> + <translation>Error conectandose al proveedor (timeout)</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="284"/> + <source>Error Connecting to provider (connerr).</source> + <translation>Error conectandose al proveedor (connerr).</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="292"/> + <source>Error during registration (%s)</source> + <translation>Error durante el registro (%s)</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="302"/> + <source>Could not register (bad response)</source> + <translation>No se pudo registrar (bad response)</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="309"/> + <source>Username not available.</source> + <translation>Usuario no disponible.</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="375"/> + <source>Register a new user with provider %s.</source> + <translation>Registrar un nuevo usuario con el proveedor %s.</translation> + </message> +</context> +<context> + <name>RegisterUserValidationPage</name> + <message> + <location filename="../src/leap/gui/firstrun/regvalidation.py" line="95"/> + <source>Fetching provider config...</source> + <translation>Obteniendo configuracion del proveedor...</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/regvalidation.py" line="112"/> + <source>Authentication error: %s</source> + <translation>Error de autenticacion: %s</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/regvalidation.py" line="117"/> + <source>Fetching eip certificate</source> + <translation>Obteniendo certificado eip</translation> + </message> +</context> +<context> + <name>SelectProviderPage</name> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="32"/> + <source>Enter Provider</source> + <translation>Entra tu Proveedor</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="33"/> + <source>Please enter the domain of the provider you want to use for your connection.</source> + <translation>Por favor, rellena el dominio del proveedor que quieras usar para tu conexion.</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="87"/> + <source>chec&k!</source> + <translation>compro&bar!</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="97"/> + <source>Server certificate could not be verified.</source> + <translation>No se pudo verificar el certificado del servidor.</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="136"/> + <source>Certificate validation</source> + <translation>Validacion del certificado</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="222"/> + <source>checking domain name</source> + <translation>comprobando nombre de dominio</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="276"/> + <source>checking https connection</source> + <translation>comprobando conexion https</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="292"/> + <source>Could not get info from provider.</source> + <translation>no se pudo obtener info del proveedor</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="295"/> + <source>Could not download provider info (refused conn.).</source> + <translation>no se pudo obtener info del proveedor (refused conn.).</translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="305"/> + <source>fetching provider info</source> + <translation>obteniendo info del preveedor</translation> + </message> +</context> +</TS>
\ No newline at end of file diff --git a/data/ts/README.rst b/data/ts/README.rst new file mode 100644 index 00000000..3db2d104 --- /dev/null +++ b/data/ts/README.rst @@ -0,0 +1,14 @@ +data/ts +======= + +Here we expect the .ts files generated by typing:: + + $ make translations + +Which will generate the sources (en_US) + +For uploading a source:: + + $ tx push -s + +Translator should pick finished ``.qm`` files from ``data/translations`` instead of this folder. diff --git a/data/ts/en_US.ts b/data/ts/en_US.ts new file mode 100644 index 00000000..d2cba837 --- /dev/null +++ b/data/ts/en_US.ts @@ -0,0 +1,477 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS><TS version="2.0"> +<context> + <name>ConnectionPage</name> + <message> + <location filename="../src/leap/gui/firstrun/connect.py" line="26"/> + <source>Connecting...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/connect.py" line="27"/> + <source>Setting up a encrypted connection with the provider</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/connect.py" line="85"/> + <source>Getting EIP configuration files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/connect.py" line="101"/> + <source>Authentication error: %s</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/connect.py" line="109"/> + <source>Getting EIP certificate</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>EIPConductorAppMixin</name> + <message> + <location filename="../src/leap/baseapp/eip.py" line="221"/> + <source>&Disconnect</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/baseapp/eip.py" line="235"/> + <source>&Connect</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>EIPErrors</name> + <message> + <location filename="../src/leap/eip/exceptions.py" line="66"/> + <source>We could not find any authentication agent in your system.<br/>Make sure you have <b>polkit-gnome-authentication-agent-1</b> running and try again.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/eip/exceptions.py" line="77"/> + <source>We could not find <b>pkexec</b> in your system.<br/> Do you want to try <b>setuid workaround</b>? (<i>DOES NOTHING YET</i>)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/eip/exceptions.py" line="88"/> + <source>No suitable openvpn command found. <br/>(Might be a permissions problem)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/eip/exceptions.py" line="97"/> + <source>there is a problem with provider certificate</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/eip/exceptions.py" line="104"/> + <source>an error occurred during configuratio of leap services</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/eip/exceptions.py" line="119"/> + <source>Server does not allow secure connections</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/eip/exceptions.py" line="126"/> + <source>Server certificate could not be verified</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/eip/exceptions.py" line="137"/> + <source>We could not find your eip certs in the expected path</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/eip/exceptions.py" line="111"/> + <source>Another OpenVPN Process has been detected. Please close it before starting leap-client</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Errors</name> + <message> + <location filename="../src/leap/base/exceptions.py" line="57"/> + <source>Interface not found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/base/exceptions.py" line="64"/> + <source>Looks like your computer is not connected to the internet</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/base/exceptions.py" line="72"/> + <source>Looks like there are problems with your internet connection</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/base/exceptions.py" line="80"/> + <source>It looks like there is no internet connection.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/base/exceptions.py" line="88"/> + <source>Domain cannot be found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/base/exceptions.py" line="95"/> + <source>The Encrypted Connection was lost.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>IntroPage</name> + <message> + <location filename="../src/leap/gui/firstrun/intro.py" line="14"/> + <source>First run wizard</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/intro.py" line="37"/> + <source>Sign up for a new account</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/intro.py" line="40"/> + <source>Log In with my credentials</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/intro.py" line="24"/> + <source>Now we will guide you through some configuration that is needed before you can connect for the first time.<br><br>If you ever need to modify these options again, you can find the wizard in the '<i>Settings</i>' menu from the main window.<br><br>Do you want to <b>sign up</b> for a new account, or <b>log in</b> with an already existing username?<br></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>LastPage</name> + <message> + <location filename="../src/leap/gui/firstrun/last.py" line="18"/> + <source>Connecting to Encrypted Internet Proxy service...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/last.py" line="66"/> + <source>Click '<i>%s</i>' to end the wizard and save your settings.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/last.py" line="62"/> + <source>You are now using an encrypted connection!</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>LogInPage</name> + <message> + <location filename="../src/leap/gui/firstrun/login.py" line="96"/> + <source>Username must be in the username@provider form.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/login.py" line="140"/> + <source>Resolving domain name</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/login.py" line="163"/> + <source>Authentication error: %s</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/login.py" line="179"/> + <source>Credentials validated.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/login.py" line="24"/> + <source>Log In</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/login.py" line="38"/> + <source>User &name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/login.py" line="53"/> + <source>&Password:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/login.py" line="80"/> + <source>Log in</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/login.py" line="25"/> + <source>Log in with your credentials</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>LogPaneMixin</name> + <message> + <location filename="../src/leap/baseapp/log.py" line="25"/> + <source>&Connect</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/baseapp/log.py" line="38"/> + <source>Disconnected</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ProviderInfoPage</name> + <message> + <location filename="../src/leap/gui/firstrun/providerinfo.py" line="19"/> + <source>Provider Information</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerinfo.py" line="20"/> + <source>Services offered by this provider</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerinfo.py" line="95"/> + <source>enrollment policy</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ProviderSetupValidationPage</name> + <message> + <location filename="../src/leap/gui/firstrun/providersetup.py" line="28"/> + <source>Provider setup</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providersetup.py" line="85"/> + <source>Fetching CA certificate</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providersetup.py" line="107"/> + <source>Checking CA fingerprint</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providersetup.py" line="125"/> + <source>Validating api certificate</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providersetup.py" line="29"/> + <source>Gathering configuration options for this provider</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>RegisterUserPage</name> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="31"/> + <source>Sign Up</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="208"/> + <source>Registration succeeded!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="244"/> + <source>Password does not match..</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="248"/> + <source>Password too short.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="253"/> + <source>Password too obvious.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="282"/> + <source>Error connecting to provider (timeout)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="287"/> + <source>Error Connecting to provider (connerr).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="295"/> + <source>Error during registration (%s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="305"/> + <source>Could not register (bad response)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="312"/> + <source>Username not available.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="48"/> + <source>User &name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="60"/> + <source>&Password:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="66"/> + <source>Password (again):</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="72"/> + <source>&Remember username and password.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/register.py" line="378"/> + <source>Register a new user with provider <em>%s</em></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>SelectProviderPage</name> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="32"/> + <source>Enter Provider</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="87"/> + <source>chec&k!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="97"/> + <source>Server certificate could not be verified.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="136"/> + <source>Certificate validation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="290"/> + <source>Could not get info from provider.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="293"/> + <source>Could not download provider info (refused conn.).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="103"/> + <source>&Trust this provider certificate.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="344"/> + <source>Do you want to <b>trust this provider certificate?</b></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="347"/> + <source>SHA-256 fingerprint: <i>%s</i><br></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="33"/> + <source>Please enter the domain of the provider you want to use for your connection</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="222"/> + <source>Checking if it is a valid provider</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="276"/> + <source>Checking for a secure connection</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/gui/firstrun/providerselect.py" line="303"/> + <source>Getting info from the provider</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>StatusAwareTrayIconMixin</name> + <message> + <location filename="../src/leap/baseapp/systray.py" line="78"/> + <source>EIP Connection Status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/baseapp/systray.py" line="87"/> + <source><b>disconnected</b></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/baseapp/systray.py" line="126"/> + <source>Encryption ON turn &off</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/baseapp/systray.py" line="131"/> + <source>&Details...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/baseapp/systray.py" line="135"/> + <source>&About</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/baseapp/systray.py" line="138"/> + <source>About Q&t</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/baseapp/systray.py" line="141"/> + <source>&Quit</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/baseapp/systray.py" line="152"/> + <source>Encryption ON turn o&ff</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/baseapp/systray.py" line="157"/> + <source>Encryption OFF turn &on</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/baseapp/systray.py" line="162"/> + <source>connecting...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/leap/baseapp/systray.py" line="185"/> + <source>About</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> |