プラグインを多言語に対応(海外翻訳化)させる方法

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

本日はプラグインの翻訳化手順を残しておきます。業務メモです。

プラグインを多言語に対応(海外翻訳化)させる方法

以下に手順をまとめておきます。プラグインのディレクトリ構造が大切です。

・[plugin-sample-name]
	└ [languages]
		└ plugin-sample-name.pot
	└ plugin-sample-name.php
	└ script.php

上記の拡張子がないのはフォルダ(ディレクトリ名)となります。そして「plugin-sample-name.php」内では「script.php」を読み込んでいる前提です。読込み方は下記を想定しておきます。

require ( dirname ( __FILE__ ) . '/script.php');

翻訳するには「plugin-sample-name.php」内で「languages」までのパスを記述しておく必要があります。

plugin-sample-name.phpを修正する

最上部にコメントアウトで記述しているプラグイン情報に2行だけ追記しましょう。

/*
Plugin Name: Plugin Sample Name
Plugin URI:  https://example.com/plugin-sample-name/
Description: Plugin Sample Nameは翻訳化の記事用に作った存在しないプラグインです。
Author:      サンプル研究所
Author URI:  https://example.com
Version:     1.0.0
*/

追加する2行は下記です。

Text Domain: plugin-sample-name
Domain Path: /languages/

実際に追記した状態が以下となります。

/*
Plugin Name: Plugin Sample Name
Plugin URI:  https://example.com/plugin-sample-name/
Description: Plugin Sample Nameは翻訳化の記事用に作った存在しないプラグインです。
Author:      サンプル研究所
Author URI:  https://example.com
Text Domain: plugin-sample-name
Domain Path: /languages/
Version:     1.0.0
*/

そして、追記で以下の処理を足します。

load_plugin_textdomain (
	'plugin-sample-name',
	false,
	plugin_basename( dirname( __FILE__ ) ) . '/languages'
);

すべてを整理すると下記になります。

<?php
/*
Plugin Name: Plugin Sample Name
Plugin URI:  https://example.com/plugin-sample-name/
Description: Plugin Sample Nameは翻訳化の記事用に作った存在しないプラグインです。
Author:      サンプル研究所
Author URI:  https://example.com
Text Domain: plugin-sample-name
Domain Path: /languages/
Version:     1.0.0
*/

// 翻訳ファイルを読み込む設定
load_plugin_textdomain (
	'plugin-sample-name',
	false,
	plugin_basename( dirname( __FILE__ ) ) . '/languages'
);

// プラグインの実行ファイルを読み込む設定
require ( dirname ( __FILE__ ) . '/script.php');

?>

下準備は完了です。

script.phpの中に翻訳対象を作る

ファイルで翻訳検索にひっかかるテキストの構造を準備しましょう。

<?php _e('English Text', 'plugin-sample-name') ?>

と書けば基本はOKです。script.phpで作った処理状況に応じて微調整。上記の「_e」にはechoする処理も含まれているので一般的なPHP関数として使えば実装できます。もし先に日本語でプラグインを作っているとしたら日本語が書かれている箇所を1つずつ上記のタグで英語として順番に置き換えていくだけで問題ありません。

<h3><?php _e('English Message', 'plugin-sample-name') ?></h3>

上記の書き方をすれば「Poedit(翻訳ファイル編集ツール)」側で認識される仕組みですね。さきほど書いた「_e」の他に「__」もあります。後者は変数のなかで使用する場合に使ってください。

$test = __('English Menu', 'plugin-sample-name');

potファイルから翻訳ファイル(po)を作成する

以下で使用している「Poedit」はフリーソフトです。無料で手に入ります。

プラグインフォルダ内の「potファイル」を開きます。

カタログの初期設定

カタログの設定が開きます。

ベースのパスを指定する

ソースの検索パスは翻訳対象ファイルがある階層を指定。

・1階層上を指定 = ../
・同じ階層を指定 = ./

このあたりはプラグインのディレクトリ構造に合わせて微調整してください。

poファイルを保存する

ファイルは「plugin-sample-name-ja.po」と名前をつければOKです。

💻受講料無料でプログラミング習得

⇒ 完全無料のプログラミングスクール - 手に職をつけて安定的に働きたい人へ -

言語は「ja」を指定しておきましょう。

poファイルの編集画面が開く

するとPoeditで「plugin-sample-name-ja.po」が開きます。ただし現時点では翻訳対象テキストがありません。

翻訳対象テキストを読み取る

次に対象テキストを取得するために「更新する」を押して進めましょう。

script.php内の該当箇所を取得できます。

参考として「script.php」のなかには以下の翻訳対象テキスト箇所があります。

<?php _e('English Message', 'plugin-sample-name') ?>

無事、取得できましたね。あとは「翻訳:」のなかに日本語を書くだけです。

英語環境では「English Message」そして、日本語環境では「日本語のメッセージ」と表示する書き方です。

最終的な翻訳ファイルは「mo」

script.php内に該当の翻訳テキストが増えると「更新する」で取得してくれます。そして「po」ファイルの画面で「Ctrl+S」を押すと「moファイル」が書き出されます。考えると少し複雑な仕組みですよね。

・編集用の大元ファイル(poファイル)
・翻訳書き出しファイル(moファイル)

と覚えておいてください。カンタンに言えば「pot」ファイルを元に編集用のカタログデータ「po」ファイルを作って、その後「po」ファイルを元にして翻訳用の読込み「mo」ファイルを作る流れですね。

すべてのファイルが揃った状態

合計3つのファイルが揃うと下記のディレクトリ構造になります。

・[plugin-sample-name]
	└ [languages]
		└ plugin-sample-name-ja.mo
		└ plugin-sample-name-ja.po
		└ plugin-sample-name.pot
	└ plugin-sample-name.php
	└ script.php

あらためて手順にすると少し複雑ですね。

まとめ

本日は「プラグインの多言語対応」をご紹介させていただきました。

せっかくなので「pot」ファイルを含んだプラグイン構造を丸々ZIP形式でダウンロードできる状態にしておくのでもし興味があればぜひご参考くださいませ。念のため「moファイルとpoファイル」は省いています。

書き出しの流れで覚えることもたくさんあるので一度挑戦してみてくださいね。

【今すぐ無料プラグインを手に入れる】
無料ダウンロードはこちら

ワードプレス専門家に丸投げする

WPホームページ研究所はワードプレスを中心としたブログ作成・ホームページ制作・オウンドメディア構築・プラグイン設定・調整など幅広いカスタマイズに対応しております。 記事の掲載情報はもちろんお好みの機能をいただければ専属スタッフが心を込めて対応させていただきます。まずはお気軽にお問い合わせくださいませ。

お問い合わせの種類をお選びください(もっとも近い項目)

法人の場合は法人名とご担当者のお名前をご入力ください

返信時のご連絡に利用するメールアドレスをご入力ください

運営中のウェブサイトURLがあればご入力ください

お困りの内容があれば詳しい内容をお聞かせください