「このサイト、多言語にできますか」「無料でいけますか」——そう聞かれて詰まるのは操作ではなく判断のほうではないでしょうか。着手してから「有料版が必要でした」とは言えません。

WordPress の多言語化プラグイン Polylang無料版で、日本語・英語・タイ語の3言語サイトを実際に作成しました。公開環境と同じ条件まで通したうえで、当たった境界を機能単位で整理します。

この記事で分かること
  • 無料版とProの機能境界。DeepLの有無だけではない
  • 案件が無料版で収まるかを判定するチェックリスト8項目
  • スラッグを言語間で共有できない理由と、3言語のURL設計
  • 2言語のときには見えない、3言語目で増えるコスト

そもそもPolylangとは

Polylang は WordPress を多言語化するプラグインです。無料版は Polylang(WordPress.org のプラグインページ) で配布され、有償の Polylang Pro(公式サイト) が別にあります。

1つのページを翻訳して差し替える仕組みではありません。言語ごとに別ページを作り、Polylang が「これとこれは対訳」と紐づけます。だから言語が増えるとページもメニューもURLもその数だけ増えます。

Polylang無料版とProの機能境界

無料版でできる範囲は広く、境界は「DeepLの有無」だけではありません。2026年8月時点の公式readmeと公式ドキュメントをもとに整理します。

機能無料版Pro
投稿・固定ページ・メディア・カテゴリー・タグの翻訳
カスタム投稿タイプ・カスタムタクソノミーの翻訳
URL方式の選択(ディレクトリ型・サブドメイン型・ドメイン型)
クラシックメニュー項目・クラシックウィジェットの翻訳
言語スイッチャー(ブロック/ウィジェット/メニュー項目/テンプレート関数)
テンプレート関数(pll_the_languages() / pll_current_language() / pll_home_url() など)
hreflang の自動出力○(自社環境で確認)
言語間でのスラッグ共有(Shared slugs)×
URLスラッグそのものの翻訳×
翻訳の複製・同期×
DeepL による機械翻訳×
XLIFF のインポート/エクスポート×
ACF Pro 連携×
サイトエディタのテンプレートパーツの翻訳×
WP-CLI での言語・設定管理×

無料版でできること

言語スイッチャー系のブロックは Polylang 3.8(2026年2月24日)で無料版に開放されました。

hreflang の自動出力だけは公式readmeの機能一覧にありませんが、3言語環境のサイトを実装して出力を確認しています。

Proでないとできないこと

スラッグ(共有・翻訳)/複製・同期/機械翻訳/XLIFF入出力/ACF Pro連携の5系統はProの領域です。サイトエディタのテンプレートパーツ翻訳とWP-CLIも同様です。価格は99€/年〜。

WooCommerce の多言語化は Pro の対象外です。Polylang for WooCommerce という別アドオンが追加で必要になります。

無料版で行けるかの判定チェックリスト

案件の要件必要になるもの
全言語で同じURLスラッグにしたいPro
翻訳の下書きを元言語から複製したいPro
DeepL等で自動翻訳したいPro
ECサイト(WooCommerce)を多言語化する有料アドオンか他の有償製品
ACF Pro のフィールドを翻訳するPro
ブロックテーマでテンプレートパーツごと翻訳したいPro
翻訳を翻訳会社にXLIFFで渡すPro
テーマが wp_nav_menu() でナビを出していないテーマの改修で対応

特にECサイトは無料版で作れません。Pro・有料アドオン・他の有償製品まで含めて選び直すことになります。

無料版は言語間でスラッグを共有できない

何が起きるか

日本語ページのスラッグを company にした状態で英語ページにも company を設定すると、company-2 のように連番が付きます。連番を回避しても /en/company/ は既定言語の /company/ へ301でリダイレクトされます。

原因は Polylang ではなく WordPress コア側です。

コアの get_page_by_path()post_namepost_type(+親子関係)だけでページを解決し、言語という概念を持ちません。同名スラッグが複数あるとどれを返すかは決まっておらず、実際には先に作られた既定言語のページが返ります。無料版はこれを言語で選び直しません。共有スラッグ(Shared slugs)が Pro 機能なのは、ここを解決するためです。

無料版でのURL設計

無料版は言語サフィックス付きの固有スラッグで回避します。下記は設計の一例です。

