= Internationalisation Blueprint = [[TOC]] This page looks at ways we can extend the Internationalisation options within Sahana Eden. Production Options are defined within DeveloperGuidelines/Internationalisation User perspective is: UserGuidelines/Localisation == !ToDo == === s3translate === * Upload .po file * from URL as well as file (e.g. http://pootle.sahanafoundation.org/pootle/export/eden/fr/fr.po) * Default list of modules to the ones which are active in the running template * Rewrite admin.py translate() so that only opt3 is a REST controller for translate_language (no need for an opt) * All other opts should be separate controllers * Online help to explain that the local languages/code.py will be updated & that uploaded files will be merged * Online help to explain 'core files' === Other === * !JavaScript * [http://datatables.net/usage/i18n dataTables] * Extend web2py2po/po2web2py to support translator comments {{{ def translate(self, message, symbols): """ user ## to add a comment into a translation string the comment can be useful do discriminate different possible translations for the same string (for example different locations) T(' hello world ') -> ' hello world ' T(' hello world ## token') -> 'hello world' T('hello ## world ## token') -> 'hello ## world' """ }}} == Other options == * [http://babel.edgewall.org Babel] - good toolkit to combine with GNU/gettext * [https://help.launchpad.net/Translations LaunchPad Translations] - access to Ubuntu community * [http://code.google.com/apis/ajaxlanguage GoogleTranslate] can be used to help translators get started, but needs humans to make cultural and linguistic refinements * Web2Py plugin for this: http://www.web2py.com/plugins/default/translate * [http://www.google.com/transliterate/arabic/about_ar.html Google ta3reeb] - Arabic 'keyboard' using Latin characters * MS Localisation Design Pattern: http://msdn.microsoft.com/en-us/library/dd129504%28v=VS.85%29.aspx == Notes == * If needing to be able to handle alternate word order with dynamic strings then wrap in XML(): * http://groups.google.com/group/web2py/browse_thread/thread/ccacbdc5286e5c56 * Databases store Unicode characters as 2+ bytes, so string, length=20 may limit to just 10 characters: * http://groups.google.com/group/web2py/browse_thread/thread/e3927c8a333c9abe * UTF-8 encoding in Controllers: * http://groups.google.com/group/web2py/browse_thread/thread/8ae1a2f56a76f2af * Date fields: * http://groups.google.com/group/web2py/msg/4a42f83c0989fedd * Working across Timezones: * http://groups.google.com/group/web2py/browse_thread/thread/1df15b5238c157d1 * Paragraph Translations: * http://groups.google.com/group/web2py/browse_thread/thread/cd65f614d2156810 * Currency Formatting: * http://stackoverflow.com/questions/320929/currency-formatting-in-python * http://logs.sahanafoundation.org/sahana-eden/2011-03-27.txt * 18:48 onwards has relevant discussion... ---- BluePrints [[TranslatedPages]]