Upgrading Weblate

Generic upgrade instructions

Before upgrading, please check the current Software requirements as they might have changed. Once all requirements are installed or updated, please adjust your settings.py to match changes in the configuration (consult settings_example.py for correct values).

Always check Version specific instructions before upgrade. In case you are skipping some versions, please follow instructions for all versions you are skipping in the upgrade. Sometimes it’s better to upgrade to some intermediate version to ensure a smooth migration. Upgrading across multiple releases should work, but is not as well tested as single version upgrades.


It is recommended to perform a full database backup prior to upgrade so that you can roll back the database in case upgrade fails, see Backing up and moving Weblate.

  1. Upgrade configuration file, refer to settings_example.py or Version specific instructions for needed steps.

  2. Upgrade database structure:

    ./manage.py migrate --noinput
  3. Collect updated static files (mostly javacript and CSS):

    ./manage.py collectstatic --noinput
  4. Update language definitions (this is not necessary, but heavily recommended):

    ./manage.py setuplang
  5. Optionally upgrade default set of privileges definitions (you might want to add new permissions manually if you have heavily tweaked access control):

    ./manage.py setupgroups
  6. If you are running version from Git, you should also regenerate locale files every time you are upgrading. You can do this by invoking:

    ./manage.py compilemessages
  7. Verify that your setup is sane (see also Production setup):

    ./manage.py check --deploy
  8. Restart celery worker (see Background tasks using Celery).

Version specific instructions

Upgrade from 2.x

If you are upgrading from 2.x release, always first upgrade to 3.0.1 (see Upgrade from 2.20 to 3.0) and the continue ugprading in the 3.x series. Upgrades skipping this step are not supported and will break.

Upgrade from 3.0.1 to 3.1

Please follow Generic upgrade instructions in order to perform update.

Notable configuration or dependencies changes:

  • Several no longer needed applications have been removed from INSTALLED_APPS.
  • The settings now recommend using several Django security features, see SSL/HTTPS.
  • There is new dependency on the jellyfish module.

Upgrade from 3.1 to 3.2

Please follow Generic upgrade instructions in order to perform update.

Notable configuration or dependencies changes:

  • Rate limiting configuration has been changed, please see Rate limiting.
  • Microsoft Terminology machine translation was moved to separate module and now requires zeep module.
  • Weblate now uses Celery for several background tasks. There are new dependencies and settings because of this. You should also run Celery worker as standalone process. See Background tasks using Celery for more information.
  • There are several changes in settings_example.py, most notable Celery configuration and middleware changes, please adjust your settings accordingly.

Upgrading from Python 2 to Python 3

Weblate currently supports both Python 2.7 and 3.x. Upgrading existing installations is supported, but you should pay attention to some data stored on the disk as it might be incompatible between these two.

Things which might be problematic include Whoosh indices and file based caches. Fortunately these are easy to handle. Recommended upgrade steps:

  1. Backup your Translation Memory using dump_memory:

    ./manage.py dump_memory > memory.json
  2. Upgrade your installation to Python 3.

  3. Delete Translation Memory database delete_memory:

    ./manage.py delete_memory --all
  4. Restore your Translation Memory using import_memory.

    ./manage.py import_memory memory.json
  5. Recreate fulltext index using rebuild_index:

    ./manage.py rebuild_index --clean --all
  6. Cleanup avatar cache (if using file based) using cleanup_avatar_cache.

    ./manage.py cleanup_avatar_cache

Migrating from Pootle

As Weblate was originally written as replacement from Pootle, it is supported to migrate user accounts from Pootle. You can dump the users from Poootle and import them using importusers.