From bc25c9744091fb0d0b53b08b44c57c3d7ca95c5e Mon Sep 17 00:00:00 2001 From: Mikel Larreategi Date: Fri, 12 Dec 2025 21:30:28 +0100 Subject: [PATCH 01/22] document the changes in p.a.multilingual --- .../upgrade-to-62..md | 30 ++++++ .../use-an-external-translation-service.md | 95 ++++--------------- 2 files changed, 50 insertions(+), 75 deletions(-) create mode 100644 docs/backend/upgrading/version-specific-migration/upgrade-to-62..md diff --git a/docs/backend/upgrading/version-specific-migration/upgrade-to-62..md b/docs/backend/upgrading/version-specific-migration/upgrade-to-62..md new file mode 100644 index 000000000..e9e26e366 --- /dev/null +++ b/docs/backend/upgrading/version-specific-migration/upgrade-to-62..md @@ -0,0 +1,30 @@ +--- +myst: + html_meta: + "description": "How to upgrade to Plone 6.2" + "property=og:description": "How to upgrade to Plone 6.2" + "property=og:title": "How to upgrade to Plone 6.2" + "keywords": "Upgrade, Plone 6" +--- + +(backend-upgrade-plone-v62-label)= + +# Upgrade Plone 6.1 to 6.2 + +Plone 6.2 has seen the following major changes. +Some may require changes in your setup. + + +## Drop of Google Translate integration + +plone.app.multilingual had an integration to use Google Translate to translate the content in the `babel_view` (where the content in two languages is shown side-by-side). + +This integration has been removed in Plone 6.2, and has been exchanged by a generic translation service integration. See the {ref}`use-an-external-translation-service-label` section for details. + +To achieve that integration the previously existing `gtranslation_service` browser view has been removed from plone.app.multilingual. + +Due to not needing it anymore, the `plone.google_translation_key` registry entry has been removed and will be removed by the upgrade step to Plone 6.2. + +The `babel_view` has been modified to call a new REST API endpoint instead of the old `gtranslation_service` browser view. + +To keep using the previously existing Google Translate integation, site administrators have to install a new package that provides those (and more) services, the package is called `collective.translators`. diff --git a/docs/i18n-l10n/use-an-external-translation-service.md b/docs/i18n-l10n/use-an-external-translation-service.md index cad738668..27d8e5d4e 100644 --- a/docs/i18n-l10n/use-an-external-translation-service.md +++ b/docs/i18n-l10n/use-an-external-translation-service.md @@ -13,89 +13,34 @@ myst: When translating content items in Plone, you can connect to an external translation service to translate your content. +T -## Using Google Cloud Translation API +The `plone.app.multilingual` product that turns Plone into a multilingual-content site supports a pluggable way to hook any translation service into Plone. -The `plone.app.multilingual` product that turns Plone into a multilingual-content site supports [Google Cloud Translation API](https://docs.cloud.google.com/translate/docs/reference/rest), which allows the content editor to use its translations. +To do so, one has to implement a utility that implements a `IExternalTranslationService` interface. -To use this service as a site administrator, you need to create a project in Google Cloud, enable the Cloud Translation API, and create an API key under the Credentials of the Google Cloud Console. -You should enter this API key in the {guilabel}`Multilingual Settings` control panel in Plone. +This utility class must implement the `IExternalTranslationService` interface from `plone.app.multilingual.interfaces` and it should provide at least these methods and an attribute: + + - `is_available()`: Returns True if the service is enabled and ready. + - `available_languages()`: Returns a list of supported language codes or pairs that can be used (source, target). + - `translate_content(content, source_language, target_language)`: Performs the translation and returns the translated text. + - `order`: the order in which this utility will be executed. This way, one can prioritize some services over others in given conditions. After doing so, as a content editor, when you edit a translation of a given content page, an icon will display next to the original content. -When you click this icon, it invokes the Google Cloud Translation API, and the translation obtained through the service will be entered automatically in the corresponding field. -```{note} -The usage of Google Cloud Translation API may create extra cost for the site administrator. -See [Cloud Translation pricing](https://cloud.google.com/translate/pricing) for details. -``` +When you click this icon, it will invoke the translation utility, and the translation obtained through the service will be entered automatically in the corresponding field. +Plone does not implement by itself this interface in any of its utilities. -## Using other translation services - -If you want to use another service beside Google Cloud Translation API, you will need to override the view that calls Google Cloud Translation API. - -To do so, `plone.app.multilingual` registers a view called `gtranslation_service`. -Its code is in [`plone.app.multilingual.brwoser.translate.gtranslation_service_dexterity`](https://github.com/plone/plone.app.multilingual/blob/7aedd0ab71d3edf5d1fb4cb86b9f611d428ed76b/src/plone/app/multilingual/browser/translate.py#L52). -This view gets three parameters: - -`context_uid` -: The UID of the object to be translated. - -`field` -: The name of the field of the object that needs to be translated. - This view's job is to extract the value of that field from the object. - -`lang_source` -: The source language code. - -The first part of the view—that which gets the object and the field content to be translated—can be copied from the original code. -You need to write only the call to the translation service. -The required code would be something like the following example: - -```python -class TranslateUsingMyService(BrowserView): - def __call__(self): - if self.request.method != "POST" and not ( - "field" in self.request.form.keys() - and "lang_source" in self.request.form.keys() - ): - return _("Need a field") - else: - manager = ITranslationManager(self.context) - context_uid = self.request.form.get("context_uid", None) - if context_uid is None: - # try with context if no translation uid is present - manager = ITranslationManager(self.context) - else: - catalog = getToolByName(self.context, "portal_catalog") - brains = catalog(UID=context_uid) - if len(brains): - context = brains[0].getObject() - manager = ITranslationManager(context) - else: - manager = ITranslationManager(self.context) - - registry = getUtility(IRegistry) - settings = registry.forInterface( - IMultiLanguageExtraOptionsSchema, prefix="plone" - ) - lang_target = ILanguage(self.context).get_language() - lang_source = self.request.form["lang_source"] - orig_object = manager.get_translation(lang_source) - field = self.request.form["field"].split(".")[-1] - if hasattr(orig_object, field): - question = getattr(orig_object, field, "") - if hasattr(question, "raw"): - question = question.raw - else: - return _("Invalid field") - - # And here do the call to the external translation service - return call_to_my_service(question, lang_target, lang_source) -``` +You will need to use an external package that offers this service (see the next section) or create your own utility. + +## Using the translation service with pre-configured services + +To easily use some external tools, the Plone community has implemented a package called [collective.translators](https://github.com/collective/collective.translators) that implements this functionality for Google Translate, Deepl, Deepseek, Ollama and Libre Translate. + +Each of those services provides a control panel to tweak the configuration (API keys, languages, service endpoints, etc.) ```{note} -Due to the way that the Google Translate integration is built in `plone.app.multilingual`, you will need to enter something in the {guilabel}`Google Translate API Key` field in the {guilabel}`Multilingual Settings` -control panel of your site. -It doesn't need to be a valid Google Translate API Key; it can be a random string. +The usage of some of those services may create extra cost for the site administrator. +Check the terms of use of each of the tools for details. ``` From b28bfa730dbe862a103e8cfddf1940a1d96e1926 Mon Sep 17 00:00:00 2001 From: Mikel Larreategi Date: Sun, 14 Dec 2025 14:24:06 +0100 Subject: [PATCH 02/22] Update docs/backend/upgrading/version-specific-migration/upgrade-to-62..md Co-authored-by: Steve Piercy --- .../upgrading/version-specific-migration/upgrade-to-62..md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/backend/upgrading/version-specific-migration/upgrade-to-62..md b/docs/backend/upgrading/version-specific-migration/upgrade-to-62..md index e9e26e366..8c911aaff 100644 --- a/docs/backend/upgrading/version-specific-migration/upgrade-to-62..md +++ b/docs/backend/upgrading/version-specific-migration/upgrade-to-62..md @@ -17,7 +17,7 @@ Some may require changes in your setup. ## Drop of Google Translate integration -plone.app.multilingual had an integration to use Google Translate to translate the content in the `babel_view` (where the content in two languages is shown side-by-side). +`plone.app.multilingual` had an integration to use Google Translate to translate the content in the `babel_view`, where the content in two languages is shown side-by-side. This integration has been removed in Plone 6.2, and has been exchanged by a generic translation service integration. See the {ref}`use-an-external-translation-service-label` section for details. From b175c75dab9424389c45efac8ff6b87dd34de1ac Mon Sep 17 00:00:00 2001 From: Mikel Larreategi Date: Sun, 14 Dec 2025 14:24:28 +0100 Subject: [PATCH 03/22] Update docs/backend/upgrading/version-specific-migration/upgrade-to-62..md Co-authored-by: Steve Piercy --- .../upgrading/version-specific-migration/upgrade-to-62..md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/backend/upgrading/version-specific-migration/upgrade-to-62..md b/docs/backend/upgrading/version-specific-migration/upgrade-to-62..md index 8c911aaff..5ae092363 100644 --- a/docs/backend/upgrading/version-specific-migration/upgrade-to-62..md +++ b/docs/backend/upgrading/version-specific-migration/upgrade-to-62..md @@ -19,7 +19,8 @@ Some may require changes in your setup. `plone.app.multilingual` had an integration to use Google Translate to translate the content in the `babel_view`, where the content in two languages is shown side-by-side. -This integration has been removed in Plone 6.2, and has been exchanged by a generic translation service integration. See the {ref}`use-an-external-translation-service-label` section for details. +This integration has been removed in Plone 6.2, and has been exchanged by a generic translation service integration. +See the {doc}`use-an-external-translation-service-label` chapter for details. To achieve that integration the previously existing `gtranslation_service` browser view has been removed from plone.app.multilingual. From e159ccf3133ad728a11e4bc6533c6ee4bf59770f Mon Sep 17 00:00:00 2001 From: Mikel Larreategi Date: Sun, 14 Dec 2025 14:24:40 +0100 Subject: [PATCH 04/22] Update docs/backend/upgrading/version-specific-migration/upgrade-to-62..md Co-authored-by: Steve Piercy --- .../upgrading/version-specific-migration/upgrade-to-62..md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/backend/upgrading/version-specific-migration/upgrade-to-62..md b/docs/backend/upgrading/version-specific-migration/upgrade-to-62..md index 5ae092363..6ca603beb 100644 --- a/docs/backend/upgrading/version-specific-migration/upgrade-to-62..md +++ b/docs/backend/upgrading/version-specific-migration/upgrade-to-62..md @@ -22,7 +22,7 @@ Some may require changes in your setup. This integration has been removed in Plone 6.2, and has been exchanged by a generic translation service integration. See the {doc}`use-an-external-translation-service-label` chapter for details. -To achieve that integration the previously existing `gtranslation_service` browser view has been removed from plone.app.multilingual. +To achieve that integration, the previously existing `gtranslation_service` browser view has been removed from `plone.app.multilingual`. Due to not needing it anymore, the `plone.google_translation_key` registry entry has been removed and will be removed by the upgrade step to Plone 6.2. From 22e7fb1f3241e9a073ff0cf1d9042590464e05d4 Mon Sep 17 00:00:00 2001 From: Mikel Larreategi Date: Sun, 14 Dec 2025 14:24:59 +0100 Subject: [PATCH 05/22] Update docs/backend/upgrading/version-specific-migration/upgrade-to-62..md Co-authored-by: Steve Piercy --- .../upgrading/version-specific-migration/upgrade-to-62..md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/backend/upgrading/version-specific-migration/upgrade-to-62..md b/docs/backend/upgrading/version-specific-migration/upgrade-to-62..md index 6ca603beb..96f21303a 100644 --- a/docs/backend/upgrading/version-specific-migration/upgrade-to-62..md +++ b/docs/backend/upgrading/version-specific-migration/upgrade-to-62..md @@ -28,4 +28,4 @@ Due to not needing it anymore, the `plone.google_translation_key` registry entry The `babel_view` has been modified to call a new REST API endpoint instead of the old `gtranslation_service` browser view. -To keep using the previously existing Google Translate integation, site administrators have to install a new package that provides those (and more) services, the package is called `collective.translators`. +To keep using the previously existing Google Translate integration, site administrators have to install a new package that provides those and more services, called [`collective.translators`](https://github.com/collective/collective.translators). From ba77dabdebcf116180dbb6fb0d3ce53e9ddaa6e8 Mon Sep 17 00:00:00 2001 From: Mikel Larreategi Date: Sun, 14 Dec 2025 14:25:17 +0100 Subject: [PATCH 06/22] Update docs/i18n-l10n/use-an-external-translation-service.md Co-authored-by: Steve Piercy --- .../use-an-external-translation-service.md | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/docs/i18n-l10n/use-an-external-translation-service.md b/docs/i18n-l10n/use-an-external-translation-service.md index 27d8e5d4e..b18628592 100644 --- a/docs/i18n-l10n/use-an-external-translation-service.md +++ b/docs/i18n-l10n/use-an-external-translation-service.md @@ -21,10 +21,18 @@ To do so, one has to implement a utility that implements a `IExternalTranslation This utility class must implement the `IExternalTranslationService` interface from `plone.app.multilingual.interfaces` and it should provide at least these methods and an attribute: - - `is_available()`: Returns True if the service is enabled and ready. - - `available_languages()`: Returns a list of supported language codes or pairs that can be used (source, target). - - `translate_content(content, source_language, target_language)`: Performs the translation and returns the translated text. - - `order`: the order in which this utility will be executed. This way, one can prioritize some services over others in given conditions. +`is_available()` +: Returns `True` if the service is enabled and ready. + +`available_languages()` +: Returns a list of supported language codes or pairs that can be used (source, target). + +`translate_content(content, source_language, target_language)` +: Performs the translation and returns the translated text. + +`order` +: The order in which this utility will be executed. + This way, one can prioritize some services over others with given conditions. After doing so, as a content editor, when you edit a translation of a given content page, an icon will display next to the original content. From ff1775fae1ea8ebbcfa2c0f7570447a8f4ba07d8 Mon Sep 17 00:00:00 2001 From: Mikel Larreategi Date: Sun, 14 Dec 2025 14:25:34 +0100 Subject: [PATCH 07/22] Update docs/i18n-l10n/use-an-external-translation-service.md Co-authored-by: Steve Piercy --- docs/i18n-l10n/use-an-external-translation-service.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/i18n-l10n/use-an-external-translation-service.md b/docs/i18n-l10n/use-an-external-translation-service.md index b18628592..837675ded 100644 --- a/docs/i18n-l10n/use-an-external-translation-service.md +++ b/docs/i18n-l10n/use-an-external-translation-service.md @@ -42,6 +42,8 @@ Plone does not implement by itself this interface in any of its utilities. You will need to use an external package that offers this service (see the next section) or create your own utility. +(pre-configured-services-label)= + ## Using the translation service with pre-configured services To easily use some external tools, the Plone community has implemented a package called [collective.translators](https://github.com/collective/collective.translators) that implements this functionality for Google Translate, Deepl, Deepseek, Ollama and Libre Translate. From a77be2daefc02e22bead8868e87e2379e23f55b7 Mon Sep 17 00:00:00 2001 From: Mikel Larreategi Date: Sun, 14 Dec 2025 14:25:52 +0100 Subject: [PATCH 08/22] Update docs/i18n-l10n/use-an-external-translation-service.md Co-authored-by: Steve Piercy --- docs/i18n-l10n/use-an-external-translation-service.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/i18n-l10n/use-an-external-translation-service.md b/docs/i18n-l10n/use-an-external-translation-service.md index 837675ded..32fb03298 100644 --- a/docs/i18n-l10n/use-an-external-translation-service.md +++ b/docs/i18n-l10n/use-an-external-translation-service.md @@ -40,7 +40,7 @@ When you click this icon, it will invoke the translation utility, and the transl Plone does not implement by itself this interface in any of its utilities. -You will need to use an external package that offers this service (see the next section) or create your own utility. +You'll need to use an external package that offers this service as described in {ref}`pre-configured-services-label`, or create your own utility. (pre-configured-services-label)= From 24350bb39056002a90e201d52ebe09421a3e5581 Mon Sep 17 00:00:00 2001 From: Mikel Larreategi Date: Sun, 14 Dec 2025 14:28:55 +0100 Subject: [PATCH 09/22] Update docs/i18n-l10n/use-an-external-translation-service.md Co-authored-by: Steve Piercy --- docs/i18n-l10n/use-an-external-translation-service.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/i18n-l10n/use-an-external-translation-service.md b/docs/i18n-l10n/use-an-external-translation-service.md index 32fb03298..59bc7c421 100644 --- a/docs/i18n-l10n/use-an-external-translation-service.md +++ b/docs/i18n-l10n/use-an-external-translation-service.md @@ -46,7 +46,7 @@ You'll need to use an external package that offers this service as described in ## Using the translation service with pre-configured services -To easily use some external tools, the Plone community has implemented a package called [collective.translators](https://github.com/collective/collective.translators) that implements this functionality for Google Translate, Deepl, Deepseek, Ollama and Libre Translate. +To use some external tools, the Plone community has implemented a package called [`collective.translators`](https://github.com/collective/collective.translators) that implements this functionality for Google Translate, Deepl, Deepseek, Ollama, and Libre Translate. Each of those services provides a control panel to tweak the configuration (API keys, languages, service endpoints, etc.) From d88c421fc8e9076af2edc6a1ad4ac869576cbeab Mon Sep 17 00:00:00 2001 From: Mikel Larreategi Date: Sun, 14 Dec 2025 14:29:10 +0100 Subject: [PATCH 10/22] Update docs/i18n-l10n/use-an-external-translation-service.md Co-authored-by: Steve Piercy --- docs/i18n-l10n/use-an-external-translation-service.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/i18n-l10n/use-an-external-translation-service.md b/docs/i18n-l10n/use-an-external-translation-service.md index 59bc7c421..04451e6ff 100644 --- a/docs/i18n-l10n/use-an-external-translation-service.md +++ b/docs/i18n-l10n/use-an-external-translation-service.md @@ -48,7 +48,7 @@ You'll need to use an external package that offers this service as described in To use some external tools, the Plone community has implemented a package called [`collective.translators`](https://github.com/collective/collective.translators) that implements this functionality for Google Translate, Deepl, Deepseek, Ollama, and Libre Translate. -Each of those services provides a control panel to tweak the configuration (API keys, languages, service endpoints, etc.) +Each of those services provides a control panel to tweak the configuration, including API keys, languages, service endpoints, and other configuration items. ```{note} The usage of some of those services may create extra cost for the site administrator. From a67f76f5c7704dd00112a065393b07ab54d4b500 Mon Sep 17 00:00:00 2001 From: Mikel Larreategi Date: Sun, 14 Dec 2025 14:30:48 +0100 Subject: [PATCH 11/22] Update docs/i18n-l10n/use-an-external-translation-service.md Co-authored-by: Steve Piercy --- docs/i18n-l10n/use-an-external-translation-service.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/i18n-l10n/use-an-external-translation-service.md b/docs/i18n-l10n/use-an-external-translation-service.md index 04451e6ff..454fcd6cf 100644 --- a/docs/i18n-l10n/use-an-external-translation-service.md +++ b/docs/i18n-l10n/use-an-external-translation-service.md @@ -13,7 +13,6 @@ myst: When translating content items in Plone, you can connect to an external translation service to translate your content. -T The `plone.app.multilingual` product that turns Plone into a multilingual-content site supports a pluggable way to hook any translation service into Plone. From b0c8c6aaf2c2a2fd5b59cf26804b11322f638afa Mon Sep 17 00:00:00 2001 From: Mikel Larreategi Date: Sun, 14 Dec 2025 14:31:34 +0100 Subject: [PATCH 12/22] Apply suggestions from code review Co-authored-by: Steve Piercy --- docs/i18n-l10n/use-an-external-translation-service.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/i18n-l10n/use-an-external-translation-service.md b/docs/i18n-l10n/use-an-external-translation-service.md index 454fcd6cf..a8cb572b6 100644 --- a/docs/i18n-l10n/use-an-external-translation-service.md +++ b/docs/i18n-l10n/use-an-external-translation-service.md @@ -16,7 +16,7 @@ When translating content items in Plone, you can connect to an external translat The `plone.app.multilingual` product that turns Plone into a multilingual-content site supports a pluggable way to hook any translation service into Plone. -To do so, one has to implement a utility that implements a `IExternalTranslationService` interface. +To do so, one has to implement a utility that implements an `IExternalTranslationService` interface. This utility class must implement the `IExternalTranslationService` interface from `plone.app.multilingual.interfaces` and it should provide at least these methods and an attribute: From 97e2756edc2a2f009dd6fa3b954a282ab49e2532 Mon Sep 17 00:00:00 2001 From: Mikel Larreategi Date: Mon, 15 Dec 2025 08:13:47 +0100 Subject: [PATCH 13/22] rename file --- .../{upgrade-to-62..md => upgrade-to-62.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/backend/upgrading/version-specific-migration/{upgrade-to-62..md => upgrade-to-62.md} (100%) diff --git a/docs/backend/upgrading/version-specific-migration/upgrade-to-62..md b/docs/backend/upgrading/version-specific-migration/upgrade-to-62.md similarity index 100% rename from docs/backend/upgrading/version-specific-migration/upgrade-to-62..md rename to docs/backend/upgrading/version-specific-migration/upgrade-to-62.md From bfa3a5720a9ea90db2ab6088cf34f8de1841a494 Mon Sep 17 00:00:00 2001 From: Mikel Larreategi Date: Mon, 15 Dec 2025 08:15:00 +0100 Subject: [PATCH 14/22] add upgrade guide to the toctree --- docs/backend/upgrading/version-specific-migration/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/backend/upgrading/version-specific-migration/index.md b/docs/backend/upgrading/version-specific-migration/index.md index c8cb485cd..c4279e294 100644 --- a/docs/backend/upgrading/version-specific-migration/index.md +++ b/docs/backend/upgrading/version-specific-migration/index.md @@ -27,5 +27,6 @@ upgrade-to-python3 upgrade-zodb-to-python3 upgrade-to-60 upgrade-to-61 +upgrade-to-62 migrate-to-volto ``` From f9d10a6fa9dc00c3f25aa9dc1eda8e98c2c2fbfa Mon Sep 17 00:00:00 2001 From: Mikel Larreategi Date: Mon, 15 Dec 2025 09:19:42 +0100 Subject: [PATCH 15/22] Update docs/backend/upgrading/version-specific-migration/upgrade-to-62.md Co-authored-by: Steve Piercy --- .../version-specific-migration/upgrade-to-62.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/docs/backend/upgrading/version-specific-migration/upgrade-to-62.md b/docs/backend/upgrading/version-specific-migration/upgrade-to-62.md index 96f21303a..98d291229 100644 --- a/docs/backend/upgrading/version-specific-migration/upgrade-to-62.md +++ b/docs/backend/upgrading/version-specific-migration/upgrade-to-62.md @@ -15,11 +15,18 @@ Plone 6.2 has seen the following major changes. Some may require changes in your setup. -## Drop of Google Translate integration +## Replaced Google Translate integration with generic translation integration -`plone.app.multilingual` had an integration to use Google Translate to translate the content in the `babel_view`, where the content in two languages is shown side-by-side. +`plone.app.multilingual` had an integration to use only Google Translate to translate the content in the `babel_view`, where the content in two languages is shown side-by-side. +This integration was limited to only Google Translate. +In Plone 6.2, this integration has been replaced with a generic translation service integration hook. + +[`collective.translators`](https://github.com/collective/collective.translators) provides some implementations for that hook, supporting AWS, Deepl, Deepseek, Google Translate, Libre Translate, and Ollama. +It can be extended to support more translation providers. + +It is not mandatory to use `collective.translator`. +Any developer can write the integration with the tool of their choice. -This integration has been removed in Plone 6.2, and has been exchanged by a generic translation service integration. See the {doc}`use-an-external-translation-service-label` chapter for details. To achieve that integration, the previously existing `gtranslation_service` browser view has been removed from `plone.app.multilingual`. From 9fff06ea99c2a468d9d4ed161f3c6a8b5c0e3693 Mon Sep 17 00:00:00 2001 From: Steve Piercy Date: Mon, 15 Dec 2025 00:35:07 -0800 Subject: [PATCH 16/22] Update docs/backend/upgrading/version-specific-migration/upgrade-to-62.md --- .../upgrading/version-specific-migration/upgrade-to-62.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/backend/upgrading/version-specific-migration/upgrade-to-62.md b/docs/backend/upgrading/version-specific-migration/upgrade-to-62.md index 98d291229..81105d0af 100644 --- a/docs/backend/upgrading/version-specific-migration/upgrade-to-62.md +++ b/docs/backend/upgrading/version-specific-migration/upgrade-to-62.md @@ -27,7 +27,7 @@ It can be extended to support more translation providers. It is not mandatory to use `collective.translator`. Any developer can write the integration with the tool of their choice. -See the {doc}`use-an-external-translation-service-label` chapter for details. +See the {doc}`../../../i18n-l10n/use-an-external-translation-service-label` chapter for details. To achieve that integration, the previously existing `gtranslation_service` browser view has been removed from `plone.app.multilingual`. From 472a56c55a8804024108a2680064e5ff64e531dd Mon Sep 17 00:00:00 2001 From: Mikel Larreategi Date: Mon, 15 Dec 2025 09:57:31 +0100 Subject: [PATCH 17/22] Apply suggestions from code review Co-authored-by: Steve Piercy --- .../upgrading/version-specific-migration/upgrade-to-62.md | 6 ++---- docs/i18n-l10n/use-an-external-translation-service.md | 6 +++--- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/docs/backend/upgrading/version-specific-migration/upgrade-to-62.md b/docs/backend/upgrading/version-specific-migration/upgrade-to-62.md index 81105d0af..a4f2e5728 100644 --- a/docs/backend/upgrading/version-specific-migration/upgrade-to-62.md +++ b/docs/backend/upgrading/version-specific-migration/upgrade-to-62.md @@ -27,12 +27,10 @@ It can be extended to support more translation providers. It is not mandatory to use `collective.translator`. Any developer can write the integration with the tool of their choice. -See the {doc}`../../../i18n-l10n/use-an-external-translation-service-label` chapter for details. +See the {doc}`/i18n-l10n/use-an-external-translation-service-label` chapter for details. To achieve that integration, the previously existing `gtranslation_service` browser view has been removed from `plone.app.multilingual`. -Due to not needing it anymore, the `plone.google_translation_key` registry entry has been removed and will be removed by the upgrade step to Plone 6.2. +Due to not needing it anymore, the `plone.google_translation_key` registry entry has been removed, and it will be removed when performing the upgrade step to Plone 6.2. The `babel_view` has been modified to call a new REST API endpoint instead of the old `gtranslation_service` browser view. - -To keep using the previously existing Google Translate integration, site administrators have to install a new package that provides those and more services, called [`collective.translators`](https://github.com/collective/collective.translators). diff --git a/docs/i18n-l10n/use-an-external-translation-service.md b/docs/i18n-l10n/use-an-external-translation-service.md index a8cb572b6..12e8aa8e4 100644 --- a/docs/i18n-l10n/use-an-external-translation-service.md +++ b/docs/i18n-l10n/use-an-external-translation-service.md @@ -14,7 +14,7 @@ myst: When translating content items in Plone, you can connect to an external translation service to translate your content. -The `plone.app.multilingual` product that turns Plone into a multilingual-content site supports a pluggable way to hook any translation service into Plone. +The `plone.app.multilingual` product that turns Plone into a multilingual content site supports a pluggable way to hook any translation service into Plone. To do so, one has to implement a utility that implements an `IExternalTranslationService` interface. @@ -37,7 +37,7 @@ After doing so, as a content editor, when you edit a translation of a given cont When you click this icon, it will invoke the translation utility, and the translation obtained through the service will be entered automatically in the corresponding field. -Plone does not implement by itself this interface in any of its utilities. +Plone does not implement this interface by itself in any of its utilities. You'll need to use an external package that offers this service as described in {ref}`pre-configured-services-label`, or create your own utility. @@ -45,7 +45,7 @@ You'll need to use an external package that offers this service as described in ## Using the translation service with pre-configured services -To use some external tools, the Plone community has implemented a package called [`collective.translators`](https://github.com/collective/collective.translators) that implements this functionality for Google Translate, Deepl, Deepseek, Ollama, and Libre Translate. +To use some external tools, the Plone community has implemented a package called [`collective.translators`](https://github.com/collective/collective.translators) that implements this functionality for AWS, Deepl, Deepseek, Google Translate, Libre Translate, and Ollama. Each of those services provides a control panel to tweak the configuration, including API keys, languages, service endpoints, and other configuration items. From 39cbfaa9439c77274966354bb5664286bcf67662 Mon Sep 17 00:00:00 2001 From: Steve Piercy Date: Mon, 15 Dec 2025 01:09:42 -0800 Subject: [PATCH 18/22] Update docs/backend/upgrading/version-specific-migration/upgrade-to-62.md --- .../upgrading/version-specific-migration/upgrade-to-62.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/backend/upgrading/version-specific-migration/upgrade-to-62.md b/docs/backend/upgrading/version-specific-migration/upgrade-to-62.md index a4f2e5728..6756eff40 100644 --- a/docs/backend/upgrading/version-specific-migration/upgrade-to-62.md +++ b/docs/backend/upgrading/version-specific-migration/upgrade-to-62.md @@ -27,7 +27,7 @@ It can be extended to support more translation providers. It is not mandatory to use `collective.translator`. Any developer can write the integration with the tool of their choice. -See the {doc}`/i18n-l10n/use-an-external-translation-service-label` chapter for details. +See the {doc}`/i18n-l10n/use-an-external-translation-service` chapter for details. To achieve that integration, the previously existing `gtranslation_service` browser view has been removed from `plone.app.multilingual`. From 25a7bf4c82eff4b06ca72c5dbc595cafc3db7f65 Mon Sep 17 00:00:00 2001 From: Steve Piercy Date: Mon, 15 Dec 2025 01:24:38 -0800 Subject: [PATCH 19/22] Add translate.svg icon, assuming it's correct --- docs/_static/translate.svg | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 docs/_static/translate.svg diff --git a/docs/_static/translate.svg b/docs/_static/translate.svg new file mode 100644 index 000000000..2e0754e69 --- /dev/null +++ b/docs/_static/translate.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file From 6afb98462dac537a30e0633cba7676e84d9c27d6 Mon Sep 17 00:00:00 2001 From: Mikel Larreategi Date: Mon, 15 Dec 2025 11:06:07 +0100 Subject: [PATCH 20/22] Update docs/i18n-l10n/use-an-external-translation-service.md Co-authored-by: Steve Piercy --- docs/i18n-l10n/use-an-external-translation-service.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/i18n-l10n/use-an-external-translation-service.md b/docs/i18n-l10n/use-an-external-translation-service.md index 12e8aa8e4..1ad51b5a0 100644 --- a/docs/i18n-l10n/use-an-external-translation-service.md +++ b/docs/i18n-l10n/use-an-external-translation-service.md @@ -33,7 +33,7 @@ This utility class must implement the `IExternalTranslationService` interface fr : The order in which this utility will be executed. This way, one can prioritize some services over others with given conditions. -After doing so, as a content editor, when you edit a translation of a given content page, an icon will display next to the original content. +After doing so, as a content editor, when you edit a translation of a given content page, a translate icon Translate icon will display next to the original content. When you click this icon, it will invoke the translation utility, and the translation obtained through the service will be entered automatically in the corresponding field. From 7b61aa934d65ae4e2d9131c7aeb53d667dae1328 Mon Sep 17 00:00:00 2001 From: Steve Piercy Date: Mon, 15 Dec 2025 02:13:28 -0800 Subject: [PATCH 21/22] Update docs/i18n-l10n/use-an-external-translation-service.md --- docs/i18n-l10n/use-an-external-translation-service.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/i18n-l10n/use-an-external-translation-service.md b/docs/i18n-l10n/use-an-external-translation-service.md index 1ad51b5a0..ff0e607b8 100644 --- a/docs/i18n-l10n/use-an-external-translation-service.md +++ b/docs/i18n-l10n/use-an-external-translation-service.md @@ -33,7 +33,7 @@ This utility class must implement the `IExternalTranslationService` interface fr : The order in which this utility will be executed. This way, one can prioritize some services over others with given conditions. -After doing so, as a content editor, when you edit a translation of a given content page, a translate icon Translate icon will display next to the original content. +After doing so, as a content editor, when you edit a translation of a given content page, a translate icon Translate icon will display next to the original content. When you click this icon, it will invoke the translation utility, and the translation obtained through the service will be entered automatically in the corresponding field. From 3b0f87b23709f42a1fa5c82a719d85f97332bca7 Mon Sep 17 00:00:00 2001 From: Steve Piercy Date: Mon, 15 Dec 2025 02:42:40 -0800 Subject: [PATCH 22/22] Update docs/i18n-l10n/use-an-external-translation-service.md --- docs/i18n-l10n/use-an-external-translation-service.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/i18n-l10n/use-an-external-translation-service.md b/docs/i18n-l10n/use-an-external-translation-service.md index ff0e607b8..bbc60a718 100644 --- a/docs/i18n-l10n/use-an-external-translation-service.md +++ b/docs/i18n-l10n/use-an-external-translation-service.md @@ -33,7 +33,7 @@ This utility class must implement the `IExternalTranslationService` interface fr : The order in which this utility will be executed. This way, one can prioritize some services over others with given conditions. -After doing so, as a content editor, when you edit a translation of a given content page, a translate icon Translate icon will display next to the original content. +After doing so, as a content editor, when you edit a translation of a given content page, a translate icon Translate icon will display next to the original content. When you click this icon, it will invoke the translation utility, and the translation obtained through the service will be entered automatically in the corresponding field.