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つのプラグインにまとめたので、
インストールして有効化するだけで、翻訳サイトを作れるようにしました。
今後の制作では、この翻訳対応も入れられそうです。