---
myst:
html_meta:
"description": "Internationalize your add-on and override translations"
"property=og:description": "Internationalize your add-on and override translations"
"property=og:title": "Add-on Internationalization"
"keywords": "Internationalization, i18n, add-on"
---
(addon-i18n)=
# Add-on Internationalization
The internationalization workflow is the same as in main Volto: you develop your add-on, then add the translations to your code.
See {ref}`creating-i18n-strings` for how to mark strings and phrases as translatable.
Your add-on has a `locales` folder with a `.pot` file.
1. Create the following structure in your add-ons `locales` folder for every language you want to support.
As an example for the language Italian:
```text
it
└── LC_MESSAGES
└── volto.po
```
2. Make sure you depend your add-on on `@plone/scripts` library.
```json
"dependencies": {
"@plone/scripts": "*",
}
```
This will allow you to run `yarn i18n` from inside your add-on, even if it's outside a project.
3. Run `yarn i18n` in the context of your add-on.
4. Go to each `.po` file in your `locales` folder, and write the translations for each translation literal.
In the context of your project (eg. in the root), run `yarn i18n` to merge the add-on translations with the ones of your project.
## Override translations
The workflow allows you to override translations from your project scope, so the project translations "always win".