User Guidelines Localisation

Contributing to the Translations of Sahana Eden

Translation to other languages is highly appreciated.

It would also be great to have someone volunteer to be our Translations lead / coordinator.

Web2Py Localisation System

Sahana Eden is built using Web2Py & as-such it inherits the Web2Py localisation architecture:

NB Currently Sahana is NOT using the pluralisation functionality (help migrating to that would be appreciated!)

Current languages translated to some extent:

Translation Tools

Sahana Translation Interface

We have built our own Translation module which allows you to export the *relevant* strings to an .xls file, a .po file or upload to Pootle:

It also supports uploading updated [partial] files to be merged with the existing languages/

If the language you want isn't yet available, then create a new file using the ISO 639-1 Code of the Language as the filename. If it is a national variation of a language, eg. New Zealand English, add a suffix to the filename: "".


We maintain a Pootle Server as a collaborative space to both do the initial translations and also to allow people to suggest improvements.

Please see the Pootle User Guidelines for instructions or contact the MailingList for advice.

Convert to a .po file for use in Pootle (or other PO file tools such as Virtaal):

For UTF-8, beware of the encoding - needs to be 'without BOM' or 'ANSI as UTF-8'.

  • this is both within the languages/ file & also with any UTF-8 direct in customised Views.
web2py2po -i -o zh-tw.po

# Use Pootle &/or Virtaal to translate, then:

po2web2py -i zh-tw.po -o

NB The .py output looks wrong, with raw UTF-8 binary characters, however it works fine if you let Web2Py process it:

See SysAdmin/Pootle


At one time we started to try out Transifex to do the same job as Pootle, so if you prefer to use that then we can support you there too.


Zanata is being tried for Brazilian Portuguese here:

Web2Py Admin UI

You can edit the language file directly in the Web2Py Admin UI.

If wishing to provide access to just language strings & not the rest of the source code:

  • Script to update language files:
    cd web2py
    python -S eden -R applications/eden/static/scripts/tools/

Using Auto-Translator

You can -also- try a beta tool, which translates any file (including the web2py languages files) using the Google Translate API:

  • Go to Auto-Translator, download, uncompress the .tar.gz archive
  • Inside the uncompressed directory, execute the application with:
    • ./ (parameters) or
    • python (parameters)

(The parameters are: filename, origin language and destination language)
Example: ./ /home/johndoe/web2py/applications/eden/languages/ en es
Wait (you'll see an advance status) and DONE. Just refine the translations (inside web2py or just open with a text editor)

Please provide any bug report or problem to the main list

Spreadsheet Tips

To remove rows where source & target are the same, can create a new column with =IF(A2=B2;1;0), Paste Special, Sort & Delete 1s

Translate Wiki Pages

  • Translated pages with ISO 639-2 Language Code extension (original english page = no extension), e.g.
    • original page:
    • german translation:
  • Insert [[TranslatedPages]] macro to display a list of available translations of a page (at best at bottom of page)

See Also

Last modified 5 years ago Last modified on 01/31/19 17:23:35

Attachments (2)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.