PHPackages                             matusstafura/magento2-email-translation-checker - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. matusstafura/magento2-email-translation-checker

ActiveMagento2-module

matusstafura/magento2-email-translation-checker
===============================================

Dev CLI tool to render Magento 2 transactional emails per store view, for spotting missing or untranslated content. Not intended for production use.

v0.1.0(1mo ago)02MITPHPPHP &gt;=8.1

Since Jul 15Pushed 1mo agoCompare

[ Source](https://github.com/matusstafura/magento2-email-translation-checker)[ Packagist](https://packagist.org/packages/matusstafura/magento2-email-translation-checker)[ RSS](/packages/matusstafura-magento2-email-translation-checker/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (1)Dependencies (7)Versions (2)Used By (0)

MatusStafura\_EmailTranslationChecker
=====================================

[](#matusstafura_emailtranslationchecker)

A Magento 2 CLI tool that renders a transactional email exactly as a given store view would send it — subject, body, and the full HTML — so you can spot missing or untranslated content without waiting for a real customer action to trigger the email.

> **⚠️ Development tool. Not intended for production use.**It renders real order/customer data into terminal output and writes rendered HTML files to `var/email-translation-checker/`. Don't install this on a production deployment, and don't expose `bin/magento` to untrusted users.

Why
---

[](#why)

Magento resolves transactional emails per store view through a chain of config paths, theme fallback, and (for untouched system templates) locale-based `{{trans}}` CSV translation. There's no built-in way to just *see* what a given store view actually sends — you either trigger a real email, or dig through Admin &gt; System &gt; Transactional Emails and theme folders by hand. This tool renders it directly, on demand.

Requirements
------------

[](#requirements)

- Magento 2.4.x
- PHP 8.1+

Install
-------

[](#install)

Via Composer (recommended):

```
composer require matusstafura/magento2-email-translation-checker --dev
bin/magento module:enable MatusStafura_EmailTranslationChecker
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:flush
```

Or manually: copy this repo into `app/code/MatusStafura/EmailTranslationChecker`, then run the same `module:enable` / `setup:upgrade` / `setup:di:compile` / `cache:flush` steps.

Usage
-----

[](#usage)

**List all known email codes:**

```
bin/magento email:check-translations --list
```

**Check one email for a store:**

```
bin/magento email:check-translations --store=3 --email=order_new
```

Prints the resolved subject and a readable plain-text body, and saves the full rendered HTML to `var/email-translation-checker/store3_order_new.html`.

**Use a specific real order as sample data** (otherwise the latest order placed in that store is auto-picked):

```
bin/magento email:check-translations --store=3 --email=order_new --order-id=123456
```

**Force a specific theme**, independent of what the store is actually configured to use — handy for A/B-checking theme overrides:

```
bin/magento email:check-translations --store=3 --email=order_new --theme=Vendor/theme_code
```

See registered theme paths with:

```
bin/magento email:check-translations --list-themes
```

**Bypass theme/config resolution entirely** and render one exact file — useful once you already know which file you want to check:

```
bin/magento email:check-translations --store=3 --email=order_new --file=app/design/frontend/Vendor/theme/Magento_Sales/email/order_new.html
```

**Verbose mode** (`-v`) additionally prints the config path, whether the template is a system default or a custom DB template, the full theme fallback chain, the exact resolved file path, and the raw order data used to fill in variables — useful when a value renders blank and you need to know whether it's a translation gap or missing source data:

```
bin/magento email:check-translations --store=3 --email=order_new -v
```

How it works
------------

[](#how-it-works)

- Resolves the store-scoped config path for the chosen email group (e.g. `sales_email/order/template`) and determines whether it points at a custom DB template or a system-default template file.
- For system-default templates, renders through Magento's real template filter (`Magento\Email\Model\Template`), so `{{trans}}` directives resolve via that store's locale exactly as they would for a real customer — not just raw template markup.
- Builds a variable set matching what Magento's own `Order\Email\Sender\*` classes provide (`order`, `order_data`, `billing`, `formattedBillingAddress`, etc.), using a real order (auto-picked or specified via `--order-id`) so address/variable directives resolve with real data instead of blanks.

Known limitations
-----------------

[](#known-limitations)

- The config paths in the email list are Magento 2.4.7 defaults. A third-party module or older/newer Magento version can shift a path — verify with `bin/magento config:show  --scope=stores --scope-code=` if a code reports "no template resolved."
- Variable sets for `order`, `invoice`, `shipment`, and `creditmemo` groups are built for their standard templates. A heavily customized template referencing extra variables (check its ` ` comment block) may render some values blank — that's expected, not a translation bug.
- Newsletter and account emails use placeholder customer data (`Test Customer` / `test@example.com`), not a real customer lookup.

License
-------

[](#license)

MIT — see [LICENSE](LICENSE).

###  Health Score

34

—

LowBetter than 74% of packages

Maintenance90

Actively maintained with recent releases

Popularity2

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity32

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

47d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/f56918987521c7c4b77e80e82275ef0ee2be4567bf65f207237f788524938f88?d=identicon)[matusstafura](/maintainers/matusstafura)

---

Top Contributors

[![matusstafura](https://avatars.githubusercontent.com/u/11353888?v=4)](https://github.com/matusstafura "matusstafura (1 commits)")

### Embed Badge

![Health badge](/badges/matusstafura-magento2-email-translation-checker/health.svg)

```
[![Health](https://phpackages.com/badges/matusstafura-magento2-email-translation-checker/health.svg)](https://phpackages.com/packages/matusstafura-magento2-email-translation-checker)
```

###  Alternatives

[dotdigital/dotdigital-magento2-extension

Dotdigital for Magento 2

50413.8k26](/packages/dotdigital-dotdigital-magento2-extension)[mollie/magento2

Mollie Payment Module for Magento 2

1162.0M19](/packages/mollie-magento2)[yireo/magento2-emailtester2

Preview transactional emails and test send them in your backend

34452.5k](/packages/yireo-magento2-emailtester2)[buckaroo/magento2

Buckaroo Magento 2 extension

32431.3k8](/packages/buckaroo-magento2)[loki/magento2-components

Core module for defining Alpine.js components with advanced AJAX features

1019.5k30](/packages/loki-magento2-components)[zwernemann/module-withdrawal

Magento 2 EU Withdrawal Button Module - Adds a withdrawal/revocation button for orders in compliance with EU Directive (EU) 2023/2673

2610.9k2](/packages/zwernemann-module-withdrawal)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
