Instructions for translators¶
Here is how your can help translating Lino into your own language.
You are going to edit a series of
.po files which are part of
the code repositories of Lino.
Set up a site¶
Before starting to translate, you must set up a site (a Django project) on which you can see your work while you are evolving. You cannot simply translate all those messages and then believe that they are correct.
We suppose that you have installed the development version of Lino.
We suppose that
lino_book.projects.min1is the application you want to translate.
And let's say for example that you want to translate them to Spanish.
Go to your local project directory:
$ cd ~/mysite
Change your project's
settings.py file once more so that it
looks as follows:
# -*- coding: UTF-8 -*- from __future__ import unicode_literals from lino_book.projects.docs.settings.demo import * class Site(Site): title = "My Lino Mini site" languages = 'en es' SITE = Site(globals())
That is, you specify your own language distribution, consisting of
English as first language and Spanish (your language) as second. See
lino.core.site.Site.languages for details. Note that the first language
cannot currently be Spanish because the demo fixtures would fail
If your language is not yet covered for Lino, then you must Create a demo user for your language before going on.
Initialize the demo database:
$ python manage.py prep
Run your rdevelopment server¶
Run the development server on the demo database:
$ python manage.py runserver
Point your browser to view the application. Log in as the Spanish user.
Find the translatable strings¶
The translatable strings on this page (gettext and Poedit call them "messages") are for exampe the menu labels ("Contacts", "Producs" etc), but also content texts like "Welcome", "Hi, Rodrigo!" or "This is a Lino demo site."
Now you must locate these strings in the
Open another terminal window and go to the Lino repository.
$ cd ~/repositories/lino
Launch Poedit, specifying the
.po file for the Spanish
translation (international language code for Spanish is
$ poedit lino/locale/es/LC_MESSAGES/django.po
It looks similar to this screenshot:
Translate one or a few messages. In our example we translated the following message:
Save your work in Poedit.
Now you should first touch your settings.py file in order to tell the development server process that something has changed. Open a third terminal window and type:
$ cd ~/mysite $ touch settings.py
This will cause the server process (which is running in the first terminal window) to reload and to rewrite any cache files.
Refresh your browser page:
Submit your work¶
When you are satisfied with your work, you will make a pull request to ask us to integrate your changes into the public Lino repositories.
More about pull requests in Basic git skills.
Create a demo user for your language¶
If Lino does not yet have a default demo administrator for your
lino.modlib.users.fixtures.demo), then you need to
create a local fixture which adds a demo user for your language. It's
$ mkdir fixtures $ touch fixtures/__init__.py $ nano fixtures/demo.py
demo.py file should look as folloas:
# This is needed only if Lino does not yet have a default demo # administrator for your language. from django.conf import settings from lino.modlib.users.choicelists import UserTypes def objects(): yield settings.SITE.user_model(username="es_demo_root", language="es", first_name="Roberto", last_name="Spanish", email=settings.SITE.demo_email, profile=UserTypes.admin)
Trucs et astuces¶
Voici un pitfall: la traduction du string suivant:
msgid "%(person)s has been unregistered from %(course)s"
ne doit pas être:
msgstr "%(personne)s a été désinscrit du %(cours)"
msgstr "%(person)s a été désinscrit du %(course)s"
C.-à-d. les mots-clés entre parenthèses sont des variables, et il ne faut pas les modifier.
À noter également que le
s derrière la parenthèse ne sera pas
imprimé mais est obligatoire
(il indique à Python qu'il s'agit d'un remplacement de type string).