# How to Translate a Drupal Site Without Fighting Core | Vitra.ai

> Drupal has multilingual in core, which is an advantage and the reason most projects get it wrong: there are three translation systems, not one as well.

**Canonical URL**: https://www.vitra.ai/general/how-to-translate-a-drupal-site
**Source**: This is the Markdown rendering of https://www.vitra.ai/general/how-to-translate-a-drupal-site, generated at build time from that page.

---

4 min read

# How to Translate a Drupal Site Without Fighting Core

Drupal has multilingual in core, which is an advantage and the reason most projects get it wrong: there are three translation systems, not one as well.

[Samhitha J Bhatt](https://www.vitra.ai/author/samhitha)
Senior Product Manager , Vitra.ai
Updated Aug 17, 2026

![How to Translate a Drupal Site Without Fighting Core](https://www.vitra.ai/static/images/blog/how-to-translate-a-drupal-site.jpg)

Table of contents

[Three systems, three kinds of text](#three-systems-three-kinds-of-text)

[Enable all four modules, not two](#enable-all-four-modules-not-two)

[Entity-level granularity is a real advantage](#entity-level-granularity-is-a-real-advantage)

[Paragraphs and nested entities](#paragraphs-and-nested-entities)

[URLs and language negotiation](#urls-and-language-negotiation)

[Views, blocks and the fiddly bits](#views-blocks-and-the-fiddly-bits)

[Keeping it current](#keeping-it-current)

[Media and file entities](#media-and-file-entities)

[Migration and update paths](#migration-and-update-paths)

[Where to start](#where-to-start)

[FAQ](#faq)

Contributors

[Samhitha J Bhatt](https://www.vitra.ai/author/samhitha)
Senior Product Manager

Subscribe to our newsletter

Subscribe

> **Quick answer —** Drupal ships multilingual support in core, split across three systems — interface translation, configuration translation and content translation. Most Drupal localization problems come from confusing which one owns a given piece of text.

## Three systems, three kinds of text

**Interface translation** handles strings shipped by Drupal and its modules — button labels, error messages, admin text. These come from .po files. **Configuration translation** handles things you configured: field labels, view titles, menu names, block descriptions. Configuration is not content, and it is translated separately.

**Content translation** handles nodes, taxonomy terms, media and paragraphs — the things editors create.

A team that enables only content translation gets translated articles sitting inside an English interface with English field labels. That is the classic half-finished Drupal site, and it looks broken rather than foreign.

## Enable all four modules, not two

Language, Interface Translation, Content Translation and Configuration Translation are separate modules. Enabling the obvious two is what produces the gap above.

## Entity-level granularity is a real advantage

Drupal lets you decide translatability per entity type and per field. A product node can have a translatable description and a shared SKU, enforced by the system rather than by convention. Spend the time on this configuration up front. Changing translatability after content exists is possible and unpleasant, and getting it right first means the system prevents the mistakes rather than a reviewer catching them.

## Paragraphs and nested entities

Most modern Drupal sites build pages from Paragraphs or a similar nested entity. Each nested entity has its own translation settings, and a page can therefore be marked translated while half its components are not.

Check a built page rather than a node when validating.

## URLs and language negotiation

Drupal negotiates language by URL prefix, domain, session or user preference, configurable in order. Prefix or domain are the two that produce indexable distinct URLs; session and user preference do not.

For anything that needs to rank, use prefix or domain and let the others sit underneath as fallbacks.

## Views, blocks and the fiddly bits

A view's exposed filter labels, a block's title, a menu link, a taxonomy term description. Each is configuration or content depending on where it came from, and each is easy to miss because none of them is a node.

## Keeping it current

Content changes constantly and Drupal will not tell you a translation is stale unless you configure it to. Fire translation on the publish event, and let [translation memory](https://www.vitra.ai/features/translation-memory) return the unchanged paragraphs so only genuine edits cost anything. [quality control](https://www.vitra.ai/features/quality-control) gives the review record.

Module setup and supported entity types are on the [Drupal integration](https://www.vitra.ai/integration/drupal) page.

## Media and file entities

Alt text, captions and file descriptions are fields on media entities, and media is translatable separately from the node that embeds it. A translated article can therefore carry English alt text on every image.

That matters for accessibility as much as for search, and it is the field most often left out of a translatability configuration because nobody thinks of media as content.

## Migration and update paths

Drupal major-version upgrades touch multilingual configuration, and translated content is where migrations most often lose fidelity. Export a translated node before and after any upgrade and diff it.

## Where to start

Enable all four language modules and translate the interface first. An English admin and English field labels undermine every translated article behind them.

## FAQ

**Does Drupal support multiple languages out of the box?** Yes, through four core modules: Language, Interface Translation, Content Translation and Configuration Translation. Enabling only some of them is the most common cause of a half-translated Drupal site.

**What is the difference between content and configuration translation?** Content translation covers what editors create — nodes, taxonomy terms, media. Configuration translation covers what you set up — field labels, view titles, menu names. They are separate systems with separate interfaces.

**Why is my Drupal page translated but its components are not?** Because nested entities like Paragraphs carry their own translation settings. A node can be marked translated while the components building the page are not, so validate a rendered page rather than a node.

**Which language negotiation method should Drupal use?** URL prefix or domain, because those produce distinct indexable URLs. Session and user preference do not create crawlable addresses, so pages served that way cannot rank.

Our blog

## Lastest blog posts

Tool and strategies modern teams need to help their companies grow.

Automotive

[Automotive Brochure Localization by Market](https://www.vitra.ai/automotive/automotive-brochure-localization)
A car brochure is a spec grid, a legal footer and a photo library, all market-specific. What actually has to change, and why the layout decides the schedule.

[Samhitha J Bhatt](https://www.vitra.ai/author/samhitha)
Aug 18, 2026

Automotive

[Automotive Campaign Localization Across Markets](https://www.vitra.ai/automotive/automotive-campaign-localization)
Campaigns run through national companies and dealer networks, so one master becomes hundreds of files. Where the offer text and the disclaimers actually break.

[Samhitha J Bhatt](https://www.vitra.ai/author/samhitha)
Aug 18, 2026

Automotive

[Car Service Manual Translation for Technicians](https://www.vitra.ai/automotive/automotive-service-manual-translation)
A workshop manual is read mid-repair by someone with the car on a lift. What that demands of procedures, torque figures and fault codes, in every language.

[Samhitha J Bhatt](https://www.vitra.ai/author/samhitha)
Aug 18, 2026

[View all posts](https://www.vitra.ai/blog/page/1)

---

## Structured data

```json
{
  "@context": "https://schema.org",
  "@type": "Article",
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://www.vitra.ai/general/how-to-translate-a-drupal-site"
  },
  "headline": "How to Translate a Drupal Site Without Fighting Core",
  "image": [
    {
      "@type": "ImageObject",
      "url": "https://www.vitra.ai/static/images/blog/how-to-translate-a-drupal-site.jpg"
    }
  ],
  "datePublished": "2026-08-17T00:00:00.000Z",
  "dateModified": "2026-08-17T00:00:00.000Z",
  "author": [
    {
      "@type": "Person",
      "name": "Samhitha J Bhatt"
    }
  ],
  "publisher": {
    "@type": "Organization",
    "name": "Vitra.ai",
    "logo": {
      "@type": "ImageObject",
      "url": "https://www.vitra.ai/static/images/vitra-v-logo.png"
    }
  },
  "description": "Drupal has multilingual in core, which is an advantage and the reason most projects get it wrong: there are three translation systems, not one as well."
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://www.vitra.ai"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "General",
      "item": "https://www.vitra.ai/general"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "How to Translate a Drupal Site Without Fighting Core",
      "item": "https://www.vitra.ai/general/how-to-translate-a-drupal-site"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Does Drupal support multiple languages out of the box?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes, through four core modules: Language, Interface Translation, Content Translation and Configuration Translation. Enabling only some of them is the most common cause of a half-translated Drupal site."
      }
    },
    {
      "@type": "Question",
      "name": "What is the difference between content and configuration translation?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Content translation covers what editors create — nodes, taxonomy terms, media. Configuration translation covers what you set up — field labels, view titles, menu names. They are separate systems with separate interfaces."
      }
    },
    {
      "@type": "Question",
      "name": "Why is my Drupal page translated but its components are not?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Because nested entities like Paragraphs carry their own translation settings. A node can be marked translated while the components building the page are not, so validate a rendered page rather than a node."
      }
    },
    {
      "@type": "Question",
      "name": "Which language negotiation method should Drupal use?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "URL prefix or domain, because those produce distinct indexable URLs. Session and user preference do not create crawlable addresses, so pages served that way cannot rank."
      }
    }
  ]
}
```
