```{eval-rst} .. role:: bash(code) :language: bash ``` ```{eval-rst} .. role:: js(code) :language: javascript ``` ```{eval-rst} .. role:: python(code) :language: python ``` # How Migrations Are Run on l10n Repositories Once a patch including new FTL strings and a migration recipe lands in `mozilla-firefox`, the Localization Team will perform a series of actions to migrate strings for all 100+ localizations: - New Fluent strings land in `mozilla-firefox`, together with a migration recipe. - New strings are added to an `update` branch of [firefox-l10n-source], a unified repository including strings for all shipping versions of Firefox, and used as a buffer before exposing strings to localizers. - Migration recipes are run against all l10n subfolders, migrating strings from old to new files, and storing them in VCS. - New en-US strings are merged into the `main` branch of `firefox-l10n-source` that syncs with localization tools, exposing strings to all localizers. Migration recipes could be run multiple times within a release cycle if more patches containing migrations land after the first. Migration recipes are periodically removed from `mozilla-firefox`. This clean-up process will typically leave recipes from the most recent 2 or 3 cycles. Older recipes are stored in [this repository] . :::{tip} A script to run migrations on all l10n repositories is available in [this repository][this repository], automating part of the steps described for manual testing, and it could be adapted to local testing. ::: [firefox-l10n-source]: https://github.com/mozilla-l10n/firefox-l10n-source/ [this repository]: https://github.com/flodolo/fluent-migrations