SiteTran
Drupal 10 · 11 · CMS No module. One block.

Translate your Drupal site without the multilingual rebuild

SiteTran makes a Drupal site multilingual from one block in Block layout. Pages, Views, AJAX filters, menus and forms are translated as they render, so you don't make every content type and field translatable or keep a copy of each node per language.

  • Free plan, no card needed
  • Unlimited languages on every plan
  • Translators and reviewers per language
187+languages, including right-to-left
0modules to install or fields to make translatable
1cached copy of each page, in every language
$0to start on the Free plan

Driving growth for companies with millions of users

Alignment Neil Patel Exomonitor Cyfe Instructified
Who it's for

For Drupal teams that need many languages, not a multilingual project

Drupal's own multilingual system is powerful, and it's real work. SiteTran is for teams that need their existing site readable in more languages without budgeting developer time to rebuild the content model.

Universities and colleges

Admissions, financial aid and international student pages for applicants and families, across dozens of department sites run by different teams.

Government and public agencies

Service, benefits and public notice pages in the languages your residents speak, with staff or contracted translators reviewing what matters.

Nonprofits and associations

Program and donation pages in more languages on a small budget, with volunteer translators invited per language and no agency invoice per word.

Enterprises with many sites

One team for every Drupal site, with Shared Resources so a Glossary, Similar Phrases and Translation Rules built for one site can be used by others in the same team.

SiteTran is a good fit when

You want the same site, in more languages, soon

  • Each language shows the same pages and content as your main language.
  • You need many languages, or you'll add them over time.
  • Your content model, Views and theme weren't built with translation in mind.
  • Content changes often and nobody has time to update every translation by hand.
What your team gets

One site to run, every language covered

  • Editors keep publishing in one language, exactly as they do today.
  • New and edited text is picked up for translation automatically.
  • Reviewers approve wording per language in SiteTran, without a Drupal account.
  • Add a language in SiteTran without touching Drupal's configuration.
How it works

Add SiteTran to Drupal in three steps

Site builders can do this from the admin in a few minutes. The steps below are for Drupal 10 and 11 with CKEditor 5. Developers can use a theme template instead.

1

Create your SiteTran site

Sign up free, add your Drupal site's address and pick your languages. Copy your Widget Code from the Dropdown Style page.

2

Place it in a content block

On your front-end theme's tab, click Place block next to the region where the dropdown should appear, then + Add content block. Set Text format to Full HTML, click Source and paste.

Structure›Block layout›Place block›+ Add content block
3

Save, then translate

Uncheck Display title, choose the region and click Save block. Open your site, pick a language, and SiteTran starts discovering your text so you can translate and publish it.

What the Widget Code looks like
<script>var sitetran = {site_id: your_site_id};</script>
<script src="//c.sitetran.com/widget/v3.js"></script>
<div id="sitetran_translate_element"></div>

SiteTran gives you your own ready-to-paste code, with your site ID already in it. The div is where the language dropdown is created, so the region you place the block in decides where visitors see it.

Add content block
Home › Administration › Structure › Block layout
Block description *
SiteTran language dropdown
Body
<script>var sitetran = {site_id: 12345};</script>
<script src="//c.sitetran.com/widget/v3.js"></script>
<div id="sitetran_translate_element"></div>
Text formatFull HTML
Configure block
Display title
Region
Header
Shown to every visitor on this themeSave block
For developers

Put it in your theme's template

Add the three lines to html.html.twig in your custom or sub-theme, never in a core theme, then rebuild caches with drush cr. Put the div in page.html.twig if you want the dropdown inside a region.

