Django management command for maintaining OneSky localization in your django app.
The idea is to have simple django management command which will pull, make messages, push, compile messages in that order into OneSky project. You only have to maintain your translation in OneSky. Run this command when new string will arise in your app or when you translate some strings in OneSky.
$ python setup.py install
or
$ pip install django-oneskyapp
Note to myself: "pip install --upgrade --no-deps django-oneskyapp" will upgrade without dependencies :)
Add to your settings.py
INSTALLED_APPS = (
...
'django_oneskyapp'
)
USE_I18N = True
USE_L10N = True
_ = lambda s: s
LANGUAGE_CODE = 'en'
LANGUAGES = (
('en', _('English')),
('sk', _('Slovak')),
('de-AT', _('German (Austria)')),
('pt-BR', _('Portuguese (Brazilian)')),
)
ONESKY_API_KEY = "my_public_key"
ONESKY_API_SECRET = "its_secret"
ONESKY_PROJECTS = [project_id] # Included in url as slug when translating or in projects list
LOCALE_PATHS = (
os.path.join(BASE_DIR, 'testapp/locale'),
)
Don't forget to backup your locales if already translated, then run "oneskyapp" command
$ cd /your/django/app
$ python manage.py oneskyapp
-
This workflow somehow does not work with django.po files manualy created in OneSky. OneSky API will respond with 400 error "This file is not downloadable through API". When creating OneSky project, always upload empty django.po file, do not create it by adding translation strings "manualy" in OneSky.
-
makemessages exception "CommandError: This script should be run from the Django Git tree or your project or app tree. If you did indeed run it from the Git checkout or your project or application..." Solution: makemessages does not like being run from project root, rather from app root. Change directory to your django app
cd /your/django/project/app
then call manage.py with proper pathpython /your/django/project/manage.py oneskyapp;
If location of your templates is outside app directory, create symlink to your app so makemessages can scan templates through symlink. Same exception issue appers when running makemessages manualy, so again cd to your app dir then callmanage.py makemessages -a -s
with proper path and use -s switch to follow symlinks.
OneSky is awesome free localization management tool. It also offers profesional translation services. Create your free account at http://www.oneskyapp.com
- Create project
- Choose website/webapp, private/public
- Choose default language (professional translation service only works with english as default)
- Upload empty django.po file, or also upload all your translated django.po files and select proper language for them.
- Choose language pairs (according to uploaded translations and your django app settings)
- Translate or order translation using OneSky
- Mark translations as "ready to publish"
- Configure your django app for django-oneskyapp tool
- Use manage.py oneskyapp management command to pull, make, push, compile translations
- Restart your django app
- Add new strings to your django app
- Use manage.py oneskyapp
- Translate using OneSky
- Use manage.py oneskyapp
- Restart your django app
Have fun. Feel free to fork on GitHub or send an e-mail to [email protected]