table of contents
Magento 2 Translations and Language Packs
How Multilingual Stores Actually Work
Running a Magento 2 store in more than one language sounds simple — install a language pack, flip a switch, done. In practice, translation is one of the most misunderstood parts of Magento development, and half-finished localization is one of the fastest ways to lose customer trust. Here’s how the system actually works, and what it takes to get it right.
How Magento 2 translation works under the hood
Magento 2 uses a layered translation system based on CSV dictionary files (i18n/.csv) stored per module and per theme. Each file maps an English source phrase to its translated equivalent. When a store loads in a given locale, Magento merges translations from every active module and theme, with theme-level files taking priority over module-level ones. This is powerful, but it also means translations can easily conflict, get overwritten, or simply go missing when modules are updated.
Official language packs vs. real-world coverage
Community and Adobe-maintained language packs (available via Composer, e.g. mage2pro/language-* or official Adobe packages) translate Magento’s core admin and storefront strings. What they do not cover:
- Text hardcoded directly into theme
.phtmltemplates - Strings introduced by third-party extensions and custom modules
- Product attributes, categories, and CMS content (these live in the database, not CSV files, and need a separate content-translation workflow)
- Payment and shipping method labels from local integrations (Maksekeskus, Montonio, Omniva, LHV)
- Transactional emails, which use their own template translation area entirely
This is why a store can show a fully translated menu while checkout messages or a plugin’s error text stay in English.
Best practices for maintainable translations
- Keep custom translation overrides in a dedicated CSV-based module rather than editing vendor files directly
- Never hardcode translatable strings in templates — always wrap them in
__()translate functions - Re-run
bin/magento cache:flushafter any translation change; Magento aggressively caches translation dictionaries - Test every locale with full page cache and Varnish enabled, since translation bugs often only appear under production caching
- Keep a single glossary of approved terminology per language to avoid inconsistent wording (e.g. “cart” vs “basket”) across the site
Database encoding: the translation killer nobody expects
Even a perfectly translated storefront can fail silently if the database isn’t using utf8mb4 collation. Estonian diacritics (õ, ä, ö, ü) and Cyrillic characters both corrupt or display as question marks under older utf8/latin1 collations. Migrating an existing Magento database to utf8mb4 safely — without breaking foreign key constraints — is a delicate, order-sensitive process that we handle regularly.
Get it done right
At magentoeesti.eu, we build, translate, and maintain fully localized Magento 2 stores in Estonian, Russian, and English — covering theme translation, custom CSV translation modules, database encoding fixes, and SEO for each language market. Contact us for a paid store audit.