Customer service and order packaging on your phone 📦
Associate products with languages enabled in the store
All products in your store are available by default in all languages enabled in PrestaShop.
Once you assign a product to a language, that product will only be available to customers using that language.
Products and categories available only in selected languages
If you run a store in several language versions, with this module you will prepare an individual offer for each supported language.
Convenient linking of products with languages
The field by which you link a product to languages is located on the main bar in the product edition, on the list of products in the Product Catalog and in the product filters.

1
Install the module
Install the module in the same way as other PrestaShop modules.
2
Associate products with languages one by one
In the product edit, you can bind the product to the languages available in your store.
3
Bind products to languages in bulk
Select multiple products or categories in the product list and bind them in bulk to the languages enabled in your store.
Bulk bind products with languages enabled in your store
Selects "Visibility by languages" and then select the languages in which you want the product to be visible. The change does not require saving the product - the saving is done independently of other product changes, which will speed up your work with products.

Which products have been associated with languages?
To browse the products visible in given languages in bulk, use the filter field available above the list of products in your catalog.
Use the filter box to select the languages in which you want to view or edit products.

PrestaShop Translator
PrestaShop Translator is used to automatically translate all content in your PrestaShop store. Translate en masse or rely on automatic translation of the content you are currently editing.

PrestaShop Domain Manager
Domain Manager will allow you to connect your PrestaShop store with multiple domains, e.g. domain.pl, domain.cz, domain.de. Associate languages and currencies with additional domains to appear in foreign search results.

