--- 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".