Translations
============

WTForms uses gettext to provide translations. Translations for various
strings rendered by WTForms are created and updated by the community. If
you notice that your locale is missing, or find a translation error,
please submit a fix.

> **Note:** Translations should be contributed via
> [Weblate](https://hosted.weblate.org/projects/wtforms/wtforms/). The
> commands below are intended for local development and maintenance only.


Create
------

To create a translation, initialize a catalog in the new locale:

```
$ pybabel init --input-file src/wtforms/locale/wtforms.pot --output-dir src/wtforms/locale --domain wtforms --locale <your locale>
```

This will create some folders under the locale name and copy the
template.

Update
------

To add new translatable string to the catalog:

```
pybabel extract --copyright-holder="WTForms Team" --project="WTForms" --version="$(python -c 'import wtforms; print(wtforms.__version__)')" --output-file src/wtforms/locale/wtforms.pot src/wtforms
```

Edit
----

After creating a translation, or to edit an existing translation, open
the ``.po`` file. While they can be edited by hand, there are also tools
that make working with gettext files easier.

Make sure the `.po` file:

- Is a valid UTF-8 text file.
- Has the header filled out appropriately.
- Translates all messages.


Verify
------

After working on the catalog, verify that it compiles and produces the
correct translations.

```
$ pybabel compile --directory src/wtforms/locale --domain wtforms --statistics
```

Try loading your translations into some sample code to verify they look
correct.


Submit
------

To submit your translation, please use
[Weblate](https://hosted.weblate.org/projects/wtforms/wtforms/).
