![No UI](https://img.shields.io/static/v1?label=UI&message=none&color=inactive) The "Autotranslator" plugin automatically translates nodes (on creation, move and metadata update) and assets (on metadata update and add to node) within the defined scope. Warning: to prevent the translation of a lot of assets or nodes that were already translated, only the moved node is translated (if in scope) and not its children or the assets in it. You can either trigger changes for the fields that should be translated, or run the auto translator task (important: set the scope(s) accordingly, everything in any scope will be translated (again)). > > > > Since v2.1.3 only the languages set in the **defaultFetchedLocalesForLocalizedFields** property will be translated. Older versions can cause an endless loop if they are installed on **CELUM 22.1 or newer**. This is due to a breaking change from CELUM. [MINITOC] ## Properties To be configured in {home}/appserver/conf/custom.properties ##### autoTranslator.license > type: String, **required: yes**, default: -, since v1.2.0 The license key for the plugin (product: autoTranslator), provided by *brix*. ##### autoTranslator.translationService > type: String, **required: yes**, default: - The translation service to be used: "microsoft" (v1.0.0+) or "deepl" (v2.1.0+). Also set the corresponding properties. ##### autoTranslator.microsoft.url > type: String, required: yes (if the microsoft service was selected), default: - The URL to the microsoft translation service, e.g. `https://api.cognitive.microsofttranslator.com/translate?api-version=3.0`. ##### autoTranslator.microsoft.subscriptionKey > type: String, required: yes (if the microsoft service was selected), default: - The subscription key delivered by Microsoft (see [Installation](#installation)). ##### autoTranslator.microsoft.region > type: String, required: yes (if the microsoft service was selected and not global url is used), default: - The region in which the translation subscription was created. ##### autoTranslator.deepl.url > type: String, required: yes (if the deepl service was selected), default: - The URL to the deepl translation service, e.g. `https://api-free.deepl.com/v2/translate`. ##### autoTranslator.deepl.apiKey > type: String, required: yes (if the deepl service was selected), default: - The deepl API key. ##### autoTranslator.{id}.assetScope > type: String, required: no, default: -, since v2 A scope for asset translations using the [search util 2](/celum_extensions/search_util_2) syntax. ##### autoTranslator.{id}.nodeScope > type: String, required: no, default: -, since v2 A scope for node translations. The following parameters are supported: - **nodes** a list of node ids - **nodeTypes** a list of node type ids - **recursive** (default true), if *recursive* is false and node types is specified then only the root nodes are found - **includeParent** (default false), includes the specified nodes themselves also when *recursive* is true - **excludeNodes** (always recursive and the nodes specified here are included), exclude nodes if it is not possible to get the desired result otherwise, not recommended because it is expensive Example: `nodes=1,2,3&nodeTypes=4,5,6&recursive=true&includeParent=false&excludeNodes=7,8,9` ##### autoTranslator.{id}.userId > type: String, required: no, default: apiUser, since v2 The user to perform the search with. Like this, permissions can be used to define the scope. ##### autoTranslator.{id}.settings > type: String, required: no, default: -, since v2 The settings for the translation and the scope with {id}. If nothing is specified then all translatable information fields and the name (for nodes) is translated using the default language as source unless it is empty, then the first non-empty language is used (random). - **force** (default false) to overwrite non-empty fields on changes also, if *force* is false then only empty fields are translated - **name** (default null) to translate the name, if *name* and *fields* is not configured, then everything is translated - **fields** (default null) the information fields that should be translated, if *name* and *fields* is not configured, then everything is translated - **from** (default first default language then random) the language to translate from, the specified languages are checked in order, if none of them is non-empty, then nothing will be done - **to** (default all languages) the languages to translate to Example: `force=true&name=true&fields=1,2,3&from=en,de&to=fr,it` ##### autoTranslator.ignoreNodeTypeIds > type: List of String (comma-separated), required: no, default: -, removed in v2 A list of node type Ids which should be ignored. ##### autoTranslator.ignoreNodeIds > type: List of String (comma-separated), required: no, default: -, removed in v2 A list of node Ids to ignore (including their children). ##### autoTranslator.ignoreInformationFieldIdOnAssetTypeId > type: List of String (comma-separated), required: no, default: -, removed in v2 A list of <assetTypeId>:<informationFieldId> pairs to be ignored. ##### autoTranslator.languagePreferences > type: List of String (comma-separated), required: no, default: -, removed in v2 A list of preferred languages. The "Auto Translator" first checks the preferred languages in order and if it finds a non-empty field, this text and the corresponding language are used as a source for the translations. Afterwards, the plugin tries to use the default language. If there was still no non-empty field, then all the available languages are checked (random, order cannot be guaranteed). ## Compatibility Matrix | Autotranslator | CELUM (min. version) | :----- | :----- | 1.0 | 5.13.3 | | 1.2.4 | 5.13.4+ (tested with 6.8) | | 2.0.0 | 6.4+ (tested with 6.8) | | 2.1.0 | 6.4+ (tested with 6.8) | ## Release Notes #### 1.0.0 > Released 2018-07-09 Initial Version #### 1.2.0 > Released 2019-01-28 Added license #### 2.0.0 Completely reworked with Scopes, forced translations etc. #### 2.1.0 > Released 2021-11-26 Added deepl support