> ## Documentation Index
> Fetch the complete documentation index at: https://docs.obvlo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Translations

> How Obvlo decides which content is translated, into which languages, and how to check translation coverage.

Obvlo translates your published content into the languages configured for your organisation. Two settings decide what gets translated: your **translation scope** — which destinations are included — and the **target languages** attached to each destination in that scope.

<Info>
  Translation scope and target languages are configured by Obvlo. Ask your account manager to change them. You can see the result at any time in **Organization** > **Dashboard** > **Translation Health**.
</Info>

## Translation scope

| Scope                            | What is translated                                                                                  |
| -------------------------------- | --------------------------------------------------------------------------------------------------- |
| **All destinations** *(default)* | Every destination's content is translated into every language on your organisation's language list. |
| **Selected destinations**        | Only the destinations named in your scope are translated, each into its own target languages.       |

Every organisation starts on **All destinations**. Nothing changes for you unless you ask for a narrower scope.

Under **Selected destinations**, content that belongs only to a destination outside the scope is not translated, creates no translation work, and uses no credits.

## Target languages per destination

When your organisation uses **Selected destinations**, each destination carries its own list of target languages. A destination is translated into its own languages and no others — there is no fallback to the organisation-wide list.

| Destination | Target languages |
| ----------- | ---------------- |
| Barcelona   | `es-ES`, `de-DE` |
| Lyon        | `fr-FR`          |

With that configuration:

* A guide that belongs only to Barcelona is translated into Spanish and German, and **not** into French.
* A guide that belongs only to Lyon is translated into French, and **not** into Spanish or German.
* A listing that belongs to **both** Barcelona and Lyon is translated into **all three** — shared content receives the union of its destinations' languages, never the smaller set.

<Note>
  Your organisation's default language is the source language and is never a translation target.
</Note>

### A destination with no target languages

A destination can be in scope with no target languages selected. That destination is not translated at all — no translation work is created and no credits are used.

This is a valid configuration, but it is indistinguishable from a forgotten step, so it is flagged when the configuration is saved and **Translation Health** reports the destination as configured-but-untranslated rather than as thousands of individual gaps.

### Your organisation-wide language list

Whatever the per-destination configuration, your organisation's language list is maintained as the union of every in-scope destination's languages plus your default language. That list is what the [Organisation Languages](/api-reference/endpoint/org-languages) endpoint, the Embeddable Widget, and your Microsite read, so integrations continue to work against one authoritative list.

To get the languages for a single destination rather than the union, pass `hostId` to the [Organisation Languages](/api-reference/endpoint/org-languages) endpoint.

## What happens when the configuration changes

| Change                                     | Effect                                                                                                                                                                  |
| ------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Adding a language** to a destination     | Existing content for that destination is translated into the new language on the next scheduled run, even if the content has not been edited. This uses credits.        |
| **Removing a language** from a destination | Nothing is deleted and existing translations continue to be served. No credits are used. The language simply stops being expected.                                      |
| **Adding a destination** to the scope      | That destination's content is translated. Content it shares with a destination already in scope is also widened to the new destination's languages, which uses credits. |
| **Removing a destination** from the scope  | No new translation work is created for it. Existing translations are kept and continue to be served.                                                                    |

Because adding a language or a destination can translate content that was never translated before, these changes are billable, and that is stated at the point the change is saved.

## Excluding site pages

Site pages and sections can be excluded from translation while every other content type stays in scope — guides, listings, locations, host profiles, host information, and promos are all unaffected. This suits organisations that publish their site in one language but need translated content everywhere else.

Turning the exclusion **on** creates no translation work, deletes nothing, and continues to serve translations that already exist. Turning it back **off** triggers a catch-up run so the pages that were skipped are translated, rather than leaving them permanently untranslated.

## Translation Health

**Translation Health** is a weekly report on your translation coverage, at **Organization** > **Dashboard** > **Translation Health**. It is scoped to your translation configuration — a destination limited to French is assessed against French only, so a deliberately narrow scope does not show up as missing translations.

Every portal role can read the report. Re-running it on demand and re-syncing the search index are Obvlo-side actions — ask support if you need either.

The report groups findings by what they mean for what visitors see:

| Finding                                  | What it means                                                                                                                                  |
| ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| **Not translated**                       | No translation has been attempted for this record in this language.                                                                            |
| **Translated but not searchable**        | The translation exists but the search index does not have it, so visitors see the original language. A re-sync fixes this and uses no credits. |
| **Search index out of date**             | The search index holds an older translation than the record does. A re-sync fixes this and uses no credits.                                    |
| **Source changed since translating**     | The original text changed after it was translated, so the translation is out of date. Re-translating uses credits.                             |
| **Translation failed**                   | The translation was attempted and errored. It is not retried automatically — ask support to re-run it.                                         |
| **Translation finished but not applied** | The translation completed but never reached the record, so nothing is shown in that language.                                                  |
| **Language not listed on the record**    | Translated content is present but the record does not list the language, so it may not be served.                                              |
| **Language list missing**                | The record has translated fields but no list of languages.                                                                                     |
| **Translation for a removed language**   | A translation exists in a language your organisation no longer uses. Harmless, but it can be cleaned up.                                       |
| **Translated before change tracking**    | The content itself is fine. It predates change tracking, so we cannot tell whether the source has since changed.                               |

## Related

* [Language Reference](/reference/language-reference) — every supported language code
* [Organisation Languages endpoint](/api-reference/endpoint/org-languages) — read the configured languages, optionally per destination
* [Portal](/product/management/portal)
* [Content Engine](/product/creation/content-engine)
