Skip to content

Add language toggle and de, es, fr, nl and uk explanations - #2751

Open
bhushan4work wants to merge 8 commits into
OWASP:masterfrom
bhushan4work:fix#2442
Open

bhushan4work wants to merge 8 commits into
OWASP:masterfrom
bhushan4work:fix#2442

Conversation

@bhushan4work

Copy link
Copy Markdown
Contributor

What kind of changes does this PR include?

  • Fixes or refactors
  • A new challenge
  • Additional documentation
  • Something else

Description

Adds a language selector and localized challenge explanations in Dutch, German, Spanish, French, and Ukrainian. Includes localization coverage and language-toggle tests.

Relations

Closes #2442

References

Checklist:

  • All the contributions made are solely the work of me and my co-authors
  • I used AI to generate parts of the content.
  • I tested the changes in this PR (if applicable)
  • I added unit tests to ensure my change works (when change in Java or on front-end code)
  • I added UI tests to ensure my UI changes work (when change in the overall UI, not needed if just adding a challenge)
  • The PR passes pre-commit hooks and automated tests

@github-actions

github-actions Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

🧪 Testing this PR locally

If you already have the repository

First, make sure the official OWASP WrongSecrets repository is configured
as the wrongsecrets-upstream remote:

git remote get-url wrongsecrets-upstream >/dev/null 2>&1 || \
  git remote add wrongsecrets-upstream https://github.com/OWASP/wrongsecrets.git

Then fetch and check out this PR:

git fetch wrongsecrets-upstream pull/2751/head:pr-2751
git checkout pr-2751

If you already have a wrongsecrets-upstream remote, the first command
leaves it unchanged.

Or, if you want the contributor branch directly

If the contributor repository is already configured as origin:

git fetch origin
git checkout -b test-pr-2751 origin/fix#2442

🌍 Reviewing translations

Compare the translated files of this PR side by side with the originals:
open the translation review.
Change the lang parameter in the URL to review another language.

🧹 Cleaning up after testing

When you are finished testing, you can remove the local PR branch:

git checkout main
git branch -D pr-2751

If you added the wrongsecrets-upstream remote specifically for testing
this PR and no longer need it, remove it with:

git remote remove wrongsecrets-upstream

⚠️ Only remove wrongsecrets-upstream if you added it for this test.
If you already had this remote before testing, keep it.

PR: #2751
Branch: fix#2442
Repository: bhushan4work/wrongsecrets

@commjoen commjoen left a comment •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When my default language is set to "dutch" it does not want to switch the text ot english on the main page, instead i am getting an error i nthe console:

https://api.github.com/repos/OWASP/wrongsecrets' violates the following Content Security Policy directive: "default-src 'self'". Note that 'connect-src' was not explicitly set, so 'default-src' is used as a fallback. The action has been blocked.

i can set it to german though.
It does work on the challenge pages though

@bhushan4work

Copy link
Copy Markdown
Contributor Author

rest is fine or more review is to be made ? give me a full suite review before I start working on the fix

@commjoen

Copy link
Copy Markdown
Collaborator

Full review of multiple languages will take a few weeks

@commjoen

Copy link
Copy Markdown
Collaborator

Can you have a look at the previous mr for some of the older language feedback and see what still applies please?

The homepage star-count button (github-buttons, data-show-count) XHRs
https://api.github.com/repos/OWASP/wrongsecrets, which the CSP blocked
because connect-src fell back to default-src 'self', surfacing a CSP
violation when the main page reloaded during language switching.
Adds an explicit connect-src for that origin only and updates the
security-header regression test.

