社員ブログ
HOME  社員ブログ
ホーム > MODx, 社員:cobra > MODx Revolutionで多言語化対応の為にBABELを使ってみた。

MODx Revolutionで多言語化対応の為にBABELを使ってみた。

2014年06月30日 15時33分42秒

こんにちは、コブラです。

 

MODX revolutionの特長として多言語対応が可能、というのがあります。

管理画面ではレキシコン管理とありますが、

使い方がイマイチ分かりません。

 

そこで今回は、多言語化プラグイン「BABEL(バベル)」を試してみました。

 

紆余曲折あって、最終的には以下のサイトさんが解決へと導いてくれました。

動画もあって非常に分かりやすいです。

MODX Multilingual – Setting up Babel and have a website with multiple languages – DESIGNfromWITHIN様

 

 上記ページを参考にしつつ備忘録として残しておきます。

 

 

必要なもの

・MODX revolution

・.htaccess

・BABELプラグイン

 

まずは、インストールしたMODxのディレクトリを開き、ht.accessを編集。

MODx Revolutionで多言語化対応の為にBABELを使ってみた。

 

 

 

 

 

 

 

 

『RewriteBase /』を『RewriteBase /modx-revo』に書き換え、

# The Friendly URLs partの部分をコメントアウトし、

そのすぐ下に以下を追加。

 

# redirect all requests to /de/favicon.ico and /nl/favicon.ico
# to /favicon.ico
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(ja|en)/favicon.ico$ favicon.ico [L,QSA]
 
# redirect all requests to /de/assets* and /nl/assets* to /assets*
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(ja|en)/assets(.*)$ assets$2 [L,QSA]
 
# redirect all other requests to /de/* and /nl/*
# to index.php and set the cultureKey parameter
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(ja|en)?/?(.*)$ index.php?cultureKey=$1&q=$2 [L,QSA]

 

赤文字の部分が、多言語化対応する言語のリストです。

縦線で区切っています。

これを.htaccessに変えてアップロードします。

 

次はMODXの管理画面へ行き、

システム > コンテキストを開きます。

 

MODx Revolutionで多言語化対応の為にBABELを使ってみた。

 

 

 

 

 

 

 

 

 コンテキストキー「Web」の行のうえで右クリックし、編集を選択します。

 

MODx Revolutionで多言語化対応の為にBABELを使ってみた。

 

 

 

 

 

 

 

 

コンテキスト設定タブを選択し、新規追加ボタンから、以下の項目を追加します。

 

Base URL

  • Key: base_url
  • Name: Base URL
  • Area Lexicon Entry: language
  • Value: /

Culture key

  • Key: cultureKey
  • Name: Culture key
  • Area Lexicon Entry: language
  • Value: ja

Site start

  • Key: site_start
  • Name: Site start
  • Area Lexicon Entry: language
  • Value: 1

Site URL

  • Key: site_url
  • Name: Site URL
  • Area Lexicon Entry: language
  • Value: http://ドメイン/

 

MODx Revolutionで多言語化対応の為にBABELを使ってみた。

 

 

 

 

 

 

 

 

 

 

 

 

入力が終わると、こんな感じになります。(URLは隠してますがあります)

 

MODx Revolutionで多言語化対応の為にBABELを使ってみた。

 

 

 

 

 

 

 

 

 

ここまで終わったら、次は英語用のコンテキストを登録します。

再度、システム > コンテキストを開き、『新規作成』ボタンでEnglishバージョンを作っていきます。

 

 

Base URL

  • Key: base_url
  • Name: Base URL
  • Area Lexicon Entry: language
  • Value: /en/

Culture key

  • Key: cultureKey
  • Name: Culture key
  • Area Lexicon Entry: language
  • Value: en

Site start

  • Key: site_start
  • Name: Site start
  • Area Lexicon Entry: language
  • Value: ²(英語ページのトップになるドキュメントIDを指定)

Site URL

  • Key: site_url
  • Name: Site URL
  • Area Lexicon Entry: language
  • Value: http://ドメイン/en/

 

 

これでOKです。

 

MODx Revolutionで多言語化対応の為にBABELを使ってみた。

 

 

 

 

 

 

 

 

 

これで、コンテキスト名「Web」と「English」の2つに設定を追加したことになります。

次は、プラグインを用意します。

エレメントタブを開き、『プラグイン』の上で右クリックし、『プラグインを作成』を選択。

名前を『gateway』にし、以下のコードを入力します。

 

if($modx->context->get(‘key’) != “mgr”){

/* grab the current langauge from the cultureKey request var */

switch ($_REQUEST[‘cultureKey’]) {

case ‘en‘:

/* switch the context */

$modx->switchContext(‘English‘);

break;

default:

/* Set the default context here */

$modx->switchContext(‘web‘);

break;

}

/* unset GET var to avoid

* appending cultureKey=xy to URLs by other components */

unset($_GET[‘cultureKey’]);
}

 

赤文字部分は自分で変更する箇所です。

対応言語の数に合わせてCaseも追加してください。

画面で見るとこんな風になります。

 

MODx Revolutionで多言語化対応の為にBABELを使ってみた。

 

 

 

 

 

 

 

 

 

 

 

システムイベントタブを開き、OnHandlerRequestにチェック入れ、

これを保存します。

 

いよいよ、BABELプラグインをインストールします。

システム > パッケージマネージャーを開き、BABELを検索しインストールします。

 

MODx Revolutionで多言語化対応の為にBABELを使ってみた。

 

 

 

 

インストール前にオプションを聞かれます。

自身で追加したコンテキストが表示されていることを確認し、パッケージをインストールします。

 

 MODx Revolutionで多言語化対応の為にBABELを使ってみた。

 

 

 

 

 

 

 

以上で作業は完了です。

あとは、コンテキストで指定したドキュメントIDでファイルを作ればOKですね。

(今回は英語ページはドキュメントID=2)

 

MODx Revolutionで多言語化対応の為にBABELを使ってみた。

 

 

 

 

 

 

 

 

 

<ul>[[BabelLinks]]</ul>というタグを使うと、

言語のリンクリストを自動生成してくれたりもします。

 

長々と解説してみましたが、多言語化をプラグインでやろうとすると、まだまだ敷居は高いですね…。

 

MODx, 社員:cobra

  1. コメントはまだありません
  1. トラックバックはまだありません