Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/api/event_reference/event_reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ For example, copying a content item is connected with two events: `BeforeCopyCon
"api/event_reference/segmentation_events",
"api/event_reference/site_events",
"api/event_reference/taxonomy_events",
"api/event_reference/translations_management_events",
"api/event_reference/trash_events",
"api/event_reference/twig_component_events",
"api/event_reference/url_events",
Expand Down
29 changes: 29 additions & 0 deletions docs/api/event_reference/translations_management_events.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
description: Events that are triggered when working with taxonomy.

Check notice on line 2 in docs/api/event_reference/translations_management_events.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/api/event_reference/translations_management_events.md#L2

[Ibexa.Passive] Try to avoid passive tense, when possible.
Raw output
{"message": "[Ibexa.Passive] Try to avoid passive tense, when possible.", "location": {"path": "docs/api/event_reference/translations_management_events.md", "range": {"start": {"line": 2, "column": 26}}}, "severity": "INFO"}
edition: lts-update
page_type: reference
---

# Translations management events

The [Translations management](configure_translations_management.md) package dispatches events at two levels.

## Translation events

Translation events are thrown once per field value per translation operation.

Check notice on line 13 in docs/api/event_reference/translations_management_events.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/api/event_reference/translations_management_events.md#L13

[Ibexa.Passive] Try to avoid passive tense, when possible.
Raw output
{"message": "[Ibexa.Passive] Try to avoid passive tense, when possible.", "location": {"path": "docs/api/event_reference/translations_management_events.md", "range": {"start": {"line": 13, "column": 20}}}, "severity": "INFO"}
They are used for logging, analytics, and observability.

Check notice on line 14 in docs/api/event_reference/translations_management_events.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/api/event_reference/translations_management_events.md#L14

[Ibexa.Passive] Try to avoid passive tense, when possible.
Raw output
{"message": "[Ibexa.Passive] Try to avoid passive tense, when possible.", "location": {"path": "docs/api/event_reference/translations_management_events.md", "range": {"start": {"line": 14, "column": 6}}}, "severity": "INFO"}
Both events are read-only, you can't use them to override the translation result.

| Event | Dispatched by | Dispatched when | Properties |

Check warning on line 17 in docs/api/event_reference/translations_management_events.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/api/event_reference/translations_management_events.md#L17

[Ibexa.EOLWhitespace] Remove whitespace characters from the end of the line.
Raw output
{"message": "[Ibexa.EOLWhitespace] Remove whitespace characters from the end of the line.", "location": {"path": "docs/api/event_reference/translations_management_events.md", "range": {"start": {"line": 17, "column": 57}}}, "severity": "WARNING"}
|---|---|---|----|
[`BeforeTranslateEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-TranslationsManagement-AutoTranslate-Event-BeforeTranslateEvent.html) | `TranslationService` | Before a translation request is sent to the provider | `TranslationProviderInterface $provider`</br>`string $text`</br>`string $sourceLanguage`</br>`string $targetLanguage` |

Check failure on line 19 in docs/api/event_reference/translations_management_events.md

View workflow job for this annotation

GitHub Actions / markdownlint

Table pipe style

docs/api/event_reference/translations_management_events.md:19:1 MD055/table-pipe-style Table pipe style [Expected: leading_and_trailing; Actual: trailing_only; Missing leading pipe] https://github.com/DavidAnson/markdownlint/blob/v0.38.0/doc/md055.md

Check notice on line 19 in docs/api/event_reference/translations_management_events.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/api/event_reference/translations_management_events.md#L19

