From d04c93134ad3daaee0ca280824ab3288bfc5029c Mon Sep 17 00:00:00 2001 From: kali Date: Fri, 16 Nov 2012 22:59:16 +0900 Subject: initial translation example. --- docs/translations.txt | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 docs/translations.txt (limited to 'docs') diff --git a/docs/translations.txt b/docs/translations.txt new file mode 100644 index 00000000..8cdb2e40 --- /dev/null +++ b/docs/translations.txt @@ -0,0 +1,22 @@ +Translations steps +================== + +1. Use .tr() on labels to be translated. + +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). + +2. Add source files to the project file, data/leap_client.pro (Note: investigate if we can use some form of expansion here; it's tedious to add source files one by one). + +3. Still in data/leap_client.pro, add a translation per each language. Translations live in data/translations. + +4. exec ``pylupdate4`` data/leap_client.pro to generate initial .ts file +5. Use QtLinguist (* or whatever web service we end up using *) to translate stuff. We expect the ts to follow Qt xml format, which seems standard enough to allow some fair degree of play. +6. Execute ``lrelease data/leap_client.pro`` to generate .qm files. +7. Check that the .qm for the language you're working with is listed in data/resources/locale.qrc file. + +8. Execute ``make resources`` to re-generate locale_qrc (in src/leap/gui). This is the compiled resource file that we load in the main app entry point; and from where we load the data for the qt translator object. -- cgit v1.2.3 From 06bccc52c84a93407ab4699a2749b24f55fe3061 Mon Sep 17 00:00:00 2001 From: kali Date: Thu, 20 Dec 2012 08:19:55 +0900 Subject: working transifex workflow Closes #666 --- docs/dev/internationalization.rst | 68 ++++++++++++++++++++++++++++++++------- docs/testers/howto.rst | 10 ++++++ docs/translations.txt | 22 ------------- docs/user/install.rst | 2 +- docs/user/intro.rst | 2 +- 5 files changed, 69 insertions(+), 35 deletions(-) delete mode 100644 docs/translations.txt (limited to 'docs') diff --git a/docs/dev/internationalization.rst b/docs/dev/internationalization.rst index 6cbc6f72..e6b89dea 100644 --- a/docs/dev/internationalization.rst +++ b/docs/dev/internationalization.rst @@ -6,24 +6,22 @@ Internationalization This part of the documentation covers the localization and translation of LEAP Client. Because we want to *bring fire to the people*, in as many countries and languages as possible. -.. note:: - We should probably move the translators info to a top level section of the docs, and leave this - as internal/tech-savvy notes. - Translating the LEAP Client PyQt Application -------------------------------------------- .. raw:: html -
Top translations: leap-client » leap_client_es

+
Top translations: leap-client » leap-client

For translators ^^^^^^^^^^^^^^^ .. note:: - ... unfinished + We should probably move the translators info to a top level section of the docs, and leave this + as internal notes. -We are using `transifex `_ site to coordinate translation efforts. If you want to contribute, just sign up there and ... + +We are using `transifex `_ to coordinate translation efforts. If you want to contribute, just sign up there and ... .. note:: ... and what?? @@ -32,8 +30,9 @@ For devs: i18n conventions ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. note:: - should link to PyQt docs on i18n - also our special cases (labels and exceptions) + should say something about our special cases (provider labels and exceptions) when we get decision about it. + +Refer to `pyqt documentation `_. tl;dr;:: @@ -41,17 +40,64 @@ tl;dr;:: for any string that you want to be translated. +.. 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). + --kali + For i18n maintainers ^^^^^^^^^^^^^^^^^^^^ -.. note:: +You need ``pylupdate4`` for these steps. To get it, in debian:: - how do we use the transifex client; automation. + $ apt-get install python-qt4-utils If you do not already have it, install the ``transifex-client`` from the cheese shop:: pip install transifex-client +You can learn more about the transifex-client `here `_. + +**1.** Add any new source files to the project file, ``data/leap_client.pro``. *We should automate this with some templating, it's tedious.* + +**2.** Update the source .ts file ``data/ts/en_US.ts``.:: + + $ make translations + +**3.** Push source .ts file to transifex:: + + $ tx push -s + +**4.** Let the translation fairies do their work... + +**5.** *Et voila!* Get updated .ts files for each language from ``Transifex``. For instance, to pull updated spanish translations:: + + $ tx pull -l es + Pulling new translations for resource leap-client.leap-client (source: data/ts/en_US.ts) + -> es: data/translations/es.ts + Done. + + +Note that there is a configuration option in ``.tx/config`` for setting the minimum completion percentage needed to be able to actually pull a resource. + +**6.** Generate .qm files from the updated .ts files:: + + $ make translations + +and yes, it's the same command than in step 2. One less thing to remember :) + +**7.** Check that the .qm for the language you're working with is listed in ``data/resources/locale.qrc`` file. That should take the translated files from ``data/translations`` + +**8.** Re-generate ``src/leap/gui/locale_qrc``. This is the embedded resource file that we load in the main app entry point; and from where we load the data for the qt translator object:: + + $ make resources + +If you want to try it, just set your LANG environment variable:: + + $ LANG=es_ES leap-client + Translating the Documentation ------------------------------ diff --git a/docs/testers/howto.rst b/docs/testers/howto.rst index 8de4a1eb..e5bf1fa8 100644 --- a/docs/testers/howto.rst +++ b/docs/testers/howto.rst @@ -141,6 +141,16 @@ Testing the packages ^^^^^^^^^^^^^^^^^^^^ When we have a release candidate for the supported platforms (Debian stable, Ubuntu 12.04 by now), we will announce also the URI where you can download the rc for testing in your system. Stay tuned! +Testing the status of translations +---------------------------------- + +We need translators! You can go to `transifex `_, get an account and start contributing. + +If you want to check the current status of the client localization in a language other than the one set in your machine, you can do it with a simple trick (under linux). For instance, do:: + + $ lang=es_ES leap-client + +for running LEAP Client with the spanish locales. Reporting bugs -------------- diff --git a/docs/translations.txt b/docs/translations.txt deleted file mode 100644 index 8cdb2e40..00000000 --- a/docs/translations.txt +++ /dev/null @@ -1,22 +0,0 @@ -Translations steps -================== - -1. Use .tr() on labels to be translated. - -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). - -2. Add source files to the project file, data/leap_client.pro (Note: investigate if we can use some form of expansion here; it's tedious to add source files one by one). - -3. Still in data/leap_client.pro, add a translation per each language. Translations live in data/translations. - -4. exec ``pylupdate4`` data/leap_client.pro to generate initial .ts file -5. Use QtLinguist (* or whatever web service we end up using *) to translate stuff. We expect the ts to follow Qt xml format, which seems standard enough to allow some fair degree of play. -6. Execute ``lrelease data/leap_client.pro`` to generate .qm files. -7. Check that the .qm for the language you're working with is listed in data/resources/locale.qrc file. - -8. Execute ``make resources`` to re-generate locale_qrc (in src/leap/gui). This is the compiled resource file that we load in the main app entry point; and from where we load the data for the qt translator object. diff --git a/docs/user/install.rst b/docs/user/install.rst index 22f88b12..1f0fd831 100644 --- a/docs/user/install.rst +++ b/docs/user/install.rst @@ -32,7 +32,7 @@ Get the code .. warning:: - This... won't work either, as-is. This should be the third optional way to install stable releases from master branch. Right now that does not work because there is *nothing* updated in the master branch. Leaving this here since this is what we will be doing, but if you really intend to have a working tree, refer to the sections :ref:`setting up a working environment ` or :ref:`fetching latest code `. + This... won't work either, as-is. This should be the third optional way to install stable releases from master branch. Right now that does not work because there is *nothing* updated in the master branch. Leaving this here since this is what we will be doing, but if you really intend to have a working tree, refer to the sections :ref:`setting up a working environment ` or :ref:`fetching latest code for testing `. You can get the code from LEAP public git repository :: diff --git a/docs/user/intro.rst b/docs/user/intro.rst index fe983b63..abb6d487 100644 --- a/docs/user/intro.rst +++ b/docs/user/intro.rst @@ -74,7 +74,7 @@ All contributions should have these three points in mind. .. _`gpl3`: GPLv3 License ------------- +-------------- .. image:: gpl.* -- cgit v1.2.3