MageMe EU Withdrawal | Annex I Translations
The Annex I "Information on the right of withdrawal" is the legal text the module shows the customer on the checkout payment step (Art. 6(1)(h) of Directive 2011/83/EU). The module ships 22 EU locales. The default wording is based on the EUR-Lex Directive translation.
You can override the wording per locale by copying a single file into your theme and editing it there. The module's bundled files stay untouched, so a future module update will not overwrite your changes.
When to override
Skip this page unless your jurisdiction's national transposition requires wording that the bundled translation does not match. The notable cases are:
- Germany (§356a BGB)
- France (Code de la consommation L.221-28)
- Netherlands (post-Bol.com 2024 precision expectations)
For everywhere else, the bundled translations are based on the EUR-Lex Directive text and are typically correct.
The Annex I disclosure is a legally critical document. Have any override reviewed by consumer-law counsel in the target Member State before it goes live. The bundled translations are good-faith renderings of the Directive — they were not counsel-signed (see Legal & Compliance → AS-IS disclaimer).
Step 1: Find the source file
The bundled file you want to override lives in the module's vendor directory after composer install:
vendor/mageme/module-eu-withdrawal/view/frontend/precontract/annex_i_<locale>.xml
There is one file per locale. The filename suffix is the standard Magento locale code:
| File | Locale |
|---|---|
annex_i_de_DE.xml | German (Germany) |
annex_i_fr_FR.xml | French (France) |
annex_i_nl_NL.xml | Dutch (Netherlands) |
annex_i_it_IT.xml | Italian |
annex_i_es_ES.xml | Spanish |
annex_i_en_US.xml | English (fallback) |
| … | (22 locales total — open the directory to see the full list) |
Step 2: Copy the file into your theme
Magento resolves Annex I files from your active theme before falling back to the vendor directory. Copy the file you want to edit into a matching path under your theme:
mkdir -p app/design/frontend/<Vendor>/<Theme>/MageMe_EUWithdrawal/precontract/
cp vendor/mageme/module-eu-withdrawal/view/frontend/precontract/annex_i_de_DE.xml \
app/design/frontend/<Vendor>/<Theme>/MageMe_EUWithdrawal/precontract/annex_i_de_DE.xml
Replace <Vendor>/<Theme> with your active theme's path (for example Magento/luma or your custom Acme/Storefront).
Edit the copy in your theme, not the original in vendor/. A future module update overwrites vendor/; the theme copy survives.
Step 3: Edit the wording
Open the file. It has two sections:
<annex_ia>— the customer-facing disclosure shown on the checkout page, split into five labelled blocks.<annex_ib>— the model withdrawal form the customer can fill in (free-form text).
The five blocks inside <annex_ia> cover, in order: the headline statement of the right, when the period starts, how the customer exercises the right, what happens after they do, and the return address. Keep the structure intact — translate the text inside each block. Do not rename or remove blocks.
You can use these placeholders anywhere in the text — the module substitutes them at render time:
| Placeholder | Where the value comes from |
|---|---|
{period_days} | Stores → Configuration → MageMe Extensions → EU Withdrawal → Withdrawal Window → Withdrawal Period (Days) |
{merchant_name} | Stores → Configuration → General → General → Store Information → Store Name |
{merchant_address} | Stores → Configuration → General → General → Store Information → Store Contact Address |
{merchant_phone} | Stores → Configuration → General → General → Store Information → Phone Number |
{merchant_email} | Stores → Configuration → General → Store Email Addresses → General Contact → Sender Email |
{merchant_return_address} | Pre-Contract Information → Return Address (falls back to {merchant_address} if blank) |
If a placeholder is unset in Magento, it renders verbatim — for example, an empty phone number prints {merchant_phone} on the page. Fill the underlying Magento settings before going live.
Step 4: Flush cache
php bin/magento cache:flush
Reload the checkout payment step in the relevant store view. The customer now sees your wording instead of the bundled default.
Locale fallback
A store view configured for a locale that has no matching XML file (neither in your theme nor in the module) falls back along a chain. For example, a German-Luxembourg (de_LU) store view falls back to German-Germany (de_DE), and then to English (en_US) if neither is available.
This means you do not have to translate every regional variant. Translating de_DE covers de_AT, de_CH, de_LU, de_BE automatically — until you decide one specific variant needs different wording, at which point you create that variant's file too.
Whenever the module serves a fallback locale rather than the originally requested one, the event is recorded in the audit log for your defensibility trail.
Pro tier: forensic snapshots
The free tier always renders the current Annex I text on every page load. If you edit your override two months from now, the original wording is no longer reconstructible from the free-tier database — only the hash of the older text is preserved.
The Pro annex-i add-on captures the full rendered HTML at the moment of each customer's submission and stores it immutably alongside the withdrawal request. This is what regulators look for in an Art. 10 dispute: "what did the merchant actually disclose at the time the customer ordered?"