[Ibexa.Passive] Try to avoid passive tense, when possible.
Raw output
{"message": "[Ibexa.Passive] Try to avoid passive tense, when possible.", "location": {"path": "docs/api/event_reference/translations_management_events.md", "range": {"start": {"line": 19, "column": 205}}}, "severity": "INFO"}
| [`TranslateEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-TranslationsManagement-AutoTranslate-Event-TranslateEvent.html) | `TranslationService` | After a translation response is received | `string $result`</br>`TranslationProviderInterface $provider`</br>`string $text`</br>`string $sourceLanguage`</br>`string $targetLanguage` |

Check notice on line 20 in docs/api/event_reference/translations_management_events.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/api/event_reference/translations_management_events.md#L20

[Ibexa.Passive] Try to avoid passive tense, when possible.
Raw output
{"message": "[Ibexa.Passive] Try to avoid passive tense, when possible.", "location": {"path": "docs/api/event_reference/translations_management_events.md", "range": {"start": {"line": 20, "column": 195}}}, "severity": "INFO"}

## Side-by-side creation events

Side-by-side creation events are dispatched when a new translation draft is being prepared.

Check notice on line 24 in docs/api/event_reference/translations_management_events.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/api/event_reference/translations_management_events.md#L24

[Ibexa.Passive] Try to avoid passive tense, when possible.
Raw output
{"message": "[Ibexa.Passive] Try to avoid passive tense, when possible.", "location": {"path": "docs/api/event_reference/translations_management_events.md", "range": {"start": {"line": 24, "column": 30}}}, "severity": "INFO"}

Check notice on line 24 in docs/api/event_reference/translations_management_events.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/api/event_reference/translations_management_events.md#L24

[Ibexa.Passive] Try to avoid passive tense, when possible.
Raw output
{"message": "[Ibexa.Passive] Try to avoid passive tense, when possible.", "location": {"path": "docs/api/event_reference/translations_management_events.md", "range": {"start": {"line": 24, "column": 77}}}, "severity": "INFO"}

| Event | Dispatched by | Dispatched when | Properties |
|---|---|---|---|
| [`OnContentSideBySideTranslationCreateEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-TranslationsManagement-SideBySide-Event-OnContentSideBySideTranslationCreateEvent.html) | `SideBySideTranslationService` | When a draft side-by-side translation of a content item is being created | `Request $request`</br>`Content $sourceContent`</br>`string $sourceLanguageCode`</br>`string $targetLanguageCode`</br>`?Content $targetDraft` |

Check notice on line 28 in docs/api/event_reference/translations_management_events.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/api/event_reference/translations_management_events.md#L28

