Translations - Betty documentation

Hide navigation sidebar
Hide table of contents sidebar
Skip to content
Back to top
View this page
Toggle table of contents sidebar

# Translations

Betty is fully multilingual (internationalized), and can be localized to different locales, which includes translations of the built-in US English messages to any language of your choice.

Each time a message is translated, Betty finds the translation as follows:

1. If the project has a translation in its assets directory, use it

2. If an extension has a translation in its assets directory, use it

3. If a built-in translation exists, use it

4. If no translation exists, use the original US English message

Read more about asset directories.

## gettext

Betty uses gettext to manage its translations:

- Betty will compile `*.mo` files internally. You will never have to do this manually

- Betty will manage `*.pot` and `*.po` files automatically if you use the `*-translations` commands

- You will have to add translations to `*.po` files yourself

## Project translations

### Adding a new translation

Run `betty new-translation $locale` where `$locale` is an IETF BCP 47 language tag.

This will create `./locale/$locale/betty.po`, which you can then edit yourself.

### Updating existing translations after changing translatable messages

If you’ve made changes to the translatable messages in your project, run `betty update-translations` to update `betty.pot` and any `betty.po` files for existing translations. You can then edit the updated `betty.po` files yourself.

## Built-in translations

Betty ships with the following translations:

Arabic (`ar`)

  Translations are 4% complete.

Dutch (`nl-NL`)

  Translations are 100% complete.

English (`en-US`)

  Translations are 100% complete.

French (`fr-FR`)

  Translations are 37% complete.

German (`de-DE`)

  Translations are 68% complete.

Hebrew (`he`)

  Translations are 1% complete.

Ukrainian (`uk`)

  Translations are 100% complete.

Read more about how to contribute to Betty’s built-in translations.