2026年10月20日

2026年10月20日

WordPressのテーマで国際化(i18n/l10n)を実装する方法

はじめに

WordPressのテーマ開発において、多言語対応は多くのウェブサイトにとって重要な要素です。国際化(i18n)とローカライゼーション(l10n)を適切に行うことで、テーマが簡単に複数の言語に対応することができます。

症状・背景

この記事が必要になる主な場面:

  • テーマ開発者が多言語対応のウェブサイトを作成する場合
  • クライアントが特定の地域向けにローカル化されたテーマを必要とする場合
  • WordPressプラグインを使用せずに、独自で翻訳ファイルを管理したい場合

手順・設定方法

ステップ1: テーマ内のメッセージの抽出

# WordPressのテーマディレクトリに移動します。
cd wp-content/themes/your-theme-name/

# テーマ内の全てのphpファイルから、gettext関数を用いた翻訳対象のメッセージを抽出し、ポケージファイルを作成します。
xgettext --from-code=UTF-8 -o languages/your-theme.pot --keyword=_ --keyword=__ --keyword=esc_attr__ --keyword=esc_html__ --language=PHP ./*.php ./includes/*.php

ステップ2: ポケージファイルから特定言語の翻訳ファイルを生成

# 作成したポケージファイル(your-theme.pot)をもとに、具体的な言語の翻訳ファイルを作成します。例えば、日本語版は以下のように生成します。
msginit --input=languages/your-theme.pot --output-file=languages/ja_JP.po --locale=ja_JP

# 他の言語も同様に作成できます。例:英語版
msginit --input=languages/your-theme.pot --output-file=languages/en_US.po --locale=en_US

ステップ3: テーマ内で翻訳ファイルを読み込む

# functions.php かテーマの初期化関数に、load_theme_textdomain 関数を使って翻訳ファイルを読み込みます。
add_action( 'after_setup_theme', 'mytheme_setup' );
function mytheme_setup() {
    load_theme_textdomain('your-theme-name', get_template_directory() . '/languages');
}

# テーマのテンプレートファイルで、gettext関数を使ってメッセージを翻訳します。
echo esc_html__( 'Welcome to our website!', 'your-theme-name' );

ステップ4: 翻訳ファイルの更新とアップデート

# 新しいメッセージが追加された場合や既存のメッセージが変更になった場合は、再度ポケージファイルを生成し、翻訳ファイルを更新します。
xgettext --from-code=UTF-8 -o languages/your-theme.pot --keyword=_ --keyword=__ --keyword=esc_attr__ --keyword=esc_html__ --language=PHP ./*.php ./includes/*.php

# 既存のPO/POTファイルを最新版に更新します。例えば、日本語版は以下のように更新します。
msgmerge -U languages/ja_JP.po languages/your-theme.pot

注意事項

  • 翻訳ファイルを適切な場所(themes/your-theme/languages/)に配置すること。
  • テーマのアップデート時に翻訳ファイルが上書きされないように注意すること。
  • 複数言語のウェブサイトでは、wp-config.php で WordPress のデフォルト言語を設定する必要がある場合があります。例:define('WPLANG', 'ja_JP');
  • テーマの翻訳ファイルは、開発者のみが管理し、クライアントやユーザーに直接触れることがないように注意すること。

まとめ

1. メッセージの抽出: xgettextを使用してテーマ内のすべての翻訳可能なテキストを抽出します。

2. 翻訳ファイルの生成: msginitコマンドを使って特定言語の翻訳ファイルを作成します。

3. 読み込みと使用: テーマ内で翻訳ファイルを読み込み、gettext関数を使用してメッセージを翻訳します。

4. 更新: 新しいメッセージや変更点に対応するために、定期的に翻訳ファイルを更新します。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ
▲