PHP ライブラリ

WOVN の PHP ライブラリ(WOVN.php)についての導入・設定方法について説明します。

目次

動作要件

ライブラリ方式の動作要件を確認してください。

ライブラリ方式の動作概要

ライブラリ方式における動作概要を確認してください。

PHP ライブラリをインストールする

PHP ライブラリのインストール手順は、Web サイトのファイル構成によって異なります。

WOVN.php の配置と基本設定は共通手順を参照し、以降は対象サイトのファイル構成に応じたインストール手順を参照してください。

多言語化するサイトの構成 推奨する導入方式 備考
全て PHPファイルによる構成 単純方式 PHP の require_once 文をファイルの先頭に挿入する導入方式です
HTML ファイルのみの構成 Rewrite 方式 Apache の .htaccess、nginx の rewrite によるリダイレクトを活用した導入方式です
PHP ファイルと HTML ファイルの混在構成 Rewrite 方式 Apache の .htaccess、nginx の rewrite によるリダイレクトを活用した導入方式です
Laravel(PHP Framework)を使った構成 LaravelPHP 方式 LaravelPHP に対応した導入方式です
※単純方式とほぼ同一です

共通手順

WOVN.php のダウンロードと配置

  1. WOVN.php のファイルを、弊社管理の GitHub リポジトリからダウンロードします。
    こちらから PHP ライブラリをダウンロードしてください。

  2. ダウンロードした WOVN.php-x.x.x.zip を解凍します。

  3. WOVN.php-x.x.xWOVN.php にフォルダ名を変更します。

  4. WOVN.phpフォルダをサイトのドキュメントルートに配置します。

インフォメーション
ドキュメントルートは、一般的には「/var/www/html」、また、レンタルサーバーの場合は「public_html」というディレクトリ名です。詳細については、お客様社内でご確認ください。

基本設定

WOVN.php を、作成済みの WOVN プロジェクトに紐づけて動作させるには、設定ファイル(wovn.ini)を Web サイトのドキュメントルート上に配置する必要があります。

  1. WOVN.phpフォルダ内のwovn.ini.sample ファイルをコピーし、ドキュメントルート上に配置します。

  2. wovn.ini.sample のファイル名をwovn.iniに変更します。

  3. 対象サイトの要件に応じて、wovn.iniファイルを編集します。
    後述の設定値オプションを参照してください。

下記のサンプルは、WOVN.php を動作させるための最小構成の設定内容を記載しています。

project_token = "TOKEN"
url_pattern_name = "query"
default_lang = "ja"
supported_langs[] = "ja"
supported_langs[] = "en"
  • プロジェクトトークン:TOKEN
  • 元言語:日本語
  • 翻訳言語:英語

※project_token には、対象プロジェクトのトークンを入力します。
プロジェクトトークンは、WOVN のプロジェクトにログイン後、左側メニューの「概要」の「ステータス」画面の右上からコピーができます。

以降の手順は、対象サイトの構成に応じた手順に従って進めてください。

単純方式でインストールする

PHPファイルのみで作成されているサイトでは、「単純方式」をご利用ください。

Web ページが PHP ファイルによって動的に生成されている場合は、単一のテンプレートファイル内にwovn_interceptor.phpファイルを読み込みます。
ファイルの先頭(全 HTML タグの前)に、下記のように require_once 文を挿入してください。

require_once('/対象パス/WOVN.php/src/wovn_interceptor.php');

※対象パスは WOVN.php を配置した場所です。

Rewrite 方式でインストールする

PHP ファイル と HTML で作成されているサイト、またはHTML のみで作成されているサイトでは「Rewrite方式」をご利用ください。

