---
title: "Deploy WordPress Multilingual"
description: "Run a WordPress site in several languages"
category: "CMS"
url: https://railway.com/deploy/deploy-wordpress-multilingual-site
---

# Deploy WordPress Multilingual

Run a WordPress site in several languages

**[Deploy WordPress Multilingual on Railway](https://railway.com/template/deploy-wordpress-multilingual-site)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/deploy-wordpress-multilingual-site/manifest.json

- **Creator:** onepush
- **Category:** CMS

## Template content

### MariaDB

- **Image:** mariadb:12.3.3@sha256:99c125f103f5d081ebbc9ffe064e63daf7f688ac33a5f7f29af2d7260a96debf
- **Start command:** `/bin/sh -c 'exec docker-entrypoint.sh mariadbd --innodb-buffer-pool-size="${MARIADB_INNODB_BUFFER_POOL_SIZE:-256M}" --max-allowed-packet=64M --skip-name-resolve'`

### Valkey

- **Image:** valkey/valkey:9.1.2-alpine@sha256:48332870af354a799964c0012ae1194a0bf2bf894eb508f945810596dc2d8d11
- **Start command:** `/bin/sh -c 'exec docker-entrypoint.sh valkey-server --requirepass "$VALKEY_PASSWORD" --maxmemory "${VALKEY_MAXMEMORY:-256mb}" --maxmemory-policy allkeys-lru --save "" --appendonly no'`

### WordPress

- **Image:** ghcr.io/onepush-dev/wordpress:7.1.3-php8.4@sha256:1cb7b95a5ce4ed01189fb44773773ea38ec5c5c56b0ca534f98435bda1725067
- **Health check:** /healthz
- **Public domain:** Yes

## Documentation

# Deploy and Host self hosted WordPress Multilingual (Multilingual WordPress Site) on Railway

This template runs stock WordPress 7.1.3 on PHP 8.4 with MariaDB and Valkey, and it ships with no translation plugin installed.

## About Hosting WordPress Multilingual open-source software on Railway (self hosted WordPress multilingual sites template)

WordPress core has no built-in multilingual support, so a translated site depends on a plugin such as Polylang, which this template does not install.

Railway handles containers, networking, HTTPS, and persistent volumes.

## Why Deploy WordPress Multilingual, the WPML alternative on Railway (Railway Free Trial)

WPML is the commercial route most people reach for, and it adds an annual license on top of hosting. Railway's $5 trial lets you test the setup first.

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying WordPress Multilingual on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.

### Railway vs Other Hosting Providers and VPS for WordPress Multilingual self hosting

Railway gives you a working multilingual WordPress stack without building the server yourself.

| Provider | What You Get with Railway | What You Get with the Other Provider |
| --- | --- | --- |
| DigitalOcean | WordPress 7.1.3, MariaDB, and Valkey wired together, with the object cache active. | A Droplet where you install the stack, add Polylang, and set up language URLs yourself. |
| AWS | Three linked services with health checks and a public domain, no infrastructure code. | Fine-grained control over EC2, RDS, and networking, with more setup before translations go live. |
| Hetzner | Deploys from Git with the stack defaults set, so there is no server to patch. | Low-cost hardware where you handle the OS, the WordPress install, and per-language configuration. |

Railway trades some low-level control for a faster path to a live multilingual site.

## Common Use Cases for hosted WordPress Multilingual

- **English and Spanish business site:** A small shop selling in two markets can run one WordPress install with Polylang and add Spanish as a second language.
- **Per-language URLs for SEO:** Polylang can use subdirectories such as /en/ and /es/, or per-language domains, so each version gets its own address.
- **Translated menus and widgets:** Polylang lets you assign a separate menu to each language, so the Spanish header does not show English links.
- **Separate site per language with Multisite:** If each language needs its own theme or plugin set, WordPress Multisite can host one site per language, though it takes more server administration.
- **Machine translation drafts reviewed by people:** Polylang Pro can send content to DeepL for a first pass, and an editor checks tone and terms before publishing.

## Dependencies for WordPress Multilingual Docker hosted on Railway

This template runs three services: WordPress, MariaDB, and Valkey. Language support is not built in.

### Deployment Dependencies for Managed WordPress Multilingual Service (CMS)

- **WordPress service:** image ghcr.io/onepush-dev/wordpress:7.1.3-php8.4, port 80, health check /healthz, volume at /var/www/html.
- **MariaDB service:** version 12.3.3, volume at /var/lib/mysql.
- **Valkey service:** version 9.1.2, password protected, 256mb maxmemory, no volume since it only caches.
- **Key variables:** WP_HOME, WORDPRESS_DB_HOST, WORDPRESS_DB_NAME, WORDPRESS_DB_USER, WORDPRESS_DB_PASSWORD, WORDPRESS_TABLE_PREFIX, WP_REDIS_HOST, WP_REDIS_PORT, WP_REDIS_PASSWORD, and WP_REDIS_DISABLED.

### Implementation Details for WordPress Multilingual (Using WordPress official docker image)

The WordPress image bundles OPcache at 256 MB, the Redis Object Cache drop-in, and brotli compression.

## How does WordPress Multilingual compare against other ways to translate a WordPress site

### WordPress Multilingual vs WPML (WPML Alternative)

- **Licensing:** WPML is a commercial plugin, while Polylang, the plugin this template is built around, is free on WordPress.org with an optional Pro tier.
- **Model:** Polylang stores each language as a separate post linked into a translation group, which keeps the database simpler to undo if you uninstall.
- **Where WPML wins:** It has a longer track record and a broader set of paid add-ons for specialist integrations.

### WordPress Multilingual vs Weglot (Weglot Alternative)

- **Hosting:** Weglot is a hosted translation service layered over your site, while this template keeps the translations inside your own WordPress database.
- **Control:** You own the translated content and can edit each language directly in the WordPress editor.
- **Where Weglot wins:** It is quicker to set up and needs less hands-on work for a site that only needs machine translation.

### WordPress Multilingual vs TranslatePress (TranslatePress Alternative)

- **Editing:** TranslatePress translates the page output on the front end, while Polylang works through the normal post and page editors.
- **URLs:** Polylang gives you per-language URLs such as a language code in the path or a per-language domain, which suits SEO work.
- **Where TranslatePress wins:** Visual, on-page editing is easier if you prefer seeing changes in place.

### WordPress Multilingual vs Multisite per language (Multisite Alternative)

- **Structure:** Multisite runs each language as its own site in one network, with separate content tables and a shared user table.
- **Setup effort:** Multisite requires rewrites and solid server administration, while Polylang runs as a single site with one plugin.
- **Where Multisite wins:** Each language can have its own theme, plugins, and admin team, which helps when the sites differ a lot.

## How to use WordPress Multilingual (the OSS content management system)?

Do these steps on day one, before writing any content, since switching later means redoing work.

1. Open Settings, then General, and set the site language to your main language.
2. Install language packs for each extra language so admin text appears in each one.
3. Install and activate Polylang. Deactivate any other multilingual plugin first.
4. Let the setup wizard launch after activation and follow its prompts.
5. Add each language in Languages, then pick a URL structure: query parameter, directory such as /es/, or per-language domain.
6. Translate posts and pages. Polylang links each translation to its original.
7. Translate menus and widget strings, which need manual work.
8. Load the front end in each language and confirm the language switcher works.

For terminal installs, set up WordPress core with WP-CLI first:

```
wp core install --url=https://your-domain --title="My Site" --admin_user=admin --admin_email=you@example.com
```

## How to self host WordPress Multilingual on other VPS Services (WordPress self hosting guide)

Running this on your own VPS works too.

### Clone the Repository

Grab the template source and move into the folder. The WordPress image is pinned by digest, so builds stay consistent.

```bash
git clone https://github.com/onepush-dev/wordpress.git
cd wordpress
```

### Install Dependencies

You need Docker and Docker Compose on the VPS. Install Redis Object Cache for the object cache drop-in.

### Configure Environment Variables

Set the database, cache, and home URL values before the first start. Use your-domain until you know your final URL.

```bash
WP_HOME=https://your-domain
WORDPRESS_DB_HOST=mariadb
WORDPRESS_DB_PASSWORD=your-db-password
WP_REDIS_HOST=valkey
WP_REDIS_PASSWORD=your-valkey-password
```

### Start the WordPress Multilingual Application

Bring up the three services, open your-domain, and finish the standard installer.

Railway handles the containers, networking, HTTPS, and volumes for you, which is most of the work this guide asks you to do by hand.

## Official Pricing of WordPress Multilingual (WordPress pricing)

WordPress is free and open source under the GPLv2 license, so there is no license fee for the core software.

## WordPress Multilingual cloud vs self hosted comparison (Pricing, features, costs, and more)

Running a multilingual site on this template means adding your own translation plugin, since the template ships WordPress 7.1.3 on PHP 8.4 with MariaDB and Valkey but no Polylang or other translator.

### Monthly cost of self hosting WordPress Multilingual on Railway

A small to medium multilingual site on Railway usually runs about $5-20 per month, depending on traffic and RAM.

### System Requirements for Hosting WordPress Multilingual on a VPS

Plan for about 512 MB to 1 GB of RAM for WordPress and MariaDB on a small site, with Valkey capped at 256 MB.

## Frequently Asked Questions (FAQs)

### Should I use a multilingual plugin or WordPress Multisite?

For most sites, a plugin like Polylang is simpler, since it keeps one site with one admin and one set of users.

### Subdirectory or subdomain URLs for each language?

Subdirectory URLs like example.com/es/ are easier to manage and keep your domain authority in one place.

### Does Polylang add hreflang tags automatically?

Polylang outputs hreflang links for translated pages, which helps search engines serve the right language.

### Can I use machine translation for drafts?

Yes, but treat machine output as a starting point and have a person review it before publishing.

### Will a multilingual setup slow down my site?

Each extra language adds database records, so a large catalog translated into several languages grows quickly.

### Can I switch from Polylang to another plugin later?

You can, but expect cleanup, since each plugin stores translation links differently. Export your content and test the switch on a staging copy first.


## Similar templates

- [Libredesk - Complete Setup](https://railway.com/deploy/libredesk-complete-setup) — Complete self-hosted omnichannel customer support desk.
- [Paperless-ngx](https://railway.com/deploy/paperless-ngx-3) — Paperless-ngx — document management with OCR and full-text search
- [Instatic CMS - Postgres](https://railway.com/deploy/instatic-cms-postgres) — Design, build and manage powerful static sites from state-of-the-art CMS

Open this page in a browser: https://railway.com/deploy/deploy-wordpress-multilingual-site
