Management commands

Note

Running management commands under a different user than the one running your webserver can result in files getting wrong permissions, please check Filesystem permissions for more details.

You will find basic management commands (available as ./manage.py in the Django sources, or as an extended set in a script called weblate installable atop Weblate).

Invoking management commands

As mentioned before, invocation depends on how you installed Weblate.

If using virtualenv for Weblate, you can either specify the full path to weblate, or activate the virtualenv prior to invoking it:

# Direct invocation
~/weblate-env/bin/weblate

# Activating virtualenv adds it to search path
. ~/weblate-env/bin/activate
weblate

If you are using source code directly (either from a tarball or Git checkout), the management script is ./manage.py available in the Weblate sources. To run it:

python ./manage.py list_versions

If you’ve installed Weblate using the pip or pip3 installer, or by using the ./setup.py script, the weblate is installed to your path (or virtualenv path), from where you can use it to control Weblate:

weblate list_versions

For the Docker image, the script is installed like above, and you can run it using docker exec:

docker exec --user weblate <container> weblate list_versions

For docker-compose the process is similar, you just have to use docker-compose exec:

docker-compose exec --user weblate weblate weblate list_versions

In case you need to pass it a file, you can temporary add a volume:

docker-compose exec --user weblate /tmp:/tmp weblate weblate importusers /tmp/users.json

add_suggestions

manage.py add_suggestions <project> <component> <language> <file>

New in version 2.5.

Imports a translation from the file to use as a suggestions for the given translation. It skips duplicated translations; only different ones are added.

--author USER@EXAMPLE.COM

E-mail of author for the suggestions. This user has to exist prior to importing (you can create one in the admin interface if needed).

Example:

weblate --author [email protected] add_suggestions weblate master cs /tmp/suggestions-cs.po

auto_translate

manage.py auto_translate <project> <component> <language>

New in version 2.5.

Performs automatic translation based on other component translations.

--source PROJECT/COMPONENT

Specifies the component to use as source available for translation. If not specified all components in the project are used.

--user USERNAME

Specify username listed as author of the translations. “Anonymous user” is used if not specified.

--overwrite

Whether to overwrite existing translations.

--inconsistent

Whether to overwrite existing translations that are inconsistent (see Inconsistent).

--add

Automatically add language if a given translation does not exist.

--mt MT

Use machine translation instead of other components as machine translations.

--threshold THRESHOLD

Similarity threshold for machine translation, defaults to 80.

Example:

weblate --user nijel --inconsistent --source phpmyadmin/master phpmyadmin 4-5 cs

celery_queues

manage.py celery_queues

New in version 3.7.

Displays length of Celery task queues.

changesite

manage.py changesite

New in version 2.4.

Change or display the name of your site from the command-line without using the admin interface by adding this.

--set-name NAME

Gives the site a name.

--get-name

Prints the current name of your site.

checkgit

manage.py checkgit <project|project/component>

Prints current state of the back-end Git repository.

You can either define which project or component to update (for example weblate/master), or use --all to update all existing components.

commitgit

manage.py commitgit <project|project/component>

Commits any possible pending changes to the back-end Git repository.

You can either define which project or component to update (for example weblate/master), or use --all to update all existing components.

commit_pending

manage.py commit_pending <project|project/component>

Commits pending changes older than a given age.

You can either define which project or component to update (for example weblate/master), or use --all to update all existing components.

--age HOURS

Age in hours for committing. If not specified the value configured in Component configuration is used.

Note

This is automatically perfomed in the background by Weblate, so there no real need to invoke this manually, besides forcing an earlier commit than specified by Component configuration.

cleanuptrans

manage.py cleanuptrans

Cleans up orphaned checks and translation suggestions. There is normally no need to run this manually, as the cleanups happen automatically in the background.

createadmin

manage.py createadmin

Creates an admin account with a random password, unless it is specified.

--password PASSWORD

Provides a password on the command-line, to not generate a random one.

--no-password

Do not set password, this can be useful with –update.

--username USERNAME

Use the given name instead of admin.

--email USER@EXAMPLE.COM

Specify the admin e-mail address.

--name

Specify the admin name (visible).

--update

Update the existing user (you can use this to change passwords).

Changed in version 2.9: Added parameters --username, --email, --name and --update.

dump_memory

manage.py dump_memory

New in version 2.20.

Export a JSON file containing Weblate Translation Memory content.

dumpuserdata

manage.py dumpuserdata <file.json>

