WordPressテーマ開発におけるText Domainと翻訳対応の基礎

WordPressテーマ開発におけるText Domainと翻訳対応を象徴する、グローバルとコードをイメージしたビジュアル
WordPressテーマ開発で重要となるText Domainと翻訳対応の基礎をイメージしたアイキャッチ画像。

WordPressテーマを配布・公開する場合、多言語対応は避けて通れない重要な要素です。
その中核となるのが Text Domain(テキストドメイン) と翻訳関数の正しい使い方です。

本記事では、WordPressテーマ開発におけるText Domainの役割から、翻訳対応の基本実装、注意点までを体系的に解説します。
初学者でも理解できるよう、基礎を丁寧に整理しています。

Text Domainとは何か

Text Domainの役割

Text Domainとは、翻訳文字列を識別するための一意な名前です。
WordPressは、このText Domainをもとに、どのテーマ・プラグインの翻訳ファイルを読み込むかを判断します。

つまり、Text Domainが正しく設定されていなければ、翻訳ファイルが存在しても文字列は翻訳されません。

テーマ開発におけるText Domainの位置づけ

WordPressテーマでは、以下のような場面でText Domainが使われます。

  • PHPファイル内の表示テキスト
  • 管理画面向けの文言
  • ウィジェットやカスタマイザーのラベル

これらの文字列を翻訳可能にすることで、テーマの汎用性と品質が向上します。

Text Domainの命名ルール

基本ルール

Text Domainには、以下のルールがあります。

  • テーマのディレクトリ名と同じ名前にする
  • 半角英数字とハイフンを使用
  • 大文字は使わない

例:

my-theme

この名前が、翻訳関数や翻訳ファイルの基準になります。

style.cssとの関係

style.css のヘッダーコメントには、Text Domainを明示的に指定します。

/*
Theme Name: My Theme
Text Domain: my-theme
*/

ここで指定したText Domainと、PHPファイル内のText Domainは必ず一致させる必要があります。

翻訳対応の基本となる関数

よく使われる翻訳関数

WordPressでは、以下の翻訳関数が基本となります。

  • __():翻訳された文字列を返す
  • _e():翻訳された文字列をそのまま出力する
  • _x():文脈を指定して翻訳する
  • esc_html__():HTMLエスケープ付きで翻訳する
  • esc_attr__():属性値向けに翻訳する

実装例

<h1><?php echo esc_html__( '記事一覧', 'my-theme' ); ?></h1>

このように、必ずText Domainを第2引数に指定します。

翻訳ファイル(.po / .mo)の仕組み

翻訳ファイルの種類

翻訳対応では、以下のファイルが使われます。

  • .po:人が編集する翻訳ファイル
  • .mo:WordPressが読み込むバイナリファイル

通常、翻訳作業は .po ファイルで行い、.mo に変換して使用します。

languagesディレクトリの配置

テーマ内には、以下のように languages ディレクトリを用意します。

my-theme/
├─ languages/
│  ├─ my-theme-ja.po
│  └─ my-theme-ja.mo

翻訳ファイルの読み込み設定

functions.phpでの設定

翻訳を有効化するには、functions.php に以下を記述します。

function my_theme_setup() {
    load_theme_textdomain(
        'my-theme',
        get_template_directory() . '/languages'
    );
}
add_action( 'after_setup_theme', 'my_theme_setup' );

この設定により、WordPressがテーマの翻訳ファイルを正しく読み込みます。

翻訳対応でよくある注意点

ハードコーディングを避ける

以下のような書き方は翻訳されません。

<h2>お問い合わせ</h2>

翻訳対応では、必ず翻訳関数を通します。

<h2><?php echo esc_html__( 'お問い合わせ', 'my-theme' ); ?></h2>

Text Domainの不一致

  • style.css
  • 翻訳関数
  • 翻訳ファイル名

これらのText Domainが一致していない場合、翻訳は機能しません。

なぜ翻訳対応が重要なのか

翻訳対応は、多言語サイトのためだけの機能ではありません。

  • WordPress公式ディレクトリの品質基準を満たす
  • 将来的な仕様変更や拡張に強くなる
  • 再利用性の高いテーマ設計につながる

結果として、保守性・拡張性に優れたテーマ開発が可能になります。

まとめ

  • Text Domainは翻訳対応の中核となる識別子
  • テーマ名と一致させることが基本
  • 翻訳関数と翻訳ファイルの連携が重要
  • 初期段階から翻訳対応を前提に設計することが望ましい

Text Domainと翻訳対応を正しく理解することで、WordPressテーマ開発の完成度は大きく向上します。

関連記事