ページ日本語(既定・接頭辞なし)英語(/en/タイ語(/th/
トップ//en//th/
企業情報company/company/company-en/en/company-en/company-th/th/company-th/
アクセスaccess/access/access-en/en/access-en/access-th/th/access-th/
お問い合わせcontact/contact/contact-en/en/contact-en/contact-th/th/contact-th/

トップページは例外です。言語別フロントページの仕組みで / /en/ /th/ になり、スラッグ衝突の対象外です。

-en / -th のURLは綺麗ではありません。妥協であって正解ではないです。URLの美しさが要件なら Pro か別の方式を選ぶことになります。

Pro ならこの妥協は要りません。共有スラッグ(Shared slugs) を使うと翻訳どうしで同じスラッグを持てるため、/company//en/company/ のように言語コードだけが違うURLに揃います。対象は固定ページ・投稿のほか、カテゴリー・タグ・メディア・カスタムタクソノミーにも及びます。

3言語目で増えるもの

言語が2から3に増えると、ページ数だけでなく2言語では見えないコストが出てきます。

増えるもの2言語3言語
ページ実体(トップページを含む)4ページ(トップ+下層3ページ)× 2 = 84ページ(トップ+下層3ページ)× 3 = 12
言語別メニュー23
言語別フロントページの設定23
言語スイッチャーの選択肢23
hreflang2言語 + x-default3言語 + x-default
sitemap の系統23
スラッグ衝突が起きる範囲既定言語以外の1言語既定言語以外の2言語

言語別フロントページの設定とは、どのページをその言語のトップとして扱うかの指定です。ページ自体は増えません。トップページの実体は「ページ実体」の行で数えているため、3言語なら実体3枚・設定3つで、足して6ページになるわけではありません。

言語別メニューは、WordPress の「メニュー」を言語ごとに作り、テーマのメニュー位置へ言語別に割り当てることです。3言語ならメニューを3つ作って3つ割り当てます。

3言語で通したときの実測値は次のとおりです。

  • 4ページ × 3言語 = 12URL すべて200
  • <html lang>ja / en-US / th。タイ語ロケールは地域なしの th
  • hreflang は ja / en-US / th + x-default の4本が各1本ずつ。二重出力なし
  • コア標準の /wp-sitemap.xml に3言語ぶんのサブsitemapを含む。SEOプラグイン側は無効化して二重化を回避

なお x-default が自動で付くのはホームページのみです。

ディレクトリ型3言語に必要な設定5項目

/en/ /th/ のようなディレクトリ型は、次の5つが揃って動きます。1つでも欠けると言語トップが404になるか、/en/home-en/ のようにスラッグが露出します。

  1. パーマリンクを「基本(?p=)」以外にする
    基本のままだとディレクトリ型を選べません。
  2. 「言語はプリティーパーマリンク内のディレクトリ名から設定される」を選ぶ
    他を選ぶとサブドメイン型・ドメイン型になります。
  3. 「URLにデフォルト言語の言語情報を表示しない」にチェック
    外すと既定言語のURLにも言語コードが付きます。
  4. 「フロントページのURLには言語コードが含まれる」をON
    OFFだと /en/home-en/ のようにスラッグが露出します。言語トップが404になる原因の1つでもあります。
  5. 設定変更後にパーマリンクを再保存する
    「設定 > パーマリンク」で保存し直し、設定の反映漏れを防ぎます。

言語別メニューはテーマの実装に依存する

Polylang の「メニューの言語割当」は、テーマが register_nav_menus()wp_nav_menu() でナビを出力しているのが前提です。

グローバルナビを固定ページリンクで直書きしているテーマや自作テーマでは、言語を切り替えても同じメニューが出続けます。

Polylang の不具合ではなくテーマ側の問題で、Proを買っても解決しません。対処はメニュー位置を登録し、ナビを wp_nav_menu() へ置き換えることです。

PHP
// functions.php
add_action( 'after_setup_theme', function () {
	register_nav_menus( array(
		'global' => __( 'グローバルナビ', 'my-theme' ),
	) );
} );
PHP
<?php
// header.php — 直書きしていたナビをこれに置き換える
wp_nav_menu( array(
	'theme_location' => 'global',
	'container'      => 'nav',
	'depth'          => 1,
	'fallback_cb'    => false, // 未割当の言語で固定ページ一覧が出るのを防ぐ
) );
?>

これで管理画面の「メニュー」に言語ごとのメニュー位置が並びます。改修工数はライセンス費とは別に発生するため、判定チェックリストにもテーマの項目を入れています。

よくある質問(FAQ)

言語スイッチャーは無料版でも使えますか?

使えます。ウィジェット・メニュー項目・テンプレート関数に加え、3.8(2026年2月24日)以降はブロックも使えます。

日本語から英語への翻訳は自動でされますか?

されません。無料版は言語ごとに手で作ります。DeepL連携はProの機能です。

4言語・5言語でも無料版でいけますか?

仕組みのうえでは可能です。増えるのは費用ではなく管理コストで、言語別メニュー・フロントページ・スラッグ設計が言語数ぶん増えます。

ECサイトも無料版で多言語化できますか?

実質できません。商品・カート・チェックアウトの多言語化には有料アドオンか他の有償製品が要ります。

まとめ

  • 無料版とProの境界は機能単位で答えが出る。DeepLの有無だけではない
  • 3言語までなら無料版で本番相当まで到達できる
  • スラッグは言語間で共有できない。-en / -th 方式は妥協であって正解ではない
  • 言語が増えるとメニュー・フロントページ・hreflang・sitemapも増える
  • テーマが wp_nav_menu() を使っていなければ改修が要る。Proでは解決しない

「URLの綺麗さとECは無料版の外側」と覚えておくと見積もりが早くなります。多言語化にはWordPressへ載せる以外に、静的サイトとして構築する道もあります。

関連記事