Need customization?
Send us a request for a customized audit and optimization of your overseas sales.
### Fixed
* Hidden-language redirect on shops that serve each language from its own domain (PShowDomainControl): the 301 now lands on the default language's **own domain**. PrestaShop builds a link as `Link::getBaseLink() . Link::getLangLink($idLang)`, and `getBaseLink()` takes no language argument — the host comes from the domain being requested — so the redirect kept the hidden language's domain, where the default language is not served; the domain module then switched the visitor to whatever language that domain does allow (a product hidden in German was left on the German/Czech domain and opened in Czech instead of going to the default-language domain). The redirect target is now built with the context already switched to the default language, so host, language prefix and slug all resolve for the language the visitor is actually sent to.
* The language buttons on the "not available in your language" (410) page had the same problem — every button pointed at the current domain, so a button for a language served elsewhere led to the wrong language. Each button is now built in its own language's context.
* The visitor's language cookie is no longer rewritten when the 301 crosses to another domain. A cookie only reaches the host that set it, so the write could not help the target page and instead changed the language the visitor saw the next time they opened the *source* domain.
* The "this page is not available in " notice now also appears after a redirect that changes domain. It used to travel in the visitor's cookie, which a browser only sends back to the host that set it, so on a language-per-domain shop it never reached the page the visitor landed on. The source language now travels in the URL fragment, which survives the redirect, is never sent to the server (so it cannot affect caching, canonical URLs or what search engines index) and is removed from the address bar once the notice is shown. No data is stored anywhere and no extra query is made.
### Added
* Front-office notices translated to English, German, French, Spanish and Italian (Polish was already present).
## v1.1.9 - 2026-08-17
### Fixed
* Hidden-language redirect: a product/category opened in a language where it is hidden now correctly renders in the shop default language after the 301, instead of showing the "not available in your language" (410) page on the default-language URL. The default-language target is a prefix-less friendly URL whose language PrestaShop resolves from the cookie; the cookie still held the visitor's hidden language, so the target was detected as hidden again and fell through to 410. The redirect now switches the visitor to the default language before issuing the 301. (Search-engine bots, which carry no cookie, were already redirected correctly.)
## v1.1.8 - 2026-07-22
### Changed
* The "not available in your language" (410) page is now rendered inside the shop theme — header, footer and layout intact — with the notice and language links in the content area, instead of the previous minimal standalone page. (This page is only reached when a product/category is hidden in the shop's default language too; the normal case is a 301 to the default language.)
## v1.1.7 - 2026-07-20
### Fixed
* The per-language hiding of product/category pages no longer depends on PrestaShop class overrides. On shops where overrides are disabled or not loaded, a product/category opened in a language where it is hidden previously still rendered normally; the hidden-language page redirect (301) / gone (410) now runs on the native `actionDispatcher` hook, so it works regardless of the shop's override configuration.
### Added
* Products hidden in the current language are now also filtered out of listings (category, search, manufacturer, supplier, etc.) via the native `filterProductSearch` hook, so the hiding works on shops without the class overrides too. Where the overrides are active, the existing Db-override filter still runs and this hook is a no-op.
### Notes
* Listing pagination on shops without overrides is best-effort: the count is adjusted for products removed on the current page, so cross-page totals may be slightly approximate. Category trees/menus and non-listing product blocks (e.g. related/cross-sell) are still only filtered where the class overrides are active.
## v1.1.6 - 2026-07-16
### Added
* SEO: a product or category opened in a language where it is hidden now returns a permanent redirect (301) to the same product/category in the shop default language instead of a 404 — the already-indexed hidden-language URL keeps its ranking on the default-language page, and the visitor lands on a working page. The destination page shows a one-time "not available in " notice.
* If the product/category is hidden in the default language too (nothing to redirect to), the page now returns 410 Gone with a "not available in your language" notice and buttons linking to the languages in which it does exist, instead of a bare 404.
* On the standard theme, the front-office language switcher no longer offers the languages in which the current product/category is hidden (best-effort, front-end only; the redirect above is what actually protects those URLs).
* The redirect behaviour can be turned off per shop with the `PSHOWOBL_REDIRECT_HIDDEN` configuration flag (enabled by default); when off, hidden-language pages return 410 with the notice.
### Fixed
* Category override: the language/shop passed to the `actionCategoryConstructorBefore` hook were undefined variables, so the hook never received the requested language.
## v1.1.5 - 2026-06-16
### Fixed
* SEO: a product or category hidden in a language no longer advertises an alternate (hreflang) link to that language in the page head, so search engines are not pointed at a missing page.
## v1.1.4 - 2026-06-16
### Fixed
* New (Symfony) product edit page: the per-language availability checkboxes now load the saved state and persist your changes when you save the product. Previously they always showed empty and the selection was not saved.
## v1.1.3 - 2026-06-15
### Fixed
* Product and category requests through the PrestaShop Webservice (e.g. `GET /api/products/{id}`) no longer fail with a 500 error.
## v1.1.2 - 2026-05-12
### Fixed
* Visibility-by-language selector now works on the new (Symfony) product edit page in PrestaShop 8 / 9 — added `actionProductFormBuilderModifier` and `actionAfterUpdate/CreateProductFormHandler` hooks; previously only the legacy AdminProducts page was supported.
## v1.1.1 - 2024-01-23
### Fixed
* Add sql alias 'ps' for some prestashop 1.7 versions
## v1.1.0 - 2023-09-07
### Added
* Set visibility of the category by language
## v1.0.2 - 2023-03-23
### Fixed
* Improve support for Prestashop versions 1.7.0-1.7.3 - backoffice detection and sql query overriding
## v1.0.1 - 2023-03-07
### Fixed
* Fix backofice product list filter - not all products were visible
## v1.0 .0- 2022-10-01
### Added
* Initial version of the module
Technical requirements
Technical Requirements
- PHP 7.1 - 8.x
- Server extension ionCube Loader
- PrestaShop Importer only: PHP libxml version > 2.9.3
- PrestaShop Facebook Integrator only: PHP 7.2 or higher
- PrestaShop VAT Validator only: PHP SOAP
Support = Updates + HelpDesk
You get 90 days (3 months) access to the complete PrestaShow support package.
Module updates
Modules will inform you about available updates. Read the changelog and perform a 1-click module update directly from your store.
HelpDesk panel
This is the panel where we will provide you with help. On HelpDesk you can report problems, order free module installation and updates, and order modifications and custom programming work.
Extend support
After support expires, you can use the module without any restrictions. You can extend your support access at any time you need it.
Knowledge Base & FAQ
Free forever
The knowledge base is available to everyone. You will find module documentation as well as instructions, videos and answers to frequently asked questions.
Lifetime license for the module
- You can use the module without limitation in 1 store = 1 domain.
- You can use an additional domain, e.g. for developer copy.
- For a small fee you can change the domain for the module yourself.
Additional domains for Multistore
- All our modules support PrestaShop Multistore.
- Supporting unlimited domains for PrestaShop Multistore requires purchasing multistore support for the module.
Modifying the code
- The module code related to the integration with the store and the design (.tpl, .css, .js) has open source code and you can modify it freely.
- The module's source code (.php) is encrypted with ionCube, and modifying it will void the warranty.
Demo
Demo - test the module
- This module does not have a demo store
No entries yet.











