how to Create a Multilingual WordPress Site at a Glance

there are three main ways to create a multilingual sitewith WordPress.

  1. using a plugin (recommended) – WPML, Polylang, TranslatePress, etc
  2. subdomain or subdirectory approach – separate sites for each language
  3. multisite setup – manage multiple sites from one WordPress

we’ll explain the pros and cons of each method and how to set them up in detail.

building a multilingual site using the 1️⃣ plugin (easiest way)

to run a multilingual site in WordPress, it’s usuallyeasiest and most effective to use a multilingual plugin.

🚀 Compare our recommended plugins

pluginpricekey Features
WPMLpaid ($3-$10/year)most robust multilingual support, excellent SEO optimization
Polylangfree/Paidfree version supports basic multilingual features, easy to use
TranslatePressfree/Paidreal-time translation support, AI translation (Google Translate) available

💡 **WPML (WordPress Multilingual Plugin)** is the best choice for creating SEO-friendly multilingual sites.

🔹 Installation and Setup

  1. Purchase and install the WPML plugin(available for downloadat wpml.org)
  2. Select the languages you want to addin WPML > Languages
  3. Add strings to translatein WPML > String Translation
  4. Set SEO settings in WPML > Settings(you can change URL structure)
    • you can set URL structure likemydomain.com/en/, mydomain.com/fr/, etc
  5. translate each page/post to add multilingual content

📌 Pros
✅ Provides SEO optimization (supports Google multilingual search)
✅ Fully compatible with WooCommerce (shopping cart)

📌 C ons
❌ Paid plugin ($39 to $99 per year)

✅ Method 2: Polylang plugin (free to use)

💡 Polylangis a free-to-use multilingual plugin.

🔹 Install and set up

  1. plugins > Add New > Search for Polylang, install and activate it
  2. select the languages you want to addin Settings > Languages
  3. add multilingual translations from existing content (pages, posts)
  4. add navigation menus for each languagein the menu settings

📌 Pros
✅ Free to use
✅ Great for simple sites

📌 C ons
string Translation feature is paid (fewer translation options than WPML)

✅ Method 3: TranslatePress plugin (supports real-time translation)

💡 TranslatePressis a plugin that allows real-time translation by utilizing the Google Translate API.

🔹 Install and set up

  1. plugins > Add New > Install and activateTranslatePress
  2. set which languages to addin Settings > TranslatePress
  3. edit the text to be translated directlyin page edit mode
  4. AI translation (Google Translate API) available

📌 Pros
✅ Offers real-time translation functionality
intuitive UI for editing translations

📌 C ons
❌ Extra cost for automatic translation (Google API usage fee)

2️⃣ Subdomain / subdirectory method (run a separate site)

example:

  • subdomain method: en.mydomain.com, fr.mydomain.com
  • subdirectory method: mydomain.com/en/, mydomain.com/fr/

📌 How to set it up

  1. set up domain
    • subdomain method: create en.mydomain.com and install WordPress separately
    • subdirectory method: Build a new site at mydomain.com/en/ path
  2. run a WordPress site for each language
  3. addhreflang tags to optimize SEO

📌 Advantages
✅ You can run completely independent sites
✅ SEO optimization for each language is possible

📌 C ons
❌ Difficult to maintain (need to manage each language site separately)

3️⃣ Utilize the WordPress Multisite feature

by setting up WordPress Multisite, you can run multiple language sites on a single WordPress.

📌 How to set it up

  1. add the following code to your wp-config.php file
    • define('WP_ALLOW_MULTISITE', true);
  2. enable network settings in your WordPress admin
  3. add sites with subdomains or subdirectoriesfor each language
  4. connect languages using the plugin MultilingualPress

📌 Pros
✅ Manage multiple language sites from one WordPress
✅ Plugins, themes can be shared

📌 C ons
❌ Somewhat complicated to set up, increases server resource usage

🚀 Final Choice Guide (Which is the Best?)

methodrecommended forkey Features
WPML (Paid)SEO optimized, works with WooCommercepowerful multilingual features, easy to manage translations
Polylang (free)simple multilingual sitesfree to use, more limited features than WPML
TranslatePress (free/paid)requires real-time translationGoogle Translate API available
subdomains/Subdirectoriesfully independent site operationSEO powerful, difficult to maintain
multisitemultilingual blogs, portalsrun multiple language sites on one WordPress

📌 Recommended combinations: ✅ WPML + SEO optimization → professional multilingual site
Polylang (free) + cache optimization → small multilingual site
TranslatePress + AI translation → build an automatic translation site

