The user interface of OWASP Juice Shop is fully translated into several languages. For many more languages there is a partial translation available:
Since release v9.1.0 translation of backend strings such as product names & descriptions, challenge descriptions and hints as well as security questions is also supported.
As long as the original author is taking part in the project’s maintenance, there will always be English and a complete German translation available. Everything beyond that depends on other volunteer translators!
Juice Shop uses a Crowdin project to translate the project and perform reviews:
Crowdin is a Localization Management Platform that allows to crowdsource translations of mobile apps, web, desktop software and related assets. It is free for open source projects.
Create an account at Crowdin and log in.
Visit the project invitation page https://crowdin.com/project/owasp-juice-shop/invite
Pick a language you would like to help translate the project into
In the Files tab select the one of the two listed
en.jsonsource files, i.e.
/frontend/src/assets/i18n/en.jsonfor the UI texts or
/data/static/i18n/en.jsonfor the product, challenge & security questions strings.
Pick an untranslated label (marked with a red box) and provide a translation
That is all it takes!
In the background, Crowdin will use the dedicated
branch to synchronize translations into the
?? is a language code (e.g.
Fork the repository https://github.com/juice-shop/juice-shop
Translate the labels in the desired language-
Commit, push and open a Pull Request
If the language you would like to translate into is missing, just add a
.json file to the folders
/data/static/i18n. It will be manually
imported to Crowdin afterwards and added as a new language there as
The Crowdin process is the preferred way for the project to handle its translations as it comes with built-in review and approval options and is very easy to use. But of course it would be stupid of us to turn down a translation just because someone likes to edit JSON files manually more! Just be aware that this is causing extra effort for the core maintainers of the project to get everything "back in sync".