1.5以前のJoomla!では、JoomFishのようなサードパーティのエクステンションを使わないとできなかったサイトの多言語化が、Joomla!1.6以降は標準の機能だけで実現できるようになりました。ただし、記事、モジュール、メニューなどを言語ごとに作成しますので、2カ国語対応のサイトであれば手間は2倍、3カ国対応のサイトであれば手間は3倍です。
今回は例として、日本語、英語の2カ国語に対応する多言語サイトを作ります。
サンプルデータなしでJoomla!をインストールする
既存のコンテンツが存在した状態でも多言語サイトにすることはできますが、カテゴリの構造などを大幅に変更する必要があるかもしれないので、何もない状態からはじめるのがおすすめです。Joomla!をサーバにインストールする際には、サンプルデータをインストールしないでください。
言語パックをインストールする
使用する言語の「言語パック」をインストールしておきます。
Joomla!じゃぱんからダウンロードしたJoomla!をお使いならば、日本語と英語は既にインストールされていると思いますので、今回はインストールする必要はありません。もしその他の言語で多言語サイトを作る場合は、言語パックを以下のページからダウンロードし、「エクステンション」→「エクステンション管理」からインストールしてください。
コンテンツ言語を作成する
「コンテンツ言語」と呼ばれる設定を、言語ごとに作成します。Joomla!じゃぱんからダウンロードしたJoomla!をお使いならば、既に英語と日本語のコンテンツ言語は作成されていますので、何もする必要はありません。Joomla.orgから直接ダウンロードしたJoomla!をお使いの場合は、日本語のコンテンツ言語が作成されていませんので、以下の手順で作成してください。
「エクステンション」→「ランゲージ管理」をクリックします。
画面右上の「新規」ボタンをクリックし、*が表示されている箇所を入力します。今回は次のように入力して保存します。
メニュー名の変更とメニューモジュールの無効化
多言語化サイトを作る場合、言語ごとにメインメニューを作成する必要があります。このため複数のメインメニューが存在する状態になります。混乱を防ぐため既存の「メインメニュー」の名前を変更しておきます。またメニューモジュールも言語ごとに作成するため、既存のメニューモジュールは無効化しておきます。
「メニュー」→「メニュー管理」を選択します。「Main Menu」の「mainmenu」と表示された部分をクリックします。
「タイトル」を「Main Menu-ALL」のように変更して保存します。
「Main Menu-ALL」をクリックすると、メニューアイテムが表示されます。星印が突いた「Home」という名前のメニューアイテムの「言語」が「すべて」になっていることを確認します。
「エクステンション」→「モジュール管理」をクリックし、「Main Menu-ALL」を表示しているモジュール(Main Menuという名前のモジュール)を非公開にします。
コンテンツを作る
決められたカテゴリ構成でコンテンツを作成していきます。まず作成したコンテンツ言語毎にルートカテゴリを作り、各言語を割り当てます。
「記事」→「カテゴリ管理」→「カテゴリの追加」を開き、タイトルやエイリアスなどの必要事項を入力し、「言語」の欄で対象となる言語を選択して保存します。
今回は次のように、日本語、英語、全言語用の3つのカテゴリを作成してください。「言語」の欄を確認し、ちゃんと言語が割り当てられているか確認します。
作成したカテゴリの配下に、サブカテゴリを作成します。今回は「Joomla!について」「About Joomla!」「SUBCATEGORY-ALL」というカテゴリを、それぞれの言語の下に作成しました。この時も親カテゴリと同じ言語になるよう設定してください。
言語毎に記事を作成します。例えば日本語の記事は以下のようにします。重要なのは、言語毎にカテゴリを選ぶことと、親カテゴリと同じ「言語」を選ぶことです。またこの記事はサイトのトップページに表示したいので「注目」を「はい」に設定しました。
英語の記事は以下のようになります。ここも「カテゴリ」と「言語」の選択を間違えないように。
コンテンツ言語毎にメニューおよびメニューアイテムを作る
まず言語毎にメニュー(コンテナ)を作成します。
「メニュー」→「メニュー管理」を開き、次の図のよう「Main Menu-en」と「メインメニュー-日本語」を作成してください。
次にメニューアイテムを作成します。
まず日本語用のメニューアイテムから作ります。「メニュー」→「メインメニュー-日本語」→「メニューアイテムの追加」を選択します。今回は「メニューアイテムの種類」を「注目記事」で選択し、その他は次の図のように設定します。なおこのメニューアイテムは、日本語ページのトップページになるので「デフォルトページ」を「はい」に設定するのを忘れないでください。
次に英語用のメニューアイテムです。「メニュー」→「Main Menu-en」→「メニューアイテムの追加」を選択し、次の図のように設定します。こちらも英語ページのトップページになるので、「デフォルトページ」を「はい」に設定するのを忘れずに。
これで言語毎にデフォルトのメニューアイテムが作成できました。「メニュー」をクリックすると、各メニューに国旗アイコンが表示されるようになったはずです。
メニューモジュールを作る
言語ごとにメニューモジュールを作成します。まず日本語用のメニューモジュールから。
「エクステンション」→「モジュール管理」→「新規」→「メニュー」を開き、次のように設定して保存します。
次は英語用のメニューです。同様に次のように設定して保存します。
言語スイッチャーモジュールを作る
このモジュールは、フロントエンドで言語を切替えるためのモジュールです。
「エクステンション」→「モジュール管理」→「新規」を選択し、「言語スイッチャー」をクリックします。
次のように入力して保存します。このモジュールは、日本語、英語、両方のページで使い回すので「言語」は「すべて」のままにしました。もし言語毎にパラメータを変更したい(例えば「上部のテキスト」「下部のテキスト」を言語ごとに設定したい)場合は、このモジュールを2つ作成し、それぞれの「言語」を適切に設定してください。
言語フィルタプラグインを有効にする
「言語フィルタプラグイン」を有効にすることで、特定の言語のモジュールや記事を表示できるようになります。
「エクステンション」→「プラグイン管理」を選択し、「システム - 言語フィルタ」を有効にします。
これで準備ができました。
動作を確認する
フロントエンドにアクセスすると、ブラウザの言語設定を自動検出し、同じ言語でサイトを表示します。
言語スイッチャーモジュールに表示されたイギリスの国旗アイコンをクリックすると、言語が英語に切り替わり、英語の記事に切り替わります。
ブラウザに設定された言語が、サイトに存在しない場合、デフォルトの言語が表示されます。