🔹 Conclusion

there are many ways to create a multilingual site in WordPress, but using a plugin is the most efficientway.
For SEO optimization and ease of maintenance, the WPML pluginis the most recommended.
however, you can also utilize **free plugins (Polylang, TranslatePress) to add multilingual capabilities while saving money.

💡 Not sure which one is best for you?Simple blogPolylang (free)
Shopping malls, corporate sitesWPML (paid)
Automatic translation supportTranslatePress + Google Translate API

🚀 S etting up your multilingual site will be much easier if you follow this method! 💪

🌍 How to Create a WordPress Multilingual Site Easily 🚀

there are several ways to create a multilingual (multilingual) sitewith WordPress. you can set up a single website to support multiple languages so that visitors can view your content in their preferred language.

1️⃣ 3 Ways to Create a Multilingual Site

the top 3 ways to create a multilingual WordPress site:

methoddescriptionrecommended for
use a pluginthe easiest way, automatic translation support🔹If you want to make it fast and easy
use multisite functionalityyou can run separate sites for each language🔹If you need complete independent translation
manual translation (utilizing subdomains / subdirectories)create separate pages for each language🔹If you want the best SEO and performance

create a multilingual site with 2️⃣ plugin (easiest way)

💡 Recommended plugins:
wordPress has many powerful multilingual plugins.

pluginpricefeatures
WPMLpaidthe most powerful multilingual plugin (SEO ready)
Polylangfree / Paidsimple and lightweight plugin
TranslatePressfree / Paidenables real-time front-end translation
WeglotpaidAI automatic translation support

the easiest way: use TranslatePress or Polylang 🚀

✅ Method 1: Create a multilingual site with Polylang (free)

📌 Features:

  • powerful features even in the free version
  • simple to use and offers a language switcher (toggle button)
  • requires you to manually enter the content to be translated

📌 Installation and setup

1️⃣ Add WordPress Plugins Search for Polylang and install it
2️⃣ Settings → Add Languages

  • add the desired language in Settings → Languages(e.g. Korean 🇰🇷, English 🇺🇸, Japanese 🇯🇵, etc.)
    3️⃣ Add content to translate
  • pages → Create a new post, then copy the existing page to create the translation
    4️⃣ Add language switcher (switch button)
  • widgets → Add language selector (can be placed in menu or sidebar)
    5️⃣ SEO Settings
  • Use withYoast SEO or RankMathfor multilingual SEO optimization

✅ Method 2: Create a multilingual site with TranslatePress (free)

📌 Features:

  • real-time translation on the frontend (site screen)
  • Supports AI translation (Google Translate API)
  • easy to use even for beginners

📌 Installation and setup

1️⃣ Add WordPress Plugins Search for TranslatePress and install it
2️⃣ Settings → Add Languages

  • set default language + additional languages in Settings → TranslatePress
    translate live on your site at 3️⃣
  • click “Translate Site” in the top bar and translate directly
    4️⃣ Automatic translation (optional)
  • Support automatic translation when connected to Google Translate API
    5️⃣ Add Language Switcher
  • add to menu or widgetin Settings → Language Switcher

✅ Method 3: Create a multilingual site with WPML (Paid)

📌 Features:

  • most powerful multilingual plugin (recommended for businesses)
  • WooCommerce (shopping mall) multilingual support
  • Excellent SEO features

📌 Installation and setup 1️⃣ Purchase and install the WPML plugin
2️⃣ Settings → Add Language
3️⃣ Translate your content

  • translate manually or utilize the translation manager feature
    4️⃣ SEO optimization
  • Use with Yoast SEO, RankMath

3️⃣ Multilingual SEO optimization (search engine optimization)

sEO optimization is important when running a multilingual site.

Set up your URL structure (SEO optimization)

  • subdirectories (recommended): example.com/en/, example.com/en/, example.com/en/
  • usesubdomains: en.example.com, ko.example.com
  • use separate domains: example.kr, example.com

Add the hreflang tag

you need to add the hreflang tag so that search engines recognize the correct language page.

example:

<link rel="alternate" hreflang="en" href="https://example.com/ko/" /> <link rel="alternate" hreflang="en" href="https://example.com/en/" />

Use an SEO plugin

  • Yoast SEO or RankMath plugin offers multilingual SEO optimization

4️⃣ Multilingual site performance optimization

multilingual sites can become slow due to the large number of translated pages.
use the following methods to optimize speed

