How to Set Up a Multilingual Online Store on Joomla with EasyStore
A multilingual online store makes it possible to reach customers from different countries and provide every visitor with a convenient interface in a language they understand. EasyStore allows the localization of the catalog, product pages, categories, attributes, system labels, and individual elements of the checkout process. To ensure everything works correctly, Joomla's standard multilingual system must be configured first, after which the EasyStore translation tools can be enabled. Below is a detailed step-by-step guide using the example of adding Simplified Chinese to a store that originally operates in English.

Running an online store in only one language significantly limits its potential audience. A visitor may be interested in a product but decide not to make a purchase if they do not understand its specifications, delivery terms, cart elements, or checkout fields. EasyStore's new multilingual support system makes it possible to translate the storefront, product pages, categories, and checkout interface into the languages used by customers.
This guide uses a demo store whose entire content was originally created in English. The objective is to add Simplified Chinese step by step, translate the product list, and adapt the content of individual product pages. The same procedure applies to other languages supported by Joomla and EasyStore.
The configuration consists of two interconnected levels. First, multilingual support is enabled at the Joomla core level - just as it would be for any other website using this content management system. EasyStore's own translation tools are then enabled on top of the basic language structure. Skipping the first level will prevent EasyStore from receiving the target language environment required to save and display translations, so both parts of the guide must be completed.
What to know before getting started
For every published language, Joomla creates a separate language route and its own URL segment. This allows translated pages to open independently, be added to search indexes, and be used within the site's multilingual structure. For example, the URLs for the English and Chinese versions may look as follows:
- English version:
https://example.com/index.php/en - Chinese version:
https://example.com/index.php/zh
The en and zh language segments help the system determine which content version should be shown to the visitor. The exact URL format may depend on Joomla's routing settings, whether SEF URLs are enabled, and the web server configuration, but the general principle remains the same: each language version has its own route.
The following will be required for the configuration:
- EasyStore version 2.1.0 or later. Multilingual support is not available in earlier releases. Before getting started, check the installed extension version and update it if necessary.
- An installed Joomla language pack for every language that will be used on the website.
- An API key from an artificial intelligence provider if automatic translation will be used instead of filling in the fields manually. The key and model settings are specified in the EasyStore global configuration, as described in detail in step 7.
- A website backup. Before changing the language structure, menus, modules, and plugins, it is recommended to back up the website database and files so the previous state can be restored quickly if necessary.
Part 1. Configuring multilingual support in Joomla
EasyStore's multilingual features are built on Joomla's integrated language system. Therefore, before translating products and store settings, the website itself must be prepared by installing a language pack, publishing the content language, enabling the system plugins, creating separate menus, and adding a language switcher.
Step 1. Installing and publishing the content language

Joomla cannot display the interface and content in an additional language until the corresponding language pack has been installed. The language pack contains translations for standard system elements, including button names, messages, settings, labels, and other text strings.
- Open the Joomla administrator panel and go to System > Manage > Languages.
- Find the required language and install it. This example uses Chinese (Simplified).
- After installation, open the Content Languages section at the top of the language management page.
- Find the installed language and make sure it is published. Its publication status must be active.
Installing a language pack and publishing a content language are two different operations. The installed pack translates administrative or system elements, while the published content language becomes available for assignment to content, menus, and components. Therefore, simply installing the pack is not enough: the language must also be enabled in the Content Languages section.
Step 2. Enabling the required system plugins

The next stage is to enable the Joomla plugins that control language detection and filtering. They ensure that the correct version of the website is displayed based on the selected language, the current URL, and the language structure settings.
- Go to System > Manage > Plugins.
- Use the search field to find the System - Language Code plugin.
- Then find the System - Language Filter plugin.
- Publish and enable both plugins.
System - Language Code helps Joomla generate the correct language identifiers in the page's HTML code, while System - Language Filter is responsible for selecting and filtering content by language. If either of these plugins is disabled, switching between language versions may work incorrectly or fail completely.
Step 3. Creating a separate menu for each language

