Wagtail Localize integration for Git-based translation services
Project description
wagtail-localize-git
This plugin enables translating Wagtail content using a PO files in a git repository.
It works by committing source content into the repository then polling it for updates. When the PO files are translated, this will automatically create translated pages in Wagtail.
This is useful for when you are using external translation tools for translating your Wagtail content. Currently, this plugin supports Mozilla's Pontoon, but PRs are welcome for other translation tools!
Installation
This plugin requires Wagtail >= 2.15 with internationalisation enabled and Wagtail Localize.
Install both wagtail-localize
and wagtail-localize-git
, then add the following to your INSTALLED_APPS
:
# settings.py
INSTALLED_APPS = [
# ...
"wagtail_localize",
"wagtail_localize.locales", # Replaces 'wagtail.locales'
"wagtail_localize_git",
# ...
]
Then set the following settings:
WAGTAILLOCALIZE_GIT_URL
- This is a URL to an empty git repository that wagtail-localize-git
will push source strings to and fetch translations from.
WAGTAILLOCALIZE_GIT_CLONE_DIR
- The local directory where the git repository will be checked out.
By default, wagtail-localize-git
will try to checkout and work with the main
branch. To change that, set WAGTAILLOCALIZE_GIT_DEFAULT_BRANCH
to your repository's default branch (e.g. master
)
Synchronisation
Once this is configured, you can use the sync_git
management command to push/pull changes. This management command should be set up in your server's crontab to run often (preferably, every 10 minutes).
How it works
This plugin uses wagtail-localize
to convert pages into segments and build new pages from translated segments. wagtail-localize
provides a web interface for translating these segments in Wagtail itself and this plugin plays nicely with that (translations can be made from the Wagtail side too).
Pages/snippets are submitted to the git repo when they are submitted for translation from the default locale. Pages authored in other locales are not supported yet.
Contributing
All contributions are welcome!
Install
To make changes to this project, first clone this repository:
git clone git@github.com:wagtail/wagtail-localize-git.git
cd wagtail-localize-git
With your preferred virtualenv activated, install testing dependencies:
pip install -e .[testing] -U
pre-commit
Note that this project uses pre-commit. To set up locally:
# if you don't have it yet, globally
$ pip install pre-commit
# go to the project directory
$ cd wagtail-localize-git
# initialize pre-commit
$ pre-commit install
# Optional, run all checks once for this, then the checks will run only on the changed files
$ pre-commit run --all-files
How to run tests
Now you can run tests as shown below:
tox
or, you can run them for a specific environment tox -e python3.9-django3.2-wagtail2.15
or specific test
tox -e python3.9-django3.2-wagtail2.15-sqlite wagtail_localize_git.tests.test_git.TestRepository
To run the test app interactively, use tox -e interactive
, visit http://127.0.0.1:8020/admin/
and log in with admin
/changeme
.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file wagtail-localize-git-0.13.0.tar.gz
.
File metadata
- Download URL: wagtail-localize-git-0.13.0.tar.gz
- Upload date:
- Size: 27.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.14
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b682692d5bd2a49ff35c6f41bd85bf7bc6a2287ba1483fc400f52ecfd9b16e74 |
|
MD5 | e2a0476cf6e840692e2b3c029a87f0a8 |
|
BLAKE2b-256 | b0d0a726a4d0e7fa9f6ec32bd75601fa4e652723a38697f555a7ec5dc36e9676 |
File details
Details for the file wagtail_localize_git-0.13.0-py3-none-any.whl
.
File metadata
- Download URL: wagtail_localize_git-0.13.0-py3-none-any.whl
- Upload date:
- Size: 32.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.14
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4ab1a6a44cfd59b417eafe8c84cecf555ef7113102e8e2e9ac42356d9eb61732 |
|
MD5 | e07ce09af8271161f548e2a78adf4a9d |
|
BLAKE2b-256 | 2551c951014a8c36f5a4a0d7c3e5913f1eefc863c8b82dcb44b4935b0d5b1345 |