[Ibexa.Passive] Try to avoid passive tense, when possible.
Raw output
{"message": "[Ibexa.Passive] Try to avoid passive tense, when possible.", "location": {"path": "docs/api/event_reference/translations_management_events.md", "range": {"start": {"line": 28, "column": 286}}}, "severity": "INFO"}
| [`OnProductSideBySideTranslationCreateEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-TranslationsManagement-SideBySide-Event-OnProductSideBySideTranslationCreateEvent.html) | `SideBySideTranslationService` | When a draft side-by-side translation of a product is being created | `Request $request`</br>`ContentAwareProductInterface $sourceProduct`</br>`ContentAwareProductInterface $targetProduct`</br>`string $sourceLanguageCode`</br>`string $targetLanguageCode`</br>`?ProductUpdateData $productUpdateData` |

Check notice on line 29 in docs/api/event_reference/translations_management_events.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/api/event_reference/translations_management_events.md#L29

[Ibexa.Passive] Try to avoid passive tense, when possible.
Raw output
{"message": "[Ibexa.Passive] Try to avoid passive tense, when possible.", "location": {"path": "docs/api/event_reference/translations_management_events.md", "range": {"start": {"line": 29, "column": 281}}}, "severity": "INFO"}
1 change: 1 addition & 0 deletions docs/ibexa_products/editions.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,3 +71,4 @@ The features brought by LTS Updates become standard parts of the next LTS releas
| [Integrated help](integrated_help.md) | &#10004; | &#10004; | &#10004; |
| [MCP servers](mcp_guide.md) | &#10004; | &#10004; | &#10004; |
| [Shopping list](shopping_list_guide.md) | | | &#10004; |
| [Translations management](translations_management_guide.md) | &#10004; | &#10004; | &#10004; |
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<mxfile host="Electron" modified="2026-06-16T10:51:05.860Z" agent="5.0 (Macintosh; Intel Mac OS X 26_3_1) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/14.6.13 Chrome/89.0.4389.128 Electron/12.0.7 Safari/537.36" etag="j-W4lXxHCJBOFpcNCibg" version="14.6.13" type="device"><diagram id="1kQWOgmGZ1G1xJNYzsRM" name="Page-1">5Zptc6M2EIB/DTPtB2d4MRh/tB3Hcc5pPfW0l/uUkUEG9WTkCuGX+/WVQNiAyJn0iJ1cZzxjWEmw++xqWQk0a7TeTyjYhI/Eh1gzdX+vWbeaaRqGaWrip/sHKbFtJ5MEFPlSdhIs0DcohbqUJsiHcakjIwQztCkLPRJF0GMlGaCU7MrdVgSX77oBAVQECw9gVfoZ+SzMDdP1U8M9REEob+3asmEN8s5SEIfAJ7uCyBpr1ogSwrKj9X4EsaCXc8nG3b3QelSMwog1GTDIBmwBTqRtA3+NIqEZZDH/SzYCLgVRjAFDRLRsKNly/jSWJrBDzoWSJPKhuLShWcNdiBhcbIAnWnc8FLgsZGssm1cI4xHBhKZjLR9Ad+Vxecwo+QoLLY7nwuWKt6jGSXu3kDK4L4iksRNI1pDRA+8iW007GyEjr2PkIbUr+NGVsrDgQkfKgAyd4HjpE11+IAHXwx4qsMc+YtxMU6fwnwTGKfEI7qrI28RsQ9fv1mF2zaXlOC1h7l+T80jh/AeMCd7CuBC9mulgfs/hUhwF4ugXDKIg4VO3swFIOEXckM+AWHTm8wHzVMLd8Wur/litVqZXG/a+s3TslvxhdPWKP1R3HHNS0R29Ftxxp4b9noe3l0Z7HudgyWnyVIwg9ttNLJchXEks/QuG+0Thu4CRn8IlLybvj4i4fz3G9zUpxYMoSyk5YU5PIKUoCj5iCBvlHGFahpoj9DfiO1X4jijkRFO8gAaQdfLsLApHClbsAxI23Ssifvhe9bFFcBenj7zqUxFEIqrXxEc8N6fuCOGHr0+MbjmVWOYFHfFJzddgC7OLvkVsXwhpObS7NUQNu4ao3QLRmUo05LbE6e353fMIb/mxdyGwPfs82d4bkX1UyM6TJUZxCFte/V0EpeU0CNK6MrgNlLBmcS5FMUmol6+/M1H20NOK6xnol3YlVCspFAl5W96k+CGVzUYqD9+TylYjlUeqyndtq5wOHVAKDoUOG4IiFheuPBeC4jqiPNtdvWJ9dsETi6NmzfB0G+G5U/FMruZRW8lB2sjUBr1GlrSudr3bjlt/x8qukjEylHLUyfjXhofllsPD6Ff2987oVen/4/HkNPLCvRpP06vFU7PAmaoqP7yLDGFVFhF57dqaS91GfB5UPp+u5tL+f1V5djWV83r59To/XktnFPT8ER3iu0n09LsxGuyecNLJi7BCdq4WhnEINuLQSyg+DCnwvgpTzlWI5XJyhdHmXh5r9WVfDcsXK0G7slzpHMu+0gpQUyrBrtlCKVgL0vopQFp63Upa5Wj0+m/EsatwnM/+nEx/U2i+ClsbqKwyKkeNuNrFRxt7DrWkHIXUYno77gy/dMQ/b/lrOv787rDxRdyNfWVy7vm5KmxGHsAzsIR4TmKUbpVZt0vCGFlzNHmHAUaBaGCkQjKf7et9IN6j3yxBjLyb7nNaIDzH/JHwzLEN0/fq+o3bDu3jZD2+m3cU1k4N6jZeFNWi7v9/UNckhLqofrMnUJ7KC2hFkbGQp4SykAQkAnh8khbmu87PTn1mREBO6f4NGTvIrzhAwkiZPdwj9pRyteXZl0LL7V5eOT05FE7mkCJuN6RSptVVRWfrq+9N72LR9XK/qxVeDSqvn2RmHLfi258Z/PT0tU22Wjp9tGSN/wU=</diagram></mxfile>
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
---
description: Translations management helps managers, developers and localization teams with multilingual content delivery.
edition: lts-update
month_change: true
---

# Translations management product guide

## What is Translations management

Check notice on line 9 in docs/multisite/translations_management/translations_management_guide.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/multisite/translations_management/translations_management_guide.md#L9

[Ibexa.SentenceCapitalizationInHeadings] Use sentence-style capitalization in headings
Raw output
{"message": "[Ibexa.SentenceCapitalizationInHeadings] Use sentence-style capitalization in headings", "location": {"path": "docs/multisite/translations_management/translations_management_guide.md", "range": {"start": {"line": 9, "column": 4}}}, "severity": "INFO"}

Content managers, translators and proofreaders who work with multilingual content in [[= product_name =]] often face a common set of challenges:

- context is lost when the source text isn't visible alongside the translation
- translation of long and complex content items is time consuming
- quality assurance is slow and error-prone without a direct comparison view
- switching between tools or tabs to cross-reference languages disrupts focus and slows down publishing

Translations management package addresses these pain points through a side-by-side view, machine translation and ability to invite reviewers to collaborate on content item or product translation.

The package integrates with the [AI Actions framework](ai_actions.md) to support machine translation providers such as Google Translate and DeepL, and AI powered translation services like OpenAI, Anthropic, and Google Gemini.

Administrators can manage providers and configure default provider-to-language-pair mappings directly in [[= product_name =]]'s user interface, while editors can trigger machine translation from the content editing interface.

!!! note

Translations management is a standalone set of features.
Although some views are similar to those delivered by the [Automated translations](automated_translations.md) opt-in package, Translations management does not require the `ibexa/automated-translation` package to run.
These two packages use different namespaces, service tags, and provider interfaces.

Check warning on line 29 in docs/multisite/translations_management/translations_management_guide.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/multisite/translations_management/translations_management_guide.md#L29

[Ibexa.EOLWhitespace] Remove whitespace characters from the end of the line.
Raw output
{"message": "[Ibexa.EOLWhitespace] Remove whitespace characters from the end of the line.", "location": {"path": "docs/multisite/translations_management/translations_management_guide.md", "range": {"start": {"line": 29, "column": 1}}}, "severity": "WARNING"}
## Availability

Translations management is an [LTS Update](editions.md#lts-updates) available in all [[= product_name =]] editions.

## How it works

Check warning on line 34 in docs/multisite/translations_management/translations_management_guide.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/multisite/translations_management/translations_management_guide.md#L34

[Ibexa.HeadingContent] Rename the heading '## How it works', or re-purpose the content elsewhere.
Raw output
{"message": "[Ibexa.HeadingContent] Rename the heading '## How it works', or re-purpose the content elsewhere.", "location": {"path": "docs/multisite/translations_management/translations_management_guide.md", "range": {"start": {"line": 34, "column": 1}}}, "severity": "WARNING"}

Before the translation flow can happen, an administrator sets up the translation providers and assigns language pairs to them.
Then, when an editor opens a content item and requests a new machine translation, the plugin resolves which provider to use.
It falls back from a language-pair rule to the user's manual selection if necessary.
The plugin then extracts the translatable fields from the source language version of a content item and sends them to the configured provider's API.
The translated strings are written into a target-language draft version of a content item, which opens in a side-by-side view for the editor to review and refine.

Check notice on line 40 in docs/multisite/translations_management/translations_management_guide.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/multisite/translations_management/translations_management_guide.md#L40

[Ibexa.Passive] Try to avoid passive tense, when possible.
Raw output
{"message": "[Ibexa.Passive] Try to avoid passive tense, when possible.", "location": {"path": "docs/multisite/translations_management/translations_management_guide.md", "range": {"start": {"line": 40, "column": 24}}}, "severity": "INFO"}
The editor can save the result as draft, share it with a reviewer or publish it.

![Translations management flow](translations_management_flow.png "Translations management flow")

## Capabilities

### Translation provider management

Administrators can manage translation providers and configure [language pair defaults](configure_translations_management.md#manage-language-pairs).
This way they can define which provider handles which language combination.
Editors see the configured default pre-selected when creating a new translation, but can override the selection if needed.

Translations management supports several built-in translation providers, for example Google Translate, which is accessed through its REST API, or OpenAI, accessed through AI Actions.

Check notice on line 53 in docs/multisite/translations_management/translations_management_guide.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/multisite/translations_management/translations_management_guide.md#L53

[Ibexa.Passive] Try to avoid passive tense, when possible.
Raw output
{"message": "[Ibexa.Passive] Try to avoid passive tense, when possible.", "location": {"path": "docs/multisite/translations_management/translations_management_guide.md", "range": {"start": {"line": 53, "column": 110}}}, "severity": "INFO"}

### Side-by-side translation view

Translations management introduces a [side-by-side translation view]([[= user_doc =]]/content_management/translate_content/#side-by-side-translation-view) that displays the source language read-only next to an editable target language form.
In this view, editors can provide and review translations in context, without having to leave the content editing interface.

![Side-by-side translation view](managing_translations_sxs_view.png "Side-by-side translation view")

Editors can:

- access the side-by-side view when creating a new translation, reviewing an existing one, or editing a draft
- compare source and target content field by field while editing
- copy all content from the source column to the target column with a single action
- provide localized versions of media assets
- use the distraction-free mode for focused editing of individual fields, with AI actions available inline
- choose whether the source column appears on the left or right in user settings

!!! note "Excluded content types"

Content types that are editable in Page builder or Form builder are excluded from side-by-side editing.

Check warning on line 74 in docs/multisite/translations_management/translations_management_guide.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/multisite/translations_management/translations_management_guide.md#L74

[Ibexa.EOLWhitespace] Remove whitespace characters from the end of the line.
Raw output
{"message": "[Ibexa.EOLWhitespace] Remove whitespace characters from the end of the line.", "location": {"path": "docs/multisite/translations_management/translations_management_guide.md", "range": {"start": {"line": 74, "column": 1}}}, "severity": "WARNING"}
Products are editable in the side-by-side view, but product attributes are not translatable.

### CLI translation

Check notice on line 77 in docs/multisite/translations_management/translations_management_guide.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/multisite/translations_management/translations_management_guide.md#L77

[Ibexa.SentenceCapitalizationInHeadings] Use sentence-style capitalization in headings
Raw output
{"message": "[Ibexa.SentenceCapitalizationInHeadings] Use sentence-style capitalization in headings", "location": {"path": "docs/multisite/translations_management/translations_management_guide.md", "range": {"start": {"line": 77, "column": 5}}}, "severity": "INFO"}

Translations management package exposes a [console command](configure_translations_management.md#translate-content-items-with-cli) for translating content items from the command line,
useful for batch processing or CI/CD workflows.

Check warning on line 80 in docs/multisite/translations_management/translations_management_guide.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/multisite/translations_management/translations_management_guide.md#L80

[Ibexa.VerySimply] Avoid using 'useful'.
Raw output
{"message": "[Ibexa.VerySimply] Avoid using 'useful'.", "location": {"path": "docs/multisite/translations_management/translations_management_guide.md", "range": {"start": {"line": 80, "column": 1}}}, "severity": "WARNING"}

### Extensibility

Developers can [extend the translations management](extend_translations_management.md) package:

- create custom translation providers
- add support for custom fields
- add custom content type exclusion rules
- tap into the translation lifecycle with [events](translations_management_events.md)
6 changes: 6 additions & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ nav:
- Discounts events: api/event_reference/discounts_events.md
- Collaboration events: api/event_reference/collaboration_events.md
- Integrated help events: api/event_reference/integrated_help_events.md
- Translations management events: api/event_reference/translations_management_events.md
- Other events: api/event_reference/other_events.md
- Notification channels: api/notification_channels.md
- Administration:
Expand Down Expand Up @@ -479,6 +480,11 @@ nav:
- Language API: multisite/languages/language_api.md
- Back office translations: multisite/languages/back_office_translations.md
- Automated content translation: multisite/languages/automated_translations.md
- Translations management:
- Translations management: multisite/translations_management/translations_management.md
- Translations management product guide: multisite/translations_management/translations_management_guide.md
- Configure translations management: multisite/translations_management/configure_translations_management.md
- Extend translations management: multisite/translations_management/extend_translations_management.md
- Permissions:
- Permissions: permissions/permissions.md
- Permission overview: permissions/permission_overview.md
Expand Down
Loading