Difference between revisions of "Service/translate"
(Polish the text) |
|||
Line 33: | Line 33: | ||
More information on language administrator duties can be found on [[Translation_Team/Administration_QuickStart|this page]] | More information on language administrator duties can be found on [[Translation_Team/Administration_QuickStart|this page]] | ||
+ | == Notes == | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | !scope="row" | Home | ||
+ | |{{Code|/var/lib/pootle}} | ||
+ | |- | ||
+ | !scope="row" | Daemon | ||
+ | | | ||
+ | {{Code|/etc/init.d/apache2}}<br> | ||
+ | {{Code|/etc/init.d/pootle}} | ||
+ | |- | ||
+ | !scope="row" | Logs | ||
+ | |{{Code|/var/log/apache2}} | ||
+ | |- | ||
+ | !scope="row" | Config | ||
+ | | | ||
+ | {{Code|/etc/apache2/sites-enabled/000-default}}<br> | ||
+ | {{Code|/etc/cron.d/pootle}}<br> | ||
+ | |- | ||
+ | !scope="row" | Ports | ||
+ | | | ||
+ | {{Code|80}} HTTP server | ||
+ | |- | ||
+ | |} | ||
== Upgrade notes == | == Upgrade notes == | ||
+ | |||
*A backup of the DB and pootle localsettings.py must be done also. | *A backup of the DB and pootle localsettings.py must be done also. | ||
*Backup of the /var/lib/pootle structure | *Backup of the /var/lib/pootle structure | ||
Line 44: | Line 70: | ||
Pootle in Sugar is maintained. (dirakx has step-up to be maint) | Pootle in Sugar is maintained. (dirakx has step-up to be maint) | ||
− | We (godiard / martin_xsa / erikos / dirakx / Bernie / Dogi) are trying to resolve the pending issues because we need working translations. | + | We (godiard / martin_xsa / erikos / dirakx / Bernie / Dogi) <!-- http://ru.wiktionary.org/wiki/%D1%83_%D1%81%D0%B5%D0%BC%D0%B8_%D0%BD%D1%8F%D0%BD%D0%B5%D0%BA_%D0%B4%D0%B8%D1%82%D1%8F_%D0%B1%D0%B5%D0%B7_%D0%B3%D0%BB%D0%B0%D0%B7%D0%B0 :)--> are trying to resolve the pending issues because we need working translations. |
To date translations are working, we are working in a new VM pootle-devel to test upgrades of the Pootle/Django/Translate-toolkit stack. | To date translations are working, we are working in a new VM pootle-devel to test upgrades of the Pootle/Django/Translate-toolkit stack. | ||
Line 50: | Line 76: | ||
The last maintainer was Sayamindu Dasgupta and we asked he our doubts, i am putting here this information. | The last maintainer was Sayamindu Dasgupta and we asked he our doubts, i am putting here this information. | ||
− | == Basic info: == | + | === Basic info: === |
The pootle directory is: | The pootle directory is: | ||
Line 59: | Line 85: | ||
/var/lib/pootle/translations | /var/lib/pootle/translations | ||
− | == Creating branches: == | + | === Creating branches: === |
* Each branch (eg: glucose-0.92) is a directory in the translations directory | * Each branch (eg: glucose-0.92) is a directory in the translations directory | ||
Line 109: | Line 135: | ||
[1] http://git.sugarlabs.org/pootle-helpers/mainline/blobs/master/admin/pootlepopulator.py | [1] http://git.sugarlabs.org/pootle-helpers/mainline/blobs/master/admin/pootlepopulator.py | ||
− | == Adding activities == | + | === Adding activities === |
*Do: | *Do: | ||
''Note:'''''The git url must be writable by Pootle.''' | ''Note:'''''The git url must be writable by Pootle.''' | ||
Line 136: | Line 162: | ||
*Then your activity must be in place to be translated and ''commit to VCS/update from VCS'' links must be activated. | *Then your activity must be in place to be translated and ''commit to VCS/update from VCS'' links must be activated. | ||
− | == Working with git in the pootle server == | + | === Working with git in the pootle server === |
The git operations must be done by the pootle user: | The git operations must be done by the pootle user: | ||
Line 150: | Line 176: | ||
Other important script is pogenerator.py this script re-generates pot in each repo. | Other important script is pogenerator.py this script re-generates pot in each repo. | ||
− | == Resolving conflicts == | + | === Resolving conflicts === |
If the maintainer did a commit with a file in the po directory we will have a conflict, and Pootle can not do a pull. | If the maintainer did a commit with a file in the po directory we will have a conflict, and Pootle can not do a pull. | ||
Line 159: | Line 185: | ||
sudo -u pootle git pull -s ours | sudo -u pootle git pull -s ours | ||
− | + | === Checking that pootle is working === | |
− | == Checking that pootle is working == | ||
* When commiting from pootle interface, repos in git reflect the commit as something similar to: | * When commiting from pootle interface, repos in git reflect the commit as something similar to: | ||
Line 173: | Line 198: | ||
####### Checking POT for Write (master) ###### | ####### Checking POT for Write (master) ###### | ||
+ | === Tips === | ||
− | + | * How to manipulate users: | |
− | |||
− | How to manipulate users: | ||
django-admin shell --settings=pootle.settings | django-admin shell --settings=pootle.settings | ||
Line 184: | Line 208: | ||
>>> u.save() | >>> u.save() | ||
+ | * Refresh stats, needed when the database and the checked out modules get out of sync: | ||
− | + | sudo -u pootle django-admin refresh_stats --settings=pootle.settings | |
− | + | * If you have a commit error file because of only read git url, please rm the old '''/var/lib/pootle/checkouts/''' files related with that activity or project and re run pootlepopulator. | |
− | + | * Also if there are errors related with git add, is likely that some lang.po files are not versionated on pootle server, please run '''git add .''' inside the activity or project. | |
− | + | * When there are '''commit to cvs/update to cvs''' links missing in activities or projects please check git url in .git/config , this URL must be writable by pootle. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | == Files == | ||
− | + | Important files and directories in {{Code|/var/lib/pootle}}. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | {{Code|'''checkouts'''}}<br> | ||
+ | Modules are checked out in this directory. pogenerator.py pulls from git and svn so we have updated sources, then it generates a new .pot file from them. Translated strings get reflected in the .po files in each module, and when the language maintainer clicks the Commit to VCS link, get pushed back to the upstream module. | ||
− | + | {{Code|'''dbs'''}}<br> | |
+ | Iternal db used by Pootle, no need to mess directly with it. | ||
− | + | {{Code|'''maintenance'''}}<br> | |
− | + | Contains some sugar-specific scripts to help maintain our Pootle instance, they are managed in http://git.sugarlabs.org/projects/pootle-helpers. | |
− | + | {{Code|'''po'''}}<br> | |
+ | Contains xapian indexes for the search feature. | ||
− | + | {{Code|'''translations'''}}<br> | |
− | + | More Pootle internal data. | |
− | |||
− | + | {{Code|'''maintenance/helpers/potupdater/project_list.ini'''}}<br> | |
− | + | This is an Ini file that contains configuration for all used sources repositories. Each section describes one sources repository, where section name is full path to the directory with sources, and contains following options: | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
* {{Code|project}} required, meaning-less project name; | * {{Code|project}} required, meaning-less project name; | ||
Line 255: | Line 249: | ||
* http://translate.sourceforge.net/wiki/pootle/installation | * http://translate.sourceforge.net/wiki/pootle/installation | ||
− | |||
* http://lists.laptop.org/listinfo/localization | * http://lists.laptop.org/listinfo/localization | ||
+ | * http://git.sugarlabs.org/pootle-helpers | ||
+ | * /usr/lib/python2.6/dist-packages/translate/storage/versioncontrol/git.py (Translate) | ||
[[Category:Service|translate]] | [[Category:Service|translate]] |
Revision as of 17:15, 23 September 2011
Hostnames
Additional urls:
- http://translate.sugarlabs.org/status, status page
- http://translate.sugarlabs.org/langpacks, language packs
Hosted on
Administrative contact
- translate AT sugarlabs DOT org
Sysadmins
For non-emergency calls, preferably send email to the administrative contact.
- Sayamindu Dasgupta has system admin and Pootle admin privs.
- Chris Leonard has Pootle administrator privs.
- தங்கமணி_அருண்(Thangamani Arun) has system admin and Pootle administrator privs.
- Rafael Ortiz has system admin and Pootle admin privs.
- Bernie Innocenti has system admin and Pootle administrator privs, but takes care only of OS-level administration.
Language Administrators
Language administrators are typically native speakers of a given language that take on responsibility (granted by a Pootle administrator after a request to the Localization list) for reviewing and committing PO files for a given language. Contacting language administrators is generally done by posting to the Localization list.
More information on language administrator duties can be found on this page
Notes
Home | /var/lib/pootle
|
---|---|
Daemon |
|
Logs | /var/log/apache2
|
Config |
|
Ports |
|
Upgrade notes
- A backup of the DB and pootle localsettings.py must be done also.
- Backup of the /var/lib/pootle structure
- New versions of Django and Translate toolkit must be installed first
- Restore localsettings and DB backup
Mantainance Notes
Pootle in Sugar is maintained. (dirakx has step-up to be maint)
We (godiard / martin_xsa / erikos / dirakx / Bernie / Dogi) are trying to resolve the pending issues because we need working translations.
To date translations are working, we are working in a new VM pootle-devel to test upgrades of the Pootle/Django/Translate-toolkit stack.
The last maintainer was Sayamindu Dasgupta and we asked he our doubts, i am putting here this information.
Basic info:
The pootle directory is:
/var/lib/pootle
The translations live in:
/var/lib/pootle/translations
Creating branches:
- Each branch (eg: glucose-0.92) is a directory in the translations directory
Each project is a subdirectory inside this directory (eg: glucose-0.90/sugar) These are actually symlinks to directories /var/lib/pootle/checkouts
- There's a script called pootlepopulator.py[1] It is invoked as
pootlepopulator.py category GIT_URL checkout_directory [branch] So, assuming the directory /var/lib/pootle/translations/glucose92 exists, you can issue these commands:
sudo -u pootle python pootlepopulator.py glucose92 gitorious@git.sugarlabs.org:sugar/mainline.git sugar sucrose-0.92 sudo -u pootle python pootlepopulator.py glucose92 gitorious@git.sugarlabs.org:sugar-base/mainline.git sugar-base sucrose-0.92 sudo -u pootle python pootlepopulator.py glucose92 gitorious@git.sugarlabs.org:sugar-toolkit/mainline.git sugar-toolkit sucrose-0.92
pootlepopulator script can be found in maintainance/helpers directory in /var/lib/pootle
As these projects doesn't have pots we most copy them from master
cp /var/lib/pootle/checkouts/glucose/sugar/po/sugar.pot /var/lib/pootle/checkouts/glucose92/sugar/po/ cp /var/lib/pootle/checkouts/glucose/sugar-base/po/sugar-base.pot /var/lib/pootle/checkouts/glucose92/sugar-base/po/ cp /var/lib/pootle/checkouts/glucose/sugar-toolkit/po/sugar-toolkit.pot /var/lib/pootle/checkouts/glucose92/sugar-toolkit/po/
Pootlepopulator cannot create symlinks (what add_langs does for activities) then gonzalo had to modify it to only create symlinks and not cloning thus we finnaly run.
sudo -u pootle python create_translation_links.py glucose92 sugar sucrose-0.92 sudo -u pootle python create_translation_links.py glucose92 sugar-base sucrose-0.92 sudo -u pootle python create_translation_links.py glucose92 sugar-toolkit sucrose-0.92
- Once this is done, you need to create project in Pootle admin - go
to admin->projects and create a project called Sucrose 0.90 with the code sucrose-0.90 (same as the directory name)
- Add langs on the pootle web ui.
- Restart Pootle and Apache if the new project does not show up after this.
- Add the new projects to maintenance/helpers/potupdater/project_list.ini
- Copy strings from master to your branch
cd /var/lib/pootle/translations/glucose92 for DIR in `ls ../glucose`; do cp ../glucose/$DIR*.po ./$DIR;
- In web UI, you must update project Templates, all lang admins must update from templates in each language.
- Your project is created.
[1] http://git.sugarlabs.org/pootle-helpers/mainline/blobs/master/admin/pootlepopulator.py
Adding activities
- Do:
Note:The git url must be writable by Pootle.
2!root@pootle:/var/lib/pootle/maintenance/helpers/admin# sudo -u pootle python ./pootlepopulator.py honey git://git.sugarlabs.org/fototoon/mainline.git fototoon ******** Cloning git://git.sugarlabs.org/fototoon/mainline.git to /var/lib/pootle/checkouts/honey/fototoon ********* Running git clone git://git.sugarlabs.org/fototoon/mainline.git /var/lib/pootle/checkouts/honey/fototoon Initialized empty Git repository in /var/lib/pootle/checkouts/honey/fototoon/.git/ ******** Switching to branch master ********* Running git checkout --track -b master origin/master Running git pull Already up-to-date. ********* Git operation completed, moving to next stage ******** ********* Searching for POT file ********* ********* Found POT file FotoToon.pot ********* ********* Starting to symlink files ********* Linking /var/lib/pootle/checkouts/honey/fototoon/po/es.po to /var/lib/pootle/translations/honey/es/fototoon.po Linking /var/lib/pootle/checkouts/honey/fototoon/po/fr.po to /var/lib/pootle/translations/honey/fr/fototoon.po Linking /var/lib/pootle/checkouts/honey/fototoon/po/FotoToon.pot to /var/lib/pootle/translations/honey/templates/fototoon.pot ********* Done Symlinking *********
- Do update from templates on the templates project on Pootle's frontend.
- Then run the add_langs.py script in order to have all the lang.po in place.
- Then your activity must be in place to be translated and commit to VCS/update from VCS links must be activated.
Working with git in the pootle server
The git operations must be done by the pootle user:
sudo -u pootle git log
sudo -u pootle git push origin sucrose-0.82
This script tell you when you can update different clones of activities, when new strings are added via gettext in each repo.
/var/lib/pootle/maintenance/helpers/potupdater/check_unmerged_translations.sh
Other important script is pogenerator.py this script re-generates pot in each repo.
Resolving conflicts
If the maintainer did a commit with a file in the po directory we will have a conflict, and Pootle can not do a pull.
Pootle build the pot file from the sources, if we compare and the translations are updated in pootle we can do a pull preserving the info in pootle:
sudo -u pootle git pull -s ours
Checking that pootle is working
- When commiting from pootle interface, repos in git reflect the commit as something similar to:
pootle pushed 3fd0cf7b to taportfolio/mainline:master on March 04, 2011 01:32 Commit from Sugar Labs: Translation System by user cjl.: 2 of 25 messages translated (0 fuzzy).
- Pogenerator.py (in cronjob), it's also giving mails with info like:
Already up-to-date. or ####### Checking POT for Write (master) ######
Tips
- How to manipulate users:
django-admin shell --settings=pootle.settings >>> from django.contrib.auth.models import User >>> u = User.objects.get(username='bernie') >>> u.is_superuser = True >>> u.save()
- Refresh stats, needed when the database and the checked out modules get out of sync:
sudo -u pootle django-admin refresh_stats --settings=pootle.settings
- If you have a commit error file because of only read git url, please rm the old /var/lib/pootle/checkouts/ files related with that activity or project and re run pootlepopulator.
- Also if there are errors related with git add, is likely that some lang.po files are not versionated on pootle server, please run git add . inside the activity or project.
- When there are commit to cvs/update to cvs links missing in activities or projects please check git url in .git/config , this URL must be writable by pootle.
Files
Important files and directories in /var/lib/pootle
.
checkouts
Modules are checked out in this directory. pogenerator.py pulls from git and svn so we have updated sources, then it generates a new .pot file from them. Translated strings get reflected in the .po files in each module, and when the language maintainer clicks the Commit to VCS link, get pushed back to the upstream module.
dbs
Iternal db used by Pootle, no need to mess directly with it.
maintenance
Contains some sugar-specific scripts to help maintain our Pootle instance, they are managed in http://git.sugarlabs.org/projects/pootle-helpers.
po
Contains xapian indexes for the search feature.
translations
More Pootle internal data.
maintenance/helpers/potupdater/project_list.ini
This is an Ini file that contains configuration for all used sources repositories. Each section describes one sources repository, where section name is full path to the directory with sources, and contains following options:
project
required, meaning-less project name;vcs
required, the type of VCS for; supported values are:git
;method
required, the method how to generate.pot
files from sources; supported values are:bundlebuilder
for activities,intltool
for intltool based projects;layout
required, ?;ignore-files
optional, the semicolon separated list of file paths that are relative to the sources root; ifmethod
isbundlebuilder
this value will be used to ignore while producing.pot files
;
References
- http://translate.sourceforge.net/wiki/pootle/installation
- http://lists.laptop.org/listinfo/localization
- http://git.sugarlabs.org/pootle-helpers
- /usr/lib/python2.6/dist-packages/translate/storage/versioncontrol/git.py (Translate)