> For the complete documentation index, see [llms.txt](https://developer.collibra.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.collibra.com/workflows/managing-workflows-in-collibra/translating-workflows.md).

# Translating workflows

You can translate workflows in any of the [supported languages](https://productresources.collibra.com/docs/collibra/latest/Default.htm#cshid=DOC2042) by adding [custom strings](https://productresources.collibra.com/docs/collibra/latest/Default.htm#cshid=DOC2041) for those languages and leveraging the workflows Java API [translation bean](/workflows/designing-workflows/processes/process-execution/beans/translation-bean.md). This enables users with a language preference that matches the translation to see the workflow tasks that are assigned to them in their selected language.

To use custom strings, you must prepare your workflow for translations:

| Item                                                                                               | Workflow Designer attribute                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | Custom string example                                         |
| -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- |
| Task name\*                                                                                        | <ul><li>Field: <strong>Name</strong></li><li>Value: A string that identifies the task name</li><li>Example: <em>user.task1.name</em></li></ul>                                                                                                                                                                                                                                                                                                                                                                            | user.task1.name=The translated name of the task               |
| Task description\*                                                                                 | <ul><li>Field: <strong>Documentation</strong></li><li>Value: A string that identifies the task description</li><li>Example: <em>user.task1.description</em></li></ul>                                                                                                                                                                                                                                                                                                                                                     | user.task1.description=The translated description of the task |
| Form fields                                                                                        | <ul><li><p>Field: Form component fields in the <strong>General</strong> section, such as:</p><ul><li><strong>Label</strong></li><li><strong>Label tooltip</strong></li><li><strong>Default value</strong></li><li><strong>Description</strong></li></ul></li><li>Value: The expression <code>{{translation.getMessage('translation.key')}}</code></li><li>Example: <code>{{translation.getMessage('text.area.label')}}</code></li></ul>                                                                                   | text.area.label=The translated label of the field             |
| Form buttons                                                                                       | <ul><li>Field: Form outcome <strong>Label</strong></li><li>Value: The expression <code>{{translation.getMessage('translation.key')}}</code></li><li>Example: <code>{{translation.getMessage('button.name')}}</code></li></ul>                                                                                                                                                                                                                                                                                             | button.name=The translated name of the button                 |
| Email task                                                                                         | <ul><li><p>Field: <strong>Email properties</strong>, such as:</p><ul><li><strong>Subject</strong></li><li><strong>Body</strong></li></ul></li><li>Value: The expression <code>${translation.getMessage('translation.key')}</code></li><li>Example: <code>${translation.getMessage('email.body')}</code></li></ul><div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p>Emails are translated into the preferred language of the user who completes the task, not the recipient.</p></div> | email.body=The translated body of the email                   |
| [Custom error message](https://developer.collibra.com/tutorials/display-error-message-in-workflow) | <ul><li>Field: The <strong>Script</strong> of a script task</li><li>Value: <code>translation.getMessage('translation.key')</code></li><li><p>Example:</p><pre><code>import com.collibra.dgc.workflow\.api.exception.WorkflowException                                                                                                                                                                                                                                                                                     |                                                               |
| def customError = new WorkflowException("translation.getMessage('error.description')")             |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |                                                               |
| customError.setTitleMessage("translation.getMessage('error.title')")                               |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |                                                               |
| throw customError;                                                                                 |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |                                                               |
| </code></pre></li></ul>                                                                            | error.description=The translated description of the error                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |                                                               |

{% hint style="info" %}
\* Start forms display the process name instead of the task name and description. You cannot translate the process name.
{% endhint %}

{% hint style="info" %}
If you are not yet using the Workflow Designer, you can achieve similar results with the Eclipse plug-in by changing the expression format to `${translation.getMessage('translation.key')}`.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developer.collibra.com/workflows/managing-workflows-in-collibra/translating-workflows.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