@S3DFX-CYBER S3DFX-CYBER left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also additional review:

  • "Prompt injection" is mistranslated as "injection rapide" in challenge60_fr.adoc (« Injection rapide MCP »), challenge60_reason_fr.adoc, and challenge74_hint_fr.adoc (« Essayez l'injection rapide »). "Rapide" = fast. And challenge60_reason_fr.adoc then writes « l'invite de commandes » for "prompt" — "invite de commandes" is the command-line prompt (cmd.exe), not a model prompt. Elsewhere the same PR says « injection de prompt » / « injection d'invite ». Pick one and make it « injection de prompt ».
  • "committe" (misspelled, no accent) appears in challenge1_reason, challenge38_reason, challenge54_reason, challenge55_reason (« qui ont été committe »). → « commité » or better « validé ».
  • challenge11_hint_fr.adoc / challenge11_reason_fr.adoc — « assumer un rôle » / « les événements d'assumption de rôle ». "Assumption" is English, and "assumer un rôle" is a calque. → « endosser un rôle », « les événements de prise de rôle ».
  • challenge73_fr.adoc — « afin que chaque agent réutilise le même valeur » → « la même valeur » (valeur is feminine).
  • challenge75_reason_fr.adoc — « une attaquant peut publier une version malveillante » → « un attaquant ».
  • challenge67_reason_fr.adoc — « puis supprimez ou supprimez tous les récepteurs et archives » — a duplicated word; presumably « supprimez ou révoquez ».
  • challenge46_reason_fr.adoc — « ... dans certains scénarios,\nIl existe des situations... » — capital "Il" after a comma.


Vous voulez en savoir plus ? Consultez les ressources sur la page d’accueil de l’application.

*Pourquoi les cryptomonnaies restent encore très difficiles à appréhender*

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the section title reads « Pourquoi les cryptomonnaies restent encore très difficiles à appréhender ». The section is about convergent encryption, IVs and ciphertext. "Cryptomonnaies" is cryptocurrencies. The source says cryptography , so it should be « la cryptographie ».

@@ -0,0 +1,24 @@
=== Motif de la contestation 63

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

heading « Motif de la contestation 63 ». That reads as "grounds for the dispute". This is "Challenge 63 rationale" → « Raison d'être du défi 63 » (or « Justification »).

- N'accordez à l'application l'accès aux secrets que lorsqu'ils sont réellement nécessaires à une opération.
- Considérez toutes les invites fournies par l'utilisateur comme des entrées potentiellement hostiles.
- Appliquer les autorisations et les contrôles d'accès dans l'application plutôt que de s'appuyer sur le modèle pour les appliquer.
- Si des informations sensibles sont accidentellement exposées à un mannequin, considérez ces informations comme potentiellement compromises et remplacez les identifiants concernés le cas échéant.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

« si des informations sensibles sont accidentellement exposées à un mannequin ». "Mannequin" is a dressmaker's dummy. The source is model → « à un modèle ».


Cette application génère une transcription de session Codex où un développeur a demandé à l'agent d'examiner un déploiement de préproduction défaillant. La transcription enregistre l'agent lisant un fichier `.env.staging` et affichant son contenu, y compris le jeton de déploiement, dans le cadre d'un processus de débogage normal.

Téléchargez la transcription à partir du lien :link:/challenges/challenge-72/codex-session-transcript.md[`/challenges/challenge-72/codex-session-transcript.md`] et trouvez le jeton de déploiement de mise en scène qui a été exposé pendant la session.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

« le jeton de déploiement de mise en scène ». "Mise en scène" is theatre staging. This is staging deployment → « de préproduction » (which the same file uses correctly two sentences earlier — so it's internally inconsistent).

@@ -0,0 +1,11 @@
=== Un secret téléchargé sur une application LLM (Large Language Model)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

still « Un secret téléchargé sur une application LLM » / « vous ayez téléchargé du code ». This is the uploaded false friend from last time; "téléchargé" = downloaded, the opposite of the source. → « téléversé ».


1. **Les secrets sont visibles dans l'environnement** : Les variables d'environnement sont faciles à inspecter à l'aide de commandes système de base ou de la journalisation, ce qui peut conduire à une exposition involontaire.
2. **Intégration en dur de secrets dans les Dockerfiles** : Lorsque des secrets sont intégrés au Dockerfile ou au fichier `docker-compose.yml`, ils font partie du processus de construction et sont inclus dans les couches de l’image. Toute personne ayant accès à l’image peut alors examiner ces couches et récupérer le secret.
3. **Commiting secret files to version control**: Stocking secret in files and commit them to Git or other version control systems introduces significant risks, as anyone having access to the repository can get the secrets.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

shouldnt this be french

*Points clés à retenir :*

- **Évitez d'utiliser des variables d'environnement pour les secrets :** Bien que pratiques, les variables d'environnement ne sont pas sécurisées pour la gestion d'informations sensibles. Utilisez plutôt les secrets Docker ou des outils externes comme Vault ou AWS Secrets Manager.
- **Ne commettez pas de secrets dans le système de contrôle de version** : Gardez toujours les fichiers secrets hors de votre dépôt en utilisant `.gitignore` ou des solutions de gestion de secrets sécurisées.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

« Ne commettez pas de secrets dans le système de contrôle de version ». "Commettre" means to commit a crime. → « Ne validez pas de secrets ».


La transcription devient un artefact persistant qui peut être :

- S'engage à utiliser le contrôle de version si le développeur l'enregistre.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

« - S'engage à utiliser le contrôle de version si le développeur l'enregistre. » for "Committed to version control". "S'engager" = to commit oneself. → « Validée dans le contrôle de version ».

- Utilisez le fichier docker-compose (`challenge51docker-compose.yml`) pour créer les conteneurs et trouver le secret.
1. Clonez le dépôt contenant les fichiers du défi.
2. Localisez le fichier `challenge51docker-compose.yml` dans le dépôt et accédez à cet emplacement.
3. Identifier les qualifications :

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

« Identifier les qualifications : » for "identify the credentials". "Qualifications" = qualifications. → « identifiants ».

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Create translations with a language toggle

3 participants