diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 32c7842df6..30f6d33f41 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -71,7 +71,7 @@ We follow the "typical" GitHub workflow when contributing changes: ## Translations -See po/README.md for information about translations. +See [po/README.md](./po/README.md) for information about translations. ## User Documentation diff --git a/RELEASING.md b/RELEASING.md index 496ad17532..50d659c056 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -49,12 +49,6 @@ This shouldn't be needed, but better to check before releasing git ls-tree --full-tree -r HEAD --name-only |while read f; do sed -i '1s/^\xEF\xBB\xBF//' "$f"; done && git diff --quiet || git commit -a -m 'Remove nasty BOM bytes' ``` -## Get latest translations from Transifex - -```bash -python setup.py pull_translations && git diff --quiet || git commit -m 'Update .po files' -- po/ -``` - ## Synchronize generated consts ```bash diff --git a/org.musicbrainz.Picard.appdata.xml.in b/org.musicbrainz.Picard.appdata.xml.in index a3a6f99d53..78caac8883 100644 --- a/org.musicbrainz.Picard.appdata.xml.in +++ b/org.musicbrainz.Picard.appdata.xml.in @@ -103,7 +103,7 @@ https://picard-docs.musicbrainz.org/en/faq/faq.html https://picard-docs.musicbrainz.org/ https://metabrainz.org/donate - https://www.transifex.com/musicbrainz/musicbrainz/picard/ + https://translations.metabrainz.org/projects/picard/ picard MetaBrainz Foundation diff --git a/po/README.md b/po/README.md index d9d7f0db1e..ba44baca18 100644 --- a/po/README.md +++ b/po/README.md @@ -1,57 +1,77 @@ Translations ============ -Picard translations are handled by [Transifex](https://www.transifex.com). +Picard translations are handled by [Weblate](https://translations.metabrainz.org/projects/picard/). For translation instructions please see [Picard, Picard Website and Picard User Guide Internationalization](https://wiki.musicbrainz.org/MusicBrainz_Picard/Internationalization). + +The translation files are automatically synced between the Picard Github repository and Weblate. Translations can be done in Weblate or by updating the translation files directly. + +Below is a technical description for managing the translations as a Picard maintainer or developer. -_Please do not manually edit the PO files._ Required tools -------------- -* [Transifex client 1.x](https://developers.transifex.com/docs/cli) +* [Weblate Client](https://docs.weblate.org/en/latest/wlc.html) * [Babel](https://babel.pocoo.org/) Picard source tree strings -------------------------- -Their translations are handled at +Their translations are handled at One can update `picard.pot` using: + ```bash $ python setup.py regen_pot_file ``` -Transifex will _automatically_ pick `picard.pot` from [Picard git repository master branch](https://github.com/metabrainz/picard/tree/master) once per day. +Weblate will _automatically_ sync the changed `picard.pot` and update the translation files (`*.po`) with msgmerge. -Attributes and countries strings --------------------------------- +AppStream metadata translations +------------------------------- -Their translations are handled at and +Translations for the strings from `org.musicbrainz.Picard.appdata.xml.in` are handled at . -`attributes.pot` and `countries.pot` are updated by [musicbrainz-server project](https://github.com/metabrainz/musicbrainz-server), outside the Picard project. +One can update `appstream/picard-appstream.pot` using: -Picard maintainers can regenerate `picard/const/attributes.py` and `picard/const/countries.py`, which are using `attributes.pot` and `countries.pot` as base, using the command: ```bash -$ python setup.py update_constants +$ python setup.py regen_appdata_pot_file ``` -It will retrieve and parse latest `attributes.pot` and `countries.pot` to rebuild `picard/const/attributes.py` and `picard/const/countries.py`. +Weblate will _automatically_ sync the changed `picard-appstream.pot` and update the translation files (`appstream/*.po`) with msgmerge. + + +Windows installer translations +------------------------------ -To fetch latest translations from Transifex -------------------------------------------- +The translations for the Windows installer are inside the JSON files in `installer/i18n/sources`. +Translation in Weblate is done at + + +Attributes and countries strings +-------------------------------- + +Their translations are handled at and + +`attributes.pot` and `countries.pot` are updated by [musicbrainz-server project](https://github.com/metabrainz/musicbrainz-server), outside the Picard project. + +Picard maintainers can regenerate `picard/const/attributes.py` and `picard/const/countries.py`, which are using `attributes.pot` and `countries.pot` as base. For this an Weblate API key is required, which can be found in your Weblate user settings under [API access](https://translations.metabrainz.org/accounts/profile/#api). The constants can then be updated with the following command: -Use the following command: ```bash -$ python setup.py pull_translations +$ python setup.py update_constants --weblate-key={YOUR_WEBLATE_API_KEY} ``` -It will fetch all po files from Transifex, but the most incomplete ones. +Instead of entering the Weblate API key each time you can also place a file `.weblate.ini` in the root of the repository with the following content: -The minimum acceptable percentage of a translation in order to download it can be seen using: -```bash -$ python setup.py pull_translations --help +```ini +[weblate] +url = https://translations.metabrainz.org/api/ + +[keys] +https://translations.metabrainz.org/api/ = YOUR_WEBLATE_API_KEY ``` -The percentage value is passed to the `tx pull` command. + +It will retrieve and parse latest `attributes.pot` and `countries.pot` to rebuild `picard/const/attributes.py` and `picard/const/countries.py`.