In Joomla, content elements and website pages are assigned to menus according to the selected language. For this reason, each language version requires a separate menu. This separation makes it possible to assign different titles, routes, home pages, and navigation items to the English, Chinese, or any other version of the website.
- In the administrator panel, open Menus > Manage.
- Click + New to create a new menu.
- Enter a clear title and a unique system name for the menu. For example, the Chinese version can be named Main Menu (zh-CN).
- Click Save & Close.
- Repeat the process for every supported language. In this example, two menus are created: one for the English version and one for Simplified Chinese.
It is best to name each menu in a way that allows the administrator to identify its language immediately. Using identifiers such as en-GB, en-US, zh-CN, or other language codes simplifies the subsequent configuration of modules and navigation items.
Step 4. Creating an item in the new language menu

Once the menu has been created, at least one item must be added to it. For the Chinese version of the demo store, an item is created that opens the EasyStore product listing page. The menu item settings must match the target language.
- Title: 产品
- Menu Item Type: EasyStore > Products
- Menu: Main Menu (zh-CN)
- Language: Chinese (Simplified)
After filling in the settings, click Save & Close. Pay particular attention to the Language field: if a different language is accidentally selected, the item will not display correctly in the Chinese version of the website.
The same procedure must be completed for English. A separate EasyStore > Products item is created in the English menu and assigned to the English content language. As a result, each version of the website has its own route to the product catalog.
Step 5. Adding the language switcher module
A language switcher is an interface element that allows visitors to select their preferred language version. It is usually displayed as language names, abbreviated codes, or flags. Without this module, users would have to change the URL manually or find the required language page in another way.
- Open Content > Site Modules.
- Click + New.
- Select the Language Switcher module type.
- Enter a module name. The title can be hidden in the display settings if necessary.
- Select the template position where the switcher should appear. In the demo store, the module is placed in the main menu area.
- Check the module's menu assignments and publish it.
After saving, open the website frontend and make sure the switcher is visible on both the English and Chinese pages. When a different language is selected, the visitor should be redirected to the associated menu item for the corresponding language version.
This completes the basic Joomla configuration. The content management system is now ready to work with multiple languages, so the next step is to enable EasyStore's multilingual features and begin translating the store content.
Part 2. Translating products with EasyStore
Once Joomla's multilingual structure has been prepared, localization of the store content can begin. EasyStore provides separate editors for translating products, categories, tags, collections, brands, attributes, and store settings. Translations can be entered manually or generated automatically using a connected artificial intelligence provider.
Step 6. Enabling the EasyStore multilingual plugin

- Open System > Manage > Plugins again.
- Enter System - EasyStore Multilingual in the search field.
- Open the plugin and set its status to Enabled.
- Save the changes if the plugin was opened in a separate editing form.
Note. The System - EasyStore Multilingual plugin enables translation features within EasyStore. This step is required: if the plugin is disabled, EasyStore's localization buttons and editors will not appear, even if the Joomla languages, menus, and switcher have already been configured.
After enabling the plugin, refresh the administrator panel page and check the EasyStore sections. Translation-related commands should now appear in the interface for managing products and other entities.
Step 7. Configuring automatic translation with AI - optional

EasyStore supports automatic translation through compatible artificial intelligence providers. Once configured, this feature becomes available for supported content types, including products, categories, tags, attributes, and store settings. This step can be skipped if all texts will be translated and reviewed manually.
Enabling AI Auto-Translate
- Go to System > Global Configuration.
- Select EasyStore in the left sidebar.
- Open the AI Auto-Translate tab.
- Enable the AI Auto-Translate option.
After enabling the feature, select the service that will process the source text and return translated values. Cloud services usually require an API key, while a local solution requires a properly configured server address and an available model.
Selecting and configuring an AI provider
Select an appropriate provider from the AI Provider drop-down list. The EasyStore interface includes the following options:
- OpenAI;
- Google Gemini (AI Studio);
- DeepSeek;
- Anthropic Claude;
- OpenRouter;
- Ollama - a local option.
After selecting a provider, enter the required credentials and connection settings. The available fields depend on the selected service. For example, Google Gemini (AI Studio) uses the following settings:
- Gemini API Key - the API key that provides access to the service;
- Model - the name of the model that will generate the translation;
- Temperature - the response variability setting. For translation tasks, a low value such as
0.2is usually recommended, as it helps produce more consistent and predictable wording.
After entering the settings, click Save or Save & Close. Before translating content in bulk, it is best to test the feature on one small product and make sure the API key is accepted by the system and the result is returned without errors.
Once the setup is complete, an Auto-translate button will appear in the translation editors for products, categories, tags, attributes, and store settings. It fills in the target fields automatically, but the generated result should be treated as a draft rather than a fully finished text.
Before publishing an automatic translation, review its meaning, terminology, units of measurement, specification names, and customer-facing tone. Product names, warnings, delivery terms, and wording that may influence a purchasing decision require particular attention. An automatic translation may be grammatically correct but may not always reflect the brand context or the terminology commonly used in a particular industry.
Step 8. Assigning the “All” language to existing products

