suin.io

Concrete5:サイトタイトル日英対応のTips

suin2011年7月1日

Concrete5若葉マークのsuinです。サイトのタイトルを日英で切り替える方法を紹介します。

ます、前提としてConcrete5(5.4.0.5)は多言語対応機能がないみたいです。ググった範囲ですが。 (本気で日英対応しようと思ったらXOOPSCubeホダ塾ディストリMODxがいんじゃないかな...(´・ω・`))さておき、多言語対応ない状況下で日英サイトを作る場合は次のようなサイトマップ構成にするのが定石みたいです。確かな情報じゃなくてすみません、なんせ初心者なので。

├── en
│   ├── page1
│   ├── page2
│   └── page3
└── ja
    ├── page1
    ├── page2
    └── page3

次に、サイトタイトル日英対応とはどういうものか簡単に説明します。日本語ページ(/ja以下)では「○○研究室」、英語ページ(/en以下)では「xxx Laboratory」といったように、サイトのタイトルを切り替える仕組みです。<title>タグはもちろん、<h1>タグに現れるタイトルを切り替えます。

最後に、サイトタイトル日英対応の実装方法を説明します。直感からするとテーマのテンプレートをいじるだけでできそうですが、titleタグをレンダリングしているLoader::element('header_required')が簡単にオーバーライドできないようなので、ちょっとまどろっこしい対応になります。

/config/site.phpに英語の時だけSITE定数を定義する処理を実装します。SITE定数はtitleタグに表示されるサイトタイトルとなります。Concrete5の仕様として、SITE定数が定義することでサイトタイトルをオーバーライドできるみたいです。なので、日本語ページのときは、管理画面で設定したサイトタイトルをそのままつかうことになります。コードの例としては次のようになります。

function is_english()
{
	$requestUri = '/'.trim($_SERVER['REQUEST_URI'], '/').'/';
	return ( strpos($requestUri, '/en/') !== false );
}

if ( is_english() === true )
{
	define('SITE', 'English Site Title');
}

これで、サイトタイトルが現れる部分は一括して日英対応できるはずです。Concrete5のView、もうちょっと拡張性に融通がきくようになるといいなぁ〜

RELATED POSTS