Translations: Difference between revisions

From GNU MediaGoblin Wiki
Jump to navigation Jump to search
Line 1: Line 1:
= For translators =
= For translators =


It is very easy to add or complete the translation of MediaGoblin! We use the web interface provided by Transifex.net to do the translations. You can see the current status of the translations per language [https://www.transifex.net/projects/p/mediagoblin/resource/mediagoblin/ here].
You can translate our tools at Transifex:


To start translating, just:
https://www.transifex.net/projects/p/mediagoblin/resource/mediagoblin/


# click on your language in [https://www.transifex.net/projects/p/mediagoblin/resource/mediagoblin/ that list] then
To translate, click on your language on the list, and then click on "Translate now". By default, Transifex only shows you strings that currently have no translation. There is a checkbox to enable display of the translated strings, in case you can fix any of them.
# click on "Translate now".


We are currently using no translation teams, so you can just edit the strings (but try to be nice and consistent with the current translation).
By default, Transifex only shows you strings that currently have no translation. There is a checkbox to enable the display of already translated strings, in case you want to improve any of them.
There are no translation teams, so you can just edit the strings (but try to be nice and consistent with the current translation). If you are a regular contributor to the translations, you might want to add some notes to the [[#Notes for some language teams|per-language section on this page]] to coordinate consistent translations.


Note: please don't translate the words "MediaGoblin" or "GNU" into your native language. Those words should be retained as-is for branding reasons. :)
Note: please don't translate the words "MediaGoblin" or "GNU" into your native language. Those words should be retained as-is for branding reasons. :)

Revision as of 08:27, 5 December 2012

For translators

It is very easy to add or complete the translation of MediaGoblin! We use the web interface provided by Transifex.net to do the translations. You can see the current status of the translations per language here.

To start translating, just:

  1. click on your language in that list then
  2. click on "Translate now".

By default, Transifex only shows you strings that currently have no translation. There is a checkbox to enable the display of already translated strings, in case you want to improve any of them. There are no translation teams, so you can just edit the strings (but try to be nice and consistent with the current translation). If you are a regular contributor to the translations, you might want to add some notes to the per-language section on this page to coordinate consistent translations.

Note: please don't translate the words "MediaGoblin" or "GNU" into your native language. Those words should be retained as-is for branding reasons. :)


Notes for some language teams

German

Interessante Hinweise zur Übersetzung finden sich bei Gnome:

In Abweichung von diesen Richtlinien wird momentan "Du" für die Anrede benutzt. "Du" und "Deine" werden groß geschrieben. Benutze die folgenden Begriffe um konsistent zu bleiben:

Benutzerkonto/Nutzerkonto, E-Mail, E-Mail-Adresse, Aktivierungsmail, Konto "aktivieren" (verify email), Album (collection), Kurztitel (slug)

Spanish

Se está adoptando la siguiente convención para la traducción al español. Si crees que alguna traducción se puede mejorar, sugiérela en la página de discusión de este artículo.

Inglés Español Comentarios
you (segunda persona del singular, expresión informal)
media contenido
slug ficha

Fixing translations from transifex

For developers

Marking strings for translation

In Jinja2

See: http://jinja.pocoo.org/docs/templates/#i18n

Mostly like Django template i18n support, if you have any experience with that.

In python code

Usually, like this:

from mediagoblin.util import pass_to_ugettext as _

def some_func(something):
    return _(u'This string would tooootally be translatable now.')

Except, in form modules we don't actually want to translate things because for various reasons that doesn't work, so we do the translation call template-side. So write the module to use the fake ugettext passthrough (which doesn't do any translation but still wraps things in _() so that Babel will know to extract these strings):

from mediagoblin.util import fake_ugettext_passthrough as _

class FunkyMonkeyForm(wtforms.Form):
    funky = wtforms.TextAreaField(
            _('Funkiness description'))

Extracting translations

If you run buildout it should create a script called 'pybabel'. Use it to extract translations like so:

./bin/pybabel extract -F babel.ini -o mediagoblin/i18n/en/LC_MESSAGES/mediagoblin.po .

Compiling translations

./bin/pybabel compile -D mediagoblin -d mediagoblin/i18n/

Pulling translations from Transifex

Unfortunately until the next release of transifex-client which has been patched to have proper entry points, you have to run transifex-client from a virtualenv or from site-packages. But assuming that's done, pulling translations is easy:

tx pull -a

Pushing new translations to Transifex

tx push -s


Troubleshooting

Got an error on Transifex like:

"Translation must start with a newline (\n)"?

The problem here is when we have something like:

       {% trans register_url=request.urlgen('mediagoblin.auth.register') %}
         <a class="header_submit_highlight" href="Template:Register url">Create a free account</a>
         or
         <a class="header_submit" href="http://wiki.mediagoblin.org/HackingHowto">Set up MediaGoblin on your own server</a>
       {% endtrans %}

instead of:

       {% trans register_url=request.urlgen('mediagoblin.auth.register') -%}
         <a class="header_submit_highlight" href="Template:Register url">Create a free account</a>
         or
         <a class="header_submit" href="http://wiki.mediagoblin.org/HackingHowto">Set up MediaGoblin on your own server</a>
       {%- endtrans %}

The distinction might not be obvious... look for the %} versus -%} and {% versus {%- on the first and last lines. The thing about this is this tells Jinja2 to strip the whitespace. Without that, Transifex sees that there's a "\n" on the first line of the original but not on the future translation, and gets upset.

If this happens the template should be updated to strip whitespace and translations should be pushed to transifex.