diff options
| author | kali <kali@leap.se> | 2012-12-21 07:44:59 +0900 | 
|---|---|---|
| committer | kali <kali@leap.se> | 2012-12-21 07:45:14 +0900 | 
| commit | 654b83db5f050a94f9637fb1ce80df5cb7ed5a38 (patch) | |
| tree | 4621653d602c1951e4584c8c66f6607e5eceae4b | |
| parent | b0c3c9194447f20306111a31ee5a6d4828fed158 (diff) | |
updated "translate"  to work in objects other than QObjects
| -rw-r--r-- | data/leap_client.pro | 19 | ||||
| -rw-r--r-- | data/ts/en_US.ts | 39 | ||||
| -rw-r--r-- | docs/dev/internationalization.rst | 23 | ||||
| -rw-r--r-- | src/leap/base/exceptions.py | 34 | 
4 files changed, 92 insertions, 23 deletions
| diff --git a/data/leap_client.pro b/data/leap_client.pro index 4c559029..3f76d6af 100644 --- a/data/leap_client.pro +++ b/data/leap_client.pro @@ -2,15 +2,16 @@  # is not there a f*** way of expanding this? other to template with python I mean... -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/regvalidation.py -SOURCES		+= ../src/leap/gui/firstrun/wizard.py +SOURCES += ../src/leap/base/exceptions.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/regvalidation.py +SOURCES	+= ../src/leap/gui/firstrun/wizard.py  # where to generate ts files -- tx will pick from here diff --git a/data/ts/en_US.ts b/data/ts/en_US.ts index f6aadc5c..a802dd75 100644 --- a/data/ts/en_US.ts +++ b/data/ts/en_US.ts @@ -1,6 +1,39 @@  <?xml version="1.0" encoding="utf-8"?>  <!DOCTYPE TS><TS version="2.0">  <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. Shutting down...</source> +        <translation type="unfinished"></translation> +    </message> +</context> +<context>      <name>IntroPage</name>      <message>          <location filename="../src/leap/gui/firstrun/intro.py" line="14"/> @@ -216,4 +249,10 @@          <translation type="unfinished"></translation>      </message>  </context> +<context> +    <name>TestyClass</name> +</context> +<context> +    <name>this is a cat</name> +</context>  </TS> diff --git a/docs/dev/internationalization.rst b/docs/dev/internationalization.rst index e6b89dea..1a9af0be 100644 --- a/docs/dev/internationalization.rst +++ b/docs/dev/internationalization.rst @@ -38,21 +38,30 @@ tl;dr;::       self.tr('your string') -for any string that you want to be translated. +for any string that you want to be translated, as long as the instance derives from ``QObject``. + +If you have to translate something that it is not a ``QObject``, use the magic leap ``translate`` method: + + +.. code-block:: python + +   from leap.util.translations import translate + +   class Foo(object): +        bar = translate(<Context>, <string>, <comment>) +  .. Note about this: there seems to be some problems with the .tr method -   on QObjects. Investigate this. -   I still believe we can use a generic _ method which is smart enough to -   fallback to QObject.tr methods or lookup our own tr implementation (for our -   multilungual objects, like in exceptions or provider labels that came from json objects). +   so the translate method could actually be the preferred thing in all the cases. +   Still missing what to do for language labels (json-based).     --kali  For i18n maintainers  ^^^^^^^^^^^^^^^^^^^^ -You need ``pylupdate4`` for these steps. To get it, in debian:: +You need ``pylupdate4`` and ``lrelease`` for these steps. To get it, in debian:: -   $ apt-get install python-qt4-utils +   $ apt-get install pyqt4-dev-tools qt4-linguist-tools  If you do not already have it, install the ``transifex-client`` from the cheese shop:: diff --git a/src/leap/base/exceptions.py b/src/leap/base/exceptions.py index 227da953..c5e56b76 100644 --- a/src/leap/base/exceptions.py +++ b/src/leap/base/exceptions.py @@ -14,6 +14,7 @@ Exception attributes and their meaning/uses  * usermessage: the message that will be passed to user in ErrorDialogs                 in Qt-land.  """ +from leap.util.translations import translate  class LeapException(Exception): @@ -22,6 +23,7 @@ class LeapException(Exception):      sets some parameters that we will check      during error checking routines      """ +      critical = False      failfirst = False      warning = False @@ -46,32 +48,50 @@ class ImproperlyConfigured(Exception):      pass -class NoDefaultInterfaceFoundError(LeapException): -    message = "no default interface found" -    usermessage = "Looks like your computer is not connected to the internet" +# NOTE: "Errors" (context) has to be a explicit string!  class InterfaceNotFoundError(LeapException):      # XXX should take iface arg on init maybe?      message = "interface not found" +    usermessage = translate( +        "Errors", +        "Interface not found") + + +class NoDefaultInterfaceFoundError(LeapException): +    message = "no default interface found" +    usermessage = translate( +        "Errors", +        "Looks like your computer " +        "is not connected to the internet")  class NoConnectionToGateway(CriticalError):      message = "no connection to gateway" -    usermessage = "Looks like there are problems with your internet connection" +    usermessage = translate( +        "Errors", +        "Looks like there are problems " +        "with your internet connection")  class NoInternetConnection(CriticalError):      message = "No Internet connection found" -    usermessage = "It looks like there is no internet connection." +    usermessage = translate( +        "Errors", +        "It looks like there is no internet connection.")      # and now we try to connect to our web to troubleshoot LOL :P  class CannotResolveDomainError(LeapException):      message = "Cannot resolve domain" -    usermessage = "Domain cannot be found" +    usermessage = translate( +        "Errors", +        "Domain cannot be found")  class TunnelNotDefaultRouteError(CriticalError):      message = "Tunnel connection dissapeared. VPN down?" -    usermessage = "The Encrypted Connection was lost. Shutting down..." +    usermessage = translate( +        "Errors", +        "The Encrypted Connection was lost. Shutting down...") | 
