## v2.8.10 - 2026-07-02
### Fixed
- Default OpenRouter model changed from `anthropic/claude-haiku-4-5` to `openai/gpt-4o-mini`. The previous default was not a valid OpenRouter model id (the real Anthropic id uses a dot: `anthropic/claude-haiku-4.5`), so an unconfigured OpenRouter provider failed on the first `/chat/completions` call and translation never ran until the user manually changed the Model field. The new default is a valid, low-cost id that supports the structured-output (`json_schema`) response format the module requires. The Back Office model placeholder and suggestion list were updated to valid ids as well.
## v2.8.9 - 2026-06-16
### Added
- Product tag translation support (`TagTranslationService`). PrestaShop stores tags in `ps_tag` with an `id_lang` column directly in the main table (no `*_lang` table), so the existing ObjectModel scanner never picked them up. The new service scans source-language tags per product, compares counts against the target language, and translates the missing ones via direct `ps_tag` / `ps_product_tag` inserts. The operation is idempotent: re-running never creates duplicate tag rows or product links. Exposed as the `TAG` status type and `translateTag` AJAX action in the Back Office.
## v2.8.8 - 2026-06-15
### Fixed
- The inline friendly-URL slugify fix now also covers CMS pages and CMS categories (whose field is named `friendly_url`), so their translated friendly URLs are saved as valid slugs instead of plain translated text with spaces and accents.
## v2.8.7 - 2026-06-15
### Fixed
- Translating a friendly URL with the inline field button now produces a valid slug (no spaces or accented characters) instead of plain translated text — e.g. a Czech friendly URL is saved as `co-by-mela-mit-fotbalova-branka` rather than `co by měla mít fotbalová branka`.
## v2.8.6 - 2026-06-10
### Fixed
- `link_rewrite` with spaces or non-ASCII characters (e.g. `nauji produktai`, `nové-produkty`) stored by an older module version is no longer treated as already translated. The scan now detects invalid slugs and re-queues them so `saveTranslations()` can re-slugify via `Tools::str2url()`.
- Products created without a friendly URL in the source language (empty `link_rewrite`) now still receive a translated slug in the target language — the scan falls back to the source `name` as the slug-generation phrase.
## v2.8.5 - 2026-06-03
### Fixed
- "Translate missing" leaving a permanent residual (e.g. stuck at "1 missing") for `link_rewrite` slugs the translator only changes in letter case/spacing (e.g. "midland …" → "Midland …"). `str2url()` collapses those back to the source slug, so the cell stayed `target == source` and was reported missing forever (and re-sent to the paid API every pass). Such cells are now detected by comparing slug forms and recorded as non-translatable, so the next scan excludes them.
## v2.8.4 - 2026-06-03
### Fixed
- "Translate missing" reaching 100% while products were still reported as missing after a refresh (forcing repeated clicks). The progress bar counted every saved cell as translated — including content the translator returns verbatim (untranslatable product slugs / model numbers) or empty — so it hit 100% while those cells stayed missing on the next scan. Now only genuinely changed, non-empty results count as translated; empty results are left for retry; unchanged results are still stored so they are excluded from the missing count. The Back Office now drives completion from the server's authoritative remaining-missing count (recomputed after saving) and stops when a pass makes no further progress, instead of trusting the inflated translated count — which also stops re-sending untranslatable phrases to the paid translation API every pass.
## v2.8.3 - 2026-06-03
### Performance
- ObjectModel mass translation (products, categories, …) on large catalogues: rewrote the scan so it no longer issues one DB query per object (source lookup) and one per already-translated cell (NonTranslatable lookup). Source rows and NonTranslatable phrases are now resolved in batches per page, turning hundreds of thousands of queries per AJAX request into a few. This fixes the case where a single translate request advanced by only one product after ~30 s on a 60k+ product shop.
- PS1.6 path: the catalogue is now paged in bounded windows instead of loading the entire `*_lang` table into memory (out-of-memory risk on very large catalogues).
- Removed the hard-coded 100,000-object scan cap that silently truncated catalogues larger than 100k products.
- Paging is now ordered by primary key so large catalogues cannot skip or re-read rows between pages.
## v2.8.2 - 2026-06-02
### Fixed
- JS cache busting: dynamicTranslation.js URL now includes the module version as a query parameter so browsers and CDNs always fetch the latest script after a module update instead of serving a stale cached copy
- "Translate into all other languages" button on individual fields: rewrote to fire all target-language requests in parallel via Promise.all and wait for all to complete before changing the UI state; the old implementation used Array.map with fire-and-forget async callbacks which caused state race conditions - setState(IDLE) from the first completed language fired while other languages were still translating
## v2.8.1 - 2026-06-01
### Fixed
- ObjectModel mass translation (e.g. categories): the phrase "total" counter no longer includes cells whose source field is empty. Such cells can never be translated, so counting them made progress stall short of 100% (e.g. 5992/25080) and "Re-translate all" looked like it stopped early. The total now equals the number of phrases actually processed.
- "Re-translate all" no longer aborts with "Cannot rewind a generator that was already run". After skipping `reTranslateAllOffset` items, the batch loop now iterates the generator manually (while/current/next) instead of `foreach`, which tried to rewind an already-started generator.
- NonTranslatable cache for `link_rewrite` fields: the "non-translatable" lookup now uses the same dashes-as-spaces phrase that is sent to the translator and stored, so a non-translatable slug is cached correctly instead of being re-sent to the API on every run.
- Translation UI no longer gets stuck on "Translating..." after an error. Previously a network/non-JSON error left the row spinning with the action buttons hidden and the whole queue jammed; the queue item is now always released, so the buttons reappear and clicking "Translate missing" resumes from where it stopped.
## v2.8.0 - 2026-05-14
### Added
- "Retranslate all in this section" button (yellow) next to the existing missing-only button — re-translates every phrase in a section from scratch, overwriting current translations (with a confirmation prompt)
## v2.7.2 - 2026-05-12
### Fixed
- PrestaShop 1.6 — "Translate All" for a module domain (e.g. paymentConfirmation) now overrides previous translations as expected; saved keys are lowercased to match PrestaShop's lookup
## v2.7.1 - 2026-05-12
### Fixed
- In-admin translate widget no longer reads the source text from a different translatable field when the form layout nests language tabs at uneven depths (e.g. cz_imageslider's custom file_lang and autoload_rte templates)
## v2.7.0 - 2026-04-22
### Added
- OpenRouter (AI) translator with editable system prompt (context, vocabulary, tone) — Pro license
- "What to translate" filter (all / objects / modules / configuration / front theme)
- "Skip disabled modules" toggle
### Fixed
- PrestaShop 9 compatibility (in-admin translate buttons, theme translation stats, product save)
## v2.6.9 - 2026-03-13
### Fixed
- Support with non-standard editor modules
## v2.6.8 - 2026-03-12
### Added
- Added configuration domain for translation
## v2.6.7 - 2026-03-10
### Fixed
- Fixed "Failed to update API key." error
## v2.6.6 - 2026-02-24
### Fixed
- Fixed theme translations not being assigned to the theme in the database
## v2.6.5 - 2025-01-22
### Added
- Support for Norwegian and Slovenian language translation
## v2.6.4 - 2025-12-11
### Added
- Updated list of supported languages for translate
## v2.6.3 - 2025-12-06
### Added
- Updated list of supported languages for translate
## v2.6.2 - 2025-11-26
### Added
- Updated list of supported languages for glossaries
## v2.6.1 - 2025-11-05
### Fixed
- Improved theme translation lookup
## v2.6.0 - 2025-11-05
### Added
- Support for translating input fields inside iframes — for example, when adding a new file on the product edit form
## v2.5.7 - 2025-10-13
### Fixed
- Improved translation of module configurations
## v2.5.6 - 2025-09-23
### Fixed
- Suppport gb and us source languages
## v2.5.5 - 2025-07-14
### Fixed
- Better API error handling
## v2.5.4 - 2025-07-10
### Added
- Added option: Stop translation on first error occured
## v2.5.3 - 2025-07-01
### Fixed
- Improved translating long text
## v2.5.2 - 2025-06-18
### Fixed
- Improved loading translations in the module configuration
## v2.5.1 - 2025-05-05
### Fixed
- The compatibility problem with newer php versions
## v2.5.0 - 2025-01-14
### Added
- Support DeepL API changes from March 2025
## v2.4.10 - 2024-11-22
### Fixed
- The problem with the button for quick translation of text fields in prestashop 8.2
## v2.4.9 - 2024-10-21
### Fixed
- Translating fields in third party modules
## v2.4.8 - 2024-07-04
### Fixed
- Automatic usage of glossaries for translations
## v2.4.7 - 2024-05-14
### Fixed
- Translating phrases added to the custom translation domain in the theme files
## v2.4.6 - 2024-04-29
### Fixed
- Translating hardcoded phrases from template files
## v2.4.5 - 2024-04-16
### Fixed
- ObjectModel classes finder
## v2.4.4 - 2024-03-28
### Fixed
- Support prestashop 1.7.2
## v2.4.3 - 2024-03-18
### Added
- Support module ph_simpleblog
## v2.4.2 - 2024-01-16
### Fixed
- Fix typing
## v2.4.1 - 2024-01-11
### Fixed
- Improved translating when there are thousands of records in the database
## v2.4.0 - 2023-11-28
### Added
- Allow to translate very long texts thanks to the splitting into smaller parts - DeepL API limit is 128kb per request
## v2.3.0 - 2023-11-08
### Added
- Support glossaries: user can manage glossaries in the module; glossary will be automatically used for all translations
## v2.2.6 - 2023-10-03
### Fixed
- Improve support for Prestashop 8.1
## v2.2.5 - 2023-09-08
### Fixed
- Decrease num of texts translating at once
## v2.2.4 - 2023-08-24
### Fixed
- Fix translator url when back-office is running on no main domain
## v2.2.3 - 2023-08-21
### Fixed
- Prestashop 8.0.4 require to save module translations into `modules/*/translations/*.php` file
## v2.2.2 - 2023-07-26
### Fixed
- Skip searching for ObjectModel in modules where `_` has been added to the directory name
## v2.2.1 - 2023-07-21
### Fixed
- There was a problem with the 'preview' button on the product edit page in the admin panel
## v2.2.0 - 2023-07-19
### Added
- Added support for Prestashop 8.0 and 8.1
- Added support for PHP 8.1
- Improved error handling
## v2.1.4 - 2023-07-05
### Added
- Dispatch 'change' event while updating textarea to improve compatibility
## v2.1.3 - 2023-05-24
### Added
- Add support for lang KO - Korean
- Add support for lang TR - Turkish
- Add support for lang UK - Ukrainian
- Add support for lang NB - Norwegian (Bokmål)
## v2.1.2 - 2023-05-19
### Fixed
- Optimized object model loading
- Fixes for Prestashop 1.7.7
- Service refactoring
## v2.1.1 - 2023-05-02
### Fixed
- Small fix for multistore support
## v2.1.0 - 2023-04-27
### Added
- Added support for Prestashop 1.7.5 and older
## v2.0.4 - 2023-03-30
### Fixed
- Small fix for output buffer
## v2.0.3 - 2023-03-24
### Fixed
- Fix for protected method Link::getBaseLink() on some Prestashop versions
## v2.0.2 - 2023-02-17
### Fixed
- check if files of the installed module exist before trying to translate them
## v2.0.1 - 2023-02-16
### Fixed
- catch error while some database tables are missing
## v2.0.0 - 2023-02-15
### Added
- allow translating front theme and modules using translations from other language as a source instead of phrases directly from files
- allow translating phrases from single module files
### Fixed
- most of the algorithms have been rewritten for more accurate and stable operation
- update dependencies
## v1.4.4 - 2023-02-08
### Fixed
- additional fix for: automatically convert target language to en-us, en-gb, pt-pt, pt-br
## v1.4.3 - 2023-01-24
### Fixed
- automatically convert target language to en-us, en-gb, pt-pt, pt-br
## v1.4.2 - 2023-01-17
### Fixed
- improve translating link_rewrite field
## v1.4.1 - 2022-10-13
### Fixed
- Improve modules translation - better searching for translatable elements
## v1.4.0 - 2022-07-29
### Added
- Add translation logging
- Add log viewer in the back-office
- Allow translating inputs with tags (e.g. cms page meta keywords)
### Fixed
- Improve translating single fields in the back-office
- Fix translating special chars in non-html fields (e.g. `&` was wrongly changing to `&`)
## v1.3.4 - 2022-07-20
### Fixed
- Fix not found Translation Service
## v1.3.3 - 2022-07-14
### Fixed
- The problem with undefined variable in module settings
## v1.3.2 - 2022-07-12
### Fixed
- Catch errors caused by duplicated class names
- Catch exceptions thrown because of missing database tables
## v1.3.1 - 2022-07-11
### Fixed
- Changed CDN JS to local files
## v1.3 - 2022-05-30
### Fixed
- Fix issue with missing translation service on PrestaShop version 1.7.4 and lower
## v1.2 - 2022-05-17
### Fixed
- Improve dynamic translation in single fields
- Search for objects (ObjectModel) to translate in the main module directories
## v1.1 - 2022-05-16
### Added
- Support PrestaShop 1.7
## v1.0 - 2022-04-08
### Added
- Allow translating phrases from template files
- Allow translating phrases from modules files
- Allow translating fields from \ObjectModel objects
Jeśli jakieś pole ma uzupełnioną zawartość w danym języku, to moduł uznaje, że jest to pole przetłumaczone w danym języku. Jeśli pole w danym języku jest puste, to moduł oznacza to jako brak tłumaczenia. W module można masowo tłumaczyć wszystko lub tylko pola z brakiem tłumaczenia.
Automatyczne tłumaczenie aktualnie edytowanego produktu wymaga dodatkowego 1-kliknięcia przy polu, które edytujesz. Możemy rozbudować moduł, aby tłumaczenie odbywało się po zapisie produktu i nie wymagało dodatkowego kliknięcia - otwórz zgłoszenie na helpdesk.prestashow.pl
Moduł od ETS pozwala tłumaczyć opisy jeśli tekst jest 1:1 taki sam na obu wersjach, ale to nie jest idealne rozwiązanie.
Czy moduł pozwala na automatyczne tłumaczenie opisu przy zapisie produktu?