{# templates/html.html.twig #}
{{ page_bottom }}
<script>var sitetran = {site_id: 12345};</script>
<script src="//c.sitetran.com/widget/v3.js"></script>
<div id="sitetran_translate_element"></div>
Drupal CMS

No Full HTML format? Add one first

Drupal CMS doesn't include a Full HTML text format by default. Create one under Configuration › Content authoring › Text formats and editors, give only administrators access, and set its editor to None so nothing rewrites your code. Or use the template method.

Script injector modules

Remember the div

Modules like Asset Injector add JavaScript and CSS files, not HTML. If you load SiteTran that way, you still need the <div id="sitetran_translate_element"> on the page, in a block or template, so the widget knows where to draw the dropdown.

Built for Drupal

What happens to each part of your Drupal site

Drupal pages are assembled from blocks, Views and fields, and many parts load after the first paint. SiteTran keeps watching the page, so text that appears later is translated when it appears.

Translated as results load

Views, exposed filters and pagers

Directories, event listings and search pages are translated, including results that refresh through AJAX when someone changes a filter or clicks the next page. Filter labels and options switch too.

Translated when replaced

BigPipe and lazy-loaded blocks

When BigPipe swaps a placeholder for its real content after the page loads, SiteTran sees the new text and translates it. The same goes for accordions, tabs, modals and Drupal status messages.

Translated on the page

Webforms and validation messages

Labels, help text, placeholders, buttons and error messages on your forms are translated. Whatever a visitor types is submitted exactly as typed, so your submissions and handlers don't change.

Translated as displayed

Menus, taxonomy and layouts

Menu links, taxonomy terms, Layout Builder sections, Paragraphs and Canvas components are translated wherever they render. Nothing is written back to Drupal, so you don't need translatable fields or config translation.

No cache changes

Page cache, Varnish and CDNs

Drupal keeps serving one cached copy of each page, and translations are applied in the visitor's browser. You don't add language cache contexts, extra Varnish variants or CDN rules.

Unchanged

Your admin and editorial workflow

The block lives on your front-end theme only, so the admin theme isn't affected. Editors keep working in one language, and when they publish a change, the new text shows up in SiteTran ready to translate.

What the work looks like

Full Drupal multilingual vs SiteTran, step by step

Drupal core ships four multilingual modules: Language, Interface Translation, Content Translation and Configuration Translation. Here's what a typical setup involves, next to what SiteTran needs.

Drupal core multilingual

Configure, then translate every item

Each translated node, block, menu link and term is stored in Drupal and edited separately.

  1. Enable the four modulesUnder Extend, then add each language under Configuration › Regional and language › Languages. Interface strings are downloaded from localize.drupal.org.
  2. Choose language detectionURL prefix or domain, browser, session or user preference, and place a Language switcher block.
  3. Make content translatableAt admin/config/regional/content-language, tick each entity type and bundle, then decide field by field what's translatable.
  4. Translate configurationView titles, exposed filter labels, field labels, menus, block titles and webform elements each have their own translation screens.
  5. Fix untranslatable stringsText hard-coded in Twig templates or custom modules has to be wrapped in |t or t() before it can be translated.
  6. Translate and maintain every itemEach node gets a Translate tab per language. When the original changes, someone updates each translation. TMGMT can send jobs to DeepL, Google, Microsoft or an agency.
On Drupal CMS, the Multilingual recipe installs these modules and adds a setup checklist for steps 1 to 3. Translating the content is still per item.
SiteTran

Place one block, then translate phrases

Translations live in SiteTran and are applied to the page as it renders.

  1. Place the Widget CodeOne content block with Full HTML, or three lines in a theme template.
  2. Add your languagesPick from 187+ in SiteTran, and keep each one hidden until you set it to Live.
  3. Translate once, reuse everywhereA phrase like "Apply now" is translated once and appears translated on every page that uses it. Machine Translation Auto Translate can handle new text as soon as it's discovered.
Content model, Views, templates and custom modules stay as they are. Text from templates and modules is translated the same way as node content.
Coverage

Everything visitors read on your Drupal pages, in their language

SiteTran translates what your pages show, from node content to text hard-coded in templates, and you decide exactly what stays as written.

Translated by SiteTran

Anything rendered on your pages

Whether Drupal rendered it on the server or JavaScript added it later, SiteTran translates it.

  • Nodes, blocks, menus and footersIncluding pages your editors publish after you install.
  • Views, AJAX results and modalsTranslated when they load or open.
  • Template and module textStrings in Twig templates and custom code, translatable or not in Drupal.
  • Titles, meta descriptions and alt textPlus Open Graph and Twitter tags, placeholders, tooltips and ARIA labels.
You stay in control

What stays exactly as written

Mark anything that should never change, and SiteTran leaves it alone.

  • Office, program and brand namesKept consistent in every language with the Glossary.
  • Legal and official noticesKept in their original language with the notranslate class.
  • Personal and member dataExcluded with sitetran.ignore_selectors, or replaced with variables so it's never stored as a phrase.
  • Form submissionsWhat visitors type is submitted exactly as typed, so Webform handlers don't change.
Compare your options

Every way to make a Drupal site multilingual

There are three realistic approaches: Drupal core multilingual (often with TMGMT), a translation service that plugs in through a module or script, or SiteTran.

Drupal core multilingualPlus TMGMT for machine or agency translation Translation servicesWeglot, GTranslate, ConveyThis, Localize SiteTranOne block or template
How it works Translations are stored in Drupal as separate versions of each node, block, menu link, term and configuration item. A module or JavaScript snippet sends your rendered pages to the service, which translates them in its cloud. SiteTran translates your pages as they render, from translations your team controls.
Setup Four core modules, language detection, translatable entity types and fields, config translation and template strings. Usually developer time. A module or snippet in minutes. Language URLs need DNS records or a proxy, often on higher plans. One content block with Full HTML, or a theme template. No module.
New and edited content Each translation is updated separately when the original changes. Usually detected and translated when the page is visited. Discovered as it appears. Machine Translation Auto Translate can translate it right away.
Machine translation Not included in core. TMGMT plugins connect DeepL, Google or Microsoft with your own API key. Included, within a word allowance per plan. DeepL, Google Translate and OpenAI. 7K machine translations on the Free plan.
Languages No limit, but every language adds content to maintain. Often capped by plan. Weglot's paid plans include 1, 3, 5, 10 or 20 languages. 187+ languages, unlimited on every plan.
Language URLs Path prefixes such as /es/ or a domain per language, handled by Drupal. Subdirectories or subdomains, typically on paid or higher plans. Same URL by default, with translated meta tags. Language URLs through the Static Translation API.
Review workflow Drupal roles and permissions, Content Moderation, and TMGMT jobs. An editor in the service's dashboard. Team features vary by plan. Translators and reviewers per language, approval and publishing, Glossary and Translation Rules, with unlimited teammates.
Cost Free software. You pay for developer time and translation, by people or a machine translation API. A subscription based on words, languages or pageviews. GTranslate's free tier is for non-commercial use. Free, then from $3 per month, based on words and translated pageviews.

Drupal details are from drupal.org documentation and project pages. Weglot plan limits are from weglot.com/pricing, and GTranslate's are from its drupal.org project page, checked October 20, 2026. Choose core multilingual if each language needs its own content or URLs managed inside Drupal.

Translation quality

AI speed, with your people approving what matters

Start with machine translation and route the pages that carry risk, such as deadlines, eligibility rules and fees, to a reviewer. You decide what's approved and when it goes live.

  • Machine translation from DeepL, Google and OpenAI

    Get suggestions for any phrase, or translate new phrases automatically. You choose whether they're approved automatically or reviewed first.

  • Translators and reviewers per language

    Invite staff, volunteers, an agency or a professional translator for each language, and choose who can approve. Turn on AI Translation Review for a second opinion.

  • Glossary, rules and translation memory

    Keep office, program and department names consistent in the Glossary, set Translation Rules that AI translation follows, such as a formal tone, and reuse past work with Similar Phrases.

  • A language dropdown that fits your theme

    Choose from three dropdown types, with or without flags, and add your own CSS. Visitors are switched to their browser language automatically.

Translate your Drupal site into 187+ languages

SpanishChinese (Simplified)Chinese (Traditional)VietnameseKoreanTagalogArabicRussianHaitian CreoleFrenchPortugueseSomaliUkrainianHindiGermanJapanese+ 170 more
Accessibility and language access

Translated pages that still work for everyone

Public-sector and campus sites are held to accessibility standards in every language. Here's what SiteTran does, and what stays in your hands.

Screen readers

The right lang attribute

When a visitor switches language, SiteTran updates the page's lang attribute, so screen readers use the right pronunciation. Image alt text, ARIA labels, placeholders and tooltips are translated with the visible text.

Your theme

Markup and keyboard behavior unchanged

SiteTran changes text, not your theme's structure, so headings, landmarks, focus order and the accessibility work you've done in Drupal stay as they are. Use per-language CSS if a long translation needs more room.

Your call

Review where accuracy matters

Keep a language hidden until a reviewer has checked key pages, keep legal or official notices in their original language with notranslate, and add a short note that explains how your pages are translated.

SEO for Drupal sites

Multilingual SEO on Drupal

Here's what's translated as soon as you place the block, and what it takes to give each language its own indexable address.

Included as soon as you install

Everything search and social cards read

SiteTran translates more than visible text. When a visitor switches language, the title and meta tags Drupal outputs, including those set with the Metatag module, switch with it.

  • Page title and meta description
  • Open Graph and Twitter tags for link previews
  • Image alt text, tooltips, placeholders and ARIA labels
  • The page's lang attribute, set to the selected language
Advanced setup

Language URLs for Google

By default, every language uses your existing Drupal URL and the visitor's choice is remembered. For a separate, indexable page per language, SiteTran's Static Translation API returns translated HTML that your edge can serve:

www.larkmoor.edu/admissionsDrupal, original
www.larkmoor.edu/es/admissionsProxy or CDN worker
es.larkmoor.edu/admissionsSubdomain + proxy

Most Drupal sites already sit behind Varnish, a CDN or a load balancer you control, so routing /es/ paths to cached API responses is realistic. Each page then lists its language URLs in sitetran.static_url_language_code_lookup for hreflang. Don't run Drupal's own language path prefixes on the same paths.

Plan language URLs with us

Want the walkthrough with screenshots?

Translate Drupal with SiteTran walks through copying your Widget Code and placing it in a content block in Block layout, step by step.

Read the Drupal guide
Troubleshooting

Drupal translation not working? Check these first

Most Drupal setup problems come down to the text format, the theme the block was placed in, a cache in front of the site, or a security policy.

1The code shows up as text on my page

  1. The code was pasted in the editor's visual mode. Edit the block under Content › Blocks.
  2. Set Text format to Full HTML, click Source, replace the contents with the Widget Code and save.
  3. Basic HTML and Restricted HTML strip <script> tags. If CKEditor keeps changing the code, use a text format whose editor is set to None.

2The language dropdown doesn't appear

  1. In Block layout, check the block is on your front-end theme's tab, not the admin theme, in a region your theme displays.
  2. Check the block's Visibility settings for pages, content types or roles.
  3. Make sure all three lines are there, including the div. In SiteTran, the language must be both Active and Live.
  4. Purge Varnish or your CDN if it's still serving pages from before you placed the block.
My Language Isn’t Showing Up in the Language Dropdown →

3The widget is blocked by a Content Security Policy

  1. If your site uses the CSP or Security Kit module, or sets CSP headers at the server or CDN, open the browser console and look for blocked requests.
  2. Allow c.sitetran.com and www.sitetran.com for scripts and connections, and c.sitetran.com for images.
  3. Allow the inline Widget Code line and the inline styles the widget adds, for example with a hash or nonce.

4Some text is still in the original language

  1. SiteTran discovers text when it's shown, so open the Views, filters, tabs and forms you need translated.
  2. A translation appears only after it's approved and published. To translate new text automatically, turn on Machine Translation Auto Translate.
  3. Like every website translation tool, SiteTran translates the page itself, so embedded maps, videos and linked PDFs keep their own language.
Translating Dynamic Content →

5Admin toolbar or personal text is being discovered

  1. When editors browse the front end while logged in, the Drupal toolbar and "My account" text can be discovered too.
  2. Add the notranslate class in your theme, or list those selectors in sitetran.ignore_selectors.
  3. For names and other personal data, use variables or turn off Public Phrase Discovery on member-only pages.
Skip HTML from Being Translated or Discovered →

6My changes aren't showing yet

  1. After you approve and publish, translation data can take up to 30 seconds to update.
  2. A visitor's browser can keep translation data cached for up to 10 minutes.
  3. Drupal's caches don't need clearing for translation changes. Try a hard refresh or a private window.
My New Translations or Changes Aren’t Appearing on my Website →
Pricing

Simple pricing, no per-language fees

Every plan includes unlimited languages and teammates, so adding Somali or Haitian Creole for a new audience never means a bigger plan. Start free and upgrade when your traffic grows.

Free

$0

For small sites and testing

  • 7K words in site
  • 3K translated pageviews / month
  • 7K machine translations

Starter

$3/mo

For sites with moderate translation needs

  • 30K words in site
  • 15K translated pageviews / month
  • 30K machine translations
Growing sites

Pro

$35/mo

For larger sites or several smaller ones

  • 90K words in site
  • 45K translated pageviews / month
  • 90K machine translations

Business

$75/mo

For large-scale international sites

  • 250K words in site
  • 125K translated pageviews / month
  • 250K machine translations
Annual billing: 2 months free · Enterprise plans for 1M+ words See all features
FAQ

Drupal translation questions

Can't find your answer? Our team is happy to help with your Drupal setup, including multisite and language URLs.

Email support
How do I add SiteTran to my Drupal site?
Create a free SiteTran site and copy your Widget Code. In Drupal, go to Structure, then Block layout, and click Place block next to the region where you want the language dropdown, such as Header. Click + Add content block, switch the body's Text format to Full HTML, click Source and paste the code. Save, uncheck Display title, choose the region and click Save block. Then open your site and pick a language.
Do I need to install a Drupal module?
No. SiteTran's Widget Code is three lines of HTML that you place in a content block or a theme template, so there is no module to install, update or keep compatible with each Drupal release. You also don't need to enable Drupal's Language or Content Translation modules.
Which Drupal versions does SiteTran work with?
Any Drupal site that can output the Widget Code on its pages, including Drupal 10, Drupal 11 and Drupal CMS. It also works on Drupal 7, because nothing is installed on the server, but Drupal 7 stopped receiving security updates on January 5, 2025.
I pasted the code and it shows up as text on my page. What went wrong?
The code was pasted into the editor's visual mode, so CKEditor saved it as text. Edit the block, make sure the Text format is Full HTML, click Source in the editor toolbar, replace the contents with the Widget Code and save. Basic HTML and Restricted HTML remove script tags, so they won't work.
Does SiteTran work with Drupal CMS and Canvas?
Yes. SiteTran translates what renders on your front end, including pages built with Canvas. Drupal CMS doesn't include a Full HTML text format by default, so either create one under Configuration, Content authoring, Text formats and editors, limited to administrators, or have a developer add the Widget Code to your theme's template.
Does SiteTran translate Views, AJAX filters and BigPipe content?
Yes. SiteTran keeps watching the page after it loads, so Views results that refresh through AJAX, exposed filters, pagers, BigPipe placeholders, accordions and form validation messages are translated when they appear.
Will SiteTran work with Drupal's page cache, Varnish or a CDN?
Yes. Drupal keeps serving one cached copy of each page, and translations are applied in the visitor's browser, so you don't add language cache contexts or extra cached variants in Drupal, Varnish or your CDN.
Should I use Drupal's core multilingual modules instead?
Core multilingual is a good fit when each language needs its own content, such as different news or events, or when you want language URLs managed inside Drupal and have developer time to set it up. SiteTran suits teams that want the same site in many languages quickly, without making every content type, field and View translatable and maintaining a copy of each node per language.
Do translated Drupal pages get their own URLs for SEO?
By default, every language is served from your existing Drupal URL with translated titles and meta descriptions, and the visitor's choice is remembered. For indexable language URLs such as /es/, SiteTran's Static Translation API returns translated HTML that a reverse proxy, CDN worker or edge rule in front of Drupal can serve. Book a call and we will help you plan it.
Does SiteTran help with accessibility?
SiteTran updates the page's lang attribute to the selected language, so screen readers pronounce the translated text correctly, and it translates image alt text, ARIA labels, placeholders and tooltips along with visible text. Your theme's markup and keyboard behavior stay as they are.
Can our team review translations before they go live?
Yes. Invite translators and reviewers for each language, decide whether machine translations are approved automatically or reviewed first, and keep a language hidden from visitors until you set it to Live. Translations appear on your site only after they are approved and published.
Can I keep some text untranslated?
Yes. Add the notranslate class or the translate="no" attribute to any element, for example in a Twig template or a Full HTML field, or list selectors in sitetran.ignore_selectors. Use this for names, addresses, legal text you only publish in one language, and other content that should stay as written.
Will visitors see their own language automatically?
Yes, by default. SiteTran detects the visitor's browser language and switches to it when that language is available on your site. The choice is saved in a cookie for future visits, and visitors can change language at any time from the language dropdown.
Can I use machine translation and still review it?
Yes. You can get machine translation suggestions from DeepL, Google Translate or OpenAI, automatically translate new phrases, and decide whether those translations are approved automatically or reviewed first. You can also invite human translators and reviewers for each language and use AI Translation Review.
Is there a free plan?
Yes. The Free plan includes 7,000 words in your site, 3,000 translated pageviews per month and 7,000 machine translations, with unlimited languages and teammates. Paid plans raise those limits and start at $3 per month. Compare plans.
What happens if I go over my plan's limits?
You will be prompted to upgrade or buy additional credits. Your existing translations remain intact, and new translations are paused until you upgrade.

Make your Drupal site multilingual this week

Place one block, pick your languages, and let your reviewers approve what goes live. No modules, no content model changes, and no per-language plan fees.

Start translating free Book a call Free plan · Unlimited languages and teammates