WordPressを翻訳するプラグインは、便利なものがいくつかあります。
例えば、
Google Language Translator
こちらの記事に、とてもわかりやすく紹介してありました。
ポイントとしては、GoogleのAPIを使って、自動的に翻訳をするということ。
https://netaone.com/wp/google-language-translator/
Jetpack
Jetpackにも、Google翻訳の機能があります。
https://usortblog.com/google-language-transrator-jetpack/
これらに共通していることは、Googleと通信をして、オンデマンドで英語に翻訳をして行くということです。
もちろん、「ぱぱっと翻訳対応したい」ということであれば、かなり理にかなっています。
また、コンテンツやタイトル部分だけでなく、全体を翻訳してくれるので、非常に効率がいいです。
一方、「多言語データを入力できる」というプラグインもあります。
qTranslate
こちらは、インストールすると、言語フィールドが追加されて、翻訳テキストを追加して行くことができます。
柔軟に翻訳テキストを調整できるので、Googleの翻訳だと、ネイティブにとってはちょっと・・という場合も、専門の翻訳家に依頼したデータを利用することができるので、本格サイトに向いています。
ネックとしては、「翻訳データを用意する必要がある」という部分です。
Google翻訳の恩恵を受けながら、専門家の調整もできるようにできないか・・
というのが、今回の主旨でした。
Googleの翻訳データを取得して、
カスタムフィールドに保存する
まず、動作イメージです。
Googleの翻訳API を使って取得したJSONデータを、WordPressのカスタムフィールドに保存して行っています。
GoogleAPIの取得
GoogleのAPIコンソールから、翻訳APIのキーを取得します。
https://cloud.google.com/translate/

利用規約を見ると、safariでは自動翻訳されないので、英語の利用規約を見ることになりました。
ここも翻訳しておいて欲しい・・・。

とはいえ、書かれていることは、最初のページの右にあるものです。
無料トライアルを利用できます的な。

APIキーを取得したら、それを使ってWordPressのコンテンツを翻訳していきます。
API取得用のURLを作成
function get_translate_url($key){
$_translate = array();
$_translate['url'] = 'https://www.googleapis.com/language/translate/v2?';
$_translate['key'] = $key;
$_translate['source'] = 'ja';
$_translate['target'] = 'en';
$base_url = $_translate['url'];
$base_url .= 'key='.$_translate['key'];
$base_url .= '&source='.$_translate['source'];
$base_url .= '&target='.$_translate['target'];
return $base_url;
}
//結構無駄な処理も書いてあるので、重複しているのが気になる場合は除去を。
WordPressのコンテンツを分解して取得
$_en_content = '';//初期化
$base_url = get_translate_url($translate_opt['translate_key']);
$preg_content = wpautop( $content );
$preg_content_line = explode( '</p>' , $preg_content ); //とりあえず段落ごとに分解
foreach($preg_content_line as $line){
$line_text = html_entity_decode($line);
$url = $base_url . '&q='.urlencode($line_text); //翻訳URLを生成
//APIから返ってきたデータを処理
$resjson = file_get_contents(strval($url));
$resjson = mb_convert_encoding($resjson, 'UTF-8', 'auto');
$resarray = json_decode($resjson);
$result = $resarray->data->translations[0]->translatedText;
$_en_content .= $result;
}
これで、$_en_content に翻訳データが格納されるので、
それを、WordPressのカスタムフィールドに戻してあげれば、翻訳を保存することができます。
やっていることはシンプルだけれど、効果としては絶大。
あとは、表示側を整えれば、翻訳サイトの出来上がり。
全て、1つのプラグインにまとめたので、
インストールして有効化するだけで、翻訳サイトを作れるようにしました。
今後の制作では、この翻訳対応も入れられそうです。