incenteev/translation-checker-bundle
Symfony bundle that keeps translations in sync across locales. It scans templates and code to flag missing, unused, and inconsistent messages, works with XLIFF and YAML catalogs, and adds a command you can run in CI to catch translation regressions early.
Adopt when all of the following hold:
laravel-translation-manager-style tooling or a language-server/static-analysis approach instead.v1.9.1 in the interim if the older constraint is a blocker, but understand you are then on an unmaintained branch.Look elsewhere when:
For executives: This is a free, MIT-licensed developer tool that automates translation completeness checks in our Symfony CI pipeline. It converts localization from a manual, end-of-cycle scramble into a per-commit signal — so launch dates for new markets are based on measured translation gaps rather than estimates, and we stop paying vendors to translate strings that no longer appear anywhere in the product. Total cost is a few hours of engineering setup and no licensing or infrastructure spend. The v1.10.0 release adds Symfony 8 support, which means the tool tracks the current framework line rather than lagging it, and it now requires PHP 8.2+/Symfony 6.4+ — so any service we apply it to must already be on a supported runtime. The remaining caveat is that it is a small open-source project with one lead maintainer, which we mitigate by treating it as a replaceable dev-time utility rather than a platform dependency.
For engineering: Add it as a dev dependency; note that v1.10.0 dropped Symfony <6.4 and PHP <8.2, so confirm your composer.json platform constraints before pulling it in — on older stacks, pin to v1.9.1 and plan the upgrade rather than discovering the conflict mid-sprint. Wire its check commands into CI as a non-blocking report first, then promote to a gate once the baseline is clean. It has no runtime footprint: it reads translation catalogs and reports missing and unused keys. Expect to spend the first pass triaging existing noise — an inherited codebase will have both false positives and genuine orphans, and the gate is only credible after that baseline is agreed.
Recommendation: Worth a low-cost spike on the Symfony services where we own the catalogs and are already on PHP 8.2+/Symfony 6.4+. Do not position it as a localization strategy; position it as the cheapest available enforcement mechanism for a strategy we have already decided on.
How can I help you explore Laravel packages today?