Before creating translations, check the language setting for all existing products. This is especially important for a catalog created before multilingual support was enabled.
Open Components > EasyStore > Products and make sure the language field for every source product is set to All, rather than to a specific language such as English.
This setting is easy to overlook, but it directly affects translation availability. When a product is strictly assigned to only one language, EasyStore does not treat it as a shared source object from which language versions can be created.
Before proceeding to the next step, check the Language value again for every product that will be translated. For a large catalog, it is recommended to review the list systematically or use any bulk editing tools available in the installed EasyStore version.
Step 9. Translating product text fields
- Open Components > EasyStore > Products and click Translate next to the required product. The translation interface will open.
- Select the target language, such as Simplified Chinese, if the system provides the corresponding switcher.
- Fill in the translated fields in one of two ways:
- Manually - enter the translation in the target field next to the source text.
- Automatically - click Auto-translate if an artificial intelligence provider was configured in step 7.
- Review all titles, short descriptions, full descriptions, and other available fields. Incomplete elements are marked with the Missing status, which serves as a visual indicator.
- After filling in and reviewing all required fields, click Save Target.
Repeat the process for every product that should be available in the Chinese version of the store. If the catalog contains many items, it is more convenient to work in stages: translate the most popular products first, then high-priority categories, and finally the rest of the assortment.
If the source product is edited later, the entire product page will not need to be translated again. EasyStore allows only the changed fields to be updated while preserving the remaining translated values. However, after a significant change to the source description, it is worth checking whether the old translation still matches the meaning of the new text.
Before publication, open the product on the frontend and check both the content and its presentation. Translated text may be longer than the source text, so make sure headings, buttons, specification tables, and the mobile version of the page are displayed correctly.
Step 10. Translating categories, tags, collections, and brands

After translating the product pages, the related catalog elements must also be translated: categories, tags, collections, and brands. They appear in navigation, filters, breadcrumbs, page headings, and other parts of the storefront, so leaving their names in the source language makes the localization feel incomplete.
Open the required EasyStore section - Collections, Tags, Categories, or Brands - and start the translation process for each item in turn. The workflow is similar to translating a product: the source value is displayed next to the target field, and the result can be entered manually or generated automatically.
When translating the catalog structure, it is best to define a consistent terminology glossary in advance. The same concepts should use the same wording throughout the website. For example, a category name should not have three different translations in the menu, filter, and page heading.
Step 11. Translating store settings and attributes
After the product pages have been translated, individual words and settings that are not directly part of a specific product's content may still remain in the interface. These strings come from EasyStore settings, attribute directories, and other system sections.
Even when product names and descriptions have already been localized, additional elements displayed in different areas of the product page must also be translated, including specification labels, option names, setting text, service labels, and other related strings.
Translating store settings

Go to Components > EasyStore > Settings and click Translate Settings. The editor that opens allows all available store setting strings to be translated. Values can be entered manually or generated automatically using the Auto-Update command and the previously configured artificial intelligence provider.
After the fields have been filled automatically, review every string. Short system labels are often context-dependent: the same English word may require different translations when used in a button, heading, setting, or notification.

Translating attributes

