翻訳するスクリプトを作成
まず追加したソースがこちら。
新規プロジェクトを作成し、「GoogleTranslate」と名前を付けて保存しました。
プロジェクトの作成等はこちらの記事を参照
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
//GETテスト関数 function getTest() { var e = {'parameter':{ 'source': 'ja', 'target':'en', 'text':'<h4>今日の天気はいい天気</h4>', 'type':'html' }, }; doGet(e); } //POSTテスト関数 function postTest() { var e = {'parameter':{ 'source': 'ja', 'target':'en', 'text':'<h4>今日の天気はいい天気</h4>'} }; doPost(e); } //POSTメソッド function doPost(e) { if(!e) { body = { code: 400, text: "Bad Request" }; } //POSTパラメータ var p = e.parameter; // LanguageAppクラスを用いて翻訳を実行 var translatedText =''; if(p.type){ translatedText = LanguageApp.translate(p.text, p.source, p.target,{'contentType': p.type}); } else { translatedText = LanguageApp.translate(p.text, p.source, p.target); } // レスポンスボディの作成 var body; if (translatedText) { body = { code: 200, text: translatedText }; } else { body = { code: 400, text: "Bad Request" }; } // レスポンスの作成 var response = ContentService.createTextOutput(); // Mime TypeをJSONに設定 response.setMimeType(ContentService.MimeType.JSON); // JSONテキストをセットする response.setContent(JSON.stringify(body)); return response; } // Getメソッド function doGet(e) { if(!e) { body = { code: 400, text: "Bad Request" }; } var p = e.parameter; var translatedText =''; if(p.type){ translatedText = LanguageApp.translate(p.text, p.source, p.target,{'contentType': p.type}); } else { translatedText = LanguageApp.translate(p.text, p.source, p.target); } var body; if (translatedText) { body = { code: 200, text: translatedText }; } else { body = { code: 400, text: "Bad Request" }; } // レスポンスの作成 var response = ContentService.createTextOutput(); // Mime TypeをJSONに設定 response.setMimeType(ContentService.MimeType.JSON); // JSONテキストをセットする response.setContent(JSON.stringify(body)); return response; } |
各処理について
「doGet」は、Google Apps ScriptでGETパラメータを受け取るための関数名のようです。
POSTした場合は、「doPost」関数を使って受け取ります。
このままではデバッグできないので、「getTest」関数など作成してテストを行います。
翻訳するための引数について
キー | 値 |
---|---|
source | 翻訳前のテキスト言語を指定します。 例:ja |
target | どの言語に翻訳するか指定します。 例:en |
text | 翻訳したい文章を指定 |
type | HTMLを翻訳する場合は、”html”を指定。
省略時は、通常の文章として処理します。 |
外部から利用するための設定
「公開」→「ウェブアプリケーションとして導入」を開きます。
下記図のように、「Execute the app as:」と「Who has access to the app:」を設定します。
この設定を行うことで、外部アプリケーションから利用することができます。
PHPから作成したAPIを利用する
下記コードの「発行されたURL」部分に、上記で発行されたURLを指定することでPHPから翻訳機能を利用できるかと思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<?php $url = '発行されたURL'; $palam=array( 'text'=>'今日はいい天気です。', 'source'=>'ja', 'target'=>'en', 'type'=>'html' ); $ch = curl_init(); $headr = array(); $headr[] = 'Content-Type: application/json;'; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($palam)); //API実行 $result = curl_exec($ch); curl_close($ch); $rec = json_decode($result,true); echo $rec['text']; ?> |
まとめ
海外用のサイトを作成するにあたり、どうしても翻訳機能を利用したいことがあってGoogle Apps Script」の翻訳機能を利用してみました。
速度的には遅いかもしれませんが、手動で翻訳するよりは効率的に翻訳できるかと思います。