単純方式の場合、require_once 文によって WOVN.php を読み込むことができますが、静的な HTML ファイルがサイトに含まれる場合、多言語化できません。
そのため、.htaccessファイルに WOVN.php ファイルを経由させます。

  1. WOVN.phpファイル内のwovn_index_sample.phpファイルをコピーし、ドキュメントルートに配置します。

  2. wovn_index_sample.phpのファイル名をwovn_index.phpに変更します。

  3. Apache を使用している場合、.htaccessファイルに rewrite 文を記載します。
    Nginx を使用している場合、Nginx の設定ファイルに rewrite 文を記載します。

  4. SSI と wovn_index.php を両方利用している場合、
    wovn_index.php内の# SSI USERに関するコメント文に従って、wovn_index.phpをファイルを編集してください。

Apache を使用している場合

ドキュメントルート内の.htaccessファイルを開き、下記のコードを既存の.htaccessファイルに追記します。
.htaccessファイルがない場合は、新規に作成し、下記のコードをそのまま記述します。

<IfModule mod_rewrite.c>
RewriteEngine On
# Don't intercept .cgi files, as they would not execute
RewriteCond %{THE_REQUEST} \.cgi
RewriteRule .? - [L]
# Intercept only static content: html and htm urls
# Warning: do not remove this line or other content could be loaded
RewriteCond %{REQUEST_URI} /$ [OR]
RewriteCond %{REQUEST_URI} \.(html|htm|shtml|php|php3|phtml)
# Use the wovn_index.php to handle static pages
RewriteRule .? wovn_index.php [L]
</IfModule>

Nginx を使用している場合

Nginx の設定ファイルを開き、下記のコードを location / ディレクティブ内に追記します。
Nginx の設定ファイルは、多くの場合、/etc/nginx/conf.d/ フォルダ内か、/etc/nginx/sites-available/ フォルダ内にあります。