In Components > EasyStore > Settings, click Translate Attributes. This section is used to translate specification names and their related values, which appear in product pages and product options.
Attributes are translated in the same way: select the target language, fill in the corresponding fields, check the status of missing values, and save the result. Pay particular attention to specifications such as size, color, material, volume, compatibility, and technical parameters.
Units of measurement, SKUs, standard names, and official designations do not always need to be translated. They should be preserved in the accepted international or local format so customers can understand the product specifications correctly.
Step 12. Installing the EasyStore language pack
Go to EasyStore > Settings > Language, select the required language, and start the installation. In the demo example, the Simplified Chinese language pack is installed.

The EasyStore language pack contains ready-made translations for the extension's standard strings. It complements the translations created for products and settings and helps localize the system elements of the storefront. After installation, clear the website cache and check the main store pages in the target language.
Step 13. Troubleshooting missing translations
EasyStore's tools cover most of the store content, but occasionally some text may remain on the frontend that is not available in the standard translation editor. In this situation, Joomla's Language Overrides feature can be used to replace an individual language string manually.
1. Finding the language constant
Every translatable Joomla string is associated with a unique language constant. For example, the clear cart command may use the value COM_EASYSTORE_CART_CLEAR. To create an override, first determine the exact name of the constant associated with the untranslated text.
- Open System > Global Configuration.
- Go to the System tab.
- Find the Debug Language setting.
- Set it to Yes.
- Click Save.
After debugging is enabled, Joomla will display language constants next to the corresponding strings on the frontend. This makes it possible to identify the exact key that needs to be overridden.
Open the store page, find the problematic label, and copy the constant name exactly as shown. Pay attention to letter case, underscores, and the component prefix. A mistake in even one character will prevent the override from working.
2. Creating a language override
Once the language constant has been identified, a custom value can be created for it in the target language.
- Go to System > Site > Language Overrides.
- In the Language list, select the language for which the translation is being created.
- Click New. If the override may already have been added, search for the constant first using the search field.
- Paste the exact language constant name into the Language Constant field.
- Enter the required translation in the Text field.
- Click Save & Close.
After saving, refresh the store page and check the result. If the old text is still displayed, clear the Joomla system cache and perform a hard refresh in the browser.
Overrides for Chinese are stored in the language/overrides/zh-CN.override.ini file. They take priority over the main language files and should not be removed during a standard language pack or extension update. This ensures that the store's custom wording is preserved after new versions are installed.
After the required constants have been found, it is recommended to disable Debug Language again so service identifiers are not shown to visitors on the live website.
Step 14. Checking the final result
After all the steps have been completed, the store will operate in two languages, and customers will be able to select the most convenient version using the switcher. Product pages, categories, settings, attributes, and the main interface elements should be displayed in the language of the current route.
It is best to perform the final check in a separate browser window or in incognito mode. This helps eliminate the influence of stored data, the administrator session, and outdated cache. Open the catalog, several product pages, the cart, and the checkout page in each language one by one.
What to check if products are still displayed without translations
If all the steps have been completed but the frontend continues to display English text instead of the translated content, check the most common causes one by one.
- The content language is not published. Return to System > Manage > Languages and make sure the language is not only installed but also published in the Content Languages section.
- The EasyStore Multilingual plugin is disabled. If System - EasyStore Multilingual is not enabled, saved translations will not be displayed on the frontend.
- The product is assigned to a specific language instead of All. In this case, EasyStore does not treat it as a shared source object for translation. Repeat the check described in step 8.
- The translation was not saved. Filling in the fields is not enough. After editing, Save Target must be clicked.
- An old cached version of the page is being displayed. Clear the Joomla cache, the cache of any optimization system in use, and perform a hard refresh in the browser.
- The menu item is assigned to the wrong language. Check the settings of the English and Chinese menu items, as well as the home page assignments.
- The language switcher module is not published on every page. Check the module's menu assignments.
- The wrong entity was translated. The label may belong not to the product, but to a category, attribute, store setting, or Joomla language constant.
Checking these items systematically resolves most issues. Start by checking language publication and plugin status, then verify the product settings and whether the translation was saved, and finish by diagnosing the cache and language overrides.
Nearby Materials | ||||
| WordPress 7: New Features and AI Integration |
|
|||