1️⃣ Use a caching plugin → LiteSpeed Cache, WP Rocket
2️⃣ Apply a Content Delivery Network (CDN) → Use Cloudflare
3️⃣ Optimize images → Smush or ShortPixel plugin
4️⃣ Remove unnecessary plugins

5️⃣ Recommendations for building a multilingual site

recommendationdescriptionrecommended for
Polylangsimple free plugin, requires direct translation🔹Personal blogs, small sites
TranslatePressreal-time translation support, AI translation available🔹Enterprise sites, easy to translate
WPMLpowerful features, WooCommerce support🔹Large businesses, shopping malls

👉 Easiest way to get started: TranslatePress + Google Translate API 🚀

🔥 Final Summary

Easiest way: use Polylang or TranslatePress plugin
Need automatic translation? Use TranslatePress + Google API
Want a fully multilingual site? Use WPML
SEO optimization is a must: add hreflang tags, utilize SEO plugins
Optimize for speed: apply caching, CDN, image compression

🚀 Now you can create a multilingual site with ease! 🌍

🌍 WordPress Multilingual Site Building an Automatic Translation System with deep L ai and Polylang Lecture

hello! 😊 Today we’re going to learn how to build a system to automatically translate existing and new posts on your WordPress site, and even optimize them for SEO.

in this lesson, we’ll utilize the DeepL API, the Polylang plugin, and Yoast SEOto create an environment that you can set up once and have translations happen automatically. 🚀

as a reminder, the DEEP L API is free to use for translating up to 500,000 characters per month.

📌 Course Objectives

1️⃣ translate all existing Korean posts into English and Japanese
2️⃣ Automatically translate future posts as they are created
3️⃣ preserve the HTML structure of translated posts so that they don’t break
4️⃣ apply SEO (search engine optimization) settings to maximize search visibility
5️⃣ Prevent duplicate translations to avoid retranslating already translated posts

💡 1. Prepare your project

first, you need to prepare your project. it should have the following tasks done

📌 Required installations

WordPress site
polylang plugin (multilingual support)
yoast SEO plugin (search optimization)
deepL API key issued (to use the Translation API)

📌 Get DeepL API key

To use the DeepL translation API, you need an API key.
1️⃣ DeepLGo to the API website
sign up for 2️⃣ and get an API key
3️⃣ Copy your API key( enter it in theYOUR_DEEPL_API_KEY part)

💡 2. Writing the code: Building the automatic translation system

now, let’s build the translation system by adding code to functions.php.

📌 2-1. Code to automatically translate existing posts

first, let’s create code to automatically translate all posts that have already been created.

// function to check if a post is already translated (to avoid duplicate translations) function is_already_translated($post_id, $lang) { $translations = pll_get_post_translations($post_id); return isset($translations[$lang]); // check if a translation exists for that language } // function to translate all existing posts (run only once) function auto_translate_existing_posts() { $languages = [
        'en' => ['prefix' => 'en', 'sep' => '-', 'sitename' => get_bloginfo('name')], 'ja' => ['prefix' => 'ja', 'sep' => '-', 'sitename' => get_bloginfo('name')], ]; $args = [
        'post_type' => 'post', 'post_status' => 'publish', 'posts_per_page' => -1, ]; $posts = get_posts($args); foreach ($posts as $post) { if (pll_get_post_language($post->ID) !== 'en') continue; foreach ($languages as $lang => $settings) { if (is_already_translated($post->ID, $lang)) { continue; // skip if already translated } $translated_title = deepl_translate_with_html($post->post_title, $lang); $translated_content = deepl_translate_with_html($post->post_content, $lang); $translated_slug = $settings['prefix'] . '-' . sanitize_title($translated_title); $seo_title = $translated_title . ' ' . $settings['sep'] . ' ' . $settings['sitename']; $translated_post_id = wp_insert_post([
                'post_title' => $translated_title, 'post_content' => $translated_content, 'post_status' => 'publish', 'post_type' => $post->post_type, 'post_author' => $post->post_author, 'post_name' => $translated_slug, 'post_category' => wp_get_post_categories($post->ID), 'meta_input' => [
                    '_yoast_wpseo_title' => $seo_title, ], ]); pll_set_post_language($translated_post_id, $lang); pll_save_post_translations([ 'en' => $post->ID, $lang => $translated_post_id, ]);
        } } } // Run translation of existing post (run only once) add_action('admin_init', function () { if (isset($_GET['run_translation']) && $_GET['run_translation'] === '1') { auto_translate_existing_posts(); wp_die('Translation for all existing posts completed.'); } })