server {
    # ...
    # php configuration
    location ~ \.php$ {
        # ...
    }
    location / {
        # ...
        # WOVN.php interception ####################################################
        # intercept static content with WOVN.php
        if ($uri ~ (/|\.(html|htm))$) {
            rewrite .? /wovn_index.php;
        }
}

Laravel 方式でインストールする

基本的な設定方法は単純方式と同じです。
index.php ファイル内に require_once 文を記述します。

フォルダ構成

laravel/public
├── WOVN.php
│ └── wovn.ini.sample
├── index.php # You have to add `require_once` and load `WOVN.php/src/wovn_interceptor.php`.
└── wovn.ini # `WOVN.php/wovn.ini.sample` copy to `wovn.ini` and set your project token.

index.php の記述例

<?php
    require_once(__DIR__.'/WOVN.php/src/wovn_interceptor.php'); # The top is recommended.
/**
* Laravel - A PHP Framework For Web Artisans
*
* @package Laravel
* @author Taylor Otwell <taylorotwell@gmail.com>
*/
/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader
| for our application. We just need to utilize it! We'll require it
| into the script here so that we do not have to worry about the
| loading of any our classes "manually". Feels great to relax.
|
*/
require __DIR__.'/../bootstrap/autoload.php';

WordPress にインストールする

基本的な設定方法は単純方式と同じです。
WordPress の index.php ファイル、<?php の直下に、下記のように require_once 文を挿入してください。

index.php の記述例

<?php
    require_once(__DIR__.'/WOVN.php/src/wovn_interceptor.php'); # The top is recommended.
/**
 * Front to the WordPress application. This file doesn't do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
 */

/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */
define( 'WP_USE_THEMES', true );

/** Loads the WordPress Environment and Template */
require __DIR__ . '/wp-blog-header.php';

設定オプション

WOVN.php の詳細設定を行うには、wovn.iniファイルを編集します。
このセクションの内容を参考に、要件に応じて編集してください。
設定値は、サンプルファイルのように半角のダブルクォーテーションで括っていても、括らなくても正常に動作します。

必須パラメーター

パラメーター 説明
project_token プロジェクトトークンを指定してください。
プロジェクトトークンは WOVN 管理画面からご確認ください。
WOVN 管理画面の概要説明はこちらをご参照ください。
project_token = TOKEN
default_lang 元言語となる言語コードを指定してください。
日本語サイトの場合は、ja を指定します。
default_lang = ja
supported_langs WOVN によって翻訳される対象言語を指定します。
元言語および翻訳言語を指定すると、WOVN.php はリクエストされたページに対し、
対応した <meta hreflang> タグを挿入します。
これにより、SEO 関連タグを自動で生成します。

元言語と翻訳言語のすべてについてパラメーターを記述してください。

元言語でも翻訳言語でもない言語は指定しないでください。
サイトに存在しない言語の SEO 用タグが挿入されると、
検索エンジンにスパムとみなされるおそれがあります。

右記の例は、元言語が日本語で、英語、簡体字、繁体字に翻訳する場合の記述です。
supported_langs[] = ja
supported_langs[] = en
supported_langs[] = zh-CHS
supported_langs[] = zh-CHT

任意パラメーター

各パラメーターの詳細は、設定項目ごとの説明を確認してください。

パラメーター 説明
url_pattern_name URL に言語情報を含めるために、Web ページの URL そのものを変更する方式を定義します。 url_pattern_name = query
url_pattern_name = path
url_pattern_name = subdomain
lang_param_name url_pattern_namequeryの場合、URL 末尾に付加するクエリパラメーターの名前を指定します。 lang_param_name = wovn
custom_lang_aliases url_pattern_namepathの場合、リダイレクトやURLに付加される言語コード
任意の文字列に置き換えるエイリアスを指定します。

※対象サイトの要件に応じて、WOVN カスタマーサクセス担当が記述をお願いする機能です。
custom_lang_aliases[ja] = japanese
custom_lang_aliases[fr] = french
query 指定したクエリパラメーターごとに WOVN に登録されるページを管理できます。

※対象サイトの要件に応じて、WOVNカスタマーサクセス担当が記述をお願いする機能です。
query[] = login
ignore_paths 対象パスに対して WOVN.php が処理を行わなくなります。

特定のディレクトリ配下は元言語のみとし、WOVN による HTML の置き換えをしたくない場合に使います。

WOVN の管理画面にある除外パス(ignore_path)と記述内容を一致させます。
ignore_paths[] = /admin
ignore_regex ignore_paths[] に対して正規表現が有効になったものです。 ignore_regex[] = //search/\d\d//
ignore_class 対象 HTML クラスに対してWOVN.php が処理を行わなくなります。

特定の HTML クラスを持つ要素配下は元言語とし、
WOVN による HTML の置き換えやレポートの送信を行いたくない場合に使います。

WOVN の管理画面にある除外クラス(ignore_class)と記述内容を一致させます。
ignore_class[] = ignore
ignore_class[] = no-translate
no_index_langs GoogleBOT などのクローリング BOT に対して指定した言語を noindex として通知します。 no_index_langs[] = en
encoding 利用しているサイトのファイルエンコーディングを WOVN.php に通知します。
基本的には WOVN.php が自動的に認識します。
encoding = UTF-8
api_timeout WOVN.php が WOVN サーバーと通信して翻訳データを取得する際の最大時間です。 api_timeout = 1
disable_api_request_for_default_lang 元言語でアクセスされた場合に翻訳 API を使用するかを指定します 。 disable_api_request_for_default_lang = 1
use_proxy プロキシを使っていない場合に設定します。 use_proxy = 0
override_content_length レスポンスヘッダー「Content-Length」更新の有無を指定します。 override_content_length = 1
hreflang_x_default_lang hreflang=x-default属性を持つlinkタグを生成するための言語コードを設定します。 このタグがすでに存在する場合、この設定は無効となります

ignore_paths[]

サイトのうち、特定のディレクトリやページは元言語である日本語のみとし、以下のように設定したい場合に使用します。

  • WOVN の管理画面に自動追加させない
  • 元言語文字列を送信しない
  • URL を言語コード付きのものにしない
  • 検索エンジンの BOT に多言語ページとして有効でない事を通知する

例えば、https://example.com/admin ページを WOVN.php に通知させない(=除外する)場合、以下のように記述します。

ignore_paths[] = /admin

その場合、以下のような URL は WOVN の管理から除外されます。

https://my-wesite.com/admin
https://my-wesite.com/admin/
https://my-website.com/admin/plugin.html

ただし、以下は条件に一致しないため、WOVN の管理対象となります。

https://my-website.com/index.html
https://my-website.com/user/admin
https://my-website.com/adminpage

ignore_regex[]

ignore_paths[] に対して、正規表現が利用できるタイプのパラメーターです。
基本的な使い方は ignore_paths[] と同様ですが、正規表現で記載することで複雑なパスを指定できます。

例えば、検索ページを翻訳したくない場合は以下の様に指定します。

ignore_regex[] = /\/search\/\d\d\//

上記設定をこれらの URL に当てはめると、下記のようになります。

翻訳されるページ

https://example.com/search/index.php

翻訳されないページ

https://example.com/search/01/
https://example.com/search/02/

url_pattern_name

このパラメーターは、URL に言語情報を含める為に Web ページの URL そのものを変更する方式を定義します。
WOVN.php は 3 つのパターンをサポートしています。

設定パターン URL サンプル 言語
url_pattern_name = query
※デフォルト
https://my-website.com/index.php
https://my-website.com/index.php?wovn=en
https://my-website.com/index.php?wovn=fr
元言語
英語
フランス語
url_pattern_name = path https://my-website.com/index.php
https://my-website.com/en/index.php
https://my-website.com/fr/index.php
元言語
英語
フランス語
url_pattern_name = subdomain https://my-website.com/index.php
https://en.my-website.com/index.php
https://fr.my-website.com/index.php
元言語
英語
フランス語

パス(path)方式、サブドメイン(subdomain)方式は SEO 対応可能ですが、これまでの導入方式に加え、追加作業が必要です。
パス方式で Apache を使用している場合は、.htaccess ファイルに記述が必要です。

  • Rewrite 方式を使用していない場合
    (.htaccess ファイルが存在しない場合はドキュメントルートに新規作成)
<IfModule mod_rewrite.c>
    RewriteEngine On RewriteRule ^/?(?:en|zh-CHS|zh-CHT|ko)($|/.*$) $1
</IfModule>
  • Rewrite 方式を使用している場合
    (既存の .htaccess ファイルに追記)
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^/?(?:en|zh-CHS|zh-CHT|ko)($|/.*$) $1

    # Don't intercept .cgi files, as they would not execute
    RewriteCond %{THE_REQUEST} \.cgi
    RewriteRule .? - [L]

    # Intercept only static content: html and htm urls
    # Warning: do not remove this line or other content could be loaded
    RewriteCond %{REQUEST_URI} /$ [OR]
    RewriteCond %{REQUEST_URI} \.(html|htm|shtml|php|php3|phtml)

    # Use the wovn_index.php to handle static pages
    RewriteRule .? wovn_index.php [L]
</IfModule>

注意
RewriteRule には、翻訳対象の言語パスを指定してください。本記事では、サンプルとして英語、簡体字、繁体字、韓国語の言語パスを記載しています。
その他の言語パスについては、「言語地域コード」を参照してください。

注意
以下は古い WOVN PHP ライブラリ(~1.1.15)では非推奨となりました。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/?(?:en|zh-CHS|zh-CHT|ko)($|/.*$) $1 [QSA,L]
</IfModule>

パス方式で nginx を使用している場合は、nginx 設定ファイルに記述が必要です。

server {
    # ...
    # php configuration
    location ~ \.php$ {
        # ...
    }

    location / {
        # ...
        # WOVN.php interception ####################################################
        # strip language code off of $uri
        rewrite ^/(en|zh-CHS|zh-CHT|ko)(/.*)$ $2;
        # intercept static content with WOVN.php
        if ($uri ~ (/|\.(html|htm))$) {
            rewrite .? /wovn_index.php;
        }}

サブドメイン方式は、ユーザーが管理する DNS サーバーに設定が必要です。

ignore_class[]

対象 HTML クラスに対して WOVN.php が処理を行わなくなります。
特定の HTML クラスを持つ要素配下は元言語とし、WOVN による HTML の置き換えやレポートの送信を行いたくない場合に使います。

注意
WOVN の管理画面にある除外クラス(ignore_class)と記述内容を一致させる必要があります。

encoding

利用しているサイトのファイルエンコーディングを WOVN.php に通知します。
基本的には WOVN.php が自動的に認識します。

WOVN.php は 8 つの文字コードに対応しています。

  • UTF-8
  • EUC-JP
  • SJIS
  • eucJP-win
  • SJIS-win
  • JIS
  • ISO-2022-JP
  • ASCII

api_timeout

WOVN.php が WOVN サーバーと通信して翻訳データを取得する際の最大時間です。
指定した時間が経過しても WOVN サーバーからの応答がない場合、元言語のコンテンツが提供されます。

デフォルトでは 1 秒に設定されています。

disable_api_request_for_default_lang

このパラメーターは、コンテンツが元の言語で要求されたときに翻訳APIを使用するかどうかを WOVN.php に指示します。

デフォルトでは、disable_api_request_for_default_lang オプションは 0(false)に設定されています。
つまり、コンテンツを翻訳する必要がない場合でも、WOVN.php は翻訳 API を使用します。

この設定を 1 に設定すると、より多くのサーバーリソースが使用されていることがわかります。
これは、WOVN.php が翻訳 API が通常行う HTML 解析を行う必要があるためです
(たとえば、hreflang 情報を挿入するため)。

ただし、API にリクエストを送信しないため、Web ページの読み込み時間は節約されます。
リソースの問題が発生しない場合は、以下のように、元の言語の API リクエストを無効にすることを推奨します。

disable_api_request_for_default_lang = 1

use_proxy

コンテンツがプロキシ経由で提供される場合はこの設定を変更します。
デフォルトではこの設定は 1(true)に設定されています。

コンテンツがリバースプロキシ(ロードバランサー、CDN)を介して提供される場合は、WOVN.php は要求された URL に基づいて情報を収集する際にプロキシが使われていることを認識する必要があります。
プロキシ配下で使用しない場合は 0(false)に変更します。

※ X-Forwarded-Host, X-Forwarded-Proto ヘッダーが存在する場合に利用されます。

use_proxy = 0

override_content_length

このパラメーターは、WOVN.php がレスポンスヘッダー「Content-Length」パラメーターを更新するかを指定します。
パフォーマンス最適の為、デフォルトでは 0(false)に設定されています。

override_content_length = 1

動作不具合に関するお問い合わせ

WOVN.php の導入や設定、運用において問題が発生した場合、お問い合わせページからお問い合わせください。
その際、下記の情報を併せてご記載ください。

Info Description
PHP version PHP 5.3 ~ 8.x が動作要件です
WOVN.php version こちらのファイルよりご確認いただけます src/version.php
ディレクトリ構造 WOVN.php がインストールされているサイトのディレクトリ構造がわかる画像キャプチャ
wovn.ini サイトに設置した wovn.ini
wovn_index.php Rewrite 形式などで wovn_index.phpを使用している場合は添付してください
index.php サイトの index.php ファイル
サーバー種別 WOVN.php を設置しているミドルウェア。Nginx / Apache / 両方
サーバー設定ファイル サーバー上の設定ファイルまたは .htaccess ファイル(Apache)
ログファイル サーバーのエラーログ(例:/var/log/httpd/ 配下のファイル)
アクセス制御 サーバーからwovn.global.ssl.fastly.net:443へのアクセスが許可されていること
SSI の仕様 SSI(Server Side Includes)を利用しているかどうか