Dumps userdata to a file for later use by importuserdata

Hint

This comes in handy when migrating or merging Weblate instances.

import_json

manage.py import_json <json-file>

New in version 2.7.

Batch import of components based on JSON data.

The imported JSON file structure pretty much corresponds to the component object (see GET /api/components/(string:project)/(string:component)/). You have to include the name and filemask fields.

--project PROJECT

Specifies where the components will be imported from.

--main-component COMPONENT

Use the given VCS repository from this component for all of them.

--ignore

Skip (already) imported components.

--update

Update (already) imported components.

Changed in version 2.9: The parameters --ignore and --update are there to deal with already imported components.

Example of JSON file:

[
    {
        "slug": "po",
        "name": "Gettext PO",
        "file_format": "po",
        "filemask": "po/*.po",
        "new_lang": "none"
    },
    {
        "name": "Android",
        "filemask": "android/values-*/strings.xml",
        "template": "android/values/strings.xml",
        "repo": "weblate://test/test",
        "file_format": "aresource"
    }
]

See also

import_memory

import_memory

manage.py import_memory <file>

New in version 2.20.

Imports a TMX or JSON file into the Weblate translation memory.

--language-map LANGMAP

Allows mapping languages in the TMX to the Weblate translation memory. The language codes are mapped after normalization usually done by Weblate.

--language-map en_US:en will for example import all en_US strings as en ones.

This can be useful in case your TMX file locales happen not to match what you use in Weblate.

import_project

manage.py import_project <project> <gitrepo> <branch> <filemask>

Changed in version 3.0: The import_project command is now based on the Component discovery addon, leading to some changes in behavior and what parameters are accepted.

Batch imports components into project based on filemask.

<project> names an existing project, into which the components are to be imported.

The <gitrepo> defines the Git repository URL to use, and <branch> signifies the Git branch. To import additional translation components from an existing Weblate component, use a weblate://<project>/<component> URL for the <gitrepo>.

The <filemask> defines file discovery for the repository. It can be either be made simple using wildcards, or it can use the full power of regular expressions.

The simple matching uses ** for component name and * for language, for example: **/*.po

The regular expression has to contain groups named component and language. For example: (?P<language>[^/]*)/(?P<component>[^-/]*)\.po

The import matches existing components based on files and adds the ones that do not exist. It does not change already existing ones.

--name-template TEMPLATE

Customize the name of a component using Django template syntax.

For example: Documentation: {{ component }}

--base-file-template TEMPLATE

Customize the base file for monolingual translations.

For example: {{ component }}/res/values/string.xml

--new-base-template TEMPLATE

Customize the base file for addition of new translations.

For example: {{ component }}/ts/en.ts

--file-format FORMAT

You can also specify the file format to use (see Supported file formats), the default is auto-detection.

--language-regex REGEX

You can specify language filtering (see Component configuration) with this parameter. It has to be a valid regular expression.

--main-component

You can specify which component will be chosen as the main one—the one actually containing the VCS repository.

--license NAME

Specify the overall, project or component translation license.

--license-url URL

Specify the URL where the translation license is to be found.

--vcs NAME

In case you need to specify which version control system to use, you can do it here. The default version control is Git.

To give you some examples, let’s try importing two projects.

First The Debian Handbook translations, where each language has separate a folder with the translations of each chapter:

weblate import_project \
    debian-handbook \
    git://anonscm.debian.org/debian-handbook/debian-handbook.git \
    squeeze/master \
    '*/**.po'

Then the Tanaguru tool, where the file format needs be specified, along with the base file template, and how all components and translations are located in single folder:

weblate import_project \
    --file-format=properties \
    --base-file-template=web-app/tgol-web-app/src/main/resources/i18n/%s-I18N.properties \
    tanaguru \
    https://github.com/Tanaguru/Tanaguru \
    master \
    web-app/tgol-web-app/src/main/resources/i18n/**-I18N_*.properties

More complex example of parsing of filenames to get the correct component and language out of a filename like src/security/Numerous_security_holes_in_0.10.1.de.po:

weblate import_project \
    tails \
    git://git.tails.boum.org/tails master \
    'wiki/src/security/(?P<component>.*)\.(?P<language>[^.]*)\.po$'

Filtering only translations in a chosen language:

./manage import_project \
    --language-regex '^(cs|sk)$' \
    weblate \
    https://github.com/WeblateOrg/weblate.git \
    'weblate/locale/*/LC_MESSAGES/**.po'

See also

More detailed examples can be found in the Starting with internationalization chapter, alternatively you might want to use import_json.

importuserdata

manage.py importuserdata <file.json>

Imports user data from a file created by dumpuserdata

importusers

manage.py importusers --check <file.json>

Imports users from JSON dump of the Django auth_users database.

--check

With this option it will just check whether a given file can be imported and report possible conflicts arising from usernames or e-mails.

You can dump users from the existing Django installation using:

weblate dumpdata auth.User > users.json

install_addon

New in version 3.2.

manage.py install_addon --addon ADDON <project|project/component>

Installs an addon to a set of components.

--addon ADDON

Name of the addon to install. For example weblate.gettext.customize.

--configuration CONFIG

JSON encoded configuration of an addon.

--update

Update the existing addon configuration.

You can either define which project or component to install the addon in (for example weblate/master), or use --all to include all existing components.

To install Customize gettext output for all components:

weblate install_addon --addon weblate.gettext.customize --config '{"width": -1}' --update --all

See also

Addons

list_ignored_checks

manage.py list_ignored_checks

Lists the most frequently ignored checks. This can be useful for tuning your setup, if users have to ignore too many false positive consistency checks.

list_languages

manage.py list_languages <locale>

Lists supported languages in MediaWiki markup - language codes, English names and localized names.

This is used to generate <https://wiki.l10n.cz/Jazyky>.

list_translators

manage.py list_translators <project|project/component>

Lists translators by contributed language for the given project:

[French]
Jean Dupont <jean.dupont@example.com>
[English]
John Doe <jd@exemple.com>
--language-code

List names by language code instead of language name.

You can either define which project or component to use (for example weblate/master), or use --all to list translators from all existing components.

list_versions

manage.py list_versions

Lists all Weblate dependencies and their versions.

loadpo

manage.py loadpo <project|project/component>

Reloads translations from disk (for example in case you have done some updates in the VCS repository).

--force

Force update, even if the files should be up-to-date.

--lang LANGUAGE

Limit processing to a single language.

You can either define which project or component to update (for example weblate/master), or use --all to update all existing components.

Note

You seldom need to invoke this, Weblate will automatically load changed files for every VCS update. This is needed in case you manually changed an underlying Weblate VCS repository or in some special cases following an upgrade.

lock_translation

manage.py lock_translation <project|project/component>

Prevents further translation of a component.

Hint

Useful in case you want to do some maintenance on the underlying repository.

You can either define which project or component to update (for example weblate/master), or use --all to update all existing components.

move_language

manage.py move_language source target

New in version 3.0.

Allows you to merge language content. This is useful when updating to a new version which contains aliases for previously unknown languages that have been created with the (generated) suffix. It moves all content from the source language to the target one.

Example:

weblate move_language cze cs

After moving the content, you should check whether there is anything left (this is subject to race conditions when somebody updates the repository meanwhile) and remove the (generated) language.

pushgit

manage.py pushgit <project|project/component>

Pushes committed changes to the upstream VCS repository.

--force-commit

Force commits any pending changes, prior to pushing.

You can either define which project or component to update (for example weblate/master), or use --all to update all existing components.

Note

Weblate pushes changes automatically if Push on commit in Component configuration is turned on, which is the default.

unlock_translation

manage.py unlock_translation <project|project/component>

Unlocks a given component, making it available for translation.

Hint

Useful in case you want to do some maintenance on the underlying repository.

You can either define which project or component to update (for example weblate/master), or use --all to update all existing components.

See also

lock_translation

setupgroups

manage.py setupgroups

Configures default groups and optionally assigns all users to that default group.

--no-privs-update

Turns of automatic updating of existing groups (only adds new ones).

--no-projects-update

Prevents automatic updates of groups for existing projects. This allows adding newly added groups to existing projects, see Per project access control.

See also

Access control

setuplang

manage.py setuplang

Updates list of defined languages in Weblate.

--no-update

Turns of automatic updates of existing languages (only adds new ones).

updatechecks

manage.py updatechecks <project|project/component>

Updates all checks for all strings.

Hint

Useful for upgrades which do major changes to checks.

You can either define which project or component to update (for example weblate/master), or use --all to update all existing components.

updategit

manage.py updategit <project|project/component>

Fetches remote VCS repositories and updates the internal cache.

You can either define which project or component to update (for example weblate/master), or use --all to update all existing components.

Note

Usually it is better to configure hooks in the repository to trigger Notification hooks, instead of regular polling by updategit.