git clone https://github.com/openownership/cove-bods.git openownership-cove-bods cd openownership-cove-bods virtualenv .ve --python=/usr/bin/python3 source .ve/bin/activate pip install -r requirements_dev.txt python manage.py migrate python manage.py compilemessages python manage.py runserver
You may need to pass
runserver in the last step, depending on your development environment.
gettext to be installed. This should come by default with Ubuntu, but just in case:
apt-get update && apt-get install gettext
We use Django's translation framework to provide this application in different languages. We have used Google Translate to perform initial translations from English, but expect those translations to be worked on by humans over time.
Translations for Translators
Translators can provide translations for this application by becomming a collaborator on Transifex https://www.transifex.com/OpenDataServices/cove
Translations for Developers
For more information about Django's translation framework, see https://docs.djangoproject.com/en/1.8/topics/i18n/translation/
If you add new text to the interface, ensure to wrap it in the relevant gettext blocks/functions.
In order to generate messages and post them on Transifex:
First check the
Transifex lock <https://opendataservices.plan.io/projects/co-op/wiki/CoVE_Transifex_lock>, because only one branch can be translated on Transifex at a time.
python manage.py makemessages -l en tx push -s
In order to fetch messages from transifex:
tx pull -a
In order to compile them:
python manage.py compilemessages
Keep the makemessages and pull messages steps in thier own commits seperate from the text changes.
To check that all new text is written so that it is able to be translated you could install and run
pip install django-template-i18n-lint django-template-i18n-lint cove
Adding and updating requirements
Add a new requirements to
requirements_dev.in depending on whether it is just a development requirement or not.
pip-compile requirements.in && pip-compile requirements_dev.in this will populate
requirements_dev.txt with pinned versions of the new requirement and its dependencies.
pip-compile --upgrade requirements.in && pip-compile --upgrade requirements_dev.in will update all pinned requirements to the latest version. Generally we don't want to do this at the same time as adding a new dependency, to make testing any problems easier.