目次
サンプル・プログラムの実行例
サンプル・プログラム
| translate.php | サンプル・プログラム本体 |
| .pahooEnv | クラウドサービスを利用するためのアカウント情報などを記入する .env ファイル。 使い方は「各種クラウド連携サービス(WebAPI)の登録方法」を参照。include_path が通ったディレクトリに配置すること。 |
| pahooInputData.php | データ入力に関わる関数群。 使い方は「数値入力とバリデーション」「文字入力とバリデーション」などを参照。include_path が通ったディレクトリに配置すること。 |
| バージョン | 更新日 | 内容 |
|---|---|---|
| 2.1.1 | 2025/09/15 | .pahooEnv導入 |
| 2.0.1 | 2024/09/23 | 参考URL変更 |
| 1.0.0 | 2023/03/04 | Google Cloud Translate,DeepL APIに対応 |
| バージョン | 更新日 | 内容 |
|---|---|---|
| 2.0.1 | 2025/08/11 | getParam() bug-fix |
| 2.0.0 | 2025/08/11 | pahooLoadEnv() 追加 |
| 1.9.0 | 2025/07/26 | getParam() 引数に$trim追加 |
| 1.8.1 | 2025/03/15 | validRegexPattern() debug |
| 1.8.0 | 2024/11/12 | validRegexPattern() 追加 |
準備:PHP の https対応
Windowsでは、"php.ini" の下記の行を有効化する。
extension=php_openssl.dllLinuxでは --with-openssl=/usr オプションを付けて再ビルドする。→OpenSSLインストール手順
これで準備は完了だ。
準備:pahooInputData 関数群
また、各種クラウドサービスに登録したときに取得するアカウント情報、アプリケーションパスワードなどを登録した .pahooEnv ファイルから読み込む関数 pahooLoadEnv を備えている。こちらについては、「各種クラウド連携サービス(WebAPI)の登録方法」をご覧いただきたい。
準備:クラウド翻訳サービス選択
translate.php
142: // クラウド翻訳サービス選択
143: // 利用しないクラウド翻訳サービスはコメントアウトすること.
144: public $apiTable = array(
145: // 値 タイトル 翻訳メソッド
146: 'google' => array('title'=>'Google翻訳', 'func'=>'googleCloudTranslate'),
147: 'deepl' => array('title'=>'DeepL翻訳', 'func'=>'deepLTranslate'),
148: );
複数のクラウド翻訳サービスを使い分けることができるが、もし利用しないのであれば、配列 $apiTable で使わないサービスの行をコメントアウトすればよい。
準備:Google Cloud Translation API
このAPIは、1ヶ月当たり最初の50万文字までは無料だが、それ以上は有料になる。
translate.php
131: // Google Cloud Platform APIキー
132: // https://cloud.google.com/maps-platform/ から無料申込み.
133: // 1ヶ月当たり最初の50万文字までは無料だが、それ以上は有料になる.
134: // 利用しないのなら未定義のままでよい.
135: public $GOOGLE_API_KEY = '';
なお、Google Cloud Translation API を利用しないのであれば、代入する必要はない。
仕様:Google Cloud Translation API v2
| URL |
|---|
| https://translation.googleapis.com/language/translate/v2 |
| フィールド名 | 要否 | 内 容 |
|---|---|---|
| q | 必須 | 翻訳したいテキスト(UTF-8) |
| target | 必須 | ターゲット(翻訳先)言語(ISO-639コード) |
| key | 必須 | APIキー |
| format | 任意 | html | text(デフォルト) |
| source | 任意 | 翻訳したいテキストの言語(ISO-639コード) |
| model | 任意 | 翻訳モデル。nmt固定 |
解説:Google Cloud Translation API v2
translate.php
254: /**
255: * Google Cloud Translate APIを使って翻訳を行う.
256: * @param string $text 翻訳したいテキスト
257: * @param string $targetLanguage 翻訳先言語(省略時:ja)
258: * @return string 翻訳テキスト/FALSE:失敗
259: */
260: function googleCloudTranslate($text, $targetLanguage='ja') {
261: $this->webapi = 'https://translation.googleapis.com/language/translate/v2';
262: $data = array(
263: 'q' => $text,
264: 'target' => $targetLanguage,
265: 'key' => $this->GOOGLE_API_KEY,
266: );
267:
268: //Google Cloud Translate APIを呼び出す.
269: $ch = curl_init();
270: curl_setopt($ch, CURLOPT_URL, $this->webapi);
271: curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
272: curl_setopt($ch, CURLOPT_POST, TRUE);
273: curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
274:
275: curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
276: curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
277: curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
278: curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
279:
280: $response = curl_exec($ch);
281: curl_close($ch);
282:
283: //APIエラー
284: if ($response == FALSE) {
285: $this->errmsg = 'Google Cloud Translate APIにアクセスできません';
286: $ret = FALSE;
287: } else {
288: $arr = json_decode($response, TRUE);
289: if ($arr == FALSE) {
290: $this->errmsg = 'Google Cloud Translate APIの応答が不正です';
291: $ret = FALSE;
292: //翻訳成功
293: } else if (isset($arr['data']['translations'][0]['translatedText'])) {
294: $ret = (string)$arr['data']['translations'][0]['translatedText'];
295: } else {
296: $this->errmsg = 'Google Cloud Translate APIの応答が不正です';
297: $ret = FALSE;
298: }
299: }
300:
301: return $ret;
302: }
API呼び出しには cURL関数を用いた。
準備:DeepL API
translate.php
137: // DeepL APIキー
138: // https://www.deepl.com/ja/docs-api から無料申込み.
139: // 利用しないのなら未定義のままでよい.
140: public $DEEPL_API_KEY = '';
なお、DeepL API を利用しないのであれば、代入する必要はない。
仕様:DeepL API v2
| URL |
|---|
| https://api-free.deepl.com/v2/translate |
| フィールド名 | 要否 | 内 容 |
|---|---|---|
| text | 必須 | 翻訳したいテキスト(UTF-8) |
| target_lang | 必須 | ターゲット(翻訳先)言語(英大文字) |
| auth_key | 必須 | APIキー |
解説:DeepL API v2
translate.php
304: /**
305: * DeepL APIを使って翻訳を行う.
306: * @param string $text 翻訳したいテキスト
307: * @param string $targetLanguage 翻訳先言語(省略時:ja)
308: * @return string 翻訳テキスト/FALSE:失敗
309: */
310: function deepLTranslate($text, $targetLanguage='ja') {
311: $this->webapi = 'https://api-free.deepl.com/v2/translate';
312: $data = array(
313: 'text' => $text,
314: 'target_lang' => strtoupper($targetLanguage),
315: 'auth_key' => $this->PAHOO_DEEPL_API_KEY,
316: );
317:
318: // Google Cloud Translate APIを呼び出す.
319: $ch = curl_init();
320: curl_setopt($ch, CURLOPT_URL, $this->webapi);
321: curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
322: curl_setopt($ch, CURLOPT_POST, TRUE);
323: curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
324:
325: curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
326: curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
327: curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
328: curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
329:
330: $response = curl_exec($ch);
331: curl_close($ch);
332:
333: // APIエラー
334: if ($response == FALSE) {
335: $this->errmsg = 'DeepL APIにアクセスできません';
336: $ret = FALSE;
337: } else {
338: $arr = json_decode($response, TRUE);
339: if ($arr == FALSE) {
340: $this->errmsg = 'DeepL APIの応答が不正です';
341: $ret = FALSE;
342: // 翻訳成功
343: } else if (isset($arr['translations'][0]['text'])) {
344: $ret = (string)$arr['translations'][0]['text'];
345: } else {
346: $this->errmsg = 'DeepL APIの応答が不正です';
347: $ret = FALSE;
348: }
349: }
350:
351: return $ret;
352: }

(2025年9月15日).pahooEnv導入