🚀 Now, if you run the URL below in your browser, all your existing posts will be translated!

(Make sure to changeyour-site.com to your site domain)

https://your-site.com/wp-admin/?run_translation=1

📌 2-2. New post auto-translation code

Nowset it up so that new posts are automatically translated when they are created.

function auto_translate_and_seo_publish($post_id) { $original_post = get_post($post_id); if ($original_post->post_status !== 'publish') return; $languages = [ 'en' => ['prefix' => 'en', 'sep' => '-', 'sitename' => get_bloginfo('name')], 'ja' => ['prefix' => 'ja', 'sep' => '-', 'sitename' => get_bloginfo('name')], ]; if (pll_get_post_language($post_id) !== 'en') return; foreach ($languages as $lang => $settings) { if (is_already_translated($post_id, $lang)) { continue; // skip if already translated } $translated_title = deepl_translate_with_html($original_post->post_title, $lang);
        $translated_content = deepl_translate_with_html($original_post->post_content, $lang); $translated_slug = $settings['prefix'] . '-' . sanitize_title($translated_title); $seo_title = $translated_title . ' ' . $settings['sep'] . ' ' . $settings['sitename']; $translated_post_id = wp_insert_post([
            'post_title' => $translated_title, 'post_content' => $translated_content, 'post_status' => 'publish', 'post_type' => $original_post->post_type, 'post_author' => $original_post->post_author, 'post_name' => $translated_slug, 'meta_input' => [
                '_yoast_wpseo_title' => $seo_title, ], ]); pll_set_post_language($translated_post_id, $lang); pll_save_post_translations([
            'en' => $post_id, $lang => $translated_post_id, ]); } } // Run automatic translation when a new post is published add_action('publish_post', 'auto_translate_and_seo_publish')

🚀 Final wrap-up

Want to translate all existing posts?

  • run it once: https://your-site.com/wp-admin/?run_translation=1

Want to translate a new post?

  • auto-translated after creating a new post. (No additional work required)

Want to recreate a translated post?

  • delete the existing translated post and run it again.

💡 Now you can run multilingual content in WordPress completely automatically! 🚀 If you have any more questions, feel free to ask! 😊

📌 Additional things to check after the run

  1. check if your translated posts have been created
    • check yourWordPress admin → “All Posts” to see if you have posts translated intoEnglish (EN) andJapanese (JA).
  2. Check the URL
    • korean posts: https://example.co.kr/올림픽-일정/
    • english post: https://example.co.kr/en/olympic-schedule/
    • japanese posts: https://example.co.kr/ja/オリンピック日程/
  3. make sure your translated posts are properly linked in Polylang
    • check translation relationships in yourWordPress admin → Polylang.

📌 Once you finish translating an existing post, you don’t need to run it again

✅ Once you translate an existing post once, you don’t need to run this URL again.
✅ Afterward, when you create a new post, it will be translated automatically.

📌 Additional questions

Q1. Can I run this URL multiple times?

✅ It’s okay to run it multiple times, as it won’t retranslate posts that have already been translated.
✅ Thisis because it contains code(is_already_translated()) that prevents duplicate translations.

Q2. How do I retranslate an existing post?

🚨 You need to delete the existing translation and run it again.
✅ Delete the existing translated post and run https://your-site.com/wp-admin/?run_translation=1 again.

Q3. What if the translation doesn’t happen automatically?

❌ If you run it and it doesn’t translate, check the following

  1. make sure the code is addedto functions.phpcorrectly.
  2. Make sure your DeepL API key is set correctly.
  3. Make sure the Polylang plugin is activated.
  4. wordPress admin → Settings → Save unique address (permalink ) button and run it again.

How to Create a Multilingual Website with WordPress

Creating a multilingual (multi-language) website with WordPress can be done in several ways. A multilingual setup allows visitors to view content in their preferred language.

1️⃣ Three Main Methods to Create a Multilingual Website

There are three primary ways to build a multilingual site in WordPress:

MethodDescriptionRecommended For
Using a PluginThe easiest method, with automatic translation support🔹 Quick and easy setup
Using MultisiteEach language operates as a separate site🔹 Full independence for translations
Manual Translation (Subdomain/Subdirectory)Separate pages for each language🔹 Best for SEO and performance

2️⃣ Creating a Multilingual Site with a Plugin (Easiest Method)

💡 Recommended Plugins:
WordPress offers powerful multilingual plugins.

PluginPricingFeatures
WPMLPaidMost powerful multilingual plugin (SEO-friendly)
PolylangFree/PaidLightweight and simple
TranslatePressFree/PaidReal-time front-end translation
WeglotPaidAI-powered automatic translation

🚀 Easiest Option: TranslatePress or Polylang

✅ Method 1: Creating a Multilingual Site with Polylang (Free)

📌 Features:

  • Free version offers powerful functionality
  • Simple to use, with a language switcher
  • Requires manual content translation

📌 Installation & Setup: 1️⃣ Install Polylang Plugin

  • Go to WordPress Admin > Plugins > Add New
  • Search for Polylang, install, and activate

2️⃣ Add Languages

  • Go to Settings > Languages
  • Add languages (e.g., Korean 🇰🇷, English 🇺🇸, Japanese 🇯🇵)

3️⃣ Translate Content

  • Go to Pages > Add New
  • Copy existing pages and manually translate them

4️⃣ Add a Language Switcher

  • Go to Widgets > Add Language Switcher
  • Place it in the menu or sidebar

5️⃣ SEO Optimization

  • Use Yoast SEO or RankMath to optimize multilingual SEO

✅ Method 2: Creating a Multilingual Site with TranslatePress (Free)

📌 Features:

  • Real-time front-end translation
  • AI-powered translation (Google Translate API)
  • Easy to use for beginners

📌 Installation & Setup: 1️⃣ Install TranslatePress Plugin

  • Go to WordPress Admin > Plugins > Add New
  • Search for TranslatePress, install, and activate

2️⃣ Add Languages

  • Go to Settings > TranslatePress
  • Set a default language and add additional languages

3️⃣ Translate Content in Real-Time

  • Click “Translate Site” from the top admin bar
  • Manually translate content on the front-end

4️⃣ Enable Automatic Translation (Optional)

  • Connect to Google Translate API for automatic translation

5️⃣ Add a Language Switcher

  • Go to Settings > Language Switcher
  • Add a switcher to the menu or widget area

✅ Method 3: Creating a Multilingual Site with WPML (Paid)

📌 Features:

  • Most powerful multilingual plugin (recommended for businesses)
  • Supports WooCommerce (multilingual eCommerce)
  • SEO-friendly

📌 Installation & Setup: 1️⃣ Purchase & Install WPML

  • Buy WPML from the official website
  • Install and activate it in WordPress

2️⃣ Add Languages

  • Go to Settings > Languages
  • Configure multilingual settings

3️⃣ Translate Content

  • Use manual translation or the WPML Translation Manager

4️⃣ SEO Optimization

  • Integrate with Yoast SEO or RankMath

3️⃣ Multilingual SEO Optimization (Search Engine Optimization)

SEO is crucial for multilingual websites.

Recommended URL Structure (Best for SEO)

StructureExampleRecommended
Subdirectoryexample.com/en/, example.com/ko/✅ Best SEO practice
Subdomainen.example.com, ko.example.com⚠️ Requires extra domain setup
Separate Domainsexample.kr, example.com✅ Best for independent markets

Adding hreflang Tags
Hreflang tags help search engines identify the correct language for users.

📌 Example Code:

html복사편집<link rel="alternate" hreflang="ko" href="https://example.com/ko/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/" />

Using SEO Plugins

  • Yoast SEO or RankMath provide multilingual SEO support

4️⃣ Performance Optimization for Multilingual Websites

Multilingual sites can slow down due to multiple translations. Optimize speed using the following:

1️⃣ Caching Plugins → Use LiteSpeed Cache or WP Rocket
2️⃣ Content Delivery Network (CDN) → Use Cloudflare
3️⃣ Image Optimization → Use Smush or ShortPixel
4️⃣ Remove Unnecessary Plugins

5️⃣ Recommended Approaches for Different Use Cases

Recommended MethodDescriptionBest For
PolylangFree, requires manual translation🔹 Personal blogs, small websites
TranslatePressReal-time translation, AI-supported🔹 Easy translation for business sites
WPMLPowerful features, WooCommerce support🔹 Large businesses, eCommerce

👉 Easiest Option: TranslatePress + Google Translate API 🚀

🔥 Final Summary

Easiest Method: Use Polylang or TranslatePress
Need Automatic Translation? Use TranslatePress + Google API
For a Fully Professional Multilingual Site: Use WPML
SEO Optimization is Essential: Add hreflang tags, use SEO plugins
Speed Optimization: Use caching, CDN, image compression

🚀 Now you can easily create a multilingual WordPress site! 🌍