= 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 == Below are some tasks that can help in improving the existing translation functionality. === s3translate === * Pootle integration * Deprecated strings must not be merged back into ".py" language files when merging from pootle. * Setting up a separate sub-project on Pootle for a deployment * Upload .po file * from URL as well as file (e.g. http://pootle.sahanafoundation.org/pootle/export/eden/fr/fr.po) * Add ability to enable/disable menu options (make this a DB table rather than a deployment_setting?) * Think about how uploaded files can not conflict with updates from Version Control (currently uploaded updates will be wiped during upgrades) * Exclude all templates other than current one by default (option to include all templates, defaulting to off) * Default list of modules to the ones which are active in the running template * List of modules shouldn't come from list of controllers (e.g. misses translate itself!) * ~~Exclude Unit Tests folder~~ * ~~Exclude all full paths (2nd occurrence+ is giving full path)~~ * Include certain prepop CSV columns (for T(record.field)) * ~~Don't include vars - e.g. T(r.name) shouldn't add "r.name" to the translation file~~ * 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' * Copy code from [http://docs.translatehouse.org/projects/translate-toolkit/en/latest/index.html TranslateToolkit] internally to avoid having external dependencies & launching a shell === 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' """ }}} == Different Sources of translated strings == [[Image(flow.png)]] == 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... == Discussions == * http://logs.sahanafoundation.org/sahana-eden/2013-04-19.txt (13:00 onwards) * http://logs.sahanafoundation.org/sahana-eden/2013-04-22.txt (13:17 onwards) ---- BluePrints [[TranslatedPages]]